EllAlgo 1.6.13
Loading...
Searching...
No Matches
Protected Types | Protected Member Functions | Protected Attributes | List of all members
LmiOracleBase< Arr036, Mat > Class Template Reference

Shared skeleton for Linear Matrix Inequality oracles. More...

#include <lmi_oracle_base.hpp>

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

Protected Types

using Cut = std::pair< Arr036, double >
 

Protected Member Functions

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

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 LmiOracleBase< Arr036, Mat >

Shared skeleton for Linear Matrix Inequality oracles.

The three LMI oracle flavors (LmiOracle, Lmi0Oracle, LmiOldOracle) differ only in how the matrix elements A(i,j) are assembled (lazy lambda vs. eagerly-built matrix), in the sym_quad sign convention, and in the presence of a constant term B. The factorization / witness / cut-packing pipeline is identical and lives here.

Note
Template Method pattern: assess_impl is the fixed algorithm skeleton (factor -> witness -> sym_quad -> pack cut); each concrete oracle supplies its own getA callable, sign, and manager via the parameter list, keeping every public constructor and member intact.
Template Parameters
Arr036Array type for the decision variables
MatMatrix type (defaults to Arr036)

Member Typedef Documentation

◆ Cut

template<typename Arr036 , typename Mat = Arr036>
using LmiOracleBase< Arr036, Mat >::Cut = std::pair<Arr036, double>
protected

Member Function Documentation

◆ assess_impl()

template<typename Arr036 , typename Mat = Arr036>
template<typename LDLT , typename Fn >
auto LmiOracleBase< Arr036, Mat >::assess_impl ( LDLT mgr,
const std::vector< Mat > &  F,
const int  sign,
const Arr036 x,
Fn &&  getA 
) -> Cut*
inlineprotected

Shared assess_feas skeleton: factor, witness, sym_quad, pack cut.

Template Parameters
LDLTLDL^T manager type (LDLTMgr)
FnCallable with signature double(size_t, size_t)
Parameters
[in,out]mgrLDL^T factorization manager
[in]FVector of matrices F_i (fixed problem data)
[in]sign+1 or -1 convention for sym_quad
[in]xEvaluation point
[in]getALazy accessor for matrix element A(i, j)
Returns
Cut* pointer to the packed cut, or nullptr if feasible

Member Data Documentation

◆ cut

template<typename Arr036 , typename Mat = Arr036>
std::unique_ptr<Cut> LmiOracleBase< Arr036, Mat >::cut = std::make_unique<Cut>()
protected

Storage for the cut returned by assess_feas.


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