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

#include <FumeroTV.h>

Inheritance diagram for FumeroTV:
Stepsize

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)
 
- Public Member Functions inherited from Stepsize
 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)
 
- Protected Member Functions inherited from Stepsize
HpNum GetCoeffDefl (void)
 
FiOracleGetOracle (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

- Protected Attributes inherited from Stepsize
SubGradSolver
 (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
 

Detailed Description

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 & Destructor Documentation

◆ FumeroTV()

FumeroTV ( SubGrad * slvr,
std::istream * iStrm = NULL )
inline

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]:

  1. HpNum sigmaMin [ 1e-4 ] tolerance of the function \( sigma_r \)
  2. Index r1 [ 2 ] sigma_{r1} = 1/2
  3. HpNum beta0 [ 1 ] initial value of beta
  4. Index eta1 [ 10 ] threshold on number of failures (phase I)
  5. index eta2 [ 10 ] threshold on number of failures (phase II)

Member Function Documentation

◆ Format()

void Format ( void )
inlinevirtual

The method initializes the stepsize rule.

Reimplemented from Stepsize.

◆ NewStep()

void NewStep ( void )
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.

◆ UpdateTargetLevel()

bool UpdateTargetLevel ( void )
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.


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