Solving a Run with GAMS requires three steps, essentially:
- Write the data of
Run to a format that GAMS can use
- Invoke the GAMS solve mechanism
- Read the solution data back into
Run
We currently keep this functionality separate, i.e. we have one function for each of these steps. This allows for easier testing and understanding what these individual steps do.
However, during today's MESSAGE meeting, we received the request to provide a convenience function combining all of these steps into one function - just like ixmp.Scenario.solve() does.
Otherwise, people are afraid the workflow of quickly solving a Run becomes too complicated.
Another way out would likely be translating more GAMS code in message_ix to linopy (or similar), thus eliminating the requirement to read and write GAMS files, but this is unlikely to happen soon enough.
Solving a
Runwith GAMS requires three steps, essentially:Runto a format that GAMS can useRunWe currently keep this functionality separate, i.e. we have one function for each of these steps. This allows for easier testing and understanding what these individual steps do.
However, during today's MESSAGE meeting, we received the request to provide a convenience function combining all of these steps into one function - just like
ixmp.Scenario.solve()does.Otherwise, people are afraid the workflow of quickly solving a
Runbecomes too complicated.Another way out would likely be translating more GAMS code in message_ix to linopy (or similar), thus eliminating the requirement to read and write GAMS files, but this is unlikely to happen soon enough.