Registers a shock to a parameter value. Associated with a value function, which shocks the variable, and a timer function, which determines when and how often to execute the value function.
Parameters
name — str, required
A unique name for the shock, to be displayed in the GUI beside its checkbox.
param — str|tuple, required
A parameter identification string or tuple. A string value indicates a global parameter. Per-breed or per-good parameters can be indicated with a two-item tuple,
('paramName', 'goodName')or('paramName', 'breedName').paramcan also be set toNone, in which casevalFuncbehaves somewhat differently. See below.valFunc — func, required
A function that returns a new value for the parameter.
valFunctakes three arguments: the name of the variable being shocked, the parameter type (Nonefor global parameters,'breed'or'good'for per-breed and per-good parameters, respectively), and (for per-breed or per-good parameters) the breed or the good in question. Ifvar is None, however,valFunctakes one argument, the model object. This can be useful for more complex shocks that do not correspond to a particular parameter.timerFunc — func(int)|str, required
A function that takes the current model time and returns a
bool, indicating whether to runvalFuncthat period or not.timerFunccan also be set to the string'button', in which case a button will be drawn in the control panel that runsvalFuncwhen the button is pressed.active — bool, optional
Whether the shock is active by default when the control panel launches. This can be toggled on and off in the control panel later.
Default value: True
desc — str, optional
A long description to display as a tooltip.
Default value: None
charwick
Mar 24, 2020 at 4:08This example shocks the
'rbd'breed parameter for the dwarf breed of agent-primitives with 2% probability each period by drawing from a normal distribution centered around the current value, and with a standard deviation of 4, bounded from below by 1.charwick
Mar 24, 2020 at 3:45The current population of any primitive is stored as a live-updating parameter
'agents_[primitive]'that you can update and shock. Increasing the value will spawn agents, and decreasing the value will cull them at random. Seemodel.nUpdater().This code registers a shock that reduces the population of human-primitive agents by half in period 2018.