Changing the model parameters#
There are multiple theoretical and implemented versions of the ARIO model, each with various parameters. One objective of BoARIO is to offer an extensive, modular and adaptable implementation of these versions, in order to allow easy access to version comparison, parameters values exploration and modeling improvement.
If you are not familiar with the model, it is strongly advised to read the Model description page of this documentation, as well as [Hallegatte, 2013].
Parameters are set when instantiating the model. The following block shows all currently available parameters as well as their default value.
model = ARIOPsiModel(
pym_mriot=mriot,
order_type="alt",
alpha_base=1.0,
alpha_max=1.25,
alpha_tau=365,
rebuild_tau=60,
main_inv_dur=90,
monetary_factor=10**6,
temporal_units_by_step=1,
iotable_year_to_temporal_unit_factor=365,
infinite_inventories_sect=None,
inventory_dict=None,
productive_capital_vector=None,
productive_capital_to_VA_dict=None,
psi_param = 0.80,
inventory_restoration_tau = 60,
)
Here is a quick description of each parameters. Please refer to both the mathematical description and the API Reference for further details.
order_type
: Setting it to"alt"
makes the model use the intermediate order mechanism described in [Guan et al., 2020]. Any other value makes the model use the classic order mechanism used in [Hallegatte, 2013] (see Orders shares variants)alpha_base
,alpha_max
,alpha_tau
respectively set the base overproduction, the maximum overproduction, and its characteristic time (in temporal units).rebuild_tau
sets the default rebuilding or recovering characteristic time for events (this value is overridden if specified directly in the Event object)inventory_dict
should be a dictionary ofsector:duration
format, where all sector are present andduration
is both the initial and goal duration for this input stock.main_inv_dur
sets the default initial/goal inventory duration in temporal units for all sectors if inventory_dict is not given.infinite_inventories_sect
should be a list of inputs never constraining production (the stocks for these input will be virtually infinite when considering stock constraints) (overridden byinventory_dict
)monetary_factor
should be equal to the monetary factor of the MRIOT used (most of the time MRIOT are in millions €/$, hence the default \(10^6\))temporal_units_by_step
the number of temporal units to simulate every step. Setting it to 5 will divide the computation time by 5, but only one every 5 temporal units will actually be simulated. See Focus on the temporal dimension.
iotable_year_to_temporal_unit_factor
defines the temporal unit assuming the MRIOT contains yearly values. Note that this has not been extensively tested and should be used with care.productive_capital_to_VA_dict
should be a dictionary ofsector:ratio
format, where ratio is an estimate of Capital Stock over Value Added ratio. This is used to estimate the capital stock of each sector. By default the ratio is 4/1 for all sectors.productive_capital_vector
can directly set the capital stock for all industries (ie regions*sectors sized). This overridesproductive_capital_to_VA_dict
.psi_param
andinventory_restoration_tau
: see Model dynamics
Note
All arguments except the mriot are keyword arguments (i.e., not positional), meaning you always need to specify <parameter = value>. (This also means you can put them in any order). The reason for this is to make parameter setting entirely explicit.
Focus on the temporal dimension#
Warning
These features have not been extensively tested and should be handled with great care. Feedback is welcome!
The temporal dimension is an important aspect of dynamically modeling indirect economic impacts.
Historically, ARIO has been used both using weekly and daily steps, but mostly the latter case.
BoARIO’s implementation of ARIO aims at being independent of the temporal unit
considered, notably to study how this aspect influences the results.
This means it is possible to run ARIO on virtually any temporal granularity of your choosing.
Furthermore, for efficiency purposes, this implementation allows you to simulate only some temporal units
and interpolate state variables between them.
Hence a step
can represent multiple temporal units
. By default, a step
equals a temporal unit
equals a day and
defaults values of characteristic times and other time related variable are accordingly expressed in number of days.
However, because it is customisable, we favor the term temporal unit
to designate the atomic period in the model throughout this documentation.
The number of temporal units
to simulate can be set when instantiating the Simulation
object like so:
sim = Simulation(model, n_temporal_units_to_sim=730)
By default, a simulation runs for 365 temporal units, representing days.