11#include < ellalgo/cutting_plane.hpp> // for cutting_plane_optim
22#include < ellalgo/ell.hpp> // for Ell
33#include < gsl/span> // for span
4- #include < lmisolver/lmi_old_oracle.hpp> // for lmi_old_oracle
5- #include < lmisolver/lmi_oracle.hpp> // for lmi_oracle
4+ #include < lmisolver/lmi_old_oracle.hpp> // for LmiOldOracle
5+ #include < lmisolver/lmi_oracle.hpp> // for LmiOracle
66#include < tuple> // for tuple
77#include < type_traits> // for move
88#include < vector> // for vector
@@ -48,7 +48,7 @@ template <typename Oracle> class my_oracle {
4848 * @param[in,out] t
4949 * @return std::tuple<Cut, double>
5050 */
51- std::tuple<Cut, bool > operator () (const Arr &x, double &t) {
51+ std::tuple<Cut, bool > assess_optim (const Arr &x, double &t) {
5252 const auto f0 = xt::sum (this ->c * x)();
5353 const auto f1 = f0 - t;
5454 if (f1 > 0 ) {
@@ -65,6 +65,17 @@ template <typename Oracle> class my_oracle {
6565 t = f0;
6666 return {{this ->c , 0.0 }, true };
6767 }
68+
69+ /* *
70+ * @brief
71+ *
72+ * @param[in] x
73+ * @param[in,out] t
74+ * @return std::tuple<Cut, double>
75+ */
76+ std::tuple<Cut, bool > operator ()(const Arr &x, double &t) {
77+ return this ->assess_optim (x, t);
78+ }
6879};
6980
7081/* *
@@ -87,7 +98,7 @@ static void LMI_Lazy(benchmark::State &state) {
8798 const auto B2 = Arr{{14.0 , 9.0 , 40.0 }, {9.0 , 91.0 , 10.0 }, {40.0 , 10.0 , 15.0 }};
8899
89100 while (state.KeepRunning ()) {
90- auto P = my_oracle<lmi_oracle <Arr>>(F1, B1, F2, B2, Arr{1.0 , -1.0 , 1.0 });
101+ auto P = my_oracle<LmiOracle <Arr>>(F1, B1, F2, B2, Arr{1.0 , -1.0 , 1.0 });
91102 auto E = Ell (10.0 , Arr{0.0 , 0.0 , 0.0 });
92103 auto t = 1e100 ; // std::numeric_limits<double>::max()
93104 [[maybe_unused]] const auto rslt = cutting_plane_optim (P, E, t);
@@ -120,7 +131,7 @@ static void LMI_old(benchmark::State &state) {
120131
121132 while (state.KeepRunning ()) {
122133 auto P =
123- my_oracle<lmi_old_oracle <Arr>>(F1, B1, F2, B2, Arr{1.0 , -1.0 , 1.0 });
134+ my_oracle<LmiOldOracle <Arr>>(F1, B1, F2, B2, Arr{1.0 , -1.0 , 1.0 });
124135 auto E = Ell (10.0 , Arr{0.0 , 0.0 , 0.0 });
125136 auto t = 1e100 ; // std::numeric_limits<double>::max()
126137 [[maybe_unused]] const auto rslt = cutting_plane_optim (P, E, t);
@@ -148,7 +159,7 @@ static void LMI_No_Trick(benchmark::State &state) {
148159 const auto B2 = Arr{{14.0 , 9.0 , 40.0 }, {9.0 , 91.0 , 10.0 }, {40.0 , 10.0 , 15.0 }};
149160
150161 while (state.KeepRunning ()) {
151- auto P = my_oracle<lmi_oracle <Arr>>(F1, B1, F2, B2, Arr{1.0 , -1.0 , 1.0 });
162+ auto P = my_oracle<LmiOracle <Arr>>(F1, B1, F2, B2, Arr{1.0 , -1.0 , 1.0 });
152163 auto E = Ell (10.0 , Arr{0.0 , 0.0 , 0.0 });
153164 E.no_defer_trick = true ;
154165 auto t = 1e100 ; // std::numeric_limits<double>::max()
0 commit comments