3
3
#include < cmath> // for sqrt, exp
4
4
#include < corrsolver/Qmi_oracle.hpp> // for Qmi_oracle
5
5
#include < cstddef> // for size_t
6
- #include < ellalgo/cut_config.hpp> // for CInfo
7
6
#include < ellalgo/cutting_plane.hpp> // for cutting_plane_optim, bsearch
8
7
#include < ellalgo/ell.hpp> // for Ell
9
8
#include < gsl/span> // for span
10
9
#include < lmisolver/ldlt_ext.hpp> // for ldlt_ext
11
- #include < lmisolver/lmi0_oracle.hpp> // for lmi0_oracle
12
- #include < lmisolver/lmi_oracle.hpp> // for lmi_oracle, lmi_oracle ::Arr
10
+ #include < lmisolver/lmi0_oracle.hpp> // for Lmi0Oracle
11
+ #include < lmisolver/lmi_oracle.hpp> // for LmiOracle, LmiOracle ::Arr
13
12
#include < optional> // for optional
14
13
#include < tuple> // for tuple_element<>::type
15
14
#include < tuple> // for tuple, make_tuple
@@ -157,7 +156,7 @@ class lsq_oracle {
157
156
158
157
private:
159
158
Qmi_oracle<Arr> _qmi;
160
- lmi0_oracle <Arr> _lmi0;
159
+ Lmi0Oracle <Arr> _lmi0;
161
160
162
161
public:
163
162
/* !
@@ -175,7 +174,7 @@ class lsq_oracle {
175
174
* @param[in] t the best-so-far optimal value
176
175
* @return auto
177
176
*/
178
- std::tuple<Cut, bool > operator () (const Arr& x, double & t) {
177
+ std::tuple<Cut, bool > assess_optim (const Arr& x, double & t) {
179
178
const auto n = x.size ();
180
179
Arr g = xt::zeros<double >({n});
181
180
if (const auto cut0 = this ->_lmi0 (xt::view (x, xt::range (0 , n - 1 )))) {
@@ -205,6 +204,15 @@ class lsq_oracle {
205
204
t = x (n - 1 );
206
205
return {{std::move (g), 0.0 }, true };
207
206
}
207
+
208
+ /* !
209
+ * @brief
210
+ *
211
+ * @param[in] x
212
+ * @param[in] t the best-so-far optimal value
213
+ * @return auto
214
+ */
215
+ std::tuple<Cut, bool > operator ()(const Arr& x, double & t) { return this ->assess_optim (x, t); }
208
216
};
209
217
210
218
/* !
@@ -257,8 +265,8 @@ class mle_oracle {
257
265
private:
258
266
const Arr& _Y;
259
267
const std::vector<Arr>& _Sig;
260
- lmi0_oracle <Arr> _lmi0;
261
- lmi_oracle <Arr> _lmi;
268
+ Lmi0Oracle <Arr> _lmi0;
269
+ LmiOracle <Arr> _lmi;
262
270
263
271
public:
264
272
/* !
@@ -277,7 +285,7 @@ class mle_oracle {
277
285
* @param[in] t the best-so-far optimal value
278
286
* @return auto
279
287
*/
280
- std::tuple<Cut, bool > operator () (const Arr& x, double & t) {
288
+ std::tuple<Cut, bool > assess_optim (const Arr& x, double & t) {
281
289
using xt::linalg::dot;
282
290
283
291
const auto cut1 = this ->_lmi (x);
@@ -322,6 +330,15 @@ class mle_oracle {
322
330
}
323
331
return {{std::move (g), f}, shrunk};
324
332
}
333
+
334
+ /* !
335
+ * @brief
336
+ *
337
+ * @param[in] x
338
+ * @param[in] t the best-so-far optimal value
339
+ * @return auto
340
+ */
341
+ std::tuple<Cut, bool > operator ()(const Arr& x, double & t) { return this ->assess_optim (x, t); }
325
342
};
326
343
327
344
/* !
0 commit comments