GenXProject / GenX.jl

GenX: a configurable power system capacity expansion model for studying low-carbon energy futures. More details at : https://genx.mit.edu
https://genxproject.github.io/GenX.jl/
GNU General Public License v2.0
266 stars 113 forks source link

Reduce default settings for solvers to minimum #494

Closed JesseJenkins closed 5 months ago

JesseJenkins commented 1 year ago

We currently have fairly exhaustive sets of default settings for each solver copied into the configure_solver files for each solver. configure_highs.jl for example has 82 of them!

This raises the risk that the solvers change the keyword names of these settings and break GenX.

We should reduce this set of defaults to a minimum set of settings that are important to modify for GenX to run well on each solver. For example, whatever is required to use interior point/barrier method and to turn crossover off by default. We should also add a section to the documentation explaining these default configurations so users know if they want to change something they need to do so in the solver settings .yml files. Otherwise they can ignore solver settings .yml files.

Right now, we have some default settings in the example systems files for each solver settings .yml file. Some of these are correct and others probably are not. So rather than have these few key solver settings in the .yml examples, they should be moved to the solver settings .jl files and then the .yml files can be removed from the example folders, or used to show how one would change the default settings to something else (but commented out, so a user can see syntax example but it's not actually being used).

@sambuddhac happy to discuss this and decide in standard settings. This should be targeted to Develop branch I think (not Weekly Develop)

sambuddhac commented 1 year ago

Thanks @JesseJenkins . I will create a draft PR to address this and let's go over that on Monday, before finalizing.

JesseJenkins commented 5 months ago

@sambuddhac is this closed?

sambuddhac commented 5 months ago

@JesseJenkins , do think the list below is good enough? Right now, we still have the exhaustive list. But, I just took a closer look and it seems to me based on what we normally use and also considering the Benders decomposition work, this might suffice:

    "Feasib_Tol" => 1e-6,
    "Optimal_Tol" => 1e-4,
    "Pre_Solve" => "choose",
    "TimeLimit" => Inf,
    "Method" => "ipm",
    "parallel" => "choose",
    "ranging" => "off",
    "infinite_cost" => 1e+20,
    "infinite_bound" => 1e+20,
    "small_matrix_value" => 1e-09,
    "large_matrix_value" => 1e+15,
    "ipm_optimality_tolerance" => 1e-08,
    "objective_bound" => Inf,
    "objective_target" => -Inf,
    "random_seed" => 0,
    "threads" => 0,

Let me know what you think. Will draft a PR on this right now then.

sambuddhac commented 5 months ago

This issue will be addressed by PR #668

sambuddhac commented 5 months ago

This is now addressed on the release-0.4.0-rc branch