benders_cut.hpp file
Modular Benders cut construction and handling.
This module extracts the cut-creation logic from the SDDP solver into standalone, testable functions and a class-based interface.
Free functions
build_benders_cut()– standard optimality cut from reduced costsrelax_fixed_state_variable()– elastic-filter column relaxationbuild_feasibility_cut()– clone → relax → solve → extract cutbuild_multi_cuts()– per-slack bound-constraint cutsaverage_benders_cut()– unweighted average of several cutsweighted_average_benders_cut()– probability-weighted average
BendersCut class
BendersCut wraps the free functions as member functions and adds:
- An optional
AdaptiveWorkPoolfor LP solve/resolve operations. When a pool is provided, the elastic-filter LP solve is submitted to the pool; otherwise it is performed synchronously. - An infeasible-cut counter: every successful elastic-filter solve (i.e. every LP infeasibility event handled by the filter) is counted. The counter can be queried for monitoring-API integration.
The SDDP solver (sddp_method.hpp) re-exports the free-function symbols so that existing code that includes sddp_method.hpp continues to compile without changes.
Namespaces
- namespace gtopt
Classes
- class gtopt::BendersCut
- Class-based interface for Benders cut construction with work-pool support and infeasibility monitoring.
- struct gtopt::ElasticSolveResult
- struct gtopt::FeasibilityCutResult
- Result structure for feasibility cut building.
- struct gtopt::RelaxedVarInfo
- struct gtopt::StateVarLink
- Describes one state-variable linkage between consecutive phases.