Class ell

Inheritance Relationships

Derived Type

Class Documentation

class ell

Ellipsoid Search Space.

ell = {x | (x - xc)’ Q^-1 (x - xc) }

Keep $Q$ symmetric but no promise of positive definite

Subclassed by ell_stable

Public Types

using Arr = xt::xarray<double, xt::layout_type::row_major>

Public Functions

inline ell(const Arr &val, Arr x) noexcept

Construct a new ell object.

Parameters
  • val[in]

  • x[in]

inline ell(const double &alpha, Arr x) noexcept

Construct a new ell object.

Parameters
  • alpha[in]

  • x[in]

ell(ell &&E) = default

Construct a new ell object.

Parameters

E[in] (move)

inline ~ell()

Destroy the ell object.

explicit ell(const ell &E) = default

Construct a new ell object.

To avoid accidentally copying, only explicit copy is allowed

Parameters

E

inline auto copy() const -> ell

explicitly copy

Returns

ell

inline auto xc() const -> Arr

copy the whole array anyway

Returns

Arr

inline void set_xc(const Arr &xc)

Set the xc object.

Parameters

xc[in]

template<typename T>
auto update(const std::tuple<Arr, T> &cut) -> std::tuple<CUTStatus, double>

Update ellipsoid core function using the cut(s)

Template Parameters

T

Parameters

cut[in] cutting-plane

Returns

std::tuple<int, double>

Public Members

bool use_parallel_cut = true
bool no_defer_trick = false

Protected Functions

auto operator=(const ell &E) -> ell& = delete

Construct a new ell object.

Parameters

E[in]

template<typename V, typename U>
inline ell(V &&kappa, Arr &&Q, U &&x) noexcept

Construct a new ell object.

Parameters
  • val[in]

  • x[in]

inline auto _update_cut(const double &beta) -> CUTStatus
inline CUTStatus _update_cut(const Arr &beta)
auto _calc_ll_core(const double &b0, const double &b1) -> CUTStatus

Calculate new ellipsoid under Parallel Cut.

g’ (x - xc) + beta0 0 g’ (x - xc) + beta1 0

Parameters
  • b0[in]

  • b1[in]

Returns

int

auto _calc_ll_cc(const double &b1, const double &b1sq) -> void

Calculate new ellipsoid under Parallel Cut, one of them is central.

g’ (x - xc) 0 g’ (x - xc) + beta1 0

Parameters
  • b1[in]

  • b1sq[in]

auto _calc_dc(const double &beta) noexcept -> CUTStatus

Calculate new ellipsoid under Deep Cut.

g’ (x - xc) + beta 0

Parameters

beta[in]

auto _calc_cc(const double &tau) noexcept -> void

Calculate new ellipsoid under Central Cut.

g’ (x - xc) 0

Parameters

tau[in]

Protected Attributes

double _mu = {}
double _rho = {}
double _sigma = {}
double _delta = {}
double _tsq = {}
const int _n
const double _nFloat
const double _nPlus1
const double _nMinus1
const double _halfN
const double _halfNplus1
const double _halfNminus1
const double _nSq
const double _c1
const double _c2
const double _c3
double _kappa
Arr _Q
Arr _xc