Description
I would like to start redesigning the solver interfaces in Pyomo.
Motivation
- The current solver interfaces are more complex than necessary.
- The current solver interfaces have many inconsistencies.
- The current solver interfaces do not allow the solution of a model/block with constraints that use variables which live elsewhere.
Preliminary Design Decisions (to be updated with time)
- When solving a model/block, the model is defined by the set of active components and any components used by those active components. This means that variables are handed to the solver if and only if they are used in an active constraint or objective.
Implementation
- I intend to develop new solver interfaces alongside the existing ones. I do not intend to remove existing solver interfaces. Once the new solver interfaces are sufficiently mature, we can rename/archive the old interfaces.
- I intend to start with a couple simple solver interfaces and get feedback before proceeding further.
Thoughts? Concerns?
Related Issues
- with cplex, solver_io='python' is much slower than executable=(solver_path) #1169
- Unused variables are added to Direct solvers #1490
- Fall back to direct interface if shell is not available #1776 🇺🇸
- BUG: stopping the default log of appsi_highs #2845
- ["scip.exe", "--version"] timed out after 1 second #3064
- SCIPAMPL solver does not assign values to all variables #3110
- Sometimes constraints are not satisfied with NL Writer V2 with export_defined_variables=True #3243
- Defer starting the SAS session until needed #3448
- Use initial solution for MIP (and LP?) with APPSI HiGHS interface #3450