ConstrainedOptPack: C++ Tools for Constrained (and Unconstrained) Optimization  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | List of all members
ConstrainedOptPack::QPSchurPack::Constraints Class Referenceabstract

Represents the extra constraints in the QP to be satisfied by the schur complement QP solver QPSchur {abstract}. More...

#include <ConstrainedOptPack_QPSchur.hpp>

Inheritance diagram for ConstrainedOptPack::QPSchurPack::Constraints:
Inheritance graph
[legend]

Public Types

enum  EPickPolicy
 

Public Member Functions

virtual ~Constraints ()
 
virtual size_type n () const =0
 
virtual size_type m_breve () const =0
 
virtual const MatrixOp & A_bar () const =0
 
virtual void pick_violated_policy (EPickPolicy pick_policy)=0
 Set the policy used to pick a violated constraint. More...
 
virtual EPickPolicy pick_violated_policy () const =0
 
virtual void pick_violated (const DVectorSlice &x, size_type *j_viol, value_type *constr_val, value_type *viol_bnd_val, value_type *norm_2_constr, EBounds *bnd, bool *can_ignore) const =0
 Pick a violated constraint. More...
 
virtual void ignore (size_type j)=0
 Inform to ignore the jth constraint the next time pick_violated(...) is called. More...
 
virtual value_type get_bnd (size_type j, EBounds bnd) const =0
 Return the bound for a constraint. More...
 

Detailed Description

Represents the extra constraints in the QP to be satisfied by the schur complement QP solver QPSchur {abstract}.

This class is only ment to be used in conjunction with the class QP and QPSchur. Its interface is designed to be minimal with respect to the needs of the QPSchur solver. However, this interface may be useful for any primal-dual QP solver.

These constraints are:

 (1.c)  cl_bar <= A_bar'*x <= cu_bar

 where:
   A_bar <: R^(n x m_bar)
   cl_bar, cu_bar <: R^m_bar

These constraints are also partitioned as:

 s.t.
   [     xl     ]    [   I       ]       [     xu     ]
   [  cl_breve  ] <= [  A_breve' ]*x  <= [  cu_breve  ]

 where:
   I <: R^(n x n)
   xl, xu <: R^n, are the variable bounds for variables that have bounds (sparse)
   A_breve <: R^(n x m_breve), is the Jacobian for the general constraints
   cl_breve, cu_breve <: R^m_breve, are bounds for general constraints

Here m_bar = n + m_breve

Above, some of the bounds in xl, xu, cl_breve, and cu_breve may be -inf or +inf and will therefore never be violated and never be added to the active set. Also, some of the lower and upper bounds may be equal which turns those inequality constraints into equality constraints (or fixed variables).

Definition at line 328 of file ConstrainedOptPack_QPSchur.hpp.

Member Enumeration Documentation

Definition at line 332 of file ConstrainedOptPack_QPSchur.hpp.

Constructor & Destructor Documentation

virtual ConstrainedOptPack::QPSchurPack::Constraints::~Constraints ( )
inlinevirtual

Definition at line 335 of file ConstrainedOptPack_QPSchur.hpp.

Member Function Documentation

virtual size_type ConstrainedOptPack::QPSchurPack::Constraints::n ( ) const
pure virtual
virtual size_type ConstrainedOptPack::QPSchurPack::Constraints::m_breve ( ) const
pure virtual
virtual const MatrixOp& ConstrainedOptPack::QPSchurPack::Constraints::A_bar ( ) const
pure virtual
virtual void ConstrainedOptPack::QPSchurPack::Constraints::pick_violated_policy ( EPickPolicy  pick_policy)
pure virtual

Set the policy used to pick a violated constraint.

Implemented in ConstrainedOptPack::QPSchurPack::ConstraintsRelaxedStd.

virtual EPickPolicy ConstrainedOptPack::QPSchurPack::Constraints::pick_violated_policy ( ) const
pure virtual
virtual void ConstrainedOptPack::QPSchurPack::Constraints::pick_violated ( const DVectorSlice &  x,
size_type j_viol,
value_type *  constr_val,
value_type *  viol_bnd_val,
value_type *  norm_2_constr,
EBounds *  bnd,
bool *  can_ignore 
) const
pure virtual

Pick a violated constraint.

Parameters
x[in] Trial point to pick a violated constraint at.
j_viol[out] Indice of violated constraint. j_viol = 0 if no constraint is violated by more that some tolerance.
constr_val[out] The value if the violated constraint a_bar(j)'*x.
viol_bnd_val[out] The value if the violated bound.
norm_2_constr[out]The 2 norm of the violated constraint ||a_bar(j)||2
bnd[out] Classification of the bound being violated.
can_ignore[out] True if the constraint can be ignored if it is linearly dependent.

Implemented in ConstrainedOptPack::QPSchurPack::ConstraintsRelaxedStd.

virtual void ConstrainedOptPack::QPSchurPack::Constraints::ignore ( size_type  j)
pure virtual

Inform to ignore the jth constraint the next time pick_violated(...) is called.

Implemented in ConstrainedOptPack::QPSchurPack::ConstraintsRelaxedStd.

virtual value_type ConstrainedOptPack::QPSchurPack::Constraints::get_bnd ( size_type  j,
EBounds  bnd 
) const
pure virtual

Return the bound for a constraint.

Parameters
j[in] Indice of the constraint of the bound to obtain.
bnd[in] Which bound to obtain (UPPER or LOWER).
Returns
xl(j) [ 0 < j < n, bnd == LOWER ]
xu(j) [ 0 < j < n, bnd == UPPER ]
cl_breve(j - n) [ n + 1 < j < n + m_breve, bnd == LOWER ]
cu_breve(j - n) [ n + 1 < j < n + m_breve, bnd == UPPER ]

Implemented in ConstrainedOptPack::QPSchurPack::ConstraintsRelaxedStd.


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