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
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. |
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. |
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. |