File nlp_vpolyoracles.hpp

template<typename VT, typename NT>
class VPolyOracleVariableT : public VariableSet
#include <nlp_vpolyoracles.hpp>

Define the variable t we use in the optimization

Template Parameters:
  • VT – Vector Type

  • MT – Matrix Type

Public Functions

inline VPolyOracleVariableT(NT t_prev, NT tb_, NT eta_ = -1)
inline void SetVariables(const VT &T) override
inline VectorXd GetValues() const override
inline VecBound GetBounds() const override

Public Members

NT t
NT tb
NT eta
template<typename VT, typename NT>
class VPolyOracleVariableLambdas : public VariableSet
#include <nlp_vpolyoracles.hpp>

Define the variable t we use in the optimization

Template Parameters:
  • VT – Vector Type

  • MT – Matrix Type

Public Functions

inline VPolyOracleVariableLambdas(int m_)
inline void SetVariables(const VectorXd &lambdas_) override
inline VectorXd GetValues() const override
inline VecBound GetBounds() const override

Public Members

VectorXd lambdas
int m
template<typename VT, typename NT>
class VPolyOracleCost : public CostTerm
#include <nlp_vpolyoracles.hpp>

Define the cost function f(t) = t (ipopt takes minimization so it is -t)

Template Parameters:
  • VT – Vector Type

  • MT – Matrix Type

Public Functions

inline VPolyOracleCost(int m_)
inline NT GetCost() const override
inline void FillJacobianBlock(std::string var_set, Jacobian &jac) const override

Public Members

int m
template<typename VT, typename NT>
class VPolyoracleFeasibilityLambdas : public ConstraintSet
#include <nlp_vpolyoracles.hpp>

Define the feasibility lambdas

Template Parameters:
  • VT – Vector Type

  • MT – Matrix Type

Public Functions

inline VPolyoracleFeasibilityLambdas(int m_)
inline VectorXd GetValues() const override
inline VecBound GetBounds() const override
inline void FillJacobianBlock(std::string var_set, Jacobian &jac) const override

Public Members

int m
template<typename MT, typename VT, typename NT, typename Point, class bfunc>
class VPolyOracleFeasibilityCurve : public ConstraintSet

Public Functions

inline VPolyOracleFeasibilityCurve(MT &V_, std::vector<Point> &coeffs_, NT t0_, bfunc basis, bfunc basis_grad)
inline VecBound GetBounds() const override
inline VectorXd GetValues() const override
inline void FillJacobianBlock(std::string var_set, Jacobian &jac) const override

Public Members

int m
int M
int d_
std::vector<Point> &coeffs
MT &V
NT t0
bfunc phi
bfunc grad_phi
template<typename Polytope, class bfunc>
struct IpoptVPolyoracle
#include <nlp_vpolyoracles.hpp>

Oracle for V-polytopes

Template Parameters:
  • Polytope – Polytope Type

  • bfunc – feasibility constraint type

Public Types

typedef Polytope::MT MT
typedef Polytope::VT VT
typedef Polytope::NT NT
typedef Polytope::PointType Point

Public Functions

inline std::tuple<NT, Point, int> apply(NT t_prev, NT t0, NT eta, MT &V, Polytope &P, std::vector<Point> &coeffs, bfunc phi, bfunc grad_phi, int ignore_facet = -1)