KrisLibrary  1.0.0
Public Member Functions | List of all members
Math::InequalityConstraint Class Reference

A vector field with constraints s.t. ci(x) >= 0. More...

#include <InequalityConstraint.h>

Inheritance diagram for Math::InequalityConstraint:
Math::VectorFieldFunction Math::CompositeInequalityConstraint Math::InequalityConstraintAdaptor Math::LimitConstraint Math::LinearConstraint Math::ScaledOffsetConstraint Math::UniformScaledOffsetConstraint

Public Member Functions

virtual int NumDimensions () const
 
virtual Real Margin (const Vector &x, int &minConstraint)
 
virtual bool Satisfies (const Vector &x, Real d=Zero)
 
virtual bool Satisfies_i (const Vector &x, int i, Real d=Zero)
 
virtual void LineSearch (const Vector &x0, const Vector &dx, Real &u)
 
virtual void LineSearch_i (const Vector &x0, const Vector &dx, Real &u, int i)
 
virtual void LineSearch_j (const Vector &x0, int j, Real &u)
 
virtual bool Push (Vector &x, Real d)
 
virtual bool Push_i (Vector &, int i, Real d)
 
- Public Member Functions inherited from Math::VectorFieldFunction
virtual std::string Label () const
 
virtual std::string Label (int i) const
 
virtual std::string VariableLabel (int i) const
 
virtual void operator() (const Vector &x, Vector &v)
 
virtual void PreEval (const Vector &x)
 
virtual void Eval (const Vector &x, Vector &v)=0
 
virtual Real Eval_i (const Vector &x, int i)
 
virtual Real Jacobian_ij (const Vector &x, int i, int j)
 
virtual void Jacobian_i (const Vector &x, int i, Vector &Ji)
 
virtual void Jacobian_j (const Vector &x, int j, Vector &Jj)
 
virtual void Jacobian (const Vector &x, Matrix &J)
 
virtual void DirectionalDeriv (const Vector &x, const Vector &h, Vector &v)
 
virtual Real Divergence (const Vector &x)
 
virtual void Hessian_i (const Vector &x, int i, Matrix &Hi)
 
virtual Real Hessian_ijk (const Vector &x, int i, int j, int k)
 

Detailed Description

A vector field with constraints s.t. ci(x) >= 0.

The value ci(x) represents the "margin" of the constraint. There's an issue of scale, and in general it is nice to have |grad(ci(x))| ~= 1 near the boundaries, so the margin is roughly the distance to the boundary.

Member Function Documentation

void InequalityConstraint::LineSearch ( const Vector x0,
const Vector dx,
Real &  u 
)
virtual

Given x0 feasible, finds a maximal value u<=u0 s.t. x=x0+u*dx satisfies the constraint. i version: only satisfy the i'th constraint. j version: move in the direction ej. (default uses secant method)

Reimplemented in Math::InequalityConstraintAdaptor, Math::LinearConstraint, Math::LimitConstraint, Math::CompositeInequalityConstraint, Math::UniformScaledOffsetConstraint, and Math::ScaledOffsetConstraint.

References Math::Root_SecantBracket().

Referenced by Math::ScaledOffsetConstraint::LineSearch().

bool InequalityConstraint::Push ( Vector x,
Real  d 
)
virtual

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