Current solver parameters tuned for LPs can have some issues when new integer extensions are activated. Namely:
- Disabling crossover can cause MIP solves to crash
- Current tolerances may not be suited to integer solves
- There are some MIP parameters available to play with.
Noting this for future users of these extensions: consider removing custom solver options in temoa_internal\run_actions.py and allowing MILP models to run with default solver settings.
elif solver_name == 'cplex':
# Note: these parameter values match mip-dev / PyPSA
# (see: https://pypsa-eur.readthedocs.io/en/latest/configuration.html)
optimizer.options['lpmethod'] = 4 # barrier
optimizer.options['solutiontype'] = 2 # non basic solution, ie no crossover
optimizer.options['barrier convergetol'] = 1.0e-3
optimizer.options['feasopt tolerance'] = 1.0e-4
elif solver_name == 'gurobi':
# Note: these parameter values match mip-dev / PyPSA (see: https://pypsa-eur.readthedocs.io/en/latest/configuration.html)
optimizer.options['Method'] = 2 # barrier
optimizer.options['Crossover'] = 0 # non basic solution, ie no crossover
optimizer.options['BarConvTol'] = 1.0e-3
optimizer.options['FeasibilityTol'] = 1.0e-4
optimizer.options['BarOrder'] = -1 # auto ordering; 2-4x faster than AMD on large models
Current solver parameters tuned for LPs can have some issues when new integer extensions are activated. Namely:
Noting this for future users of these extensions: consider removing custom solver options in temoa_internal\run_actions.py and allowing MILP models to run with default solver settings.