A3 works fine after cloning if you have SpineOpt in the Julia environment. However, if you purge the input DB, import all data, and try to run, it will fail with the following Julia Traceback.
julia> # Running 'julia run_spineopt.jl http://127.0.0.1:55111 http://127.0.0.1:55112'
2-element Vector{String}:
"http://127.0.0.1:55111"
"http://127.0.0.1:55112"
Running SpineOpt for http://127.0.0.1:55111...
┌ Warning: object class commodity does not exist, creating it
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\generate_missing_items.jl:40
┌ Warning: object class connection does not exist, creating it
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\generate_missing_items.jl:40
┌ Warning: object class output does not exist, creating it
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\generate_missing_items.jl:40
┌ Warning: object class report does not exist, creating it
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\generate_missing_items.jl:40
┌ Warning: object class stochastic_scenario does not exist, creating it
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\generate_missing_items.jl:40
┌ Warning: object class stochastic_structure does not exist, creating it
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\generate_missing_items.jl:40
Initializing data structure from db...
┌ Warning: Some items are missing from the input database.
│ We'll assume sensitive defaults for any missing parameter definitions, and empty collections for any missing classes.
│ SpineOpt might still be able to run, but otherwise you'd need to check your input database.
│
│ Missing item list follows:
│
│ relationship classes connection__from_node
│ connection__from_node__unit_constraint
│ connection__investment_stochastic_structure
│ connection__investment_temporal_block
│ connection__node__node
│ connection__to_node
│ connection__to_node__unit_constraint
│ model__default_investment_stochastic_structure
│ model__default_investment_temporal_block
│ model__default_stochastic_structure
│ model__default_temporal_block
│ model__report
│ model__stochastic_structure
│ model__temporal_block
│ node__commodity
│ node__investment_stochastic_structure
│ node__investment_temporal_block
│ node__node
│ node__stochastic_structure
│ node__temporal_block
│ node__unit_constraint
│ parent_stochastic_scenario__child_stochastic_scenario
│ report__output
│ stochastic_structure__stochastic_scenario
│ unit__commodity
│ unit__from_node__unit_constraint
│ unit__investment_stochastic_structure
│ unit__investment_temporal_block
│ units_on__stochastic_structure
│ units_on__temporal_block
│
│ parameter definitions commodity.commodity_lodf_tolerance
│ commodity.commodity_physics
│ commodity.commodity_ptdf_threshold
│ commodity.is_active
│ connection.candidate_connections
│ connection.connection_availability_factor
│ connection.connection_contingency
│ connection.connection_flow_cost
│ connection.connection_investment_cost
│ connection.connection_investment_lifetime
│ connection.connection_investment_variable_type
│ connection.connection_monitored
│ connection.connection_reactance
│ connection.connection_reactance_base
│ connection.connection_resistance
│ connection.connection_type
│ connection.fix_connections_invested
│ connection.fix_connections_invested_available
│ connection.graph_view_position
│ connection.is_active
│ connection.has_binary_gas_flow
│ model.duration_unit
│ model.is_active
│ model.max_gap
│ model.max_iterations
│ model.model_type
│ model.roll_forward
│ model.write_lodf_file
│ model.write_mps_file
│ model.write_ptdf_file
│ model.big_m
│ node.candidate_storages
│ node.downward_reserve
│ node.fix_storages_invested
│ node.fix_storages_invested_available
│ node.fix_node_pressure
│ node.fix_node_voltage_angle
│ node.fractional_demand
│ node.graph_view_position
│ node.has_pressure
│ node.has_voltage_angle
│ node.is_active
│ node.is_reserve_node
│ node.minimum_reserve_activation_time
│ node.nodal_balance_sense
│ node.node_opf_type
│ node.storage_investment_cost
│ node.storage_investment_lifetime
│ node.storage_investment_variable_type
│ node.tax_in_unit_flow
│ node.tax_net_unit_flow
│ node.tax_out_unit_flow
│ node.upward_reserve
│ node.max_node_pressure
│ node.min_node_pressure
│ node.max_voltage_angle
│ node.min_voltage_angle
│ output.is_active
│ report.is_active
│ report.output_db_url
│ stochastic_scenario.is_active
│ stochastic_structure.is_active
│ temporal_block.is_active
│ temporal_block.resolution
│ temporal_block.weight
│ temporal_block.representative_periods_mapping
│ unit.candidate_units
│ unit.fix_units_invested
│ unit.fix_units_invested_available
│ unit.fom_cost
│ unit.graph_view_position
│ unit.is_active
│ unit.number_of_units
│ unit.online_variable_type
│ unit.shut_down_cost
│ unit.unit_availability_factor
│ unit.unit_investment_cost
│ unit.unit_investment_lifetime
│ unit.unit_investment_variable_type
│ unit_constraint.is_active
│ connection__from_node.connection_capacity
│ connection__from_node.connection_conv_cap_to_flow
│ connection__from_node.connection_emergency_capacity
│ connection__from_node.fix_connection_flow
│ connection__from_node.fix_binary_gas_connection_flow
│ connection__from_node.fix_connection_intact_flow
│ connection__from_node.graph_view_position
│ connection__from_node__unit_constraint.connection_flow_coefficient
│ connection__node__node.connection_flow_delay
│ connection__node__node.fix_ratio_out_in_connection_flow
│ connection__node__node.max_ratio_out_in_connection_flow
│ connection__node__node.min_ratio_out_in_connection_flow
│ connection__node__node.fixed_pressure_constant_1
│ connection__node__node.fixed_pressure_constant_0
│ connection__node__node.compression_factor
│ connection__node__node.connection_linepack_constant
│ connection__to_node.connection_capacity
│ connection__to_node.connection_conv_cap_to_flow
│ connection__to_node.connection_emergency_capacity
│ connection__to_node.fix_connection_flow
│ connection__to_node.fix_connection_intact_flow
│ connection__to_node.graph_view_position
│ connection__to_node__unit_constraint.connection_flow_coefficient
│ node__node.diff_coeff
│ node__temporal_block.cyclic_condition
│ node__unit_constraint.demand_coefficient
│ node__unit_constraint.node_state_coefficient
│ stochastic_structure__stochastic_scenario.stochastic_scenario_end
│ stochastic_structure__stochastic_scenario.weight_relative_to_parents
│ unit__commodity.max_cum_in_unit_flow_bound
│ unit__from_node.fix_nonspin_ramp_up_unit_flow
│ unit__from_node.fix_nonspin_units_started_up
│ unit__from_node.fix_ramp_up_unit_flow
│ unit__from_node.fix_start_up_unit_flow
│ unit__from_node.fix_unit_flow
│ unit__from_node.fix_unit_flow_op
│ unit__from_node.fuel_cost
│ unit__from_node.reserve_procurement_cost
│ unit__from_node.graph_view_position
│ unit__from_node.max_res_shutdown_ramp
│ unit__from_node.max_res_startup_ramp
│ unit__from_node.max_shutdown_ramp
│ unit__from_node.max_startup_ramp
│ unit__from_node.min_res_shutdown_ramp
│ unit__from_node.min_res_startup_ramp
│ unit__from_node.min_shutdown_ramp
│ unit__from_node.min_startup_ramp
│ unit__from_node.operating_points
│ unit__from_node.ramp_down_cost
│ unit__from_node.ramp_up_cost
│ unit__from_node.unit_conv_cap_to_flow
│ unit__from_node__unit_constraint.graph_view_position
│ unit__node__node.fix_ratio_in_in_unit_flow
│ unit__node__node.fix_units_on_coefficient_in_in
│ unit__node__node.fix_units_on_coefficient_in_out
│ unit__node__node.fix_units_on_coefficient_out_in
│ unit__node__node.fix_units_on_coefficient_out_out
│ unit__node__node.max_ratio_in_in_unit_flow
│ unit__node__node.max_ratio_in_out_unit_flow
│ unit__node__node.max_ratio_out_in_unit_flow
│ unit__node__node.max_ratio_out_out_unit_flow
│ unit__node__node.max_units_on_coefficient_in_in
│ unit__node__node.max_units_on_coefficient_in_out
│ unit__node__node.max_units_on_coefficient_out_in
│ unit__node__node.max_units_on_coefficient_out_out
│ unit__node__node.min_ratio_in_in_unit_flow
│ unit__node__node.min_ratio_in_out_unit_flow
│ unit__node__node.min_ratio_out_in_unit_flow
│ unit__node__node.min_units_on_coefficient_in_in
│ unit__node__node.min_units_on_coefficient_in_out
│ unit__node__node.min_units_on_coefficient_out_in
│ unit__node__node.min_units_on_coefficient_out_out
│ unit__node__node.unit_incremental_heat_rate
│ unit__node__node.unit_idle_heat_rate
│ unit__node__node.unit_start_flow
│ unit__to_node.fix_nonspin_ramp_down_unit_flow
│ unit__to_node.fix_nonspin_ramp_up_unit_flow
│ unit__to_node.fix_nonspin_units_shut_down
│ unit__to_node.fix_nonspin_units_started_up
│ unit__to_node.fix_ramp_down_unit_flow
│ unit__to_node.fix_ramp_up_unit_flow
│ unit__to_node.fix_shut_down_unit_flow
│ unit__to_node.fix_start_up_unit_flow
│ unit__to_node.fix_unit_flow
│ unit__to_node.fix_unit_flow_op
│ unit__to_node.fuel_cost
│ unit__to_node.reserve_procurement_cost
│ unit__to_node.graph_view_position
│ unit__to_node.max_res_shutdown_ramp
│ unit__to_node.max_res_startup_ramp
│ unit__to_node.max_shutdown_ramp
│ unit__to_node.max_startup_ramp
│ unit__to_node.min_res_shutdown_ramp
│ unit__to_node.min_res_startup_ramp
│ unit__to_node.min_shutdown_ramp
│ unit__to_node.min_startup_ramp
│ unit__to_node.operating_points
│ unit__to_node.ramp_down_cost
│ unit__to_node.ramp_up_cost
│ unit__to_node.unit_conv_cap_to_flow
│ unit__to_node__unit_constraint.graph_view_position
│ unit__unit_constraint.units_started_up_coefficient
│
│ object classes commodity
│ connection
│ output
│ report
│ stochastic_scenario
│ stochastic_structure
│
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\generate_missing_items.jl:88
2.100382 seconds (4.00 M allocations: 239.343 MiB, 91.33% compilation time)
Preprocessing instance model specific data structure...
0.000000 seconds
Preprocessing data structure... 0.187152 seconds (307.12 k allocations: 18.835 MiB, 90.04% compilation time)
┌ Warning: Some node groups don't have a `node__temporal_block` or `model__temporal_block` definitions for `(model, node)` pair(s):
│ (instance, heat), (instance, electricity), (instance, wood_chips), (instance, coal), (instance, el_heat), (instance, oil_heat), (instance, oil_el), (instance, oil) and (instance, bio_diesel) - these `node_groups` will only be used for aggregation, there will be no variables and balances associated with these group nodes
└ @ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\check_data_structure.jl:39
ERROR: LoadError: Some members of the node groups don't have exactly 1 `node__stochastic_structure` or `model__stochastic_structure` definitions for `(model, node)` pair(s):
(instance, heat), (instance, electricity), (instance, wood_chips), (instance, coal), (instance, el_heat), (instance, oil_heat), (instance, oil_el), (instance, oil) and (instance, bio_diesel) - each member `node` of these `node_groups` must be related to one and only one `stochastic_structure` per `model`
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] _check
@ C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\check_data_structure.jl:32 [inlined]
[3] check_model__node__stochastic_structure()
@ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\check_data_structure.jl:164
[4] check_data_structure(; log_level::Int64)
@ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\data_structure\check_data_structure.jl:51
[5] macro expansion
@ .\timing.jl:210 [inlined]
[6] macro expansion
@ C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\run_spineopt.jl:50 [inlined]
[7] rerun_spineopt_sp(url_out::String; mip_solver::Nothing, lp_solver::Nothing, add_user_variables::Function, add_constraints::Function, update_constraints::Function, log_level::Int64, optimize::Bool, use_direct_model::Bool)
@ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\run_spineopt_sp.jl:42
[8] invokelatest(f::Any, args::Any; kwargs::Base.Iterators.Pairs{Symbol, Any, NTuple{8, Symbol}, NamedTuple{(:mip_solver, :lp_solver, :add_user_variables, :add_constraints, :update_constraints, :log_level, :optimize, :use_direct_model), Tuple{Nothing, Nothing, SpineOpt.var"#2#8", SpineOpt.var"#3#9", SpineOpt.var"#4#10", Int64, Bool, Bool}}})
@ Base .\essentials.jl:710
[9] rerun_spineopt(url_out::String; mip_solver::Nothing, lp_solver::Nothing, add_user_variables::Function, add_constraints::Function, update_constraints::Function, log_level::Int64, optimize::Bool, use_direct_model::Bool)
@ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\run_spineopt.jl:123
[10] run_spineopt(url_in::String, url_out::String; upgrade::Bool, mip_solver::Nothing, lp_solver::Nothing, cleanup::Bool, add_user_variables::Function, add_constraints::Function, update_constraints::Function, log_level::Int64, optimize::Bool, use_direct_model::Bool)
@ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\run_spineopt.jl:95
[11] run_spineopt(url_in::String, url_out::String)
@ SpineOpt C:\Users\prokjt\.julia\packages\SpineOpt\XNZ0x\src\run_spineopt.jl:90
[12] top-level scope
@ C:\Users\prokjt\.spinetoolbox\plugins\SpineOpt\specifications\Tool\run_spineopt.jl:3
[13] include(fname::String)
@ Base.MainInclude .\client.jl:444
[14] top-level scope
@ none:1
in expression starting at C:\Users\prokjt\.spinetoolbox\plugins\SpineOpt\specifications\Tool\run_spineopt.jl:3
julia>