KrisLibrary  1.0.0
NonlinearProgram.h
1 #ifndef OPTIMIZATION_NONLINEAR_PROGRAM_H
2 #define OPTIMIZATION_NONLINEAR_PROGRAM_H
3 
5 #include <KrisLibrary/math/vector.h>
6 #include <KrisLibrary/math/matrix.h>
7 #include <memory>
8 
9 namespace Optimization {
10 using namespace Math;
11 
23 {
24 public:
25  NonlinearProgram(const std::shared_ptr<ScalarFieldFunction>& f,const std::shared_ptr<VectorFieldFunction>& c=NULL,const std::shared_ptr<VectorFieldFunction>& d=NULL);
26  void PreEval(const Vector& x);
27  bool SatisfiesEquality(const Vector& x,Real tol=Epsilon);
28  bool SatisfiesInequality(const Vector& x);
29  Real Lagrangian(const Vector& x,const Vector& lambda,const Vector& mu);
30 
32  Real LagrangianEval(const Vector& x,const Vector& lambda,const Vector& mu);
33  void LagrangianGradient(const Vector& x,const Vector& lambda,const Vector& mu, Vector& grad);
34  void LagrangianHessian(const Vector& x,const Vector& lambda,const Vector& mu, Matrix& H);
35 
37  Real LagrangianEval_Sparse(const Vector& x,const Vector& lambda,const Vector& mu);
38  void LagrangianGradient_Sparse(const Vector& x,const Vector& lambda,const Vector& mu, Vector& grad);
39  void LagrangianHessian_Sparse(const Vector& x,const Vector& lambda,const Vector& mu, Matrix& H);
40 
41  std::shared_ptr<ScalarFieldFunction> f;
42  std::shared_ptr<VectorFieldFunction> c;
43  std::shared_ptr<VectorFieldFunction> d;
44  bool minimize;
46 };
47 
48 } //namespace Optimization
49 
50 #endif
51 
Namespace for classes and functions in the Optimization package.
Definition: CSet.h:7
Abstract base classes for function interfaces.
bool SatisfiesEquality(VectorFieldFunction *C, const Vector &x, Real tol)
Returns true if C(x)<=tol, pointwise.
Definition: Newton.cpp:31
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12
bool SatisfiesInequality(VectorFieldFunction *C, const Vector &x, Real margin)
Returns true if C(x) >= margin.
Definition: Newton.cpp:39
bool inequalityLess
true if f is to be minimized, false if maximized
Definition: NonlinearProgram.h:45
A structure defining a nonlinear program.
Definition: NonlinearProgram.h:22