ROL
|
Provides the interface to solve a stochastic program using progressive hedging. More...
#include <ROL_ProgressiveHedging.hpp>
Public Member Functions | |
ProgressiveHedging (const Ptr< Problem< 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< Problem< 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< Problem< Real > > | ph_problem_ |
Ptr< Solver< 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 54 of file ROL_ProgressiveHedging.hpp.
|
inline |
Definition at line 97 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 80 of file ROL_ProgressiveHedging.hpp.
References ROL::ProgressiveHedging< Real >::input_, ROL::ProgressiveHedging< Real >::parlist_, ROL::Solver< Real >::reset(), ROL::ProgressiveHedging< Real >::sampler_, ROL::Solver< Real >::solve(), ROL::ProgressiveHedging< Real >::z_gsum_, and ROL::ProgressiveHedging< Real >::z_psum_.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
inline |
Definition at line 185 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 197 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 56 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::presolve(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 57 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 58 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::presolve().
|
private |
Definition at line 59 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 60 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 61 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 62 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 63 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 64 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 65 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 66 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 67 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 69 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 70 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 71 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 72 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 73 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), and ROL::ProgressiveHedging< Real >::ProgressiveHedging().
|
private |
Definition at line 74 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 75 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 76 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 77 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::presolve(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().
|
private |
Definition at line 77 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 78 of file ROL_ProgressiveHedging.hpp.
Referenced by ROL::ProgressiveHedging< Real >::check(), ROL::ProgressiveHedging< Real >::ProgressiveHedging(), and ROL::ProgressiveHedging< Real >::run().