Open
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
- Baron does not work with the Pyro solver manager #7
- MIP solver option - Resolve with fixed integer variables #19
- Incorrect behavior with the relax_integrality solver option #22
- With cplex, solver_io='python' is much slower than solver_io='nl' or default #51
- Extend log saving to sol and lp saving #175
- Solver output should be logged through the logger instead of stdout/print #296
- Document solvable blocks #312
- Fix confusing semantics of model.solutions.load_from #371
- Implement parsing of GLPK interior-point solution #380
- Solver interface consistency with warmstart=True/False #387
- return final Ipopt values in solution object #548
- Promote ipopt_solver_wrapper to a general utility #728
- Get access to symbol_map of GAMS solver #768
- Persistent solver interfaces do not support non-persistent options #798
- Pyomo test-solvers errors #861
- Improve IPOPT interface to provide solver-consistent error reporting #868
- Retrieve multiple feasible from BARON result file #915
- The cplex solver interface returns a mipgap, but Gurobi's does not #1023
- [PEP] Solving Blocks with variables that do not live on the Block #1032
- [PEP] Checking available() on an unavailable solver should not throw an exception by default #1074
- Better error reporting when solver is killed or cannot be found #1088
- with cplex, solver_io='python' is much slower than executable=(solver_path) #1169
- BARON Unicode Decode Error #1275
- CPLEX's
mip.limits.solutions
parameter results inSolutionStatus.error
#1333 - References to constraints cause duplicate constraints to go to solvers #1401
- Baron writer error for LinearExpression with fixed variables #1466
- [PEP] Raise exceptions for unknown Solvers, Writers, Transformations #1487
- Unused variables are added to Direct solvers #1490
- Pyomo Gurobi solver parallel problems (indirect) #1567
- SCIP Solver Results undefined/unknown/inf #1615
- Fall back to direct interface if shell is not available #1776 🇺🇸
- Incomplete optimisation data with CPLEX solver #1811
- Temporary .log file seems to be always created in CPLEXDirect solver #1900
- Enable additional features for CBC solver #1926
- Can't solve subblock with gurobi_direct #2130
- Add the relative mipgap reached after optimization in SolverResults object #2167
- cyipopt does not support
symbolic_solver_labels
orload_solutions=False
#2218 - Does APPSI solver support warmstart? #2362
- Add
isv_key_support
forgurobi
#2401 - GAMS solver sets incorrect termination condition on timeout for MIP model solved with CPLEX #2452
- Pyomo solvers could use a consistent "time limit" interface #2484
- Writers and solver interfaces should (could?) ignore trivially satisfied constraints #2485
- Pyomo 6.4 can't use scip 8.0.1 #2545
- CPLEX Solver result termination message type UndefinedData #2564
- Pyomo + GLPK does not return a certificate of optimality for simple LP? #2611
- Multiple solvers are missing a config_block method #2703
SolverFactory('gams', **kwds)
ignores keyword arguments #2757- tee=True doesn't work with solvers that buffer stdout #2785
- CBC initialSolve option ignored due to cmd line construction #2807
- BUG: stopping the default log of appsi_highs #2845
- Problem when using
io_options
insolver.solve
keyword arguments. #2908 - List index out of range error for GAMS solutions #2955
- cyipopt fails with load_solutions=False #2958
- persistent_solver set_instance fails with variable in deactivated block #3000
- ["scip.exe", "--version"] timed out after 1 second #3064
- SCIPAMPL fails to get primal bound from log file #3107
- SCIPAMPL solver does not assign values to all variables #3110
- Using Windows version of gams from WSL #3147
- Don't pass -stat=1 option to CBC to avoid slowdown #3191
- 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
- inefficient binding for solvers #3451