MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
ConstrainedOptPack::QPSolverRelaxedQPSchur Class Reference

Solves Quadratic Programming (QP) problems using QPSchur. More...

#include <ConstrainedOptPack_QPSolverRelaxedQPSchur.hpp>

Inheritance diagram for ConstrainedOptPack::QPSolverRelaxedQPSchur:
Inheritance graph
[legend]

Classes

class  InitKKTSystem
 Interface for the object that forms the initial KKT system {abstract}. More...
 
class  ReinitKKTSystem
 Interface for the object that can reform an initial KKT system dynamically {abstract}. More...
 

Public Types

enum  ELocalOutputLevel {
  USE_INPUT_ARG = -1, NO_OUTPUT = 0, OUTPUT_BASIC_INFO = 1, OUTPUT_ITER_SUMMARY = 2,
  OUTPUT_ITER_STEPS = 3, OUTPUT_ACT_SET = 4, OUTPUT_ITER_QUANTITIES = 5
}
 Output level. More...
 
- Public Types inherited from ConstrainedOptPack::QPSolverRelaxed
enum  EOutputLevel {
  PRINT_NONE = 0, PRINT_BASIC_INFO = 1, PRINT_ITER_SUMMARY = 2, PRINT_ITER_STEPS = 3,
  PRINT_ITER_ACT_SET = 4, PRINT_ITER_VECTORS = 5, PRINT_EVERY_THING = 6
}
 Enumeration for the amount of output to create from solve_qp(). More...
 
enum  ERunTests { RUN_TESTS, NO_TESTS }
 Enumeration for if to run internal tests or not. More...
 

Public Member Functions

 STANDARD_COMPOSITION_MEMBERS (InitKKTSystem, init_kkt_sys)
 Strategy object that sets up the initial KKT system. More...
 
 STANDARD_COMPOSITION_MEMBERS (QPSchurPack::ConstraintsRelaxedStd, constraints)
 Constraints object. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, max_qp_iter_frac)
 Set the maximum number of QP iterations as max_itr = max_qp_iter_frac * n. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, max_real_runtime)
 Set the maximum real run-time in minutes. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (QPSchurPack::ConstraintsRelaxedStd::EInequalityPickPolicy, inequality_pick_policy)
 Policy used to select a violated constraint. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (ELocalOutputLevel, print_level)
 Set the output level for QPSchur. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, bounds_tol)
 Set the feasibility tolerance for the bound constriants. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, inequality_tol)
 Set the feasibility tolerance for the general inequality constraints. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, equality_tol)
 Set the feasibility tolerance for the general equality constriants. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, loose_feas_tol)
 Set a looser feasibility tolerance ( > feas_tol ) More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, dual_infeas_tol)
 Set the tolerence where a scaled Langrange multiplier is considered degenerate. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, huge_primal_step)
 Set the tolerence for the size of the step in the primal space that is considered to be a near infinite step. This is used to determine if the KKT system is near singular. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, huge_dual_step)
 Set the tolerence for the size of the step in the dual space that is considered to be a near infinite step. This is used to determine if the constriants are infeasible. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, bigM)
 <<std member="" comp>="">> members for the Big M parameter used in the objective. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, warning_tol)
 <<std member="" comp>="">> members for the warning tolerance for tests. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, error_tol)
 <<std member="" comp>="">> members for the error tolerance for tests. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (size_type, iter_refine_min_iter)
 Set the minimum number of refinement iterations to perform when using iterative refinement. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (size_type, iter_refine_max_iter)
 Set the maximum number of refinement iterations to perform when using iterative refinement. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, iter_refine_opt_tol)
 Set the maxinum scaled tolerance the residual of the optimality conditions must be before terminating iterative refinement. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, iter_refine_feas_tol)
 Set the maxinum scaled tolerance the residual of the feasibility conditions must be before terminating iterative refinement. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, iter_refine_at_solution)
 Set whether iterative refinement is automatically used once the solution is found. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, pivot_warning_tol)
 Set the relative tolerance for pivots in the schur complement under which a waning will be printed (see MatrixSymAddDelUpdateable) for near singular updates. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, pivot_singular_tol)
 Set the relative tolerance for pivots in the schur complement under which a singularity exception will be thrown (see MatrixSymAddDelUpdateable) for singular updates. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, pivot_wrong_inertia_tol)
 Set the relative tolerance for pivots in the schur complement over which a wrong inertia exception will be throw (see MatrixSymAddDelUpdateable) for updates with the wrong inertia. More...
 
 STANDARD_MEMBER_COMPOSITION_MEMBERS (bool, add_equalities_initially)
 Set whether equality constriants are to be added to the active set initialy to the schur complement or not. More...
 
 QPSolverRelaxedQPSchur (const init_kkt_sys_ptr_t &init_kkt_sys=Teuchos::null, const constraints_ptr_t &constraints=Teuchos::rcp(new QPSchurPack::ConstraintsRelaxedStd), value_type max_qp_iter_frac=10.0, value_type max_real_runtime=1e+20, QPSchurPack::ConstraintsRelaxedStd::EInequalityPickPolicy inequality_pick_policy=QPSchurPack::ConstraintsRelaxedStd::ADD_BOUNDS_THEN_MOST_VIOLATED_INEQUALITY, ELocalOutputLevel print_level=USE_INPUT_ARG, value_type bounds_tol=-1.0, value_type inequality_tol=-1.0, value_type equality_tol=-1.0, value_type loose_feas_tol=-1.0, value_type dual_infeas_tol=-1.0, value_type huge_primal_step=-1.0, value_type huge_dual_step=-1.0, value_type bigM=1e+10, value_type warning_tol=1e-10, value_type error_tol=1e-5, size_type iter_refine_min_iter=1, size_type iter_refine_max_iter=3, value_type iter_refine_opt_tol=1e-12, value_type iter_refine_feas_tol=1e-12, bool iter_refine_at_solution=true, value_type pivot_warning_tol=1e-8, value_type pivot_singular_tol=1e-11, value_type pivot_wrong_inertia_tol=1e-11, bool add_equalities_initially=true)
 
 ~QPSolverRelaxedQPSchur ()
 
