EllCalc class

Ellipsoid Search Space.

EllCalc= {x | (x - xc)' mq^-1 (x - xc) \le \kappa}

Keep $Q$ symmetric but no promise of positive definite

Constructors, destructors, conversion operators

EllCalc(size_t ndim) explicit
Construct a new EllCalcobject.
EllCalc(EllCalc&& E) defaulted
Construct a new EllCalcobject.
~EllCalc() defaulted
Destroy the EllCalcobject.
EllCalc(const EllCalc& E) defaulted
Construct a new EllCalcobject.

Public functions

auto calc_parallel_bias_cut(const double& beta0, const double& beta1, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >> -> auto
Calculate a new ellipsoid under a parallel cut.
auto calc_parallel_central_cut(const double& beta1, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >> -> auto
Calculate new ellipsoid under Parallel Cut, one of them is central.
auto calc_bias_cut(const double& beta, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >> -> auto
Calculate new ellipsoid under Deep Cut.
auto calc_central_cut(const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >> -> auto
Calculate new ellipsoid under Central Cut.
auto calc_parallel_bias_cut_q(const double& beta0, const double& beta1, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >> -> auto
Calculate new ellipsoid under Parallel Cut.
auto calc_bias_cut_q(const double& beta, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >> -> auto
Calculate new ellipsoid under Deep Cut.

Public variables

bool use_parallel_cut

Protected variables

const double _n_f
const EllCalcCore _helper

Function documentation

EllCalc::EllCalc(EllCalc&& E) defaulted

Construct a new EllCalcobject.

Parameters
in (move)

EllCalc::EllCalc(const EllCalc& E) defaulted

Construct a new EllCalcobject.

Parameters
in

To avoid accidentally copying, only explicit copy is allowed

auto EllCalc::calc_parallel_bias_cut(const double& beta0, const double& beta1, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >>

Calculate a new ellipsoid under a parallel cut.

Parameters
beta0 in
beta1 in
tsq in
Returns std::tuple<CutStatus, std::tuple<double, double, double>>
   g' (x - xc) + beta0 \le 0
   g' (x - xc) + beta1 \ge 0

auto EllCalc::calc_parallel_central_cut(const double& beta1, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >>

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

Parameters
beta1 in
tsq in
Returns std::tuple<CutStatus, std::tuple<double, double, double>>
   g' (x - xc) \le 0
   g' (x - xc) + beta1 \ge 0

auto EllCalc::calc_bias_cut(const double& beta, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >>

Calculate new ellipsoid under Deep Cut.

Parameters
beta in
tsq in
Returns std::tuple<CutStatus, std::tuple<double, double, double>>
   g' (x - xc) + beta \le 0

auto EllCalc::calc_central_cut(const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >>

Calculate new ellipsoid under Central Cut.

Parameters
tsq in
Returns std::tuple<CutStatus, std::tuple<double, double, double>>
   g' (x - xc) \le 0

auto EllCalc::calc_parallel_bias_cut_q(const double& beta0, const double& beta1, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >>

Calculate new ellipsoid under Parallel Cut.

Parameters
beta0 in
beta1 in
tsq in
Returns std::tuple<CutStatus, std::tuple<double, double, double>>
   g' (x - xc) + beta0 \le 0
   g' (x - xc) + beta1 \ge 0

auto EllCalc::calc_bias_cut_q(const double& beta, const double& tsq) const -> std::tuple< CutStatus, std::tuple< double, double, double >>

Calculate new ellipsoid under Deep Cut.

Parameters
beta in
tsq in
Returns std::tuple<CutStatus, std::tuple<double, double, double>>
   g' (x - xc) + beta \le 0