Collective Issue for GAMS related issues
What is this about?
The issue is aimed at collecting any known issues related to the GAMS code and their impact on model behavior:
-
Technology last year: There is no definitive way to determine the last vintage year of a technology as the
technical_lifetimewhich could provide this information, is required to be defined for all activity years in addition to the vintage years to account for relation_activity entries. Hence only by additionally retrieving theinputandoutput, assuming they are defined correctly, can the end of lifetime be determined. -
Technology inclusion in optimization: Technologies are required to have either of three parameters to be included in the optimization:
input,outputorrelation_activity. But also there are technologies that haverelation_new_capacityorrelation_total_capacityentries only or some which are add-on technologies and only haveemission_factorentries. This means that currently, a lot of excess dummy parameters clutter the model to meet the inclusion requirements (https://github.com/iiasa/message_ix/issues/868). -
Share constraints: For each share total, only a single set of share technologies can be defined. This means that if for single set of technologies i,e. 7 renewable bins, multiple shares need to be defined i.e. for each individual technology, the entire set of shares needs to be redefined multiple 7 times.
-
Share constraints can only be defined across the same commodities/modes: A share constraint can only be create based on the same
inputoroutputcommodity. This means a share for total final energy cannot be added, unless a dummy commodity is created which accounts for all commodities contributing to total final energy. -
Cost of relation related costs are not included in base technology levelized cost (https://github.com/iiasa/message_ix/issues/667)
-
Renewable formulation: Currently there is no parameter to allow for the adding an
activity_lower/upperor dynamic constraints style bound to the renewable_potential. -
Technical lifetime can only be defined as an integer: due to the current GAMS formulation, adding non-integer technical lifetime results in a gdx compilation error.
-
Bound emission can only be defined as an upper-bound: The parameter
bound_emissionshould actually be renamed tobound_emission_upand an option should be added for adding abound_emission_lo. -
Emission scaling factor: The emission scaling factor seems to only work if it is set to 1; other values are disregarded (tests needed to confirm).
-
Share constraints set to zero: Whenever the
share_*_upis set to zero, as GAMS disregards 0 values, the bound is ignored. An additional parameteris_share_*_upis needed (https://github.com/iiasa/message_ix/issues/902). -
Capacity related dynamic constraints: dynamic constraints growth_lo/up and initial_lo/up as well as corresponding soft constraints can only be assigned for activity and new_capacity for technologies. A similar formulation is also required for total_capacity (https://github.com/iiasa/message_ix/issues/869).
-
When using the
slackfor debugging purposes, the options are very limited. First, the SLACK options only cover a limited amount of equations and second of all, there is no option to constraint sets of technologies or regions, which means that the slack will be applied to "all" technologies and "all" regions, often providing more reductions (slack) than actually required (https://github.com/iiasa/message_ix/issues/160).