template<typename Arr>
Ell class

Ellipsoid Search Space.

The Ell class represents an ellipsoid search space:

ell = {x | (x - xc)' mq^-1 (x - xc) ≤ κ}

It is used to define and manipulate ellipsoids in a multidimensional space. The ellipsoid is defined by a center point (_xc) and a core function (_mgr). The core function is responsible for updating the ellipsoid based on cutting planes. The Ell class provides methods to update the ellipsoid using different types of cutting planes and to retrieve information about the ellipsoid, such as the center point and the squared radius.

This version keeps $Q$ symmetric but no promise of positive definite

   n-dimensional space
        ┌─┐
      ┌─┘ └─┐
    ┌─┘     └─┐
  ┌─┘         └─┐  ←─ ellipsoid boundary
  │   ● xc      │      center point
  └─┐         ┌─┘
    └─┐     ┌─┘
      └─┐ ┌─┘
        └─┘

Constructors, destructors, conversion operators

Ell(const Vec& val, Arr x)
Construct a new Ell object from a vector and an array.
Ell(const double alpha, Arr x)
Construct a new Ell object from an alpha value and an array.
Ell(Ell&& E) defaulted noexcept
Construct a new Ell object (move constructor)
~Ell() defaulted
Destroy the Ell object.
Ell(const Ell& E) defaulted explicit
Construct a new Ell object (explicit copy)

Public functions

auto copy() const -> Ell -> auto
Explicitly copy the Ell object.
auto xc() const -> Arr -> auto
Get the center of the ellipsoid.
auto set_xc(const Arr& xc) -> void
Set the center of the ellipsoid.
auto tsq() const -> double -> constexpr auto
Get the squared radius of the ellipsoid.
auto set_use_parallel_cut(bool value) -> void
Set whether to use parallel cut.
template<typename T>
auto update_bias_cut(const std::pair<Arr, T>& cut) -> CutStatus -> auto
Update ellipsoid using a deep cut.
template<typename T>
auto update_central_cut(const std::pair<Arr, T>& cut) -> CutStatus -> auto
Update ellipsoid using a central cut.
template<typename T>
auto update_q(const std::pair<Arr, T>& cut) -> CutStatus -> auto
Update ellipsoid using a cut with a specific Q matrix.

Function documentation

template<typename Arr _1>
Ell<_1>::Ell(const Vec& val, Arr x)

Construct a new Ell object from a vector and an array.

Parameters
val in A vector of double values.
in An array of type Arr. This parameter is moved.

template<typename Arr _1>
Ell<_1>::Ell(const double alpha, Arr x)

Construct a new Ell object from an alpha value and an array.

Parameters
alpha in A double value representing the scaling factor.
in An array of type Arr. This parameter is moved.

template<typename Arr _1>
Ell<_1>::Ell(Ell&& E) defaulted noexcept

Construct a new Ell object (move constructor)

Parameters
in The parameter "E" is an rvalue reference to an object of type "Ell".

template<typename Arr _1>
Ell<_1>::Ell(const Ell& E) explicit defaulted

Construct a new Ell object (explicit copy)

Parameters
in The parameter "E" is a reference to an object of type "Ell".

template<typename Arr _1>
auto Ell<_1>::copy() const -> Ell

Explicitly copy the Ell object.

Returns Ell A new Ell object that is a copy of the current object.

template<typename Arr _1>
auto Ell<_1>::xc() const -> Arr

Get the center of the ellipsoid.

Returns Arr The center of the ellipsoid.

template<typename Arr _1>
void Ell<_1>::set_xc(const Arr& xc)

Set the center of the ellipsoid.

Parameters
xc in The new center of the ellipsoid.

template<typename Arr _1>
constexpr auto Ell<_1>::tsq() const -> double

Get the squared radius of the ellipsoid.

Returns double The squared radius.

template<typename Arr _1>
void Ell<_1>::set_use_parallel_cut(bool value)

Set whether to use parallel cut.

Parameters
value in True to use parallel cut, false otherwise.

template<typename Arr _1> template<typename T>
auto Ell<_1>::update_bias_cut(const std::pair<Arr, T>& cut) -> CutStatus

Update ellipsoid using a deep cut.

Template parameters
T Type of the beta parameter.
Parameters
cut in A pair containing the gradient and beta value.
Returns CutStatus The status of the cut.

template<typename Arr _1> template<typename T>
auto Ell<_1>::update_central_cut(const std::pair<Arr, T>& cut) -> CutStatus

Update ellipsoid using a central cut.

Template parameters
T Type of the beta parameter.
Parameters
cut in A pair containing the gradient and beta value.
Returns CutStatus The status of the cut.

template<typename Arr _1> template<typename T>
auto Ell<_1>::update_q(const std::pair<Arr, T>& cut) -> CutStatus

Update ellipsoid using a cut with a specific Q matrix.

Template parameters
T Type of the beta parameter.
Parameters
cut in A pair containing the gradient and beta value.
Returns CutStatus The status of the cut.