EllAlgo 1.6.13
Loading...
Searching...
No Matches
lmi_factory.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <utility> // for move
9#include <vector>
10
11#include "lmi0_oracle.hpp"
12#include "lmi_old_oracle.hpp"
13#include "lmi_oracle.hpp"
14
25template <typename Arr036, typename Mat = Arr036>
26inline auto make_lmi_oracle(size_t ndim, const std::vector<Mat>& F, Mat B)
28 return {ndim, F, std::move(B)};
29}
30
40template <typename Arr036, typename Mat = Arr036>
41inline auto make_lmi0_oracle(size_t ndim, const std::vector<Mat>& F) -> Lmi0Oracle<Arr036, Mat> {
42 return {ndim, F};
43}
44
55template <typename Arr036, typename Mat = Arr036>
56inline auto make_lmi_old_oracle(size_t ndim, const std::vector<Mat>& F, Mat B)
58 return {ndim, F, std::move(B)};
59}
Oracle for Linear Matrix Inequality (LMI) feasibility problems.
Definition lmi0_oracle.hpp:33
Oracle for Linear Matrix Inequality.
Definition lmi_old_oracle.hpp:29
Oracle for Linear Matrix Inequality.
Definition lmi_oracle.hpp:28
auto invalid_value() -> T
Return an invalid/sentinel value for type T.
Definition cutting_plane.hpp:27
Oracle for Linear Matrix Inequality (LMI) feasibility (compact form)
auto make_lmi_oracle(size_t ndim, const std::vector< Mat > &F, Mat B) -> LmiOracle< Arr036, Mat >
Create an LmiOracle (lazy matrix form)
Definition lmi_factory.hpp:26
auto make_lmi0_oracle(size_t ndim, const std::vector< Mat > &F) -> Lmi0Oracle< Arr036, Mat >
Create an Lmi0Oracle (compact form, no constant term)
Definition lmi_factory.hpp:41
auto make_lmi_old_oracle(size_t ndim, const std::vector< Mat > &F, Mat B) -> LmiOldOracle< Arr036, Mat >
Create an LmiOldOracle (explicit matrix form)
Definition lmi_factory.hpp:56
Oracle for Linear Matrix Inequality feasibility (explicit matrix form)
Oracle for Linear Matrix Inequality feasibility (lazy matrix form)