CNDSM
1.00
|
Definition of the class PrimalDual. More...
#include <PrimalDual.h>
Public Member Functions | |
PrimalDual (SubGrad *slvr, istream *iStrm=0) | |
Constructor of the class, which derives from both Deflection and Stepsize. More... | |
Other initializations | |
void | SetVOLLog (ostream *outs=0, const char lvl=0) |
void | Format (void) |
Reading the solution | |
void | NewDEF (void) |
The variant requires thats DR must be computed before SR. More... | |
void | NewStep (void) |
cHpNum | GetDFLCoeff (void) |
HpNum | GetStepsize (bool StepIsIncr=false) |
HpNum | GetLev (void) |
HpNum | GetBeta (void) |
void | SetMaxBeta (const HpNum alpha) |
![]() | |
Deflection (SubGrad *slvr) | |
Constructor of the class. More... | |
virtual const bool | DoSS (void) |
Returns true if a Serious Step (SS) takes place. More... | |
virtual cHpNum | Delta (void) |
Returns the expected improvement in the objective function [see DoSS()]. More... | |
virtual | ~Deflection () |
![]() | |
Stepsize (SubGrad *slvr, istream *iStrm=0) | |
Constructor of the class. More... | |
Stepsize (SubGrad *slvr, istream *iStrm=0) | |
Constructor of the class. More... | |
virtual void | SetSTPLog (ostream *outs=0, const char lvl=0) |
The class outputs "log" information onto the ostream pointed by outs. More... | |
virtual void | SetSTPLog (ostream *outs=0, const char lvl=0) |
The class outputs "log" information onto the ostream pointed by outs. More... | |
virtual bool | NeedsdkM1Gk (void) |
Returns true if the stepsize requires the scalar product ![]() | |
virtual bool | NeedsdkM1Gk (void) |
Returns true if the stepsize requires the scalar product ![]() | |
virtual | ~Stepsize () |
virtual | ~Stepsize () |
Additional Inherited Members | |
![]() | |
FiOracle * | GetOracle (void) |
Returns the pointer to FiOracle. More... | |
HpNum | GetStepsize (void) |
Returns the stepsize ![]() | |
cHpNum | GetGiNorm (void) |
Returns the norm of the subgradient ![]() | |
cHpNum | GetDNorm (void) |
Returns the norm of the direction ![]() | |
cHpNum | GetdGk (void) |
Returns the scalar product ![]() | |
cHpNum | GetSigma (void) |
Returns the linearization error ![]() | |
cHpNum | GetEpsilon (void) |
Returns the linearization error ![]() | |
cHpNum | ReadFVal (void) |
Returns the full function ![]() | |
![]() | |
virtual bool | UpdateTargetLevel (void) |
It tries to provide a new target level ![]() | |
virtual bool | UpdateTargetLevel (void) |
It tries to provide a new target level ![]() | |
HpNum | GetCoeffDefl (void) |
Returns the deflection coefficient ![]() | |
FiOracle * | GetOracle (void) |
Returns the pointer to FiOracle. More... | |
cHpNum | GetGiNorm (void) |
Returns the norm of the subgradient ![]() | |
cHpNum | GetDNorm (void) |
Returns the norm of the direction ![]() | |
cHpNum | GetdGk (void) |
Returns the scalar product ![]() | |
HpNum | GetdkM1Gk (void) |
Returns the scalar product ![]() | |
Index | GetNItIcr (void) |
Returns NItIncr, the parameter for incremental iterations [see SubGrad.h]. | |
cHpNum | ReadFkVal (void) |
Returns FiLambda [ see SubGrad.h ]. More... | |
cHpNum | ReadFiBar (void) |
Returns FiBar [ see SubGrad.h ]. More... | |
HpNum | GetCoeffDefl (void) |
Returns the deflection coefficient ![]() | |
FiOracle * | GetOracle (void) |
Returns the pointer to FiOracle. More... | |
cHpNum | GetGiNorm (void) |
Returns the norm of the subgradient ![]() | |
cHpNum | GetDNorm (void) |
Returns the norm of the direction ![]() | |
cHpNum | GetdGk (void) |
Returns the scalar product ![]() | |
HpNum | GetdkM1Gk (void) |
Returns the scalar product ![]() | |
Index | GetNItIcr (void) |
Returns NItIncr, the parameter for incremental iterations [see SubGrad.h]. | |
cHpNum | ReadFkVal (void) |
Returns FiLambda [ see SubGrad.h ]. More... | |
cHpNum | ReadFiBar (void) |
Returns FiBar [ see SubGrad.h ]. More... | |
![]() | |
SubGrad * | Solver |
(pointer to) the SubGrad solver | |
ostream * | VOLLog |
the output stream object | |
char | VOLLLvl |
the "level of verbosity" | |
![]() | |
SubGrad * | Solver |
(pointer to) the SubGrad solver | |
ostream * | STPLog |
the output stream object | |
char | STPLLvl |
the "level of verbosity" | |
HpNum | FiLev |
the target level ![]() | |
HpNum | Beta |
beta factor ![]() | |
HpNum | MaxBeta |
maximum value for beta factor | |
HpNum | LpsFct |
scaling factor | |
Definition of the class PrimalDual.
This class implements two variants of the Primal-Dual subgradient method (PDSM): simple and weighted averages, under a unified SM scheme. The method has a fixed stability center, and the direction can be regarded as the average of all the previous weighted subgradients, i.e.:
It is worth mentioning that the subgradient weights can be non-vanishing as
. The stepsize rule (SR) and the deflection rule (DR), respectively, are:
where is chosen in a suitable way.
|
inline |
Constructor of the class, which derives from both Deflection and Stepsize.
Since the constructor of PrimalDual is executed after the one of Stepsize, the following parameters specific for PrimalDual have to be found in the stream after those of the base class Stepsize [see the comments to the constructor of Stepsize]:
For this class, the general parameter LpsFct -defined in Stepsize.h- represents the gamma factor F used to set .
References Deflection::Format(), FiOracle::GetGlobalLipschitz(), Deflection::GetOracle(), Deflection::GetStepsize(), Stepsize::LpsFct, Deflection::SetVOLLog(), Deflection::VOLLLvl, and Deflection::VOLLog.
|
inlinevirtual |
The variant requires thats DR must be computed before SR.
Hence, the call to NewDEF comes before the one to NewStep.
Implements Deflection.
References Deflection::GetGiNorm(), Stepsize::LpsFct, and Deflection::Solver.