simpype.random

Random is a custom dictionary accepting the following format as value:

sim = simpype.Simulation(id = 'test')
myrand = simpype.Random(sim, {
        initial_time : lambda_function
        ...
})

Where each dictionary element is so defined:

  • initial_time is the element key and must be of int or float type. It represents the initial simulation time at which the lambda_function is invoked;
  • lambda_function is the element value. It is mandatory that for the value to be a lambda function. Such function must return a value, usually a int or a float;

An example of random dictionary initialization is the following:

sim = simpype.Simulation(id = 'test')
myrand = simpype.Random(sim, {
        # From t=0 to t=10, the random variable returns
        # the constant value of 3.0
        0       : lambda: 3.0,
        # From t=10 to t=20, the random variable returns
        # value uniformly distributed between 2.5 and 3.5
        10      : lambda: random.uniform(2.5, 3.5),
        # From t=20 to t=inf, the random variable returns
        # a value exponentially distributed with lambda 0.20
        20      : lambda: random.expovariate(0.20)
})

A second example of random dictionary with generation interrupts is the following:

sim = simpype.Simulation(id = 'test')
myrand = simpype.Random(sim, {
        # From t=0 to t=10, the random variable returns
        # the constant value of 3.0 after time 10.
        # From time 0 to 10, no random variable is generated
        10      : lambda: 3.0,
        # From t=10 to t=20, no random variable is generated
        10      : lambda: None,
        # From t=20 to t=30, the random variable returns
        # a value exponentially distributed with lambda 0.20
        20      : lambda: random.expovariate(0.20)
        # From t=30 to t=inf, no random variable is generated
        30      : lambda: None
})

Produce a random value:

# Simulation time = 5.0
random_value = myrand.value    # random_value = 3.0
...
# Simulation time = 15.0
random_value = myrand.value    # random_value = 3.2476115513945767
...
# Simulation time = 25.0
random_value = myrand.value    # random_value = 7.374759019459148
class simpype.random.Random(sim, step_dict)

SimPype’s random class that may return different values depending on the simulation time.

Parameters:
  • sim (Simulation) – The SimPype simulation object.
  • step_dict (dict) – The dictionary storing the random steps.
sim

The SimPype simulation object.

Type:Simulation
env

The SimPy environment object.

Type:simpy.Environment
step_dict

The dictionary storing the random steps.

Type:dict
step_list

The list storing the sorted random steps.

Type:list
value

Returns a random value given the current simulation time.

Returns:Value as returned by the the lambda function.
class simpype.random.RandomDict(sim)

A custom dictionary storing Random objects.

Parameters:sim (Simulation) – The SimPype simulation object.
sim

The SimPype simulation object.

Type:Simulation