EllAlgo 1.6.13
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | List of all members
EllCalc Class Reference

Ellipsoid Search Space. More...

#include <ell_calc.hpp>

Collaboration diagram for EllCalc:
[legend]

Public Member Functions

 EllCalc (const size_t ndim)
 Construct a new EllCalcobject.
 
 EllCalc (EllCalc &&E)=default
 Construct a new EllCalcobject.
 
EllCalcoperator= (const EllCalc &other)=default
 Copy assignment operator.
 
EllCalcoperator= (EllCalc &&other)=default
 Move assignment operator.
 
 ~EllCalc ()=default
 Destroy the EllCalcobject.
 
 EllCalc (const EllCalc &E)=default
 Construct a new EllCalcobject.
 
auto calc_parallel_bias_cut (double beta0, double beta1, double tsq) const -> CutResult
 Parallel deep cut.
 
auto calc_parallel_central_cut (double beta1, double tsq) const -> CutResult
 Parallel central cut.
 
auto calc_bias_cut (double beta, double tsq) const -> CutResult
 Deep (bias) cut.
 
auto calc_central_cut (double tsq) const -> CutResult
 Central cut.
 
auto calc_parallel_bias_cut_q (double beta0, double beta1, double tsq) const -> CutResult
 Parallel deep cut (Q-version for discrete optimization)
 
auto calc_bias_cut_q (double beta, double tsq) const -> CutResult
 Deep cut (Q-version for discrete optimization)
 

Public Attributes

bool use_parallel_cut = true
 

Protected Attributes

double _n_f
 
EllCalcCore _helper
 

Detailed Description

Ellipsoid Search Space.

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

Keep $Q$ symmetric but no promise of positive definite

Constructor & Destructor Documentation

◆ EllCalc() [1/3]

EllCalc::EllCalc ( const size_t  ndim)
inlineexplicit

Construct a new EllCalcobject.

Parameters
[in]ndim

◆ EllCalc() [2/3]

EllCalc::EllCalc ( EllCalc &&  E)
default

Construct a new EllCalcobject.

Parameters
[in]E(move)

◆ ~EllCalc()

EllCalc::~EllCalc ( )
default

Destroy the EllCalcobject.

◆ EllCalc() [3/3]

EllCalc::EllCalc ( const EllCalc E)
default

Construct a new EllCalcobject.

To avoid accidentally copying, only explicit copy is allowed

Parameters
[in]E

Member Function Documentation

◆ calc_bias_cut()

auto EllCalc::calc_bias_cut ( double  beta,
double  tsq 
) const -> CutResult

Deep (bias) cut.

Single constraint:

\[ g^T (x - x_c) + \beta \le 0 \]

Parameters
[in]betaBias term (≥ 0)
[in]tsqSquared ellipsoid radius (τ²)
Returns
CutResult with rho, sigma, delta

◆ calc_bias_cut_q()

auto EllCalc::calc_bias_cut_q ( double  beta,
double  tsq 
) const -> CutResult

Deep cut (Q-version for discrete optimization)

Single constraint:

\[ g^T (x - x_c) + \beta \le 0 \]

Returns NoEffect instead of NoSoln when the cut is ineffective. Used by cutting_plane_optim_q for discrete convex problems.

Parameters
[in]betaBias term
[in]tsqSquared ellipsoid radius (τ²)
Returns
CutResult with rho, sigma, delta

◆ calc_central_cut()

auto EllCalc::calc_central_cut ( double  tsq) const -> CutResult

Central cut.

Single constraint passing through center:

\[ g^T (x - x_c) \le 0 \]

Parameters
[in]tsqSquared ellipsoid radius (τ²)
Returns
CutResult with rho, sigma, delta

◆ calc_parallel_bias_cut()

auto EllCalc::calc_parallel_bias_cut ( double  beta0,
double  beta1,
double  tsq 
) const -> CutResult

Parallel deep cut.

Two parallel constraints:

\[ \beta_0 \le g^T (x - x_c) \le \beta_1 \]

Falls back to calc_bias_cut when parallel cut is ineffective.

Parameters
[in]beta0Lower bound
[in]beta1Upper bound
[in]tsqSquared ellipsoid radius (τ²)
Returns
CutResult with rho, sigma, delta

◆ calc_parallel_bias_cut_q()

auto EllCalc::calc_parallel_bias_cut_q ( double  beta0,
double  beta1,
double  tsq 
) const -> CutResult

Parallel deep cut (Q-version for discrete optimization)

Two parallel constraints:

\[ \beta_0 \le g^T (x - x_c) \le \beta_1 \]

Returns NoEffect instead of NoSoln when the cut is ineffective. Used by cutting_plane_optim_q for discrete convex problems.

Parameters
[in]beta0Lower bound
[in]beta1Upper bound
[in]tsqSquared ellipsoid radius (τ²)
Returns
CutResult with rho, sigma, delta

◆ calc_parallel_central_cut()

auto EllCalc::calc_parallel_central_cut ( double  beta1,
double  tsq 
) const -> CutResult

Parallel central cut.

One central + one parallel:

\[ 0 \le g^T (x - x_c) \le \beta_1 \]

Falls back to calc_central_cut when parallel cut is ineffective.

Parameters
[in]beta1Upper bound
[in]tsqSquared ellipsoid radius (τ²)
Returns
CutResult with rho, sigma, delta

◆ operator=() [1/2]

EllCalc & EllCalc::operator= ( const EllCalc other)
default

Copy assignment operator.

◆ operator=() [2/2]

EllCalc & EllCalc::operator= ( EllCalc &&  other)
default

Move assignment operator.

Member Data Documentation

◆ _helper

EllCalcCore EllCalc::_helper
protected

◆ _n_f

double EllCalc::_n_f
protected

◆ use_parallel_cut

bool EllCalc::use_parallel_cut = true

The documentation for this class was generated from the following file: