EllAlgo 1.6.13
Loading...
Searching...
No Matches
Public Member Functions | List of all members
LmiOldOracle< Arr036, Mat > Class Template Reference

Oracle for Linear Matrix Inequality. More...

#include <lmi_old_oracle.hpp>

Inheritance diagram for LmiOldOracle< Arr036, Mat >:
[legend]
Collaboration diagram for LmiOldOracle< Arr036, Mat >:
[legend]

Public Member Functions

 LmiOldOracle (size_t ndim, const std::vector< Mat > &F, Mat B)
 Construct a new lmi oracle object.
 
auto assess_feas (const Arr036 &x) -> Cut *
 Assess the feasibility of a given point via LDLT factorization.
 
auto operator() (const Arr036 &x) -> Cut *
 Call operator wrapping assess_feas.
 

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< Cutcut = std::make_unique<Cut>()
 Storage for the cut returned by assess_feas.
 

Detailed Description

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

Oracle for Linear Matrix Inequality.

This oracle solves the following feasibility problem:

find  x
s.t.  (B - F * x) >= 0
Note
Concrete oracle in the Template Method pattern: builds the matrix A = B - Σ F_k x_k eagerly and feeds a lambda accessor with a positive sym_quad sign to the shared LmiOracleBase::assess_impl skeleton. Behaviorally identical to LmiOracle, which uses lazy evaluation instead of a pre-built matrix.

Constructor & Destructor Documentation

◆ LmiOldOracle()

template<typename Arr036 , typename Mat = Arr036>
LmiOldOracle< Arr036, Mat >::LmiOldOracle ( size_t  ndim,
const std::vector< Mat > &  F,
Mat  B 
)
inline

Construct a new lmi oracle object.

Parameters
[in]ndim
[in]F
[in]B

Member Function Documentation

◆ assess_feas()

template<typename Arr036 , typename Mat = Arr036>
auto LmiOldOracle< Arr036, Mat >::assess_feas ( const Arr036 x) -> Cut*
inline

Assess the feasibility of a given point via LDLT factorization.

Parameters
[in]xThe point to assess feasibility
Returns
Cut* Pointer to cut information, or nullptr if feasible

◆ operator()()

template<typename Arr036 , typename Mat = Arr036>
auto LmiOldOracle< Arr036, Mat >::operator() ( const Arr036 x) -> Cut*
inline

Call operator wrapping assess_feas.

Parameters
[in]xThe point to assess feasibility
Returns
Cut* Pointer to cut, or nullptr if feasible

The documentation for this class was generated from the following file: