ROL
Public Member Functions | Private Member Functions | Private Attributes | List of all members
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 54 of file ROL_ProgressiveHedging.hpp.

Constructor & Destructor Documentation

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

Member Function Documentation

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

Member Data Documentation

template<class Real >
const Ptr<Problem<Real> > ROL::ProgressiveHedging< Real >::input_
private
template<class Real >
const Ptr<SampleGenerator<Real> > ROL::ProgressiveHedging< Real >::sampler_
private
template<class Real >
ParameterList ROL::ProgressiveHedging< Real >::parlist_
private
template<class Real >
bool ROL::ProgressiveHedging< Real >::usePresolve_
private
template<class Real >
bool ROL::ProgressiveHedging< Real >::useInexact_
private
template<class Real >
Real ROL::ProgressiveHedging< Real >::penaltyParam_
private
template<class Real >
Real ROL::ProgressiveHedging< Real >::maxPen_
private
template<class Real >
Real ROL::ProgressiveHedging< Real >::update_
private
template<class Real >
int ROL::ProgressiveHedging< Real >::freq_
private
template<class Real >
Real ROL::ProgressiveHedging< Real >::ztol_
private
template<class Real >
int ROL::ProgressiveHedging< Real >::maxit_
private
template<class Real >
bool ROL::ProgressiveHedging< Real >::print_
private
template<class Real >
bool ROL::ProgressiveHedging< Real >::hasStat_
private
template<class Real >
Ptr<PH_Objective<Real> > ROL::ProgressiveHedging< Real >::ph_objective_
private
template<class Real >
Ptr<Vector<Real> > ROL::ProgressiveHedging< Real >::ph_vector_
private
template<class Real >
Ptr<BoundConstraint<Real> > ROL::ProgressiveHedging< Real >::ph_bound_
private
template<class Real >
Ptr<Constraint<Real> > ROL::ProgressiveHedging< Real >::ph_constraint_
private
template<class Real >
Ptr<Problem<Real> > ROL::ProgressiveHedging< Real >::ph_problem_
private
template<class Real >
Ptr<Solver<Real> > ROL::ProgressiveHedging< Real >::ph_solver_
private
template<class Real >
Ptr<PH_StatusTest<Real> > ROL::ProgressiveHedging< Real >::ph_status_
private
template<class Real >
Ptr<Vector<Real> > ROL::ProgressiveHedging< Real >::z_psum_
private
template<class Real >
Ptr<Vector<Real> > ROL::ProgressiveHedging< Real >::z_gsum_
private
template<class Real >
std::vector<Ptr<Vector<Real> > > ROL::ProgressiveHedging< Real >::wvec_
private

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