Summary
To support the long-term goal of a free software base, we'd like to move the upstream and downstream parts of the code from GAMS into Python. That will facilitate the testing (and hopefully eventual mainstream use) of free/open-source LP and solver approaches for the core optimization.
Parallel component 1: Inputs
It'd probably be worth discussing the sequencing, but my initial inclination for a rough order of operations, to be applied in separate PRs, is below. Let's use this as a workspace to track progress and plans (so feel free to modify it as work evolves).
Parallel component 2: Outputs
Summary
To support the long-term goal of a free software base, we'd like to move the upstream and downstream parts of the code from GAMS into Python. That will facilitate the testing (and hopefully eventual mainstream use) of free/open-source LP and solver approaches for the core optimization.
Parallel component 1: Inputs
It'd probably be worth discussing the sequencing, but my initial inclination for a rough order of operations, to be applied in separate PRs, is below. Let's use this as a workspace to track progress and plans (so feel free to modify it as work evolves).
$include *.csv) to the associatedinput_processingpython script by replacing.to_csv()withreeds.io.write_to_inputs_h5()b_inputs.gmsto where they are written in the associatedinput_processingscript so they show up ininputs.h5(see Move more inputs toinputs.h5and add compatibility withforecast.py#139 for examples)copy_files.py, add the comment torunfiles.csvtablewill need to be reshaped from wide to long format for inclusion ininputs.h5, with associated changes torunfiles.csvandfuturefiles.csvb_inputs.gmsinput_processing/create_sets.py(or something like that) script:hierarchy()and relatedr_{level}()androutes()setsban()andbannew()valcapor that don't depend onvalcapiset.valcap(probably the biggest effort). Should be calculated in its own function. (We might need to subdividecreate_sets.pyif it gets too long.)valcap:valinv,valgen, and derivativesb_inputs.gmsis done, move to thecore/solvescripts:2_financials.gms2_temporal_params.gms3_solve_oneyear.gms4_post_solve_adjustments.gms6_data_dump.gmsParallel component 2: Outputs
report.gmsto Python #142 to more blocks of output parameters.