Split out from #274 / PR #710.
Today FWPH takes a single solver_name and uses it for both the MIP subproblem solve (SDM/linear master) and the proximal QP solve. That forces the user to pick a solver that can do both, so LP/MIP-only solvers like glpk or cbc are not usable with FWPH even when an open-source QP solver (e.g. ipopt) is available.
@bknueven proposed (on #274):
FWPH should have mip_solver_name and qp_solver_name as options, as opposed to just solvername like it has now.
Then you could use glpk/cbc with ipopt for FWPH.
Scope
- Add
fwph_mip_solver_name / fwph_qp_solver_name (or similar) to Config.fwph_args().
- Plumb them through
cfg_vanilla.fwph_hub / fwph_spoke / _fwph_options into FW_options.
- Update
FWPH (opt/fwph.py) to use the QP solver for the proximal QP subproblems and the MIP solver for the linear/MIP master, with a sensible fallback to the existing solver_name when the new options are not set.
- Doc + an example/test demonstrating the glpk + ipopt combination.
Why it matters
PR #710 makes FWPH warn that it cannot honor --linearize-proximal-terms, but the underlying ergonomics problem remains: users with only an LP/MIP-only solver still cannot run FWPH at all. This change would let them run FWPH with an open-source QP solver paired with their existing LP/MIP solver.
Split out from #274 / PR #710.
Today
FWPHtakes a singlesolver_nameand uses it for both the MIP subproblem solve (SDM/linear master) and the proximal QP solve. That forces the user to pick a solver that can do both, so LP/MIP-only solvers like glpk or cbc are not usable with FWPH even when an open-source QP solver (e.g. ipopt) is available.@bknueven proposed (on #274):
Scope
fwph_mip_solver_name/fwph_qp_solver_name(or similar) toConfig.fwph_args().cfg_vanilla.fwph_hub/fwph_spoke/_fwph_optionsintoFW_options.FWPH(opt/fwph.py) to use the QP solver for the proximal QP subproblems and the MIP solver for the linear/MIP master, with a sensible fallback to the existingsolver_namewhen the new options are not set.Why it matters
PR #710 makes FWPH warn that it cannot honor
--linearize-proximal-terms, but the underlying ergonomics problem remains: users with only an LP/MIP-only solver still cannot run FWPH at all. This change would let them run FWPH with an open-source QP solver paired with their existing LP/MIP solver.