gtopt/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 costs
  • relax_fixed_state_variable() – elastic-filter column relaxation
  • build_feasibility_cut() – clone → relax → solve → extract cut
  • build_multi_cuts() – per-slack bound-constraint cuts
  • average_benders_cut() – unweighted average of several cuts
  • weighted_average_benders_cut() – probability-weighted average

BendersCut class

BendersCut wraps the free functions as member functions and adds:

  • An optional AdaptiveWorkPool for 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.