381 MaxTime = NewMaxTime > 0 ? NewMaxTime : 0;
392 void SetMQLog( ostream *log )
397 *MQLog << std::endl <<
"MinQuad: #bundle = " <<
MaxBDim <<
" ~ active = "
398 << CrrBDim <<
"." << std::endl << std::endl;
503 if( G[ i ] && DeltaAlfai ) {
504 Alfa[ i ] += DeltaAlfai;
778 if( IncldCnst || ( ! CBDim ) )
786 tS += (*tM) *
Alfa[ h ];
929 void MQTime(
double &t_us ,
double &t_ss )
933 MQt->
Read( t_us , t_ss );
963 if( Q[ i ][ j ] == -QuINF )
964 Q[ i ][ j ] = GiTGj( j , i );
966 return( Q[ i ][ j ] );
969 if( Q[ j ][ i ] == -QuINF )
970 Q[ j ][ i ] = GiTGj( i , j );
972 return( Q[ j ][ i ] );
975 return( i >= j ? Q[ i ][ j ] : Q[ j ][ i ] );
985 if( Q[ i ][ i ] == -QuINF )
986 Q[ i ][ i ] = GiTGj( i , i );
989 return( Q[ i ][ i ] );
1139 void RebuildBase(
void );
1143 void CalcOptDir(
cHpNum ti );
1147 bool Feasible(
void );
1163 void ChkNwLinInd(
void );
1167 void CutSubGradFromBase(
cIndex s );
1171 void MoveSubgradToLastPos(
cIndex s );
1175 void UpdateLmu(
cIndex s );
1179 void ComputeQuad(
void );
1183 void MemDealloc(
void );
1187 void CheckB(
void );
1189 void CheckQ(
void );
1255 std::ostream *MQLog;
1258 unsigned long int Calls;
1259 unsigned long int Step;
1260 unsigned long int Success;
1265 unsigned long int Insert;
1266 unsigned long int Delete;
1267 unsigned long int SGSIncr;
1268 unsigned long int SGSDecr;
void AddSGSpaceDim(cSgRow NewDim, cHpNum lbh, const bool UpdtB=true)
void MQTime(double &t_us, double &t_ss)
Return the user and sistem time (in seconds) spent so far by SolveQP().
Definition MinQuad.h:929
Index_Set Base
Base (set of strictly positive variables)
Definition MinQuad.h:1101
virtual void GiTG(cIndex i, QuRow Qi, cIndex iMax)=0
QuNum LowQ(cIndex i, cIndex j)
Definition MinQuad.h:959
HpNum EpsilonR(void)
Definition MinQuad.h:950
Index ReadBDim(void)
Definition MinQuad.h:831
bool IsThere(cIndex n)
Returns true if there is an item with name 'n'.
Definition MinQuad.h:457
virtual MQError SolveQP(HpNum ti)
QuNum LowQ(cIndex i)
LowQ( i ) = LowQ( i , i )
Definition MinQuad.h:982
void AddSGSpaceDim(cSgRow NewDim, const bool UpdtB=true)
cIndex_Set ReadBase(void)
Definition MinQuad.h:840
HpRow tmpa
Definition MinQuad.h:1114
Index MaxItemN(void)
Definition MinQuad.h:481
HpRow tmpv
like tmpa
Definition MinQuad.h:1118
void ResetBundle(cIndex which)
cHpNum ReadLB(void)
returns the current value of the Lower Bound
Definition MinQuad.h:587
virtual void SetGTz(cIndex i, cHpNum GTzi)
Definition MinQuad.h:593
HpRow Alfa
Linearization errors.
Definition MinQuad.h:1108
bool IsASubG(cIndex n)
Returns true if the item with "name" 'n' is a subgradient.
Definition MinQuad.h:462
virtual cHpRow ReadAlfa(void)
Definition MinQuad.h:582
double MQTime(void)
Return the total time (in seconds) spent so far by SolveQP().
Definition MinQuad.h:939
virtual void ChangeAlfa(cIndex i, cHpNum DeltaAlfai)
Definition MinQuad.h:501
cHpRow ReadInfDir(void)
Definition MinQuad.h:874
void SetLB(HpNum LB=-Inf< HpNum >())
Definition MinQuad.h:305
void SetPricing(cHpNum Brk=Inf< HpNum >())
Definition MinQuad.h:361
virtual void SetMaxDim(Index m, Index n, Index SDim=0)
void SetCrrBDim(cIndex Newn)
bool IsLB(void)
Returns true if a Lower Bound has been set.
Definition MinQuad.h:472
bool IsAConst(cIndex n)
Returns true if the item with "name" 'n' is a constraint.
Definition MinQuad.h:467
HpNum Readv(void)
Definition MinQuad.h:805
virtual HpNum ReadGTz(cIndex i)
Definition MinQuad.h:888
void CutSGSpaceDim(cSgRow OldDim, cHpNum lbh, const bool UpdtB=true)
virtual void AddConstr(cIndex n, cHpNum alfan)
void CutSGSpaceDim(cSgRow OldDim, const bool UpdtB=true)
virtual void ReadAlfa(HpRow NewAlfa)
HpNum eR
Relative error for "== 0" tests.
Definition MinQuad.h:1111
HpNum ReadLBMult(void)
Definition MinQuad.h:881
MQError
Definition MinQuad.h:209
@ kIncreasingStep
another kind of numerical issue
Definition MinQuad.h:212
@ kInvalidV
another kind of numerical issue
Definition MinQuad.h:214
@ kLoop
another kind of numerical issue
Definition MinQuad.h:215
@ kNegativeDelta
one kind of numerical issue
Definition MinQuad.h:211
@ kOK
everything went fine
Definition MinQuad.h:209
@ kQPPrimUnbndd
the problem is proven to be unbounded
Definition MinQuad.h:217
@ kStpTime
stopped due to time limit
Definition MinQuad.h:219
@ kFatal
a fatal numerical error
Definition MinQuad.h:220
@ kNegVarInBase
another kind of numerical issue
Definition MinQuad.h:213
bool IsInBase(cIndex n)
Returns true if the "name" 'n' is in the optimal base.
Definition MinQuad.h:845
Index ReadCBDim(void)
Definition MinQuad.h:853
virtual void MoveAlongD(cHpNum Tau, cHpNum DeltaFi)
HpRow GTz
Definition MinQuad.h:1106
virtual ~MinQuad()
Memory deallocation. Statistics (if any) are printed.
Index ActCNum
Definition MinQuad.h:1094
void SensitAnals2(HpNum v1, HpNum v2, HpRow x1, HpRow x2)
Index NxtBIdx
Definition MinQuad.h:1096
virtual HpNum ReadzNorm(void)
Definition MinQuad.h:765
virtual void SensitAnals1(HpNum &v1, HpNum &v2, HpNum &v3)
virtual HpNum ReadSigma(const bool IncldCnst=true)
Definition MinQuad.h:776
HpNum PrvsTi
Value of ti in the latest call of CalcOptDir()
Definition MinQuad.h:1110
HpRow Mult
Primal variables.
Definition MinQuad.h:1100
Index ActBDim
Number of items currently in the bundle.
Definition MinQuad.h:1093
void SetMaxTime(cHpNum NewMaxTime)
Definition MinQuad.h:379
HpNum Lin
Alfa^T * Mult.
Definition MinQuad.h:1104
cHpRow ReadMult(void)
Definition MinQuad.h:825
void SetEpsilonR(HpNum NeweR=0)
Index MaxBDim
Max. dimension of the bundle.
Definition MinQuad.h:1092
void ResetBundle(void)
Complete reset of the bundle: all items are eliminated.
HpNum Quad
Mult^T * Q * Mult.
Definition MinQuad.h:1103
virtual void AddSubGrad(cIndex n, cHpNum alfan)
virtual void ChangeAlfa(cHpNum DeltaAlfa)
MQError QPStatus
termination code of SolveQP()
Definition MinQuad.h:1098
Index BDim
n. of items in Base
Definition MinQuad.h:1102
void SensitAnals3(cHpNum v1, cHpNum v2, HpRow x1, HpRow x2, HpNum &tMin, HpNum &tMax)
virtual void SetMQTime(const bool TimeIt=true)
Definition MinQuad.h:411
void AlfaChanged(void)
Definition MinQuad.h:1086
Definition OPTUtils.h:144
void ReSet(void)
reset the timer
Definition OPTUtils.h:214
double Read(void)
Definition OPTUtils.h:184
HpRow * HpMat
"finer" (fp) matrix
Definition OPTtypes.h:100
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
Index * Index_Set
set (array) of indices
Definition OPTtypes.h:61
unsigned int Index
Index in a vector ( >= 0 )
Definition OPTtypes.h:60
cHpNum * cHpRow
read-only array
Definition OPTtypes.h:103
QuRow * QuMat
Q (itself)
Definition OPTtypes.h:122
double QuNum
numbers in Q ( G{i}{T} * G{j} )
Definition OPTtypes.h:120
QuNum * QuRow
row of Q
Definition OPTtypes.h:121
cSgNum * cSgRow
a read-only subgradient
Definition OPTtypes.h:116
static constexpr T Inf(void) noexcept
Inf< T >() = infinity value for T.
Definition OPTUtils.h:357
Definition BMinQuad.h:157