template<typename Arr036, typename Mat = Arr036>
Lmi0Oracle class

Oracle for Linear Matrix Inequality (LMI) feasibility problems.

Template parameters
Mat Matrix type (defaults to Arr036)

This oracle solves the following feasibility problem:

find  x
s.t.  F₀ + F₁x₁ + F₂x₂ + ... + Fₙxₙ ⪯ 0

where Fᵢ are symmetric matrices and ⪯ denotes negative semidefinite. This is a fundamental problem in semidefinite programming and control theory.

Constructors, destructors, conversion operators

Lmi0Oracle(size_t ndim, const std::vector<Mat>& F)
Construct a new LMI Oracle object.

Public functions

auto assess_feas(const Arr036& x) -> Cut * -> auto
Assess the feasibility of a given point.
auto operator()(const Arr036& x) -> Cut * -> auto

Public variables

LDLTMgr _mq
LDLT manager for matrix factorization.

Function documentation

template<typename Arr036 _1, typename Mat>
Lmi0Oracle<_1, Mat>::Lmi0Oracle(size_t ndim, const std::vector<Mat>& F)

Construct a new LMI Oracle object.

Parameters
ndim in Dimension of the decision space
in Vector of matrices defining the LMI constraints

template<typename Arr036 _1, typename Mat>
auto Lmi0Oracle<_1, Mat>::assess_feas(const Arr036& x) -> Cut *

Assess the feasibility of a given point.

Parameters
in The point to assess feasibility
Returns Pointer to cut information, or nullptr if feasible

This method checks if the given point x satisfies the LMI constraint. If not feasible, it returns a cutting plane that separates x from the feasible region.

template<typename Arr036 _1, typename Mat>
auto Lmi0Oracle<_1, Mat>::operator()(const Arr036& x) -> Cut *

Parameters
in
Returns Cut*