KrisLibrary  1.0.0
ConditionedConstraint.h
1 #ifndef MATH_CONDITIONED_CONSTRAINT_H
2 #define MATH_CONDITIONED_CONSTRAINT_H
3 
4 #include "InequalityConstraint.h"
5 
6 namespace Math {
7 
8 //requires that scale*f(x)+offset >= 0
10 {
11 public:
13  virtual std::string Label() const;
14  virtual std::string Label(int i) const;
15  virtual int NumDimensions() const { return f.NumDimensions(); }
16  virtual void PreEval(const Vector& x);
17  virtual void Eval(const Vector& x, Vector& v);
18  virtual Real Eval_i(const Vector& x,int i);
19  virtual void Jacobian(const Vector& x,Matrix& J);
20  virtual void Jacobian_i(const Vector& x,int i,Vector& Ji);
21  virtual void DirectionalDeriv(const Vector& x,const Vector& h,Vector& v);
22  virtual void Hessian_i(const Vector& x,int i,Matrix& Hi);
23 
24  virtual Real Margin(const Vector& x,int& minConstraint) { return InequalityConstraint::Margin(x,minConstraint); }
25  virtual bool Satisfies(const Vector& x,Real d=Zero) { return InequalityConstraint::Satisfies(x,d); }
26  virtual bool Satisfies_i(const Vector& x,int i,Real d=Zero);
27  virtual void LineSearch(const Vector& x0,const Vector& dx,Real& u);
28  virtual bool Push(Vector& x,Real d=Zero) { return InequalityConstraint::Push(x,d); }
29  virtual bool Push_i(Vector& x,int i,Real d);
30 
31  std::vector<Real> scale;
32  std::vector<Real> offset;
33 };
34 
36 {
37 public:
39  virtual std::string Label() const;
40  virtual int NumDimensions() const { return f.NumDimensions(); }
41  virtual void PreEval(const Vector& x);
42  virtual void Eval(const Vector& x, Vector& v);
43  virtual Real Eval_i(const Vector& x,int i);
44  virtual void Jacobian(const Vector& x,Matrix& J);
45  virtual void Jacobian_i(const Vector& x,int i,Vector& Ji);
46  virtual void DirectionalDeriv(const Vector& x,const Vector& h,Vector& v);
47  virtual void Hessian_i(const Vector& x,int i,Matrix& Hi);
48 
49  virtual Real Margin(const Vector& x,int& minConstraint) { return InequalityConstraint::Margin(x,minConstraint); }
50  virtual bool Satisfies(const Vector& x,Real d=Zero) { return InequalityConstraint::Satisfies(x,d); }
51  virtual bool Satisfies_i(const Vector& x,int i,Real d=Zero);
52  virtual void LineSearch(const Vector& x0,const Vector& dx,Real& u);
53  virtual bool Push(Vector& x,Real d=Zero) { return InequalityConstraint::Push(x,d); }
54  virtual bool Push_i(Vector& x,int i,Real d);
55 
56  Real scale,offset;
57 };
58 
59 } //namespace Math
60 
61 #endif
virtual bool Push(Vector &x, Real d=Zero)
Definition: ConditionedConstraint.h:53
Definition: ConditionedConstraint.h:35
virtual void LineSearch(const Vector &x0, const Vector &dx, Real &u)
Definition: ConditionedConstraint.cpp:117
virtual bool Push(Vector &x, Real d)
Definition: InequalityConstraint.cpp:150
A class that makes it easier to construct "plugin" classes to alter constraint behavior.
Definition: InequalityConstraint.h:125
virtual bool Push(Vector &x, Real d=Zero)
Definition: ConditionedConstraint.h:28
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
A vector field with constraints s.t. ci(x) >= 0.
Definition: InequalityConstraint.h:20
Definition: ConditionedConstraint.h:9