- Public Member Functions inherited from ConstrainedOptPack::QPSolverRelaxed
 STANDARD_MEMBER_COMPOSITION_MEMBERS (value_type, infinite_bound)
 Set the scalar that will be used to identigy infinite bounds. More...
 
 QPSolverRelaxed ()
 
virtual ~QPSolverRelaxed ()
 
virtual
QPSolverStats::ESolutionType 
solve_qp (std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Vector &g, const MatrixSymOp &G, value_type etaL, const Vector &dL, const Vector &dU, const MatrixOp &E, BLAS_Cpp::Transp trans_E, const Vector &b, const Vector &eL, const Vector &eU, const MatrixOp &F, BLAS_Cpp::Transp trans_F, const Vector &f, value_type *obj_d, value_type *eta, VectorMutable *d, VectorMutable *nu, VectorMutable *mu, VectorMutable *Ed, VectorMutable *lambda, VectorMutable *Fd)
 Solve the QP. More...
 
virtual
QPSolverStats::ESolutionType 
solve_qp (std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Vector &g, const MatrixSymOp &G, value_type etaL, const Vector &dL, const Vector &dU, const MatrixOp &E, BLAS_Cpp::Transp trans_E, const Vector &b, const Vector &eL, const Vector &eU, value_type *obj_d, value_type *eta, VectorMutable *d, VectorMutable *nu, VectorMutable *mu, VectorMutable *Ed)
 Solve the QP without general equality constrants. More...
 
virtual
QPSolverStats::ESolutionType 
solve_qp (std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Vector &g, const MatrixSymOp &G, value_type etaL, const Vector &dL, const Vector &dU, const MatrixOp &F, BLAS_Cpp::Transp trans_F, const Vector &f, value_type *obj_d, value_type *eta, VectorMutable *d, VectorMutable *nu, VectorMutable *lambda, VectorMutable *Fd)
 Solve the QP without general inequality constrants. More...
 
virtual
QPSolverStats::ESolutionType 
solve_qp (std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Vector &g, const MatrixSymOp &G, const Vector &dL, const Vector &dU, value_type *obj_d, VectorMutable *d, VectorMutable *nu)
 Solve the QP without general equality or inequality constrants (no relaxation needed). More...
 
virtual
QPSolverStats::ESolutionType 
solve_qp (std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Vector &g, const MatrixSymOp &G, value_type etaL, const Vector *dL, const Vector *dU, const MatrixOp *E, BLAS_Cpp::Transp trans_E, const Vector *b, const Vector *eL, const Vector *eU, const MatrixOp *F, BLAS_Cpp::Transp trans_F, const Vector *f, value_type *obj_d, value_type *eta, VectorMutable *d, VectorMutable *nu, VectorMutable *mu, VectorMutable *Ed, VectorMutable *lambda, VectorMutable *Fd)
 This is a more flexible function where the client can set different constraints to be included. More...
 

Private Attributes

QPSolverStats qp_stats_
 
QPSchur qp_solver_
 
