CorrSolver 1.2.7; VERSION ${PROJECT_VERSION}
Loading...
Searching...
No Matches
qmi_oracle.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <ellalgo/arr.hpp>
8#include <ellalgo/oracles/ldlt_mgr.hpp>
9#include <optional>
10#include <type_traits>
11#include <vector>
12
21template <typename Arr036> class QmiOracle {
22 static_assert(std::is_class_v<Arr036>, "Arr036 must be a class type (e.g. Arr)");
23 using Cut = std::pair<Arr036, double>;
24
25 private:
26 double _t = 0.;
27 size_t _nx = 0;
28 size_t _count = 0;
29 size_t _n;
30
31 public:
32 size_t _m;
33
34 private:
35 const std::vector<Arr036>& m_F;
36 Arr036 m_F0;
37 Arr036 m_Fx;
38
39 public:
40 LDLTMgr _mq;
41
42 QmiOracle(const std::vector<Arr036>& F, Arr036 F0);
43 auto update(double t) -> void { this->_t = t; }
44 auto assess_feas(const Arr036& x) -> std::optional<Cut>;
45};
Quadratic Matrix Inequality (QMI) oracle.
Definition qmi_oracle.hpp:21
QmiOracle(const std::vector< Arr036 > &F, Arr036 F0)
LDLTMgr _mq
Definition qmi_oracle.hpp:40
size_t _m
Definition qmi_oracle.hpp:32
auto update(double t) -> void
Definition qmi_oracle.hpp:43
auto assess_feas(const Arr036 &x) -> std::optional< Cut >