trajopt
 All Classes Namespaces Files Functions Variables Typedefs Pages
complementarity.hpp
1 #pragma once
2 #include "sco/modeling_utils.hpp"
3 
4 
5 namespace sco {
6 
7  struct ComplCnt : public Constraint {
8  ConstraintType type_;
9  VectorOfVectorPtr f_, g_;
10  MatrixOfVectorPtr fgrad_, ggrad_;
11  VarVector fvars_, gvars_;
12  ComplCnt(ConstraintType type, VectorOfVectorPtr f, VectorOfVectorPtr g, const VarVector& fvars, const VarVector& gvars, double epsilon)
13  : type_(type), f_(f), g_(g), fgrad_(forwardNumJac(f, epsilon)), ggrad_(forwardNumJac(g, epsilon)), fvars_(fvars), gvars_(gvars) {}
14  ComplCnt(ConstraintType type, VectorOfVectorPtr f, VectorOfVectorPtr g, MatrixOfVectorPtr fgrad, MatrixOfVectorPtr ggrad, const VarVector& fvars, const VarVector& gvars)
15  : type_(type), f_(f), g_(g), fgrad_(fgrad), ggrad_(ggrad), fvars_(fvars), gvars_(gvars) {}
16  DblVec value(const DblVec& x);
17  ConvexConstraintsPtr convex(const DblVec& x, Model* model);
18  ConstraintType type() {return type_;}
19  };
20 
21 }