QPSchurPack::QPInitFixedFreeStd qp_
 
MatrixSymHessianRelaxNonSing G_relaxed_
 
VectorMutableDense bigM_vec_
 
MatrixSymAddDelBunchKaufman schur_comp_
 
DVector g_relaxed_
 
DVector b_X_
 
InitKKTSystem::Ko_ptr_t Ko_
 
DVector fo_
 

Overridden from QPSolverRelaxed

QPSolverStats get_qp_stats () const
 
void release_memory ()
 
QPSolverStats::ESolutionType imp_solve_qp (std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Vector &g, const MatrixSymOp &G, value_type etaL, const Vector *dL, const Vector *dU, const MatrixOp *E, BLAS_Cpp::Transp trans_E, const Vector *b, const Vector *eL, const Vector *eU, const MatrixOp *F, BLAS_Cpp::Transp trans_F, const Vector *f, value_type *obj_d, value_type *eta, VectorMutable *d, VectorMutable *nu, VectorMutable *mu, VectorMutable *Ed, VectorMutable *lambda, VectorMutable *Fd)
 

Detailed Description

Solves Quadratic Programming (QP) problems using QPSchur.

This is the only subclass needed for QPSchur. All of the specifics of how the initial KKT system is formed is delegated to a strategy object of type InitKKTSystem (see below).

Definition at line 63 of file ConstrainedOptPack_QPSolverRelaxedQPSchur.hpp.

Member Enumeration Documentation

Output level.

Enumerator
USE_INPUT_ARG 
NO_OUTPUT 
OUTPUT_BASIC_INFO 
OUTPUT_ITER_SUMMARY 
OUTPUT_ITER_STEPS 
OUTPUT_ACT_SET 
OUTPUT_ITER_QUANTITIES 

Definition at line 220 of file ConstrainedOptPack_QPSolverRelaxedQPSchur.hpp.

Constructor & Destructor Documentation

ConstrainedOptPack::QPSolverRelaxedQPSchur::QPSolverRelaxedQPSchur ( const init_kkt_sys_ptr_t &  init_kkt_sys = Teuchos::null,
const constraints_ptr_t &  constraints = Teuchos::rcp(new QPSchurPack::ConstraintsRelaxedStd),
value_type  max_qp_iter_frac = 10.0,
value_type  max_real_runtime = 1e+20,
QPSchurPack::ConstraintsRelaxedStd::EInequalityPickPolicy  inequality_pick_policy = QPSchurPack::ConstraintsRelaxedStd::ADD_BOUNDS_THEN_MOST_VIOLATED_INEQUALITY,
ELocalOutputLevel  print_level = USE_INPUT_ARG,
value_type  bounds_tol = -1.0,
value_type  inequality_tol = -1.0,
value_type  equality_tol = -1.0,
value_type  loose_feas_tol = -1.0,
value_type  dual_infeas_tol = -1.0,
value_type  huge_primal_step = -1.0,
value_type  huge_dual_step = -1.0,
value_type  bigM = 1e+10,
value_type  warning_tol = 1e-10,
value_type  error_tol = 1e-5,
size_type  iter_refine_min_iter = 1,
size_type  iter_refine_max_iter = 3,
value_type  iter_refine_opt_tol = 1e-12,
value_type  iter_refine_feas_tol = 1e-12,
bool  iter_refine_at_solution = true,
value_type  pivot_warning_tol = 1e-8,
value_type  pivot_singular_tol = 1e-11,
value_type  pivot_wrong_inertia_tol = 1e-11,
bool  add_equalities_initially = true 
)
ConstrainedOptPack::QPSolverRelaxedQPSchur::~QPSolverRelaxedQPSchur ( )

Member Function Documentation

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_COMPOSITION_MEMBERS ( InitKKTSystem  ,
init_kkt_sys   
)

Strategy object that sets up the initial KKT system.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_COMPOSITION_MEMBERS ( QPSchurPack::ConstraintsRelaxedStd  ,
constraints   
)

Constraints object.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
max_qp_iter_frac   
)

Set the maximum number of QP iterations as max_itr = max_qp_iter_frac * n.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
max_real_runtime   
)

Set the maximum real run-time in minutes.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( QPSchurPack::ConstraintsRelaxedStd::EInequalityPickPolicy  ,
inequality_pick_policy   
)

Policy used to select a violated constraint.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( ELocalOutputLevel  ,
print_level   
)

Set the output level for QPSchur.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
bounds_tol   
)

Set the feasibility tolerance for the bound constriants.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
inequality_tol   
)

Set the feasibility tolerance for the general inequality constraints.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
equality_tol   
)

