File InterpolantDualSOSBarrier.h

template<typename IPMDouble>
class InterpolantDualSOSBarrier : public LHSCB<IPMDouble>

Public Functions

inline InterpolantDualSOSBarrier()
inline InterpolantDualSOSBarrier(unsigned max_polynomial_degree_, unsigned num_variables_ = 1)
InterpolantDualSOSBarrier(unsigned max_polynomial_degree_, Vector poly_g, unsigned num_variable_symbols_ = 1)
template<typename T>
inline InterpolantDualSOSBarrier<T> *cast()
bool update_gradient_hessian_LLT(Vector x, bool check_interior_only = false)
virtual Vector gradient(Vector x) override
virtual Matrix hessian(Vector x) override
virtual Eigen::LLT<Matrix> llt(Vector x, bool symmetrize = 0) override
virtual Matrix inverse_hessian(Vector x) override
virtual bool in_interior(Vector x) override
virtual IPMDouble concordance_parameter(Vector x) override
virtual Vector initialize_x() override
virtual Vector initialize_s() override
inline std::vector<std::vector<InterpolantDouble>> &get_basis()
inline Matrix get_P()
void configure(pt::ptree &config)

Public Members

unsigned _max_polynomial_degree
unsigned _num_variable_symbols
std::vector<std::vector<InterpolantDouble>> _unisolvent_basis
Matrix _intermediate_matrix
Matrix _preintermediate_matrix
CustomLLT<Matrix, Eigen::Lower> _intermediate_LLT
Matrix _Q
Matrix _V
unsigned _L
unsigned _U
Vector _g
Matrix _g_g_transpose
Matrix _P
bool use_low_rank_updates = true

Private Types

using LHSCB = LHSCB<IPMDouble>
typedef Vector<IPMDouble> Vector
typedef Matrix<IPMDouble> Matrix

Private Functions

void compute_V_transpose_V()
void construct_univariate(Vector poly_g)
void construct_bivariate(Vector poly_g)
void construct_multivariate(Vector poly_g)