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< 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_
 

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 87 of file ROL_ProgressiveHedging.hpp.

Constructor & Destructor Documentation

◆ ProgressiveHedging()

template<class Real >
ROL::ProgressiveHedging< Real >::ProgressiveHedging ( const Ptr< OptimizationProblem< 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()

template<class Real >
void ROL::ProgressiveHedging< Real >::run ( std::ostream &  outStream = std::cout)
inline

Member Data Documentation

◆ input_

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

◆ sampler_

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

◆ parlist_

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

◆ usePresolve_

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

◆ useInexact_

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

◆ penaltyParam_

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

◆ maxPen_

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

◆ update_

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

◆ freq_

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

◆ ztol_

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

◆ maxit_

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

◆ print_

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

◆ hasStat_

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

◆ ph_objective_

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

◆ ph_vector_

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

◆ ph_bound_

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

◆ ph_constraint_

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

◆ ph_problem_

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

◆ ph_solver_

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

◆ ph_status_

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

◆ z_psum_

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

◆ z_gsum_

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

◆ wvec_

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

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