I'm trying to implement a stochastics model with four scenarios and 24 time steps. I have some cost stochastic time series, so a Map from scenario to time stamp to value. Below is the db in json format. For some reason it takes super long for SpineOpt to run. I don't know what I am doing wrong. The same model but with only 6 time steps runs instantaneously.
{
"object_classes": [
["commodity", "A good or product that can be consumed, produced, traded. E.g., electricity, oil, gas, water...", 281473533932880],
["connection", "A transfer of commodities between nodes. E.g. electricity line, gas pipeline...", 280378317271233],
["model", "An instance of SpineOpt, that specifies general parameters such as the temporal horizon.", 281107035648412],
["node", "A universal aggregator of commodify flows over units and connections, with storage capabilities.", 280740554077951],
["output", "A variable name from SpineOpt that can be included in a report.", 280743406202948],
["report", "A results report from a particular SpineOpt run, including the value of specific variables.", 281108461711708],
["stochastic_scenario", "A scenario for stochastic optimisation in SpineOpt.", 280743389491710],
["stochastic_structure", "A group of stochastic scenarios that represent a structure.", 281470681806146],
["temporal_block", "A length of time with a particular resolution.", 280376891207703],
["unit", "A conversion of one/many comodities between nodes.", 281470681805429],
["unit_constraint", "A generic data-driven custom constraint.", 281473533931636]
],
"relationship_classes": [
["connection__from_node", ["connection", "node"], "Defines the `nodes` the `connection` can take input from, and holds most `connection_flow` variable specific parameters."],
["connection__from_node__unit_constraint", ["connection", "node", "unit_constraint"], "when specified this relationship allows the relevant flow connection flow variable to be included in the specified user constraint"],
["connection__investment_stochastic_structure", ["connection", "stochastic_structure"], "Defines the stochastic structure of the connections investments variable"],
["connection__investment_temporal_block", ["connection", "temporal_block"], "Defines the temporal resolution of the connections investments variable"],
["connection__node__node", ["connection", "node", "node"], "Holds parameters spanning multiple `connection_flow` variables to and from multiple `nodes`."],
["connection__to_node", ["connection", "node"], "Defines the `nodes` the `connection` can output to, and holds most `connection_flow` variable specific parameters."],
["connection__to_node__unit_constraint", ["connection", "node", "unit_constraint"], "when specified this relationship allows the relevant flow connection flow variable to be included in the specified user constraint"],
["model__default_investment_stochastic_structure", ["model", "stochastic_structure"], "Defines the default stochastic structure used for investment variables, which will be replaced by more specific definitions"],
["model__default_investment_temporal_block", ["model", "temporal_block"], "Defines the default temporal block used for investment variables, which will be replaced by more specific definitions"],
["model__default_stochastic_structure", ["model", "stochastic_structure"], "Defines the default stochastic structure used for model variables, which will be replaced by more specific definitions"],
["model__default_temporal_block", ["model", "temporal_block"], "Defines the default temporal block used for model variables, which will be replaced by more specific definitions"],
["model__report", ["model", "report"], "Determines which reports are written for each model and in turn, which outputs are written for each model"],
["model__stochastic_structure", ["model", "stochastic_structure"], "Defines which `stochastic_structure`s are included in which `model`s."],
["model__temporal_block", ["model", "temporal_block"], "Defines which `temporal_block`s are included in which `model`s."],
["node__commodity", ["node", "commodity"], "Define a `commodity` for a `node`. Only a single `commodity` is permitted per `node`"],
["node__investment_stochastic_structure", ["node", "stochastic_structure"], "defines the stochastic structure for node related investments, currently only storages"],
["node__investment_temporal_block", ["node", "temporal_block"], "defines the temporal resolution for node related investments, currently only storages"],
["node__node", ["node", "node"], "Holds parameters for direct interactions between two `nodes`, e.g. `node_state` diffusion coefficients."],
["node__stochastic_structure", ["node", "stochastic_structure"], "Defines which specific `stochastic_structure` is used by the `node` and all `flow` variables associated with it. Only one `stochastic_structure` is permitted per `node`."],
["node__temporal_block", ["node", "temporal_block"], "Defines the `temporal_blocks` used by the `node` and all the `flow` variables associated with it."],
["node__unit_constraint", ["node", "unit_constraint"], "specifying this relationship allows a node's demand or node_state to be included in the specified unit constraint"],
["parent_stochastic_scenario__child_stochastic_scenario", ["stochastic_scenario", "stochastic_scenario"], "Defines the master stochastic direct acyclic graph, meaning how the `stochastic_scenarios` are related to each other."],
["report__output", ["report", "output"], "Output object related to a report object are returned to the output database (if they appear in the model as variables)"],
["stochastic_structure__stochastic_scenario", ["stochastic_structure", "stochastic_scenario"], "Defines which `stochastic_scenarios` are included in which `stochastic_structure`, and holds the parameters required for realizing the structure in combination with the `temporal_blocks`."],
["unit__commodity", ["unit", "commodity"], "Holds parameters for `commodities` used by the `unit`."],
["unit__from_node", ["unit", "node"], "Defines the `nodes` the `unit` can take input from, and holds most `unit_flow` variable specific parameters."],
["unit__from_node__unit_constraint", ["unit", "node", "unit_constraint"], "Defines which input `unit_flows` are included in the `unit_constraint`, and holds their parameters."],
["unit__investment_stochastic_structure", ["unit", "stochastic_structure"], "Sets the stochastic structure for investment decisions - overrides `model__default_investment_stochastic_structure`."],
["unit__investment_temporal_block", ["unit", "temporal_block"], "Sets the temporal resolution of investment decisions - overrides `model__default_investment_temporal_block`"],
["unit__node__node", ["unit", "node", "node"], "Holds parameters spanning multiple `unit_flow` variables to and from multiple `nodes`."],
["unit__to_node", ["unit", "node"], "Defines the `nodes` the `unit` can output to, and holds most `unit_flow` variable specific parameters."],
["unit__to_node__unit_constraint", ["unit", "node", "unit_constraint"], "Defines which output `unit_flows` are included in the `unit_constraint`, and holds their parameters."],
["unit__unit_constraint", ["unit", "unit_constraint"], "Defines which `units_on` variables are included in the `unit_constraint`, and holds their parameters."],
["units_on__stochastic_structure", ["unit", "stochastic_structure"], "Defines which specific `stochastic_structure` is used for the `units_on` variable of the `unit`. Only one `stochastic_structure` is permitted per `unit`."],
["units_on__temporal_block", ["unit", "temporal_block"], "Defines which specific `temporal_blocks` are used by the `units_on` variable of the `unit`."]
],
"parameter_value_lists": [
["balance_type_list", "balance_type_group"],
["balance_type_list", "balance_type_node"],
["balance_type_list", "balance_type_none"],
["boolean_value_list", false],
["boolean_value_list", true],
["commodity_physics_list", "commodity_physics_lodf"],
["commodity_physics_list", "commodity_physics_none"],
["commodity_physics_list", "commodity_physics_ptdf"],
["connection_investment_variable_type_list", "connection_investment_variable_type_continuous"],
["connection_investment_variable_type_list", "connection_investment_variable_type_integer"],
["connection_type_list", "connection_type_lossless_bidirectional"],
["connection_type_list", "connection_type_normal"],
["constraint_sense_list", "<="],
["constraint_sense_list", "=="],
["constraint_sense_list", ">="],
["duration_unit_list", "hour"],
["duration_unit_list", "minute"],
["model_type_list", "spineopt_master"],
["model_type_list", "spineopt_operations"],
["model_type_list", "spineopt_other"],
["node_opf_type_list", "node_opf_type_normal"],
["node_opf_type_list", "node_opf_type_reference"],
["unit_investment_variable_type_list", "unit_investment_variable_type_continuous"],
["unit_investment_variable_type_list", "unit_investment_variable_type_integer"],
["unit_online_variable_type_list", "unit_online_variable_type_binary"],
["unit_online_variable_type_list", "unit_online_variable_type_integer"],
["unit_online_variable_type_list", "unit_online_variable_type_linear"],
["variable_type_list", "variable_type_binary"],
["variable_type_list", "variable_type_continuous"],
["variable_type_list", "variable_type_integer"],
["write_mps_file_list", "write_mps_always"],
["write_mps_file_list", "write_mps_never"],
["write_mps_file_list", "write_mps_on_no_solve"]
],
"object_parameters": [
["commodity", "commodity_lodf_tolerance", 0.1, null, "The minimum absolute value of the line outage distribution factor (LODF) that is considered meaningful."],
["commodity", "commodity_physics", "commodity_physics_none", "commodity_physics_list", "Defines if the `commodity` follows lodf or ptdf physics."],
["commodity", "commodity_ptdf_threshold", 0.0001, null, "The minimum absolute value of the power transfer distribution factor (PTDF) that is considered meaningful."],
["commodity", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["connection", "candidate_connections", null, null, "The number of connections that may be invested in"],
["connection", "connection_availability_factor", 1.0, null, "Availability of the `connection`, acting as a multiplier on its `connection_capacity`. Typically between 0-1."],
["connection", "connection_contingency", null, "boolean_value_list", "A boolean flag for defining a contingency `connection`."],
["connection", "connection_flow_cost", null, null, "Variable costs of a flow through a `connection`. E.g. EUR/MWh of energy throughput."],
["connection", "connection_investment_cost", null, null, "The per unit investment cost for the connection over the `connection_investment_lifetime`"],
["connection", "connection_investment_lifetime", null, null, "Determines the minimum investment lifetime of a connection. Once invested, it remains in service for this long"],
["connection", "connection_investment_variable_type", "variable_type_integer", "variable_type_list", "Determines whether the investment variable is integer `variable_type_integer` or continuous `variable_type_continuous`"],
["connection", "connection_monitored", false, "boolean_value_list", "A boolean flag for defining a contingency `connection`."],
["connection", "connection_reactance", null, null, "The per unit reactance of a `connection`."],
["connection", "connection_reactance_base", 1.0, null, "If the reactance is given for a p.u. (e.g. p.u. = 100MW), the `connection_reactance_base` can be set to perform this conversion (e.g. *100)."],
["connection", "connection_resistance", null, null, "The per unit resistance of a `connection`."],
["connection", "connection_type", "connection_type_normal", "connection_type_list", "A selector between a normal and a lossless bidirectional `connection`."],
["connection", "fix_connections_invested", null, null, "Setting a value fixes the connections_invested variable accordingly"],
["connection", "fix_connections_invested_available", null, null, "Setting a value fixes the connections_invested_available variable accordingly"],
["connection", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["connection", "has_binary_gas_flow", false, "boolean_value_list", "This parameter needs to be set to `true` in order to represent bidirectional pressure drive gas transfer."],
["connection", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["model", "big_m", 1000000.0, null, "Sufficiently large number used for linearization bilinear terms, e.g. to enforce bidirectional flow for gas pipielines"],
["model", "duration_unit", "hour", "duration_unit_list", "Defines the base temporal unit of the `model`. Currently supported values are either an `hour` or a `minute`."],
["model", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["model", "max_gap", 0.05, null, "Specifies the maximum optimality gap for the model. Currently only used for the master problem within a decomposed structure"],
["model", "max_iterations", 10.0, null, "Specifies the maximum number of iterations for the model. Currently only used for the master problem within a decomposed structure"],
["model", "model_end", {"type": "date_time", "data": "2000-01-02T00:00:00"}, null, "Defines the last timestamp to be modelled. Rolling optimization terminates after passing this point."],
["model", "model_start", {"type": "date_time", "data": "2000-01-01T00:00:00"}, null, "Defines the first timestamp to be modelled. Relative `temporal_blocks` refer to this value for their start and end."],
["model", "model_type", "spineopt_operations", "model_type_list", "Used to identify model objects as relating to the master problem or operational sub problems (default)"],
["model", "roll_forward", null, null, "Defines how much the model moves ahead in time between solves in a rolling optimization. Without this parameter, everything is solved in as a single optimization."],
["model", "write_lodf_file", false, "boolean_value_list", "A boolean flag for whether the LODF values should be written to a results file."],
["model", "write_mps_file", null, "write_mps_file_list", "A selector for writing an .mps file of the model."],
["model", "write_ptdf_file", false, "boolean_value_list", "A boolean flag for whether the LODF values should be written to a results file."],
["node", "balance_type", "balance_type_node", "balance_type_list", "A selector for how the `:nodal_balance` constraint should be handled."],
["node", "candidate_storages", null, null, "Determines the maximum number of new storages which may be invested in"],
["node", "demand", 0.0, null, "Demand for the `commodity` of a `node`. Energy gains can be represented using negative `demand`."],
["node", "downward_reserve", false, null, "Identifier for `node`s providing downward reserves"],
["node", "fix_node_pressure", null, null, "Fixes the corresponding `node_pressure` variable to the provided value"],
["node", "fix_node_state", null, null, "Fixes the corresponding `node_state` variable to the provided value. Can be used for e.g. fixing boundary conditions."],
["node", "fix_node_voltage_angle", null, null, "Fixes the corresponding `node_voltage_angle` variable to the provided value"],
["node", "fix_storages_invested", null, null, "Used to fix the value of the storages_invested variable"],
["node", "fix_storages_invested_available", null, null, "Used to fix the value of the storages_invested_available variable"],
["node", "frac_state_loss", 0.0, null, "Self-discharge coefficient for `node_state` variables. Effectively, represents the *loss power per unit of state*."],
["node", "fractional_demand", 0.0, null, "The fraction of a `node` group's `demand` applied for the `node` in question."],
["node", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["node", "has_pressure", false, "boolean_value_list", "A boolean flag for whether a `node` has a `node_pressure` variable."],
["node", "has_state", false, "boolean_value_list", "A boolean flag for whether a `node` has a `node_state` variable."],
["node", "has_voltage_angle", false, "boolean_value_list", "A boolean flag for whether a `node` has a `node_voltage_angle` variable."],
["node", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["node", "is_reserve_node", false, "boolean_value_list", "A boolean flag for whether a `node` is acting as a `reserve_node`"],
["node", "max_node_pressure", null, null, "Maximum allowed gas pressure at `node`."],
["node", "max_voltage_angle", null, null, "Maximum allowed voltage angle at `node`."],
["node", "min_node_pressure", null, null, "Minimum allowed gas pressure at `node`."],
["node", "min_voltage_angle", null, null, "Minimum allowed voltage angle at `node`. "],
["node", "minimum_reserve_activation_time", null, null, "Duration a certain reserve product needs to be online/available"],
["node", "nodal_balance_sense", "==", "constraint_sense_list", "A selector for `nodal_balance` constraint sense."],
["node", "node_opf_type", "node_opf_type_normal", "node_opf_type_list", "A selector for the reference `node` (slack bus) when PTDF-based DC load-flow is enabled."],
["node", "node_slack_penalty", null, null, "A penalty cost for `node_slack_pos` and `node_slack_neg` variables. The slack variables won't be included in the model unless there's a cost defined for them."],
["node", "node_state_cap", null, null, "The maximum permitted value for a `node_state` variable."],
["node", "node_state_min", 0.0, null, "The minimum permitted value for a `node_state` variable."],
["node", "state_coeff", 0.0, null, "Represents the `commodity` content of a `node_state` variable in respect to the `unit_flow` and `connection_flow` variables. Essentially, acts as a coefficient on the `node_state` variable in the `:node_injection` constraint."],
["node", "storage_investment_cost", null, null, "Determines the investment cost per unit state_cap over the investment life of a storage"],
["node", "storage_investment_lifetime", null, null, "Minimum lifetime for storage investment decisions."],
["node", "storage_investment_variable_type", "variable_type_integer", "variable_type_list", "Determines whether the storage investment variable is continuous (usually representing capacity) or integer (representing discrete units invested)"],
["node", "tax_in_unit_flow", 0.0, null, "Tax costs for incoming `unit_flows` on this `node`. E.g. EUR/MWh."],
["node", "tax_net_unit_flow", 0.0, null, "Tax costs for net incoming and outgoing `unit_flows` on this `node`. Incoming flows accrue positive net taxes, and outgoing flows accrue negative net taxes."],
["node", "tax_out_unit_flow", 0.0, null, "Tax costs for outgoing `unit_flows` from this `node`. E.g. EUR/MWh."],
["node", "upward_reserve", false, null, "Identifier for `node`s providing upward reserves"],
["output", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["report", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["report", "output_db_url", null, null, "Database url for SpineOpt output."],
["stochastic_scenario", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["stochastic_structure", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["temporal_block", "block_end", null, null, "The end time for the `temporal_block`. Can be given either as a `DateTime` for a static end point, or as a `Duration` for an end point relative to the start of the current optimization."],
["temporal_block", "block_start", null, null, "The start time for the `temporal_block`. Can be given either as a `DateTime` for a static start point, or as a `Duration` for an start point relative to the start of the current optimization."],
["temporal_block", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["temporal_block", "representative_periods_mapping", null, null, "Mapping from real timelices to their corresponding representative days"],
["temporal_block", "resolution", {"type": "duration", "data": "1h"}, null, "Temporal resolution of the `temporal_block`. Essentially, divides the period between `block_start` and `block_end` into `TimeSlices` with the input `resolution`."],
["temporal_block", "weight", 1.0, null, "Weighting factor of the temporal block associated with the objective function"],
["unit", "candidate_units", null, null, "Number of units which may be additionally constructed"],
["unit", "curtailment_cost", null, null, "Costs for curtailing generation. Essentially, accrues costs whenever `unit_flow` not operating at its maximum available capacity. E.g. EUR/MWh"],
["unit", "fix_units_invested", null, null, "Fix the value of the `units_invested` variable."],
["unit", "fix_units_invested_available", null, null, "Fix the value of the `units_invested_available` variable"],
["unit", "fix_units_on", null, null, "Fix the value of the `units_on` variable."],
["unit", "fom_cost", null, null, "Fixed operation and maintenance costs of a `unit`. Essentially, a cost coefficient on the `number_of_units` and `unit_capacity` parameters. E.g. EUR/MWh"],
["unit", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["unit", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["unit", "min_down_time", null, null, "Minimum downtime of a `unit` after it shuts down."],
["unit", "min_up_time", null, null, "Minimum uptime of a `unit` after it starts up."],
["unit", "number_of_units", 1.0, null, "Denotes the number of 'sub units' aggregated to form the modelled `unit`."],
["unit", "online_variable_type", "unit_online_variable_type_binary", "unit_online_variable_type_list", "A selector for how the `units_on` variable is represented within the model."],
["unit", "shut_down_cost", null, null, "Costs of shutting down a 'sub unit', e.g. EUR/shutdown."],
["unit", "start_up_cost", null, null, "Costs of starting up a 'sub unit', e.g. EUR/startup."],
["unit", "unit_availability_factor", 1.0, null, "Availability of the `unit`, acting as a multiplier on its `unit_capacity`. Typically between 0-1."],
["unit", "unit_investment_cost", null, null, "Investment cost per 'sub unit' built."],
["unit", "unit_investment_lifetime", null, null, "Minimum lifetime for unit investment decisions."],
["unit", "unit_investment_variable_type", "unit_investment_variable_type_continuous", "unit_investment_variable_type_list", "Determines whether investment variable is integer or continuous."],
["unit_constraint", "constraint_sense", "==", "constraint_sense_list", "A selector for the sense of the `unit_constraint`."],
["unit_constraint", "is_active", true, "boolean_value_list", "If false, the object is excluded from the model if the tool filter object activity control is specified"],
["unit_constraint", "right_hand_side", 0.0, null, "The right-hand side, constant term in a `unit_constraint`. Can be time-dependent and used e.g. for complicated efficiency approximations."]
],
"relationship_parameters": [
["connection__from_node", "connection_capacity", null, null, "Limits the `connection_flow` variable from the `from_node`. `from_node` can be a group of `nodes`, in which case the sum of the `connection_flow` is constrained."],
["connection__from_node", "connection_conv_cap_to_flow", 1.0, null, "Optional coefficient for `connection_capacity` unit conversions in the case that the `connection_capacity` value is incompatible with the desired `connection_flow` units."],
["connection__from_node", "connection_emergency_capacity", null, null, "Post contingency flow capacity of a `connection`. Sometimes referred to as emergency rating"],
["connection__from_node", "fix_binary_gas_connection_flow", null, null, "Fix the value of the `connection_flow_binary` variable, and hence pre-determine the direction of flow in the connection."],
["connection__from_node", "fix_connection_flow", null, null, "Fix the value of the `connection_flow` variable."],
["connection__from_node", "fix_connection_intact_flow", null, null, "Fix the value of the `connection_intact_flow` variable."],
["connection__from_node", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["connection__from_node__unit_constraint", "connection_flow_coefficient", 0.0, null, "defines the unit constraint coefficient on the connection flow variable in the from direction"],
["connection__node__node", "compression_factor", null, null, "The compression factor establishes a compression from an origin node to a receiving node, which are connected through a connection. The first node corresponds to the origin node, the second to the (compressed) destination node. Typically the value is >=1."],
["connection__node__node", "connection_flow_delay", {"type": "duration", "data": "0h"}, null, "Delays the `connection_flows` associated with the latter `node` in respect to the `connection_flows` associated with the first `node`."],
["connection__node__node", "connection_linepack_constant", null, null, "The linepack constant is a property of gas pipelines and relates the linepack to the pressure of the adjacent nodes."],
["connection__node__node", "fix_ratio_out_in_connection_flow", null, null, "Fix the ratio between the `connection_flow` from the first `node` and the `connection_flow` to the second `node`."],
["connection__node__node", "fixed_pressure_constant_0", null, null, "Fixed pressure points for pipelines for the outer approximation of the Weymouth approximation. The direction of flow is the first node in the relationship to the second node in the relationship."],
["connection__node__node", "fixed_pressure_constant_1", null, null, "Fixed pressure points for pipelines for the outer approximation of the Weymouth approximation. The direction of flow is the first node in the relationship to the second node in the relationship."],
["connection__node__node", "max_ratio_out_in_connection_flow", null, null, "Maximum ratio between the `connection_flow` from the first `node` and the `connection_flow` to the second `node`."],
["connection__node__node", "min_ratio_out_in_connection_flow", null, null, "Minimum ratio between the `connection_flow` from the first `node` and the `connection_flow` to the second `node`."],
["connection__to_node", "connection_capacity", null, null, "Limits the `connection_flow` variable to the `to_node`. `to_node` can be a group of `nodes`, in which case the sum of the `connection_flow` is constrained."],
["connection__to_node", "connection_conv_cap_to_flow", 1.0, null, "Optional coefficient for `connection_capacity` unit conversions in the case the `connection_capacity` value is incompatible with the desired `connection_flow` units."],
["connection__to_node", "connection_emergency_capacity", null, null, "The maximum post-contingency flow on a monitored `connection`."],
["connection__to_node", "fix_connection_flow", null, null, "Fix the value of the `connection_flow` variable."],
["connection__to_node", "fix_connection_intact_flow", null, null, "Fix the value of the `connection_intact_flow` variable."],
["connection__to_node", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["connection__to_node__unit_constraint", "connection_flow_coefficient", 0.0, null, "defines the unit constraint coefficient on the connection flow variable in the to direction"],
["node__node", "diff_coeff", 0.0, null, "Commodity diffusion coefficient between two `nodes`. Effectively, denotes the *diffusion power per unit of state* from the first `node` to the second."],
["node__temporal_block", "cyclic_condition", false, "boolean_value_list", "If the cyclic condition is set to true for a storage node, the `node_state` at the end of the optimization window has to be larger than or equal to the initial storage state."],
["node__unit_constraint", "demand_coefficient", 0.0, null, "coefficient of the specified node's demand in the specified unit constraint"],
["node__unit_constraint", "node_state_coefficient", 0.0, null, "Coefficient of the specified node's state variable in the specified unit constraint."],
["stochastic_structure__stochastic_scenario", "stochastic_scenario_end", null, null, "A `Duration` for when a `stochastic_scenario` ends and its `child_stochastic_scenarios` start. Values are interpreted relative to the start of the current solve, and if no value is given, the `stochastic_scenario` is assumed to continue indefinitely."],
["stochastic_structure__stochastic_scenario", "weight_relative_to_parents", 1.0, null, "The weight of the `stochastic_scenario` in the objective function relative to its parents."],
["unit__commodity", "max_cum_in_unit_flow_bound", null, null, "Set a maximum cumulative upper bound for a `unit_flow`"],
["unit__from_node", "fix_nonspin_ramp_up_unit_flow", null, null, "Fix the `nonspin_ramp_up_unit_flow` variable."],
["unit__from_node", "fix_nonspin_units_started_up", null, null, "Fix the `nonspin_units_started_up` variable."],
["unit__from_node", "fix_ramp_up_unit_flow", null, null, "Fix the `ramp_up_unit_flow` variable."],
["unit__from_node", "fix_start_up_unit_flow", null, null, "Fix the `start_up_unit_flow` variable."],
["unit__from_node", "fix_unit_flow", null, null, "Fix the `unit_flow` variable."],
["unit__from_node", "fix_unit_flow_op", null, null, "Fix the `unit_flow_op` variable."],
["unit__from_node", "fuel_cost", null, null, "Variable fuel costs than can be attributed to a `unit_flow`. E.g. EUR/MWh"],
["unit__from_node", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["unit__from_node", "max_res_shutdown_ramp", null, null, "Max. downward reserve ramp for online units scheduled to shut down for reserve provision"],
["unit__from_node", "max_res_startup_ramp", null, null, "Maximum non-spinning reserve ramp-up for startups."],
["unit__from_node", "max_shutdown_ramp", null, null, "Max. downward ramp for units shutting down"],
["unit__from_node", "max_startup_ramp", null, null, "Maximum ramp-up during startups."],
["unit__from_node", "min_res_shutdown_ramp", null, null, "Minimum non-spinning reserve ramp-down for online units providing reserves during shut-downs"],
["unit__from_node", "min_res_startup_ramp", null, null, "Minimum non-spinning reserve ramp-up for startups."],
["unit__from_node", "min_shutdown_ramp", null, null, "Minimum ramp-up during startups"],
["unit__from_node", "min_startup_ramp", null, null, "Minimum ramp-up during startups."],
["unit__from_node", "minimum_operating_point", null, null, "Minimum level for the `unit_flow` relative to the `units_on` online capacity."],
["unit__from_node", "operating_points", null, null, "Operating points for piecewise-linear `unit` efficiency approximations."],
["unit__from_node", "ramp_down_cost", null, null, "Costs for ramping down"],
["unit__from_node", "ramp_down_limit", null, null, "Limit the maximum ramp-down rate of an online unit, given as a fraction of the unit_capacity. [ramp_down_limit] = %/t, e.g. 0.2/h"],
["unit__from_node", "ramp_up_cost", null, null, "Costs for ramping up"],
["unit__from_node", "ramp_up_limit", null, null, "Limit the maximum ramp-up rate of an online unit, given as a fraction of the unit_capacity. [ramp_up_limit] = %/t, e.g. 0.2/h"],
["unit__from_node", "reserve_procurement_cost", null, null, "Procurement cost for reserves"],
["unit__from_node", "unit_capacity", null, null, "Maximum `unit_flow` capacity of a single 'sub_unit' of the `unit`."],
["unit__from_node", "unit_conv_cap_to_flow", 1.0, null, "Optional coefficient for `unit_capacity` unit conversions in the case the `unit_capacity` value is incompatible with the desired `unit_flow` units."],
["unit__from_node", "vom_cost", null, null, "Variable operating costs of a `unit_flow` variable. E.g. EUR/MWh."],
["unit__from_node__unit_constraint", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["unit__from_node__unit_constraint", "unit_flow_coefficient", 0.0, null, "Coefficient of a `unit_flow` variable for a custom `unit_constraint`."],
["unit__node__node", "fix_ratio_in_in_unit_flow", null, null, "Fix the ratio between two `unit_flows` coming into the `unit` from the two `nodes`."],
["unit__node__node", "fix_ratio_in_out_unit_flow", null, null, "Fix the ratio between an incoming `unit_flow` from the first `node` and an outgoing `unit_flow` to the second `node`."],
["unit__node__node", "fix_ratio_out_in_unit_flow", null, null, "Fix the ratio between an outgoing `unit_flow` to the first `node` and an incoming `unit_flow` from the second `node`."],
["unit__node__node", "fix_ratio_out_out_unit_flow", null, null, "Fix the ratio between two `unit_flows` going from the `unit` into the two `nodes`."],
["unit__node__node", "fix_units_on_coefficient_in_in", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `fix_ratio_in_in_unit_flow` constraint."],
["unit__node__node", "fix_units_on_coefficient_in_out", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `fix_ratio_in_out_unit_flow` constraint."],
["unit__node__node", "fix_units_on_coefficient_out_in", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `fix_ratio_out_in_unit_flow` constraint."],
["unit__node__node", "fix_units_on_coefficient_out_out", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `fix_ratio_out_out_unit_flow` constraint."],
["unit__node__node", "max_ratio_in_in_unit_flow", null, null, "Maximum ratio between two `unit_flows` coming into the `unit` from the two `nodes`."],
["unit__node__node", "max_ratio_in_out_unit_flow", null, null, "Maximum ratio between an incoming `unit_flow` from the first `node` and an outgoing `unit_flow` to the second `node`."],
["unit__node__node", "max_ratio_out_in_unit_flow", null, null, "Maximum ratio between an outgoing `unit_flow` to the first `node` and an incoming `unit_flow` from the second `node`."],
["unit__node__node", "max_ratio_out_out_unit_flow", null, null, "Maximum ratio between two `unit_flows` going from the `unit` into the two `nodes`."],
["unit__node__node", "max_units_on_coefficient_in_in", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `max_ratio_in_in_unit_flow` constraint."],
["unit__node__node", "max_units_on_coefficient_in_out", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `max_ratio_in_out_unit_flow` constraint."],
["unit__node__node", "max_units_on_coefficient_out_in", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `max_ratio_out_in_unit_flow` constraint."],
["unit__node__node", "max_units_on_coefficient_out_out", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `max_ratio_out_out_unit_flow` constraint."],
["unit__node__node", "min_ratio_in_in_unit_flow", null, null, "Minimum ratio between two `unit_flows` coming into the `unit` from the two `nodes`."],
["unit__node__node", "min_ratio_in_out_unit_flow", null, null, "Minimum ratio between an incoming `unit_flow` from the first `node` and an outgoing `unit_flow` to the second `node`."],
["unit__node__node", "min_ratio_out_in_unit_flow", null, null, "Minimum ratio between an outgoing `unit_flow` to the first `node` and an incoming `unit_flow` from the second `node`."],
["unit__node__node", "min_ratio_out_out_unit_flow", null, null, "Minimum ratio between two `unit_flows` going from the `unit` into the two `nodes`."],
["unit__node__node", "min_units_on_coefficient_in_in", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `min_ratio_in_in_unit_flow` constraint."],
["unit__node__node", "min_units_on_coefficient_in_out", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `min_ratio_in_out_unit_flow` constraint."],
["unit__node__node", "min_units_on_coefficient_out_in", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `min_ratio_out_in_unit_flow` constraint."],
["unit__node__node", "min_units_on_coefficient_out_out", 0.0, null, "Optional coefficient for the `units_on` variable impacting the `min_ratio_out_out_unit_flow` constraint."],
["unit__node__node", "unit_idle_heat_rate", 0.0, null, "Flow from node1 per unit time and per `units_on` that results in no additional flow to node2"],
["unit__node__node", "unit_incremental_heat_rate", null, null, "Standard piecewise incremental heat rate where node1 is assumed to be the fuel and node2 is assumed to be electriciy. Assumed monotonically increasing. Array type or single coefficient where the number of coefficients must match the dimensions of `unit_operating_points`"],
["unit__node__node", "unit_start_flow", 0.0, null, "Flow from node1 that is incurred when a unit is started up."],
["unit__to_node", "fix_nonspin_ramp_down_unit_flow", null, null, "Fix the `nonspin_ramp_down_unit_flow` variable."],
["unit__to_node", "fix_nonspin_ramp_up_unit_flow", null, null, "Fix the `nonspin_ramp_up_unit_flow` variable."],
["unit__to_node", "fix_nonspin_units_shut_down", null, null, "Fix the `nonspin_units_shut_down` variable."],
["unit__to_node", "fix_nonspin_units_started_up", null, null, "Fix the `nonspin_units_started_up` variable."],
["unit__to_node", "fix_ramp_down_unit_flow", null, null, "Fix the `ramp_down_unit_flow` variable."],
["unit__to_node", "fix_ramp_up_unit_flow", null, null, "Fix the `ramp_up_unit_flow` variable."],
["unit__to_node", "fix_shut_down_unit_flow", null, null, "Fix the `shut_down_unit_flow` variable."],
["unit__to_node", "fix_start_up_unit_flow", null, null, "Fix the `start_up_unit_flow` variable."],
["unit__to_node", "fix_unit_flow", null, null, "Fix the `unit_flow` variable."],
["unit__to_node", "fix_unit_flow_op", null, null, "Fix the `unit_flow_op` variable."],
["unit__to_node", "fuel_cost", null, null, "Variable fuel costs than can be attributed to a `unit_flow`. E.g. EUR/MWh"],
["unit__to_node", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["unit__to_node", "max_res_shutdown_ramp", null, null, "Maximum non-spinning reserve ramp-down for online units providing reserves during shut-downs"],
["unit__to_node", "max_res_startup_ramp", null, null, "Maximum non-spinning reserve ramp-up for offline units scheduled for reserve provision"],
["unit__to_node", "max_shutdown_ramp", null, null, "Maximum ramp-down during shutdowns"],
["unit__to_node", "max_startup_ramp", null, null, "Maximum ramp-up during startups"],
["unit__to_node", "min_res_shutdown_ramp", null, null, "Minimum non-spinning reserve ramp-down for online units providing reserves during shut-downs"],
["unit__to_node", "min_res_startup_ramp", null, null, "Minimum non-spinning reserve ramp-up for offline units scheduled for reserve provision"],
["unit__to_node", "min_shutdown_ramp", null, null, "Minimum ramp-up during startups"],
["unit__to_node", "min_startup_ramp", null, null, "Minimum ramp-up during startups"],
["unit__to_node", "minimum_operating_point", null, null, "Minimum level for the `unit_flow` relative to the `units_on` online capacity."],
["unit__to_node", "operating_points", null, null, "Decomposes the flow variable into a number of separate operating segment variables. Used to in conjunction with `unit_incremental_heat_rate` and/or `unit_constraint`s"],
["unit__to_node", "ramp_down_cost", null, null, "Costs of ramping down"],
["unit__to_node", "ramp_down_limit", null, null, "Limit the maximum ramp-down rate of an online unit, given as a fraction of the unit_capacity. [ramp_down_limit] = %/t, e.g. 0.2/h"],
["unit__to_node", "ramp_up_cost", null, null, "Costs of ramping up"],
["unit__to_node", "ramp_up_limit", null, null, "Limit the maximum ramp-up rate of an online unit, given as a fraction of the unit_capacity. [ramp_up_limit] = %/t, e.g. 0.2/h"],
["unit__to_node", "reserve_procurement_cost", null, null, "Procurement cost for reserves"],
["unit__to_node", "unit_capacity", null, null, "Maximum `unit_flow` capacity of a single 'sub_unit' of the `unit`."],
["unit__to_node", "unit_conv_cap_to_flow", 1.0, null, "Optional coefficient for `unit_capacity` unit conversions in the case the `unit_capacity` value is incompatible with the desired `unit_flow` units."],
["unit__to_node", "vom_cost", null, null, "Variable operating costs of a `unit_flow` variable. E.g. EUR/MWh."],
["unit__to_node__unit_constraint", "graph_view_position", null, null, "An optional setting for tweaking the position of the different elements when drawing them via Spine Toolbox Graph View."],
["unit__to_node__unit_constraint", "unit_flow_coefficient", 0.0, null, "Coefficient of a `unit_flow` variable for a custom `unit_constraint`."],
["unit__unit_constraint", "units_on_coefficient", 0.0, null, "Coefficient of a `units_on` variable for a custom `unit_constraint`."],
["unit__unit_constraint", "units_started_up_coefficient", 0.0, null, "Coefficient of a `units_started_up` variable for a custom `unit_constraint`."]
],
"objects": [
["model", "ABVattenkraft_stochastic", null],
["node", "Fallet_rsvr", null],
["node", "Forsen_rsvr", null],
["node", "Sele_rsvr", null],
["node", "Strommen_rsvr", null],
["node", "downstream", null],
["node", "electricity_node", null],
["output", "node_state", null],
["output", "unit_flow", null],
["output", "units_on", null],
["report", "rpt1", null],
["stochastic_scenario", "first_stage", null],
["stochastic_scenario", "scen1", null],
["stochastic_scenario", "scen2", null],
["stochastic_scenario", "scen3", null],
["stochastic_scenario", "scen4", null],
["stochastic_structure", "det", null],
["stochastic_structure", "fan", null],
["temporal_block", "bilateral_contract_period", null],
["temporal_block", "hourly", null],
["unit", "Fallet_pwr_plant", null],
["unit", "Forsen_pwr_plant", null],
["unit", "Sele_pwr_plant", null],
["unit", "Strommen_pwr_plant", null],
["unit", "bilateral_contract", null],
["unit", "electricity_trading", null],
["unit", "future_value", null]
],
"relationships": [
["model__default_stochastic_structure", ["ABVattenkraft_stochastic", "fan"]],
["model__default_temporal_block", ["ABVattenkraft_stochastic", "hourly"]],
["model__report", ["ABVattenkraft_stochastic", "rpt1"]],
["model__stochastic_structure", ["ABVattenkraft_stochastic", "det"]],
["model__stochastic_structure", ["ABVattenkraft_stochastic", "fan"]],
["model__temporal_block", ["ABVattenkraft_stochastic", "bilateral_contract_period"]],
["model__temporal_block", ["ABVattenkraft_stochastic", "hourly"]],
["report__output", ["rpt1", "node_state"]],
["report__output", ["rpt1", "unit_flow"]],
["report__output", ["rpt1", "units_on"]],
["stochastic_structure__stochastic_scenario", ["det", "first_stage"]],
["stochastic_structure__stochastic_scenario", ["fan", "scen1"]],
["stochastic_structure__stochastic_scenario", ["fan", "scen2"]],
["stochastic_structure__stochastic_scenario", ["fan", "scen3"]],
["stochastic_structure__stochastic_scenario", ["fan", "scen4"]],
["unit__from_node", ["Fallet_pwr_plant", "Fallet_rsvr"]],
["unit__from_node", ["Forsen_pwr_plant", "Forsen_rsvr"]],
["unit__from_node", ["Sele_pwr_plant", "Sele_rsvr"]],
["unit__from_node", ["Strommen_pwr_plant", "Strommen_rsvr"]],
["unit__from_node", ["bilateral_contract", "electricity_node"]],
["unit__from_node", ["electricity_trading", "electricity_node"]],
["unit__from_node", ["future_value", "Fallet_rsvr"]],
["unit__from_node", ["future_value", "Forsen_rsvr"]],
["unit__from_node", ["future_value", "Sele_rsvr"]],
["unit__from_node", ["future_value", "Strommen_rsvr"]],
["unit__node__node", ["Fallet_pwr_plant", "Forsen_rsvr", "Fallet_rsvr"]],
["unit__node__node", ["Fallet_pwr_plant", "electricity_node", "Fallet_rsvr"]],
["unit__node__node", ["Forsen_pwr_plant", "Strommen_rsvr", "Forsen_rsvr"]],
["unit__node__node", ["Forsen_pwr_plant", "electricity_node", "Forsen_rsvr"]],
["unit__node__node", ["Sele_pwr_plant", "downstream", "Sele_rsvr"]],
["unit__node__node", ["Sele_pwr_plant", "electricity_node", "Sele_rsvr"]],
["unit__node__node", ["Strommen_pwr_plant", "Sele_rsvr", "Strommen_rsvr"]],
["unit__node__node", ["Strommen_pwr_plant", "electricity_node", "Strommen_rsvr"]],
["unit__to_node", ["Fallet_pwr_plant", "Forsen_rsvr"]],
["unit__to_node", ["Fallet_pwr_plant", "electricity_node"]],
["unit__to_node", ["Forsen_pwr_plant", "Strommen_rsvr"]],
["unit__to_node", ["Forsen_pwr_plant", "electricity_node"]],
["unit__to_node", ["Sele_pwr_plant", "downstream"]],
["unit__to_node", ["Sele_pwr_plant", "electricity_node"]],
["unit__to_node", ["Strommen_pwr_plant", "Sele_rsvr"]],
["unit__to_node", ["Strommen_pwr_plant", "electricity_node"]],
["unit__to_node", ["electricity_trading", "electricity_node"]],
["units_on__stochastic_structure", ["Fallet_pwr_plant", "fan"]],
["units_on__stochastic_structure", ["Forsen_pwr_plant", "fan"]],
["units_on__stochastic_structure", ["Sele_pwr_plant", "fan"]],
["units_on__stochastic_structure", ["Strommen_pwr_plant", "fan"]],
["units_on__stochastic_structure", ["bilateral_contract", "det"]],
["units_on__stochastic_structure", ["electricity_trading", "fan"]],
["units_on__stochastic_structure", ["future_value", "fan"]],
["units_on__temporal_block", ["bilateral_contract", "bilateral_contract_period"]]
],
"object_parameter_values": [
["model", "ABVattenkraft_stochastic", "model_end", {"type": "date_time", "data": "2022-03-24T07:00:00"}, "Base"],
["model", "ABVattenkraft_stochastic", "model_start", {"type": "date_time", "data": "2021-03-23T07:00:00"}, "Base"],
["node", "Fallet_rsvr", "demand", -80.0, "Base"],
["node", "Fallet_rsvr", "fix_node_state", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [6000.0]}, "Base"],
["node", "Fallet_rsvr", "has_state", true, "Base"],
["node", "Fallet_rsvr", "node_state_cap", 10000.0, "Base"],
["node", "Fallet_rsvr", "state_coeff", 1.0, "Base"],
["node", "Forsen_rsvr", "demand", -10.0, "Base"],
["node", "Forsen_rsvr", "fix_node_state", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [1500.0]}, "Base"],
["node", "Forsen_rsvr", "has_state", true, "Base"],
["node", "Forsen_rsvr", "node_state_cap", 2000.0, "Base"],
["node", "Forsen_rsvr", "state_coeff", 1.0, "Base"],
["node", "Sele_rsvr", "demand", -10.0, "Base"],
["node", "Sele_rsvr", "fix_node_state", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [800.0]}, "Base"],
["node", "Sele_rsvr", "has_state", true, "Base"],
["node", "Sele_rsvr", "node_state_cap", 1000.0, "Base"],
["node", "Sele_rsvr", "state_coeff", 1.0, "Base"],
["node", "Strommen_rsvr", "demand", -5.0, "Base"],
["node", "Strommen_rsvr", "fix_node_state", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [450.0]}, "Base"],
["node", "Strommen_rsvr", "has_state", true, "Base"],
["node", "Strommen_rsvr", "node_state_cap", 500.0, "Base"],
["node", "Strommen_rsvr", "state_coeff", 1.0, "Base"],
["temporal_block", "bilateral_contract_period", "block_end", {"type": "duration", "data": "23h"}, "Base"],
["temporal_block", "bilateral_contract_period", "block_start", {"type": "duration", "data": "1h"}, "Base"],
["temporal_block", "bilateral_contract_period", "resolution", {"type": "duration", "data": "22h"}, "Base"],
["temporal_block", "hourly", "resolution", {"type": "duration", "data": "1h"}, "Base"]
],
"relationship_parameter_values": [
["stochastic_structure__stochastic_scenario", ["fan", "scen1"], "weight_relative_to_parents", 0.25, "Base"],
["stochastic_structure__stochastic_scenario", ["fan", "scen2"], "weight_relative_to_parents", 0.25, "Base"],
["stochastic_structure__stochastic_scenario", ["fan", "scen3"], "weight_relative_to_parents", 0.25, "Base"],
["stochastic_structure__stochastic_scenario", ["fan", "scen4"], "weight_relative_to_parents", 0.25, "Base"],
["unit__from_node", ["Fallet_pwr_plant", "Fallet_rsvr"], "operating_points", {"type": "array", "value_type": "float", "data": [0.666666666666667, 1.0]}, "Base"],
["unit__from_node", ["Fallet_pwr_plant", "Fallet_rsvr"], "unit_capacity", 120.0, "Base"],
["unit__from_node", ["Forsen_pwr_plant", "Forsen_rsvr"], "operating_points", {"type": "array", "value_type": "float", "data": [0.708333333333333, 1.0]}, "Base"],
["unit__from_node", ["Forsen_pwr_plant", "Forsen_rsvr"], "unit_capacity", 120.0, "Base"],
["unit__from_node", ["Sele_pwr_plant", "Sele_rsvr"], "operating_points", {"type": "array", "value_type": "float", "data": [0.655172413793103, 1.0]}, "Base"],
["unit__from_node", ["Sele_pwr_plant", "Sele_rsvr"], "unit_capacity", 145.0, "Base"],
["unit__from_node", ["Strommen_pwr_plant", "Strommen_rsvr"], "operating_points", {"type": "array", "value_type": "float", "data": [0.666666666666667, 1.0]}, "Base"],
["unit__from_node", ["Strommen_pwr_plant", "Strommen_rsvr"], "unit_capacity", 135.0, "Base"],
["unit__from_node", ["bilateral_contract", "electricity_node"], "fix_unit_flow", 50.0, "Base"],
["unit__from_node", ["electricity_trading", "electricity_node"], "vom_cost", {"type": "map", "index_type": "str", "data": [["scen1", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [-428.0, -532.0, -748.0, -455.0, -442.0, -427.0, -438.0, -542.0, -758.0, -465.0, -452.0, -437.0, -423.0, -527.0, -743.0, -450.0, -437.0, -422.0, -408.0, -512.0, -728.0, -435.0, -422.0, -407.0]}], ["scen2", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [-257.0, -409.0, -419.0, -410.0, -404.0, -397.0, -267.0, -419.0, -429.0, -420.0, -414.0, -407.0, -252.0, -404.0, -414.0, -405.0, -399.0, -392.0, -237.0, -389.0, -399.0, -390.0, -384.0, -377.0]}], ["scen3", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [-408.0, -430.0, -443.0, -433.0, -438.0, -416.0, -418.0, -440.0, -453.0, -443.0, -448.0, -426.0, -403.0, -425.0, -438.0, -428.0, -433.0, -411.0, -388.0, -410.0, -423.0, -413.0, -418.0, -396.0]}], ["scen4", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [-407.0, -641.0, -646.0, -442.0, -404.0, -384.0, -417.0, -651.0, -656.0, -452.0, -414.0, -394.0, -402.0, -636.0, -641.0, -437.0, -399.0, -379.0, -387.0, -621.0, -626.0, -422.0, -384.0, -364.0]}]]}, "Base"],
["unit__from_node", ["future_value", "Fallet_rsvr"], "fix_unit_flow", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "Base"],
["unit__from_node", ["future_value", "Fallet_rsvr"], "vom_cost", {"type": "map", "index_type": "str", "data": [["scen1", -770.0], ["scen2", -700.0], ["scen3", -700.0], ["scen4", -752.5]]}, "Base"],
["unit__from_node", ["future_value", "Forsen_rsvr"], "fix_unit_flow", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "Base"],
["unit__from_node", ["future_value", "Forsen_rsvr"], "vom_cost", {"type": "map", "index_type": "str", "data": [["scen1", -550.0], ["scen2", -500.0], ["scen3", -500.0], ["scen4", -537.5]]}, "Base"],
["unit__from_node", ["future_value", "Sele_rsvr"], "fix_unit_flow", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "Base"],
["unit__from_node", ["future_value", "Sele_rsvr"], "vom_cost", {"type": "map", "index_type": "str", "data": [["scen1", -57.2], ["scen2", -52.0], ["scen3", -52.0], ["scen4", -55.9]]}, "Base"],
["unit__from_node", ["future_value", "Strommen_rsvr"], "fix_unit_flow", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "Base"],
["unit__from_node", ["future_value", "Strommen_rsvr"], "vom_cost", {"type": "map", "index_type": "str", "data": [["scen1", -198.0], ["scen2", -180.0], ["scen3", -180.0], ["scen4", -193.5]]}, "Base"],
["unit__node__node", ["Fallet_pwr_plant", "Forsen_rsvr", "Fallet_rsvr"], "fix_ratio_out_in_unit_flow", 1.0, "Base"],
["unit__node__node", ["Fallet_pwr_plant", "electricity_node", "Fallet_rsvr"], "fix_ratio_out_in_unit_flow", 0.5, "Base"],
["unit__node__node", ["Forsen_pwr_plant", "Strommen_rsvr", "Forsen_rsvr"], "fix_ratio_out_in_unit_flow", 1.0, "Base"],
["unit__node__node", ["Forsen_pwr_plant", "electricity_node", "Forsen_rsvr"], "fix_ratio_out_in_unit_flow", 0.8, "Base"],
["unit__node__node", ["Sele_pwr_plant", "downstream", "Sele_rsvr"], "fix_ratio_out_in_unit_flow", 1.0, "Base"],
["unit__node__node", ["Sele_pwr_plant", "electricity_node", "Sele_rsvr"], "fix_ratio_out_in_unit_flow", 0.13, "Base"],
["unit__node__node", ["Strommen_pwr_plant", "Sele_rsvr", "Strommen_rsvr"], "fix_ratio_out_in_unit_flow", 1.0, "Base"],
["unit__node__node", ["Strommen_pwr_plant", "electricity_node", "Strommen_rsvr"], "fix_ratio_out_in_unit_flow", 0.32, "Base"],
["unit__to_node", ["electricity_trading", "electricity_node"], "vom_cost", {"type": "map", "index_type": "str", "data": [["scen1", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [428.0, 532.0, 748.0, 455.0, 442.0, 427.0, 438.0, 542.0, 758.0, 465.0, 452.0, 437.0, 423.0, 527.0, 743.0, 450.0, 437.0, 422.0, 408.0, 512.0, 728.0, 435.0, 422.0, 407.0]}], ["scen2", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [257.0, 409.0, 419.0, 410.0, 404.0, 397.0, 267.0, 419.0, 429.0, 420.0, 414.0, 407.0, 252.0, 404.0, 414.0, 405.0, 399.0, 392.0, 237.0, 389.0, 399.0, 390.0, 384.0, 377.0]}], ["scen3", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [408.0, 430.0, 443.0, 433.0, 438.0, 416.0, 418.0, 440.0, 453.0, 443.0, 448.0, 426.0, 403.0, 425.0, 438.0, 428.0, 433.0, 411.0, 388.0, 410.0, 423.0, 413.0, 418.0, 396.0]}], ["scen4", {"type": "time_series", "index": {"start": "2021-03-23 07:00:00", "resolution": "1h", "ignore_year": false, "repeat": false}, "data": [407.0, 641.0, 646.0, 442.0, 404.0, 384.0, 417.0, 651.0, 656.0, 452.0, 414.0, 394.0, 402.0, 636.0, 641.0, 437.0, 399.0, 379.0, 387.0, 621.0, 626.0, 422.0, 384.0, 364.0]}]]}, "Base"]
],
"alternatives": [
["Base", "Base alternative"]
],
"tools": [
["object_activity_control", ""]
],
"features": [
["commodity", "is_active", "boolean_value_list", "boolean_value_list"],
["connection", "is_active", "boolean_value_list", "boolean_value_list"],
["model", "is_active", "boolean_value_list", "boolean_value_list"],
["node", "is_active", "boolean_value_list", "boolean_value_list"],
["output", "is_active", "boolean_value_list", "boolean_value_list"],
["report", "is_active", "boolean_value_list", "boolean_value_list"],
["stochastic_scenario", "is_active", "boolean_value_list", "boolean_value_list"],
["stochastic_structure", "is_active", "boolean_value_list", "boolean_value_list"],
["temporal_block", "is_active", "boolean_value_list", "boolean_value_list"],
["unit", "is_active", "boolean_value_list", "boolean_value_list"],
["unit_constraint", "is_active", "boolean_value_list", "boolean_value_list"]
],
"tool_features": [
["object_activity_control", "commodity", "is_active", false],
["object_activity_control", "connection", "is_active", false],
["object_activity_control", "model", "is_active", false],
["object_activity_control", "node", "is_active", false],
["object_activity_control", "output", "is_active", false],
["object_activity_control", "report", "is_active", false],
["object_activity_control", "stochastic_scenario", "is_active", false],
["object_activity_control", "stochastic_structure", "is_active", false],
["object_activity_control", "temporal_block", "is_active", false],
["object_activity_control", "unit", "is_active", false],
["object_activity_control", "unit_constraint", "is_active", false]
]
}
I'm trying to implement a stochastics model with four scenarios and 24 time steps. I have some cost stochastic time series, so a Map from scenario to time stamp to value. Below is the db in json format. For some reason it takes super long for SpineOpt to run. I don't know what I am doing wrong. The same model but with only 6 time steps runs instantaneously.