This PR provides a function to compare the performance of the currently supported solution methods (i.e., extensive form and progressive hedging) in solving stochastic unit commitment (SUC) models. The benchmark SUC instances can be constructed by the user based on different test cases with varying scenario numbers.
The file docs/src/usage.md is updated to illustrate how the provided function can be used for benchmarking.
In merging #32 to ANL-CEEESA:dev, PHFinalResult struct was taken out assumingly to ensure consistency with the other optimize! methods. One concern that arises with this is that it will become challenging to obtain the global objective function value of the aggregate UC model, because the JuMP model in each process has its own objective value and it is oblivious to the global objective value of the aggregate UC model. The solution dictionary (merged from all processes) does not track the global objective value either. For this reason, I had to add PHFinalResult to structs.jl and return it in optimize!.
The created scenarios and computed solutions are written to the temporary directory.
The julia script executed by each process in PH, ph_subp.jl, is included inside the package, which is called by the benchmarking function.
This PR provides a function to compare the performance of the currently supported solution methods (i.e., extensive form and progressive hedging) in solving stochastic unit commitment (SUC) models. The benchmark SUC instances can be constructed by the user based on different test cases with varying scenario numbers.
PHFinalResult
struct was taken out assumingly to ensure consistency with the otheroptimize!
methods. One concern that arises with this is that it will become challenging to obtain the global objective function value of the aggregate UC model, because the JuMP model in each process has its own objective value and it is oblivious to the global objective value of the aggregate UC model. The solution dictionary (merged from all processes) does not track the global objective value either. For this reason, I had to add PHFinalResult tostructs.jl
and return it inoptimize!
.ph_subp.jl
, is included inside the package, which is called by the benchmarking function.Would welcome any feedback/suggestions @iSoron!