Core
dissmodel.core.Environment
Bases: Environment
Simulation environment with support for a custom time window.
Extends :class:salabim.Environment with start_time and end_time
to define the simulation boundaries explicitly.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start_time
|
float
|
Simulation start time, by default 0. |
0
|
end_time
|
float
|
Simulation end time. Can also be set via |
None
|
*args
|
Any
|
Extra positional arguments forwarded to :class: |
()
|
**kwargs
|
Any
|
Extra keyword arguments forwarded to :class: |
{}
|
Examples:
>>> env = Environment(start_time=0, end_time=10)
>>> env.start_time
0
>>> env.end_time
10
Source code in dissmodel/core/environment.py
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | |
now()
Return the current simulation time adjusted by start_time.
Returns:
| Type | Description |
|---|---|
float
|
Current time as |
Examples:
>>> env = Environment(start_time=5)
>>> env.now()
5.0
Source code in dissmodel/core/environment.py
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | |
reset()
Clear accumulated plot data.
This method is called automatically at the start of :meth:run to
ensure charts start fresh on each simulation run.
Examples:
>>> env = Environment()
>>> env._plot_metadata = {"x": {"data": [1, 2, 3]}}
>>> env.reset()
>>> env._plot_metadata["x"]["data"]
[]
Source code in dissmodel/core/environment.py
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | |
run(till=None)
Run the simulation over the configured time window.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
till
|
float
|
Duration to run from |
None
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If neither |
Examples:
>>> env = Environment(start_time=0, end_time=10)
>>> env.run()
Running from 0 to 10 (duration: 10)
Source code in dissmodel/core/environment.py
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | |
dissmodel.core.Model
Bases: Component
Base class for simulation models backed by a salabim Component.
Provides a time-stepped execution loop and automatic tracking of
attributes marked for plotting via the :func:~dissmodel.visualization.track_plot
decorator.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
step
|
float
|
Time increment between successive :meth: |
1
|
start_time
|
float
|
Time at which the model starts executing, by default 0. |
0
|
end_time
|
float
|
Time at which the model stops executing, by default |
inf
|
name
|
str
|
Component name, by default |
''
|
*args
|
Any
|
Extra positional arguments forwarded to :class: |
()
|
**kwargs
|
Any
|
Extra keyword arguments forwarded to :class: |
{}
|
Examples:
>>> class MyModel(Model):
... def execute(self):
... pass
>>> env = Environment()
>>> model = MyModel(step=1, start_time=0, end_time=5)
>>> model.start_time
0
>>> model.end_time
5
Source code in dissmodel/core/model.py
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | |
__setattr__(name, value)
Intercept attribute assignment to record values marked for plotting.
If the class defines _plot_info (via the
:func:~dissmodel.visualization.track_plot decorator) and name
matches a tracked attribute, the value is appended to the plot data
buffer and registered in env._plot_metadata.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Attribute name being set. |
required |
value
|
Any
|
Value being assigned. |
required |
Source code in dissmodel/core/model.py
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | |
execute()
Called once per time step.
Override in subclasses to define model behaviour.
Source code in dissmodel/core/model.py
73 74 75 76 77 78 79 | |
process()
salabim process loop.
Waits until start_time, then calls :meth:execute every
step time units until end_time.
Source code in dissmodel/core/model.py
59 60 61 62 63 64 65 66 67 68 69 70 71 | |