ROL
ROL::ProgressiveHedging< Real > Class Template Reference

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_
 

Detailed Description

template<class Real>
class ROL::ProgressiveHedging< Real >

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

of exceedance.

Definition at line 88 of file ROL_ProgressiveHedging.hpp.

Constructor & Destructor Documentation

◆ ProgressiveHedging()

template<class Real>
ROL::ProgressiveHedging< Real >::ProgressiveHedging ( const Ptr< Problem< Real > > & input,
const Ptr< SampleGenerator< Real > > & sampler,
ParameterList & parlist )
inline

Member Function Documentation

◆ presolve()

template<class Real>
void ROL::ProgressiveHedging< Real >::presolve ( void )
inlineprivate

◆ check()

template<class Real>
void ROL::ProgressiveHedging< Real >::check ( std::ostream & outStream = std::cout,
const int numSamples = 1 )
inline

◆ run()

Member Data Documentation

◆ input_

template<class Real>
const Ptr<Problem<Real> > ROL::ProgressiveHedging< Real >::input_
private

Definition at line 90 of file ROL_ProgressiveHedging.hpp.

Referenced by presolve(), ProgressiveHedging(), and run().

◆ sampler_

template<class Real>
const Ptr<SampleGenerator<Real> > ROL::ProgressiveHedging< Real >::sampler_
private

Definition at line 91 of file ROL_ProgressiveHedging.hpp.

Referenced by check(), presolve(), ProgressiveHedging(), and run().

◆ parlist_

template<class Real>
ParameterList ROL::ProgressiveHedging< Real >::parlist_
private

Definition at line 92 of file ROL_ProgressiveHedging.hpp.

Referenced by presolve(), and ProgressiveHedging().

◆ usePresolve_

template<class Real>
bool ROL::ProgressiveHedging< Real >::usePresolve_
private

Definition at line 93 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging().

◆ useInexact_

template<class Real>
bool ROL::ProgressiveHedging< Real >::useInexact_
private

Definition at line 94 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ penaltyParam_

template<class Real>
Real ROL::ProgressiveHedging< Real >::penaltyParam_
private

Definition at line 95 of file ROL_ProgressiveHedging.hpp.

Referenced by check(), ProgressiveHedging(), and run().

◆ maxPen_

template<class Real>
Real ROL::ProgressiveHedging< Real >::maxPen_
private

Definition at line 96 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ update_

template<class Real>
Real ROL::ProgressiveHedging< Real >::update_
private

Definition at line 97 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ freq_

template<class Real>
int ROL::ProgressiveHedging< Real >::freq_
private

Definition at line 98 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ ztol_

template<class Real>
Real ROL::ProgressiveHedging< Real >::ztol_
private

Definition at line 99 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ maxit_

template<class Real>
int ROL::ProgressiveHedging< Real >::maxit_
private

Definition at line 100 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ print_

template<class Real>
bool ROL::ProgressiveHedging< Real >::print_
private

Definition at line 101 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ hasStat_

template<class Real>
bool ROL::ProgressiveHedging< Real >::hasStat_
private

Definition at line 103 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ ph_objective_

template<class Real>
Ptr<PH_Objective<Real> > ROL::ProgressiveHedging< Real >::ph_objective_
private

Definition at line 104 of file ROL_ProgressiveHedging.hpp.

Referenced by check(), ProgressiveHedging(), and run().

◆ ph_vector_

template<class Real>
Ptr<Vector<Real> > ROL::ProgressiveHedging< Real >::ph_vector_
private

Definition at line 105 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging().

◆ ph_bound_

template<class Real>
Ptr<BoundConstraint<Real> > ROL::ProgressiveHedging< Real >::ph_bound_
private

Definition at line 106 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging().

◆ ph_constraint_

template<class Real>
Ptr<Constraint<Real> > ROL::ProgressiveHedging< Real >::ph_constraint_
private

Definition at line 107 of file ROL_ProgressiveHedging.hpp.

Referenced by check(), and ProgressiveHedging().

◆ ph_problem_

template<class Real>
Ptr<Problem<Real> > ROL::ProgressiveHedging< Real >::ph_problem_
private

Definition at line 108 of file ROL_ProgressiveHedging.hpp.

Referenced by check(), ProgressiveHedging(), and run().

◆ ph_solver_

template<class Real>
Ptr<Solver<Real> > ROL::ProgressiveHedging< Real >::ph_solver_
private

Definition at line 109 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ ph_status_

template<class Real>
Ptr<PH_StatusTest<Real> > ROL::ProgressiveHedging< Real >::ph_status_
private

Definition at line 110 of file ROL_ProgressiveHedging.hpp.

Referenced by ProgressiveHedging(), and run().

◆ z_psum_

template<class Real>
Ptr<Vector<Real> > ROL::ProgressiveHedging< Real >::z_psum_
private

Definition at line 111 of file ROL_ProgressiveHedging.hpp.

Referenced by presolve(), ProgressiveHedging(), and run().

◆ z_gsum_

template<class Real>
Ptr<Vector<Real> > ROL::ProgressiveHedging< Real >::z_gsum_
private

Definition at line 111 of file ROL_ProgressiveHedging.hpp.

Referenced by check(), presolve(), ProgressiveHedging(), and run().

◆ wvec_

template<class Real>
std::vector<Ptr<Vector<Real> > > ROL::ProgressiveHedging< Real >::wvec_
private

Definition at line 112 of file ROL_ProgressiveHedging.hpp.

Referenced by check(), ProgressiveHedging(), and run().


The documentation for this class was generated from the following file: