49template <
typename Arr,
bool Stable>
class EllBase {
51 using Vec = std::valarray<double>;
259 template <
typename T,
typename Fn>
261 const auto&
grad = cut.first;
262 const auto&
beta = cut.second;
263 std::valarray<double>
g(this->_n);
264 for (
size_t i = 0;
i != this->
_n; ++
i) {
271 for (
size_t i = 0;
i != this->
_n; ++
i) {
272 this->_xc[
i] -=
g[
i];
1D or 2D array backed by std::vector<double> for small optimization problems
Definition arr.hpp:23
Ellipsoid Search Space (shared base)
Definition ell_base.hpp:49
constexpr auto tsq() const -> double
Get the squared radius of the ellipsoid.
Definition ell_base.hpp:127
EllBase(EllBase &&E) noexcept=default
Construct a new EllBase object (move constructor)
EllCore _mgr
Definition ell_base.hpp:57
EllBase(const EllBase &E)=default
Construct a new EllBase object (explicit copy)
auto operator=(EllBase &&E) noexcept -> EllBase &=default
Move assignment operator.
void set_xc(const Arr &xc)
Set the center of the ellipsoid.
Definition ell_base.hpp:120
~EllBase()=default
Destroy the EllBase object.
Arr _xc
Definition ell_base.hpp:56
size_t _n
Definition ell_base.hpp:55
auto _update_core(const std::pair< Arr, T > &cut, Fn &&cut_strategy) -> CutStatus
Update ellipsoid core function using the cut(s).
Definition ell_base.hpp:260
auto update_q(const std::pair< Arr, T > &cut) -> CutStatus
Update ellipsoid using a cut with a specific Q matrix.
Definition ell_base.hpp:239
std::valarray< double > Vec
Definition ell_base.hpp:51
EllBase(const Vec &val, Arr x)
Construct a new EllBase object from a vector and an array.
Definition ell_base.hpp:69
auto xc() const -> Arr
Get the center of the ellipsoid.
Definition ell_base.hpp:113
void set_use_parallel_cut(bool value)
Set whether to use parallel cut.
Definition ell_base.hpp:134
auto update_central_cut(const std::pair< Arr, T > &cut) -> CutStatus
Update ellipsoid using a central cut.
Definition ell_base.hpp:200
auto update_bias_cut(const std::pair< Arr, T > &cut) -> CutStatus
Update ellipsoid using a deep cut.
Definition ell_base.hpp:163
auto operator=(const EllBase &E) -> EllBase &=delete
Deleted copy assignment operator (non-copyable).
EllBase(const double alpha, Arr x)
Construct a new EllBase object from an alpha value and an array.
Definition ell_base.hpp:78
Ellipsoid Search Space Core.
Definition ell_core.hpp:44
auto update_q(Vec &grad, const T &beta) -> CutStatus
Update ellipsoid core function using the cut(s)
Definition ell_core.hpp:207
auto update_central_cut(Vec &grad, const T &beta) -> CutStatus
Update ellipsoid core function using the central cut(s)
Definition ell_core.hpp:190
auto update_stable_q(Vec &grad, const T &beta) -> CutStatus
Update ellipsoid core function using the cut(s)
Definition ell_core.hpp:258
auto update_stable_bias_cut(Vec &grad, const T &beta) -> CutStatus
Update ellipsoid core function using the deep cut(s)
Definition ell_core.hpp:224
auto update_bias_cut(Vec &grad, const T &beta) -> CutStatus
Update ellipsoid core function using the deep cut(s)
Definition ell_core.hpp:173
void set_use_parallel_cut(bool value)
Definition ell_core.hpp:160
auto update_stable_central_cut(Vec &grad, const T &beta) -> CutStatus
Update ellipsoid core function using the central cut(s)
Definition ell_core.hpp:241
constexpr auto tsq() const -> double
Get the squared ellipsoid radius τ²
Definition ell_core.hpp:152
auto invalid_value() -> T
Return an invalid/sentinel value for type T.
Definition cutting_plane.hpp:27
Configuration types and constants for the ellipsoid algorithm.
CutStatus
Status of cutting plane operations.
Definition ell_config.hpp:47
@ Success
Cut was successful and ellipsoid was updated.
Ellipsoid search space core with matrix update.