NDOSolver / FiOracle
Interfaces and Solvers for NonDifferentiable Optimization
|
#include <FumeroTV.h>
Public Member Functions | |
FumeroTV (SubGrad *slvr, std::istream *iStrm=NULL) | |
void | SetSTPLog (ostream *outs=0, const char lvl=0) |
void | Format (void) |
void | NewStep (void) |
![]() | |
Stepsize (SubGrad *slvr, istream *iStrm=0) | |
virtual void | SetSTPLog (std::ostream *outs=0, const char lvl=0) |
virtual bool | NeedsdkM1Gk (void) |
virtual HpNum | GetStepsize (bool StepIsIncr=false) |
virtual HpNum | GetLev (void) |
virtual HpNum | GetBeta (void) |
virtual void | SetMaxBeta (const HpNum alpha) |
Protected Member Functions | |
bool | UpdateTargetLevel (void) |
![]() | |
HpNum | GetCoeffDefl (void) |
FiOracle * | GetOracle (void) |
HpNum | GetGiNorm (void) |
HpNum | GetDNorm (void) |
HpNum | GetdGk (void) |
HpNum | GetdkM1Gk (void) |
Index | GetNItIcr (void) |
HpNum | ReadFkVal (void) |
HpNum | ReadFiBar (void) |
Private Member Functions | |
HpNum | ExpFun (Index ri) |
Private Attributes | |
HpNum | FiLambda |
FiLambda. | |
HpNum | LwrBnd |
lower bound | |
HpNum | FiRef |
the best solution found so far | |
HpNum | sigma |
current value of | |
HpNum | sigmaMin |
minimum threshold of \( \sigma(r) \) | |
HpNum | BetaZero |
Index | rc |
current value of r | |
Index | r1 |
Index | r2 |
Index | etac |
last improvement of FiLev | |
Index | eta1 |
thresholds for max number of failures | |
Index | eta2 |
Additional Inherited Members | |
![]() | |
SubGrad * | Solver |
(pointer to) the SubGrad solver | |
std::ostream * | STPLog |
the output stream object | |
char | STPLLvl |
the "level of verbosity" | |
HpNum | FiLev |
the target level \( f^{lev}_i \) | |
HpNum | Beta |
beta factor \( \beta_i \) | |
HpNum | MaxBeta |
maximum value for beta factor | |
HpNum | LpsFct |
scaling factor | |
Definition of the class FumeroTV. This class implements a target value stepsize. At the beginning \( f^{lev} \) is set to the given lower bound and exponentially goes towards \( f^{rec} \). The method works in two phases. In the first one \( \beta_i \) is decremented, while in the second one \( \beta_i \) is still decremented but also incremented after a pre-set number of consecutive improving iterations.
Constructor of the class. Since the constructor of FumeroTV is executed after the one of Stepsize, the following parameters specific for the FumeroTV have to be found in the stream after those of the base class [see the comments to the constructor of Stepsize]:
|
inlinevirtual |
The method initializes the stepsize rule.
Reimplemented from Stepsize.
|
inlinevirtual |
This method must be called before GetStepsize() [see below]. This is indeed the core of every derived class, producing a new step.
If the derived class implements a target value stepsize rule, the method must compute both the scalar \( \beta_i \) and the level \( f^{lev}_i \).
Typically, the previous step will be unavailable after the call to NewStep() [see GetStepsize()].
Implements Stepsize.
|
inlineprotectedvirtual |
It tries to provide a new target level \( f^{lev}_i \). It true is returned, the level has been changed. By default, it returns false.
Reimplemented from Stepsize.