47#define PRESERVE_OSI_SOLS 1
55#include "OsiSolverInterface.hpp"
90 enum StabFun { unset = 0 , none , boxstep , quadratic };
105 enum OsiAlg { kAuto = 0 , kPrim , kDual , kNet , kBar , kSif , kCon };
116 enum OsiRed { rNo = 0 , rPrim , rDual , rBoth };
135 const bool UsAvSt =
false )
override;
169 void SetMPLog( ostream *outs = 0 ,
const char lvl = 0 )
override;
193 void SetOsi( OsiSolverInterface * osi =
nullptr );
241 const bool IncldCnst =
true )
override;
285 bool FiBLambdaIsExact(
cIndex wFi );
425 void cleanup(
void );
436 void ptUpdatePricesInPlace(
void );
440 void UpdateRhoCol(
void );
445 void switchToQP(
void );
450 void activate(
Index i );
452 void deactivate(
Index i );
454 void resizeHP(
Index i );
456 void resizeI(
Index i );
463 void CheckDS(
void );
467 Index CheckBCopy(
void );
557 #if( PRESERVE_OSI_SOLS )
565 CoinMessageHandler *derhand;
Definition FiOracle.h:231
Definition MPSolver.h:121
MPStatus
Definition MPSolver.h:151
Definition OSIMPSolver.h:75
HpNum ReadDt(cHpNum tt=1) override
void RmvVars(cIndex_Set whch=nullptr, Index hwmny=0) override
HpNum ReadFiBLambda(cIndex wFi=Inf< Index >()) override
void SetStabType(const StabFun sf=none)
Sets the stabilizing term in the Master Problem.
Index_Set dict_slack
slack vocabulary
Definition OSIMPSolver.h:519
bool useactiveset
true if the active set are taken in account
Definition OSIMPSolver.h:478
double FsbEps
feasibility tolerance
Definition OSIMPSolver.h:490
double * RhoCol
entries of the column of rho
Definition OSIMPSolver.h:492
Index NumBxdVars(void) override
void SetItemBse(cIndex_Set SGBse=nullptr, cIndex SGBDm=0) override
Index NNVars
variables with >= 0 constraints
Definition OSIMPSolver.h:544
Index NewItemFi
the function component relative to new item
Definition OSIMPSolver.h:504
void ChgLUBD(Index wFi) override
void SetDim(cIndex MxBSz=0, FiOracle *Oracle=nullptr, const bool UsAvSt=false) override
Index tempI_size
size of tempI
Definition OSIMPSolver.h:539
void MakeLambda1(cHpRow Lmbd, HpRow Lmbd1, cHpNum Tau) override
void SensitAnals(HpNum &lp, HpNum &cp) override
bool ChangesMPSol(void) override
cIndex_Set Aset
active set structure
Definition OSIMPSolver.h:547
Index_Set comp_row
row vocabulary
Definition OSIMPSolver.h:517
Index tempHP_size
size of tempHP
Definition OSIMPSolver.h:538
Bool_Vec weasy
which Fi-component is easy
Definition OSIMPSolver.h:482
bool IsSubG(cIndex i) override
void AddVars(cIndex NNwVrs) override
StabFun
Public enum for handling the Bundle stabilization term [see below].
Definition OSIMPSolver.h:90
void ChgRLHS(Index wFi) override
double NewItemprice
price of the item
Definition OSIMPSolver.h:511
Index WComponent(cIndex i) override
cLMRow Readd(bool Fulld=false) override
SgRow NewItem
the new item
Definition OSIMPSolver.h:503
Index BSize(cIndex wFi=Inf< Index >()) override
returns the current number of items (of either type) in the bundle.
Index_Set dict_item
item vocabulary
Definition OSIMPSolver.h:518
cHpRow ReadReducedCostsEasy(cIndex wFi) override
returns the reduced costs of the variables of an easy component
void RmvActvSt(cIndex_Set Rmvd, cIndex RmDm, cIndex_Set AVrs) override
Index BCSize(cIndex wFi=Inf< Index >()) override
returns the current number of constraints in the bundle.
Index NrEasy
how many easy Fi-components are there
Definition OSIMPSolver.h:483
HpNum ReadLowerBound(cIndex wFi=Inf< Index >()) override
int csols
length of csol
Definition OSIMPSolver.h:559
Index_Set NConst
number of constraints (per component)
Definition OSIMPSolver.h:515
HpNum t
proximal parameter term
Definition OSIMPSolver.h:486
StabFun stab
tell the stabilization term adopted
Definition OSIMPSolver.h:485
OsiAlg algorithm
algorithm used in the solver
Definition OSIMPSolver.h:476
void ChangeCurrPoint(cLMRow DLambda, cHpRow DFi) override
double OptEps
optimality tolerance
Definition OSIMPSolver.h:489
bool first
Definition OSIMPSolver.h:479
void ChgSubG(cIndex strt, Index stp, cIndex wFi) override
void SetPar(const int wp, cHpNum value) override
cHpRow ReadDualEasy(cIndex wFi) override
returns the dual variables of the constraints of an easy component
HpNum ReadSigma(cIndex wFi=Inf< Index >()) override
LMRow Lower
lower bounds on the primal variable
Definition OSIMPSolver.h:542
HpRow LwrBnds
values of lower bounds for each component
Definition OSIMPSolver.h:550
OsiRed
Definition OSIMPSolver.h:116
double MaxTime
max running time for each call to SolveMP
Definition OSIMPSolver.h:488
Index_Set dict_stab
stabilization variables vocabulary
Definition OSIMPSolver.h:520
Index BxdVars
variables with >= 0 or <= UB constraints
Definition OSIMPSolver.h:545
Index item_maxname
maximum name among current items + 1
Definition OSIMPSolver.h:534
void SetThreads(int nthreads) override
SgRow GetItem(cIndex wFi=Inf< Index >()) override
Index MaxNZ
max dimension of the item
Definition OSIMPSolver.h:508
HpRow tempHP
temporary vector of HpNum
Definition OSIMPSolver.h:536
void RmvItem(cIndex i) override
int * tempI
temporary vector of ints
Definition OSIMPSolver.h:537
cHpRow ReadMult(cIndex_Set &I, Index &D, cIndex wFi=Inf< Index >(), const bool IncldCnst=true) override
void RmvItems(void) override
void Sett(cHpNum tt=1) override
void SetItem(cIndex Nm=Inf< Index >()) override
void SetMPLog(ostream *outs=0, const char lvl=0) override
void CheckIdentical(const bool Chk=true) override
OsiSolverInterface * GetOsi(void) const
gives back the current OsiSolverInterface
Definition OSIMPSolver.h:198
bool IsNN(cIndex i) override
double * csol
column (primal) solution
Definition OSIMPSolver.h:558
void SetOsi(OsiSolverInterface *osi=nullptr)
Provides OSIMPSolver with the actual OsiSolverInterface.
void SetAlgo(const OsiAlg algo=kAuto, const OsiRed reduc=rNo)
void ChgAlfa(cHpRow NewAlfa, cIndex wFi) override
Index NumNNVars(void) override
double * rcst
row reduced cost
Definition OSIMPSolver.h:562
void SetActvSt(cIndex_Set AVrs=nullptr, cIndex AVDm=0) override
MPStatus SolveMP(void) override
OsiSolverInterface * osiSlvr
pointer to the OsiSolver
Definition OSIMPSolver.h:473
Index NewItemBDm
dimension of new item
Definition OSIMPSolver.h:506
cHpRow ReadLinErr(void) override
HpNum ReadDStart(cHpNum tt=1) override
int rsols
length of rsol
Definition OSIMPSolver.h:561
FiOracle * FIO
pointer to the FiOracle
Definition OSIMPSolver.h:474
Index CheckSubG(cHpNum DFi, cHpNum Tau, HpNum &Ai, HpNum &ScPri) override
HpNum ReadGid(cIndex Nm=Inf< Index >()) override
HpNum EpsilonD(void) override
Index_Set comp_col
column vocabulary
Definition OSIMPSolver.h:532
void ChgAlfa(cHpRow DeltaAlfa) override
HpNum ReadLBMult(cIndex wFi=Inf< Index >()) override
Index Asetdim
size of active set
Definition OSIMPSolver.h:548
void SetLowerBound(cHpNum LwBnd=- Inf< HpNum >(), cIndex wFi=Inf< Index >()) override
void ChangeCurrPoint(cHpNum Tau, cHpRow DFi) override
void AddActvSt(cIndex_Set Addd, cIndex AdDm, cIndex_Set AVrs) override
void SubstItem(cIndex Nm) override
void ReadZ(LMRow tz, cIndex_Set &I, Index &D, cIndex wFi=Inf< Index >()) override
Index RhoColBDm
... and size
Definition OSIMPSolver.h:494
bool NewItemisSG
subgradient vs constraint
Definition OSIMPSolver.h:510
HpRow GiPerd
Definition OSIMPSolver.h:552
cIndex_Set NewItemBse
index vector of the new item
Definition OSIMPSolver.h:505
Index CheckCnst(HpNum &Ai, HpNum &ScPri, cHpRow CrrPnt) override
int * RhoColBse
... in sparse format: indices ...
Definition OSIMPSolver.h:493
double * rsol
row (dual) solution
Definition OSIMPSolver.h:560
OsiAlg
Definition OSIMPSolver.h:105
LMRow Upper
upper bounds on the primal variable
Definition OSIMPSolver.h:541
void ChgAlfa(cIndex i, cHpNum Ai) override
Index NRCall
number of calls to SolveMP procedure
Definition OSIMPSolver.h:567
double NewItemScPri
Gid product.
Definition OSIMPSolver.h:512
Index MaxName(cIndex wFi=Inf< Index >()) override
Index RhoColSgPos
position in RhoColBse of the "subgradient"
Definition OSIMPSolver.h:495
Index_Set wcomp
Definition OSIMPSolver.h:522
Index_Set NSubG
number of subgradients (per component)
Definition OSIMPSolver.h:514
void ChgCosts(Index wFi, cLMRow Lambda) override
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
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
SgNum * SgRow
a subgradient
Definition OPTtypes.h:112
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