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

Oracle for Linear Matrix Inequality. More...

#include <lmi_oracle.hpp>

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

Public Member Functions

 LmiOracle (size_t ndim, const std::vector< Mat > &F, Mat B)
 Construct a new lmi oracle object.
 
auto assess_feas (const Arr036 &x) -> Cut *
 
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 LmiOracle< 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: supplies a lazy getA accessor (B - Σ F_k x_k) with a positive sym_quad sign to the shared LmiOracleBase::assess_impl skeleton. Interchangeable with Lmi0Oracle, LmiOldOracle, ProfitOracle, LowpassOracle, NetworkOracle.

Constructor & Destructor Documentation

◆ LmiOracle()

template<typename Arr036 , typename Mat = Arr036>
LmiOracle< Arr036, Mat >::LmiOracle ( 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 LmiOracle< Arr036, Mat >::assess_feas ( const Arr036 x) -> Cut*
inline
Parameters
[in]x
Returns
Cut*

◆ operator()()

template<typename Arr036 , typename Mat = Arr036>
auto LmiOracle< 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: