Jonas Hörsch
Jonas Hörsch
Most importantly the JuMP model must be dis-entangled from the EnergyModel since with StructJuMP there might now be multiple ones. So, the standard form of `build` will accept a `JuMP.AbstractModel`...
`build(::Component)` was replaced by a more general in https://github.com/PyPSA/EnergyModels.jl/commit/31d13dff3a2614be6211fa65773e3b9cc8de78f2 ```julia addto!(::JuMP.AbstractModel, ::EnergyModel, ::Component) ``` which allows using different jump models per component. Not sure if that is good enough!
Ok, here's an idea, which I think solves this seemingly difficult problem cleanly and combines well New repr. of time (#14): I did simplify my explanation above a tiny bit,...
Did you check and/or compare to the formulation of [OSeMOSYS](https://github.com/KTH-dESA/OSeMOSYS)? Judging by their `MathProg` formulation: - They minimize the [`TotalDiscountedCost`](https://github.com/KTH-dESA/OSeMOSYS/blob/6e498ca2e26240c2acdaca220e48c29c714aa6b6/OSeMOSYS_GNU_MathProg/osemosys.txt#L251), - which splits into operational costs (marginal + emissions), investment...
@FabianHofmann Where did you store the different `capital_cost` values? Was that a time-series?
And one more datapoint: [SWITCH 2.0](https://github.com/switch-model/switch) also uses positive-only capacity additions (see [BuildGen](https://github.com/switch-model/switch/blob/45267e797809f46bbdec9ba5cbffbbd209cc4195/switch_model/generators/core/build.py#L329)) and separately keeps variables for the aggregated available capacity (see [genCapacity](https://github.com/switch-model/switch/blob/45267e797809f46bbdec9ba5cbffbbd209cc4195/switch_model/generators/core/build.py#L371)). Also of interest is the model...
@fneum I am not saying that we should abolish `weight`s, but there was a suggestion earlier that `snapshot_weighting` as it is in PyPSA mixes two different concepts, which would be...
Moves to #14 .
Probably as simple as replacing all occurrences of `JuMP.Model` with `JuMP.AbstractModel`, as is already happening in the new `moi` branch by the introduction of the `ModelView` layers.
The question is: How would the user mark a data parameter as a `ParameterJuMP`-parameter? The parameter provision functions, i.e. `get(::Element, ...)` or `get(::Data, ...)`, could maybe check whether something should...