ROL
|
Provides the interface to solve a stochastic program using progressive hedging. More...
#include <ROL_ProgressiveHedging.hpp>
Public Member Functions | |
ProgressiveHedging (const Ptr< OptimizationProblem< Real >> &input, const Ptr< SampleGenerator< Real >> &sampler, ParameterList &parlist) | |
void | check (std::ostream &outStream=std::cout, const int numSamples=1) |
void | run (std::ostream &outStream=std::cout) |
Private Member Functions | |
void | presolve (void) |
Private Attributes | |
const Ptr< OptimizationProblem < Real > > | input_ |
const Ptr< SampleGenerator < Real > > | sampler_ |
ParameterList | parlist_ |
bool | usePresolve_ |
bool | useInexact_ |
Real | penaltyParam_ |
Real | maxPen_ |
Real | update_ |
int | freq_ |
Real | ztol_ |
int | maxit_ |
bool | print_ |
bool | hasStat_ |
Ptr< PH_Objective< Real > > | ph_objective_ |
Ptr< Vector< Real > > | ph_vector_ |
Ptr< BoundConstraint< Real > > | ph_bound_ |
Ptr< Constraint< Real > > | ph_constraint_ |
Ptr< OptimizationProblem< Real > > | ph_problem_ |
Ptr< OptimizationSolver< Real > > | ph_solver_ |
Ptr< PH_StatusTest< Real > > | ph_status_ |
Ptr< Vector< Real > > | z_psum_ |
Ptr< Vector< Real > > | z_gsum_ |
std::vector< Ptr< Vector< Real > > > | wvec_ |
Provides the interface to solve a stochastic program using progressive hedging.
The progressive hedging algorithm was introduced in
Rockafellar, R. T., and Wets, R. J-B. Scenarios and policy aggregation in optimization under uncertainty. Mathematics of Operations Research, 16 (1991), 119-147.
This algorithm solves deterministic optimization problems for each sample and then aggregates the optimization variables to produce an ``implementable'' solution. Progressive hedging has recently been applied to solve risk-averse and buffered probability optimization problems in
Rockafellar, R. T., Solving stochastic programming problems with risk measures by progessive hedging, Set-valued and Variational Analysis, published online 2017.
Rockafellar, R. T., and Uryasev, S. Minimizing buffered probability of exceedance by progressive hedging, Mathematical Programming B, published online 2018.
This implementation can also minimize deviation, error and regret arising from the expectation risk quadrangle as well as the smoothed probability
Definition at line 87 of file ROL_ProgressiveHedging.hpp.
|
inline |
Definition at line 130 of file ROL_ProgressiveHedging.hpp.
References ROL::ProgressiveHedging< Real >::freq_, ROL::ProgressiveHedging< Real >::hasStat_, ROL::ProgressiveHedging< Real >::input_, ROL::ProgressiveHedging< Real >::maxit_, ROL::ProgressiveHedging< Real >::maxPen_, ROL::ProgressiveHedging< Real >::penaltyParam_, ROL::ProgressiveHedging< Real >::ph_bound_, ROL::ProgressiveHedging< Real >::ph_constraint_, ROL::ProgressiveHedging< Real >::ph_objective_, ROL::ProgressiveHedging< Real >::ph_problem_, ROL::ProgressiveHedging< Real >::ph_solver_, ROL::ProgressiveHedging< Real >::ph_status_, ROL::ProgressiveHedging< Real >::ph_vector_, ROL::ProgressiveHedging< Real >::presolve(), ROL::ProgressiveHedging< Real >::print_, ROL::ProgressiveHedging< Real >::sampler_, ROL::ProgressiveHedging< Real >::update_, ROL::ProgressiveHedging< Real >::useInexact_, ROL::ProgressiveHedging< Real >::usePresolve_, ROL::ProgressiveHedging< Real >::wvec_, ROL::ProgressiveHedging< Real >::z_gsum_, ROL::ProgressiveHedging< Real >::z_psum_, and ROL::ProgressiveHedging< Real >::ztol_.
|
inlineprivate |
Definition at line 113 of file ROL_ProgressiveHedging.hpp.
References ROL::ProgressiveHedging< Real >::input_, ROL::ProgressiveHedging< Real >::parlist_, ROL::OptimizationSolver< Real >::reset(), ROL::ProgressiveHedging< Real >::sampler_, ROL::OptimizationSolver< Real >::solve(), ROL::ProgressiveHedging< Real >::z_gsum_, and ROL::ProgressiveHedging< Real >::z_psum_.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
inline |
Definition at line 213 of file ROL_ProgressiveHedging.hpp.
References ROL::ProgressiveHedging< Real >::penaltyParam_, ROL::ProgressiveHedging< Real >::ph_constraint_, ROL::ProgressiveHedging< Real >::ph_objective_, ROL::ProgressiveHedging< Real >::ph_problem_, ROL::ProgressiveHedging< Real >::sampler_, ROL::ProgressiveHedging< Real >::wvec_, and ROL::ProgressiveHedging< Real >::z_gsum_.
|
inline |
Definition at line 225 of file ROL_ProgressiveHedging.hpp.
References ROL::EXITSTATUS_CONVERGED, ROL::EXITSTATUS_USERDEFINED, ROL::ProgressiveHedging< Real >::freq_, ROL::ProgressiveHedging< Real >::hasStat_, ROL::ProgressiveHedging< Real >::input_, ROL::ProgressiveHedging< Real >::maxit_, ROL::ProgressiveHedging< Real >::maxPen_, ROL::ProgressiveHedging< Real >::penaltyParam_, ROL::ProgressiveHedging< Real >::ph_objective_, ROL::ProgressiveHedging< Real >::ph_problem_, ROL::ProgressiveHedging< Real >::ph_solver_, ROL::ProgressiveHedging< Real >::ph_status_, ROL::ProgressiveHedging< Real >::print_, ROL::ProgressiveHedging< Real >::sampler_, ROL::ProgressiveHedging< Real >::update_, ROL::ProgressiveHedging< Real >::useInexact_, ROL::ProgressiveHedging< Real >::wvec_, ROL::ProgressiveHedging< Real >::z_gsum_, ROL::ProgressiveHedging< Real >::z_psum_, zero, and ROL::ProgressiveHedging< Real >::ztol_.
|
private |
Definition at line 89 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::presolve(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 90 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::presolve(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 91 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::presolve().
|
private |
Definition at line 92 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 93 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 94 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 95 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 96 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 97 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 98 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 99 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 100 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 102 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 103 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 104 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 105 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 106 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), and ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 107 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 108 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 109 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 110 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::presolve(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 110 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::presolve(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 111 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().