KrisLibrary
1.0.0
|
A vector field with constraints s.t. ci(x) >= 0. More...
#include <InequalityConstraint.h>
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) |
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.
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().
|
virtual |
Sets x to satisfy the constraint by a margin of d. Returns true on success.
Reimplemented in Math::InequalityConstraintAdaptor, Math::LinearConstraint, Math::LimitConstraint, Math::CompositeInequalityConstraint, Math::UniformScaledOffsetConstraint, and Math::ScaledOffsetConstraint.
References Math::Root_Newton().
Referenced by Math::ScaledOffsetConstraint::Push(), and Math::UniformScaledOffsetConstraint::Push().