KrisLibrary
1.0.0
|
A vector field v(x) = arg min_y c(x)^T y s.t. q(x) <= A(x)y <= p(x), l(x) <= y <= u(x) where c,A,q,p,l, and u are smooth functions. More...
#include <LPOptimumFunction.h>
Public Member Functions | |
virtual int | NumDimensions () const |
virtual void | InitLP (const Vector &x) |
virtual void | UpdateLP (const Vector &x) |
virtual bool | LPJacobianA_i (const Vector &x, int i, Matrix &JAi) |
virtual bool | LPJacobianA_i (const Vector &x, int i, SparseMatrix &JAi) |
virtual bool | LPJacobianP_i (const Vector &x, int i, Vector &Jpi) |
virtual bool | LPJacobianQ_i (const Vector &x, int i, Vector &Jqi) |
virtual bool | LPJacobianL_j (const Vector &x, int j, Vector &Jlj) |
virtual bool | LPJacobianU_j (const Vector &x, int j, Vector &Juj) |
virtual void | UpdateGLPK (const Vector &x) |
virtual std::string | Label () const |
virtual void | PreEval (const Vector &x) |
virtual void | Eval (const Vector &x, Vector &v) |
virtual void | Jacobian (const Vector &x, Matrix &J) |
virtual void | Jacobian_i (const Vector &x, int i, Vector &Ji) |
Public Member Functions inherited from Math::VectorFieldFunction | |
virtual std::string | Label (int i) const |
virtual std::string | VariableLabel (int i) const |
virtual void | operator() (const Vector &x, Vector &v) |
virtual Real | Eval_i (const Vector &x, int i) |
virtual Real | Jacobian_ij (const Vector &x, int i, int j) |
virtual void | Jacobian_j (const Vector &x, int j, Vector &Jj) |
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) |
Public Attributes | |
bool | initialized |
bool | sparse |
LinearProgram | lp |
LinearProgram_Sparse | lps |
GLPKInterface | glpk |
LinearProgram::Result | solveResult |
Vector | yopt |
A vector field v(x) = arg min_y c(x)^T y s.t. q(x) <= A(x)y <= p(x), l(x) <= y <= u(x) where c,A,q,p,l, and u are smooth functions.
Subclasses must overload UpdateLP and LPJacobian[Z] if Z depends on x. For faster updating, use InitLP to set up all constant members of the LP and in UpdateLP, only change the members that depend on x.
|
virtual |
Subclasses may overload this for a sparse update – may also help with warm start.