Conversation
… lin-prox-term. (Gurobi only)
pulling recent updates from mpisppy repo See merge request climate-ldrd/mpisppy-fork!3
merge cep_tomas into cep-main branch See merge request climate-ldrd/mpisppy-fork!4
[WIP] working on dynamic sep rho; run generic_bash to see error; will have... See merge request climate-ldrd/mpisppy-fork!5
Datahash extension & reading config options from file See merge request climate-ldrd/mpisppy-fork!6
Merging updated main from github mpisppy See merge request climate-ldrd/mpisppy-fork!7
Merging updates from mpisppy main See merge request climate-ldrd/mpisppy-fork!8
Merging updated main branch from mpisppy repo See merge request climate-ldrd/mpisppy-fork!10
merging updated main from mpisppy See merge request climate-ldrd/mpisppy-fork!11
Merging mpisppy main to our mpisppy fork See merge request climate-ldrd/mpisppy-fork!12
updating cep-main. Still the same as github main See merge request climate-ldrd/mpisppy-fork!14
merging main from GitHub repo See merge request climate-ldrd/mpisppy-fork!16
There was a problem hiding this comment.
Pull request overview
Adds Column Generation (CG) and Dual Stabilized Column Generation (DCG) as hub algorithms in mpi-sppy, plus a new PHSpoke and new spoke→hub data channel for feasible solutions.
Changes:
- Introduces new optimizers:
CG,DCG, and shared baseCGBase, plus new hub typesCGHub/DCGHub. - Adds a new spoke (
PHSpoke) and a new SPWindow field (XFEAS) to transmit feasible solutions/costs from spokes to hubs. - Wires new CLI/config options and vanilla cylinder constructors for CG/DCG hubs and PH spoke integration.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 14 comments.
Show a summary per file
| File | Description |
|---|---|
| mpisppy/utils/config.py | Adds config sections/options for CG/DCG hubs and PH spoke. |
| mpisppy/utils/cfg_vanilla.py | Adds vanilla constructors for CG/DCG hubs and PH spoke; tweaks timed_mipgap gating. |
| mpisppy/generic_cylinders.py | Registers new args and plugs CG/DCG hubs + PH spoke into decomposition selection. |
| mpisppy/cgbase.py | Implements the core column generation base algorithm and RMP plumbing. |
| mpisppy/opt/cg.py | Adds the standard CG optimizer entrypoint. |
| mpisppy/opt/dualcg.py | Adds dual-stabilized CG optimizer and dual master model. |
| mpisppy/cylinders/hub.py | Adds CGHub/DCGHub and RECENT_XHATS circular buffer handling + XFEAS reception. |
| mpisppy/cylinders/spwindow.py | Adds new Field.XFEAS and field-length mapping. |
| mpisppy/cylinders/spcommunicator.py | Adds receivers for BEST_XHAT and XFEAS and a receiver for RECENT_XHATS lists. |
| mpisppy/cylinders/ph_spoke.py | Adds new PH-based spoke that sends feasible solutions to hubs. |
| mpisppy/cylinders/subgradient_bounder.py | Extends bound spoke to also send feasible solutions (XFEAS). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| cfg.default_rho = 1 | ||
| else: | ||
| raise RuntimeError("No rho_setter so a default must be specified via --default-rho") | ||
| print("Warning: No rho_setter so a default must be specified via --default-rho") |
There was a problem hiding this comment.
When using CG (or DualCG), a rho value is not necessarily required, so raising an error here would be too restrictive and could block valid configurations. That is why I changed this to a warning. A better long-term fix may be to make this check conditional on whether a PH-based hub or spoke is actually being used.
| cfg.default_rho = 1 | ||
| else: | ||
| raise RuntimeError("No rho_setter so a default must be specified via --default-rho") | ||
| print("Warning: No rho_setter so a default must be specified via --default-rho") |
There was a problem hiding this comment.
When using CG (or DualCG), a rho value is not necessarily required, so raising an error here would be too restrictive and could block valid configurations. That is why I changed this to a warning. A better long-term fix may be to make this check conditional on whether a PH-based hub or spoke is actually being used.
This PR adds support for Column Generation (CG) and Dual Stabilized Column Generation (DCG) as hub algorithms in mpi-sppy, and introduces the PHSpoke class, addressing issue #617
Features:
New Classes:
Integration with existing spokes is supported.