|
EllAlgo 1.6.13
|
Oracle for Linear Matrix Inequality (LMI) feasibility problems. More...
#include <lmi0_oracle.hpp>
Public Member Functions | |
| Lmi0Oracle (size_t ndim, const std::vector< Mat > &F) | |
| Construct a new LMI Oracle object. | |
| auto | assess_feas (const Arr036 &x) -> Cut * |
| Assess the feasibility of a given point. | |
| auto | operator() (const Arr036 &x) -> Cut * |
| Call operator wrapping assess_feas. | |
Public Attributes | |
| LDLTMgr | _mq |
| LDLT manager for matrix factorization. | |
Additional Inherited Members | |
Protected Types inherited from LmiOracleBase< Arr036, Mat > | |
| using | Cut = std::pair< Arr036, double > |
Protected Member Functions inherited from LmiOracleBase< Arr036, Mat > | |
| template<typename LDLT , typename Fn > | |
| auto | assess_impl (LDLT &mgr, const std::vector< Mat > &F, const int sign, const Arr036 &x, Fn &&getA) -> Cut * |
| Shared assess_feas skeleton: factor, witness, sym_quad, pack cut. | |
Protected Attributes inherited from LmiOracleBase< Arr036, Mat > | |
| std::unique_ptr< Cut > | cut = std::make_unique<Cut>() |
| Storage for the cut returned by assess_feas. | |
Oracle for Linear Matrix Inequality (LMI) feasibility problems.
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.
getA accessor (Σ F_k x_k) with a negative sym_quad sign to the shared LmiOracleBase::assess_impl skeleton.| Arr036 | Array type for the decision variables (size 3-6) |
| Mat | Matrix type (defaults to Arr036) |
|
inline |
Construct a new LMI Oracle object.
| [in] | ndim | Dimension of the decision space |
| [in] | F | Vector of matrices defining the LMI constraints |
|
inline |
Assess the feasibility of a given point.
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.
| [in] | x | The point to assess feasibility |
|
inline |
Call operator wrapping assess_feas.
| [in] | x | The point to assess feasibility |
LDLT manager for matrix factorization.