Set the feasibility tolerance for the general equality constriants.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
loose_feas_tol   
)

Set a looser feasibility tolerance ( > feas_tol )

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
dual_infeas_tol   
)

Set the tolerence where a scaled Langrange multiplier is considered degenerate.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
huge_primal_step   
)

Set the tolerence for the size of the step in the primal space that is considered to be a near infinite step. This is used to determine if the KKT system is near singular.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
huge_dual_step   
)

Set the tolerence for the size of the step in the dual space that is considered to be a near infinite step. This is used to determine if the constriants are infeasible.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
bigM   
)

<<std member="" comp>="">> members for the Big M parameter used in the objective.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
warning_tol   
)

<<std member="" comp>="">> members for the warning tolerance for tests.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
error_tol   
)

<<std member="" comp>="">> members for the error tolerance for tests.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( size_type  ,
iter_refine_min_iter   
)

Set the minimum number of refinement iterations to perform when using iterative refinement.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( size_type  ,
iter_refine_max_iter   
)

Set the maximum number of refinement iterations to perform when using iterative refinement.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
iter_refine_opt_tol   
)

Set the maxinum scaled tolerance the residual of the optimality conditions must be before terminating iterative refinement.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
iter_refine_feas_tol   
)

Set the maxinum scaled tolerance the residual of the feasibility conditions must be before terminating iterative refinement.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
iter_refine_at_solution   
)

Set whether iterative refinement is automatically used once the solution is found.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
pivot_warning_tol   
)

Set the relative tolerance for pivots in the schur complement under which a waning will be printed (see MatrixSymAddDelUpdateable) for near singular updates.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
pivot_singular_tol   
)

Set the relative tolerance for pivots in the schur complement under which a singularity exception will be thrown (see MatrixSymAddDelUpdateable) for singular updates.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( value_type  ,
pivot_wrong_inertia_tol   
)

Set the relative tolerance for pivots in the schur complement over which a wrong inertia exception will be throw (see MatrixSymAddDelUpdateable) for updates with the wrong inertia.

ConstrainedOptPack::QPSolverRelaxedQPSchur::STANDARD_MEMBER_COMPOSITION_MEMBERS ( bool  ,
add_equalities_initially   
)

Set whether equality constriants are to be added to the active set initialy to the schur complement or not.

QPSolverStats ConstrainedOptPack::QPSolverRelaxedQPSchur::get_qp_stats ( ) const
virtual
void ConstrainedOptPack::QPSolverRelaxedQPSchur::release_memory ( )
virtual
QPSolverStats::ESolutionType ConstrainedOptPack::QPSolverRelaxedQPSchur::imp_solve_qp ( std::ostream *  out,
EOutputLevel  olevel,
ERunTests  test_what,
const Vector &  g,
const MatrixSymOp &  G,
value_type  etaL,
const Vector *  dL,
const Vector *  dU,
const MatrixOp *  E,
BLAS_Cpp::Transp  trans_E,
const Vector *  b,
const Vector *  eL,
const Vector *  eU,
const MatrixOp *  F,
BLAS_Cpp::Transp  trans_F,
const Vector *  f,
value_type *  obj_d,
value_type *  eta,
VectorMutable *  d,
VectorMutable *  nu,
VectorMutable *  mu,
VectorMutable *  Ed,
VectorMutable *  lambda,
VectorMutable *  Fd 
)
protectedvirtual

Member Data Documentation

QPSolverStats ConstrainedOptPack::QPSolverRelaxedQPSchur::qp_stats_
private
QPSchur ConstrainedOptPack::QPSolverRelaxedQPSchur::qp_solver_
private
QPSchurPack::QPInitFixedFreeStd ConstrainedOptPack::QPSolverRelaxedQPSchur::qp_
private
MatrixSymHessianRelaxNonSing ConstrainedOptPack::QPSolverRelaxedQPSchur::G_relaxed_
private
VectorMutableDense ConstrainedOptPack::QPSolverRelaxedQPSchur::bigM_vec_
private
MatrixSymAddDelBunchKaufman ConstrainedOptPack::QPSolverRelaxedQPSchur::schur_comp_
private
DVector ConstrainedOptPack::QPSolverRelaxedQPSchur::g_relaxed_
private
DVector ConstrainedOptPack::QPSolverRelaxedQPSchur::b_X_
private
InitKKTSystem::Ko_ptr_t ConstrainedOptPack::QPSolverRelaxedQPSchur::Ko_
private
DVector ConstrainedOptPack::QPSolverRelaxedQPSchur::fo_
private

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