120 kBPar2 , kBPar3 , kBPar4 , kBPar5 , kBPar6 ,
122 kmxIncr , kmnIncr , kMnSSC , kmxDecr , kmnDecr , kMnNSC ,
123 ktMaior , ktMinor , ktInit , ktCurr , ktSPar1 , ktSPar2 ,
124 kPPar1 , kPPar2 , kPPar3 ,
418 void KeepBestLambda(
const bool KBL =
true );
422 inline void SetPar(
const int wp ,
const int value );
462 void SetNDOLog( std::ostream *outs = 0 ,
const char lvl = 0 );
588 inline HpNum ReadSigma(
void )
const;
651 inline void GetPar(
const int wp ,
int &value );
795 void FormLambda1(
HpNum Tau );
802 bool FiAndGi(
void );
810 void GotoLambda1(
void );
816 void UpdtCntrs(
void );
822 void SimpleBStrat(
void );
834 bool CheckAlfa(
const bool All =
false );
836 void StrongCheckAlfa(
void );
840 void UpdtLowerBound(
void );
844 void UpdtaBP3(
void );
846 void CmptaBPX(
void );
985 inline bool DoSS(
void );
989 inline void Delete(
cIndex i );
993 inline bool FindNextSG(
Index &wFi );
1005 inline HpNum Heuristic1(
void );
1007 inline HpNum Heuristic2(
void );
1011 inline void InitMP(
void );
1024 inline void MemDealloc(
void );
1046 case( kBPar1 ): BPar1 = value;
break;
1048 if( value != BPar2 ) {
1056 OOBase =
new SIndex[ value ];
1057 FreList =
new Index[ value ];
1059 const int copydim = std::min( value ,
int( BPar2 ) );
1062 for(
int i = 0 ; i < copydim ; i ++ )
1063 OOBase[ i ] = oldOOBase[ i ];
1067 for(
int i = 0 ; i < value ; i ++ )
1071 for(
int i = 0 ; i < copydim ; i ++ )
1072 FreList[ i ] = oldFreList[ i ];
1073 delete[] oldFreList;
1079 Master->
SetDim( BPar2 , 0 , PPar2 ?
true :
false );
1082 case( kBPar6 ): BPar6 = value; CmptaBPX();
break;
1083 case( kMnSSC ): MnSSC = value;
break;
1084 case( kMnNSC ): MnNSC = value;
break;
1085 case( ktSPar1 ): tSPar1 = value;
break;
1086 case( kPPar1 ): PPar1 = value;
break;
1087 case( kPPar2 ): PPar2 = value;
break;
1088 case( kPPar3 ): PPar3 = value;
break;
1098 case( kBPar3 ): BPar3 = value; CmptaBPX();
break;
1099 case( kBPar4 ): BPar4 = value; CmptaBPX();
break;
1100 case( kBPar5 ): BPar5 = value; CmptaBPX();
break;
1101 case( km1 ): m1 = value;
break;
1102 case( km3 ): m3 = value;
break;
1103 case( kmxIncr ): mxIncr = value;
if( mxIncr < 1 ) mxIncr = 1;
break;
1104 case( kmnIncr ): mnIncr = value;
if( mnIncr < 1 ) mnIncr = 1;
break;
1105 case( kmxDecr ): mxDecr = value;
if( mxDecr > 1 ) mxDecr = 1;
break;
1106 case( kmnDecr ): mnDecr = value;
if( mnDecr > 1 ) mnDecr = 1;
break;
1107 case( ktMaior ): tMaior = value;
1108 if( t > tMaior ) { t = tMaior; tHasChgd =
true; }
1109 if( tInit > tMaior ) tInit = tMaior;
1111 case( ktMinor ): tMinor = value;
break;
1112 if( t < tMinor ) { t = tMinor; tHasChgd =
true; }
1113 if( tInit < tMaior ) tInit = tMinor;
1115 case( ktInit ): tInit = value;
1116 if( t != tInit ) { t = tInit; tHasChgd =
true; }
1118 case( ktCurr ): t = value; tHasChgd =
true;
break;
1119 case( ktSPar2 ): tSPar2 = value;
break;
1121 if(
EInit != value ) {
1128 Master->
SetPar( MPSolver::kFsbEps , MPEFsb = value );
1132 Master->
SetPar( MPSolver::kOptEps , MPEOpt = value );
1143 HpNum FiL = *FiLambda;
1148 if( FiL < 0 ) FiL = - FiL;
1149 if( FiL < 1 ) FiL = 1;
1154 return( DSTS + Sigma <= eps * FiL );
1160inline HpNum Bundle::ReadSigma(
void )
const
1184 case( kBPar1 ): value = BPar1;
break;
1185 case( kBPar2 ): value = BPar2;
break;
1186 case( kBPar6 ): value = BPar6;
break;
1187 case( kMnSSC ): value = MnSSC;
break;
1188 case( kMnNSC ): value = MnNSC;
break;
1189 case( ktSPar1 ): value = tSPar1;
break;
1190 case( kPPar1 ): value = PPar1;
break;
1191 case( kPPar2 ): value = PPar2;
break;
1192 case( kPPar3 ): value = PPar3;
break;
1202 case( kBPar3 ): value = BPar3;
break;
1203 case( kBPar4 ): value = BPar4;
break;
1204 case( kBPar5 ): value = BPar5;
break;
1205 case( km1 ): value = m1;
break;
1206 case( km3 ): value = m3;
break;
1207 case( kmxIncr ): value = mxIncr;
break;
1208 case( kmnIncr ): value = mnIncr;
break;
1209 case( kmxDecr ): value = mxDecr;
break;
1210 case( kmnDecr ): value = mnDecr;
break;
1211 case( ktMaior ): value = tMaior;
break;
1212 case( ktMinor ): value = tMinor;
break;
1213 case( ktInit ): value = tInit;
break;
1214 case( ktSPar2 ): value = tSPar2;
break;
1215 case( kMPEFsb ): value = MPEFsb;
break;
1216 case( kMPEOpt ): value = MPEOpt;
break;
void SetMPSolver(MPSolver *MPS=0)
void SetLambda(cLMRow tLambda=0)
EIStatus
Definition Bundle.h:712
void ReSetAlg(unsigned char RstLvl=0)
void SetPar(const int wp, const int value)
Definition Bundle.h:1043
HpNum ReadFiVal(cIndex wFi=Inf< Index >())
void ChgSbG(cIndex strt=0, Index stp=Inf< Index >(), cIndex wFi=Inf< Index >())
bool IsOptimal(HpNum eps=0) const
Definition Bundle.h:1141
void GetPar(const int wp, int &value)
Definition Bundle.h:1181
void RemoveVariables(cIndex_Set whch=0, Index hwmny=0)
Index NrSSs(void) const
Definition Bundle.h:642
HpNum ReadBestFiVal(cIndex wFi=Inf< Index >())
cHpRow ReadMult(cIndex_Set &I, Index &D, cIndex wFi=Inf< Index >())
virtual EIStatus EveryIteration(void)
void RemoveItem(cIndex Name)
void SetFiOracle(FiOracle *Fi=0)
HpNum ReadLBMult(cIndex wFi=Inf< Index >())
BndParam
Definition Bundle.h:119
cLMRow ReadSol(cIndex_Set &I, Index &D)
cLMRow ReadBestSol(cIndex_Set &I, Index &D)
void AddVariables(Index NNwVrs, cLMRow IVs=0)
bool CurrentIsLast(void)
Definition Bundle.h:1174
HpNum ReadDStart(cHpNum tt=1) const
Definition Bundle.h:1167
void SetNDOLog(std::ostream *outs=0, const char lvl=0)
void ChgFiV(cIndex wFi=Inf< Index >())
Definition FiOracle.h:231
FiStatus
Definition FiOracle.h:248
virtual void SetMaxName(cIndex MxNme=0)
Definition FiOracle.h:384
Definition MPSolver.h:121
virtual void SetDim(cIndex MxBSz=0, FiOracle *Oracle=nullptr, const bool UsAvSt=false)
Definition MPSolver.h:278
virtual HpNum ReadDStart(cHpNum tt=1)=0
virtual void SetPar(const int wp, const int value)
Definition NDOSlver.h:1047
NDOStatus
Definition NDOSlver.h:91
virtual void GetPar(const int wp, int &value)
Definition NDOSlver.h:1075
FiOracle * Oracle
(pointer to) the oracle for Fi
Definition NDOSlver.h:978
HpNum EInit
precision-related parameter: initial precision
Definition NDOSlver.h:986
HpNum EpsLin
optimality related parameter: relative precision
Definition NDOSlver.h:984
int SIndex
Definition OPTtypes.h:69
HpNum * HpRow
"finer" (fp) array
Definition OPTtypes.h:99
const HpNum cHpNum
a read-only HpNum
Definition OPTtypes.h:102
double HpNum
"finer" floating point numbers
Definition OPTtypes.h:98
const Index cIndex
a read-only Index
Definition OPTtypes.h:64
cIndex * cIndex_Set
read-only array
Definition OPTtypes.h:65
SIndex * SIndex_Set
set (array) of s. indices
Definition OPTtypes.h:71
Index * Index_Set
set (array) of indices
Definition OPTtypes.h:61
bool * Bool_Vec
vector of booleans
Definition OPTtypes.h:52
unsigned int Index
Index in a vector ( >= 0 )
Definition OPTtypes.h:60
cHpNum * cHpRow
read-only array
Definition OPTtypes.h:103
LMNum * LMRow
a vector of Lagrangean Multipliers
Definition OPTtypes.h:130
cLMNum * cLMRow
a read-only vector of LMs
Definition OPTtypes.h:134
static constexpr T Inf(void) noexcept
Inf< T >() = infinity value for T.
Definition OPTUtils.h:357
virtual void SetPar(const int wp, cHpNum value)=0