NDOSolver / FiOracle
Interfaces and Solvers for NonDifferentiable Optimization
Loading...
Searching...
No Matches
Volume Class Reference

#include <Volume.h>

Inheritance diagram for Volume:
Deflection

Public Member Functions

 Volume (SubGrad *slvr, std::istream *iStrm=0)
 
void SetVOLLog (ostream *outs=0, const char lvl=0)
 
void Format (void)
 
void NewDEF (void)
 
HpNum GetDFLCoeff (void)
 
bool DoSS (void)
 
HpNum Delta (void)
 
- Public Member Functions inherited from Deflection
 Deflection (SubGrad *slvr)
 
virtual void SetVOLLog (std::ostream *outs=0, const char lvl=0)
 

Private Member Functions

void Solve (void)
 

Private Attributes

HpNum tauInit
 
HpNum tauMin
 
HpNum tauFactor
 
Index tauIter
 
HpNum m
 
HpNum tau
 
HpNum lastvalue
 
HpNum alpha
 

Additional Inherited Members

- Protected Member Functions inherited from Deflection
FiOracleGetOracle (void)
 
HpNum GetStepsize (void)
 
HpNum GetGiNorm (void)
 
HpNum GetDNorm (void)
 
HpNum GetdGk (void)
 
HpNum GetSigma (void)
 
HpNum GetEpsilon (void)
 
HpNum ReadFVal (void)
 
- Protected Attributes inherited from Deflection
SubGradSolver
 (pointer to) the SubGrad solver
 
std::ostream * VOLLog
 the output stream object
 
char VOLLLvl
 the "level of verbosity"
 

Detailed Description

Definition of the class Volume. This class implements the Volume algorithm. The method is revisited and incorporated in the SubGrad solver. The deflection coefficient is found solving a quadratic problem that involves the subgradient \( g_i \), the direction \( d_{i-1} \), and their respective linearization errors \( \sigma_i \) and \( \epsilon_{i-1} \) at the stability center \( \bar{\lambda}_i\), namely

\[ \tau_i = \arg\min \left\{ \; \nu_{i-1} \left\| \tau g_i + (1 - \tau) d_{i-1} \right\|^2/2 + \tau \sigma_i(\bar{\lambda}_i) + (1 - \tau)\epsilon_{i-1}(\bar{\lambda}_i) \;:\; \tau \in [0, 1]\; \right\} \]

Constructor & Destructor Documentation

◆ Volume()

Volume ( SubGrad * slvr,
std::istream * iStrm = 0 )
inline

Constructor of the class. The parameter ‘iStrm’, if provided, is taken as a pointer to a istream from which the algorithmic parameters for the Volume are sequentially read in the following order. Each parameter must be placed at the beginning of a separate line, max 255 characters long, with all the rest of the line up to the first newline character '
' (apart from a separating whitespace) being available for comments. Any line whose first character is '#' and any blank line is ignored. If 0 is passed, the file ends before reaching a given parameter, or some parameter is in the wrong format, each non-specified parameter is given a default value, shown in [] below.

  1. HpNum tauInit [0.05] \( \tau_0 \)
  2. HpNum tauMin [1e-4] safety threshold of \( \tau:~ \tau_{\min}\)
  3. HpNum tauFactor [0.5] factor \( \tau_{f} \)
  4. HpNum tauIter [50] $\tau_p$
  5. HpNum m [1e-3] descent parameter

Member Function Documentation

◆ Delta()

HpNum Delta ( void )
inlinevirtual

Returns the expected improvement in the objective function [see DoSS()]. This value is not useful for all DR. By default Inf< HpNum >() is returned.

Reimplemented from Deflection.

◆ DoSS()

bool DoSS ( void )
inlinevirtual

Returns true if a Serious Step (SS) takes place. Otherwise a Null Step (NS) occurs. By default, true is returned.

Typically, a SS occurs when a " good " improvement of the function \( f \) is obtained, usually it should be as good as the expected improvement [see Delta()].

Reimplemented from Deflection.

◆ Format()

void Format ( void )
inlinevirtual

The method initializes the DR. It does nothing for the base class.

Reimplemented from Deflection.

◆ GetDFLCoeff()

HpNum GetDFLCoeff ( void )
inlinevirtual

Returns the deflection coefficient. This function must be called after NewDEF() [see above].

Implements Deflection.

◆ NewDEF()

void NewDEF ( void )
inlinevirtual

This method must be called before GetDFLCoeff() [see below]. This is indeed the core of every derived class, producing a new deflection coefficient.

Typically, the previous coefficient will be unavailable after the call to NewDEF() [GetDFLCoeff()].

Implements Deflection.


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