NDOSolver / FiOracle
Interfaces and Solvers for NonDifferentiable Optimization
|
#include <Volume.h>
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) |
![]() | |
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 | |
![]() | |
FiOracle * | GetOracle (void) |
HpNum | GetStepsize (void) |
HpNum | GetGiNorm (void) |
HpNum | GetDNorm (void) |
HpNum | GetdGk (void) |
HpNum | GetSigma (void) |
HpNum | GetEpsilon (void) |
HpNum | ReadFVal (void) |
![]() | |
SubGrad * | Solver |
(pointer to) the SubGrad solver | |
std::ostream * | VOLLog |
the output stream object | |
char | VOLLLvl |
the "level of verbosity" | |
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 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.
|
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.
|
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.
|
inlinevirtual |
The method initializes the DR. It does nothing for the base class.
Reimplemented from Deflection.
|
inlinevirtual |
Returns the deflection coefficient. This function must be called after NewDEF() [see above].
Implements Deflection.
|
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.