param: the live registry value at path (a full registry path, such as Shop.variables.error_rate) at the moment of the call, or the field key of a mapping value. A scenario step or an ingress update shows in the next call.
Use it for a live setting of the simulation, which a scenario step or an ingress update can change.
Keys
Key
Type
Default
gen
param
required
path
text
required
field
Value
none
A Value is a constant or a generator, as What a Generator Is explains. Every kind also accepts null_rate, unique, omit_rate and omit_when, which Generators describes.
Example
tax_rate is the variable tax_rate of the simulation Gen, read when each order is published. An order starts every 60 seconds for 200 seconds, with the seed 42, so three orders start.
# Param: the live value of a variable.# An order starts every 60 seconds, and the run lasts 200 seconds, so three orders# start.## Run it with: desflow run examples/generators/param.yamlsimulation:sim_id:Genfactor:0random_seed:42logical_start_time:2026-01-01T00:00:00egress:-{type:Console}variables:{tax_rate:0.2}arrivals:orders:{dist:constant, value:60, spawn:order}tasks:order:payload:tax_rate:{gen:param, path:Gen.variables.tax_rate}run:{until:200}
"""Param: the live value of a variable, builder API.The builder version of `param.yaml`.Run it with: python examples/generators/param_builder.py"""importloggingfromdatetimeimportdatetime,timezonefromdesflowimportConsoleEgress,SimulationContextfromdesflow.valuesimportTemplateUNTIL=200defbuild()->SimulationContext:"""Builds the model."""app=SimulationContext(sim_id="Gen",factor=0,random_seed=42,logical_start_time=datetime(2026,1,1,tzinfo=timezone.utc),)app.add_egress(ConsoleEgress())app.add_variable("tax_rate",0.2)app.add_arrival("orders","constant",value=60,spawn="order")payload=Template({"tax_rate":{"gen":"param","path":"Gen.variables.tax_rate"}},name="tasks.order",)@app.task(name="order")deforder(task_id):"""Gives one order."""returnpayloadreturnappif__name__=="__main__":logging.basicConfig(level=logging.INFO,format="%(levelname)s%(message)s")build().run(until=UNTIL)
"""Param: the live value of a variable, low-level API.The low-level version of `param.yaml`: plain SimPy on a `DynamicRealtimeEnvironment`,which publishes each record with `publish_event`. The variable is registered in theenvironment's registry, and the script reads its value when each order is published, as`param` does.Needs: nothing.Run it with: python examples/generators/param_low_level.py"""importitertoolsimportloggingfromdatetimeimportdatetime,timezonefromdesflowimportConsoleEgress,DynamicRealtimeEnvironment,SimParameterUNTIL=200START=datetime(2026,1,1,tzinfo=timezone.utc)ENVIRONMENT={"logical_start_time":START,"timezone":"UTC"}defbuild(env:DynamicRealtimeEnvironment)->None:"""Starts the processes on `env`."""env.registry.register_sim_parameter(SimParameter(sim_id="Gen",variables={"tax_rate":0.2}))deforders():fornumberinitertools.count(1):yieldenv.timeout(60)rate=env.registry.get("Gen.variables.tax_rate").valueenv.publish_event(f"orders-{number}",{"tax_rate":rate},task="order",instance=number-1,)env.process(orders())defrun()->None:"""Runs the model unpaced into the console."""env=DynamicRealtimeEnvironment(factor=0,**ENVIRONMENT)env.setup_egress([ConsoleEgress()])build(env)try:env.run(until=UNTIL)finally:env.teardown()if__name__=="__main__":logging.basicConfig(level=logging.INFO,format="%(levelname)s%(message)s")run()
{"additionalProperties":false,"description":"`param`: the live registry value at `path` (a full registry path, such as\n`Shop.variables.error_rate`) at the moment of the call, or the `field` key of a\nmapping value. A scenario step or an ingress update shows in the next call.","properties":{"null_rate":{"anyOf":[{"maximum":1,"minimum":0,"type":"number"},{"type":"null"},{"$ref":"#/$defs/Placeholder"}],"default":null},"unique":{"default":false,"anyOf":[{"type":"boolean"},{"$ref":"#/$defs/Placeholder"}]},"omit_rate":{"anyOf":[{"maximum":1,"minimum":0,"type":"number"},{"type":"null"},{"$ref":"#/$defs/Placeholder"}],"default":null},"omit_when":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"gen":{"anyOf":[{"const":"param","type":"string"},{"$ref":"#/$defs/Placeholder"}]},"path":{"type":"string"},"field":{"$ref":"#/$defs/Value","default":null}},"required":["gen","path"],"title":"Param","type":"object"}