7 #ifndef CglLandPSimplex_H
8 #define CglLandPSimplex_H
15 #include "OsiSolverInterface.hpp"
16 #include "CoinMessage.hpp"
17 #include "CoinMessageHandler.hpp"
18 #include "CoinWarmStartBasis.hpp"
19 #include "CoinPackedMatrix.hpp"
21 #include "OsiClpSolverInterface.hpp"
66 void setSi(OsiSolverInterface *si) {
68 OsiClpSolverInterface * clpSi =
dynamic_cast<OsiClpSolverInterface *
>(
si_);
82 void loadBasis(
const OsiSolverInterface &si,
83 std::vector<int> &M1, std::vector<int> &M2,
108 bool changeBasis(
int incoming,
int leaving,
int direction,
bool recompute_source_row);
117 double pivotTol,
double rhsTol,
119 bool allowNonImproving,
148 void scaleCut(OsiRowCut & cut,
double factor)
const;
179 inline CoinWarmStartBasis::Status
getStatus(
int index)
const {
180 if (index <
ncols_)
return basis_->getStructStatus(index);
211 std::vector<int> &M1,
212 std::vector<int> &M2,
213 std::vector<int> &M3);
236 void updateM1_M2_M3(
TabRow & row,
double tolerance,
bool recucedSpace,
bool alwaysComputeCheap);
238 void removeRows(
int nDelete,
const int * rowsIdx);
241 void compute_p_q_r_s(
double gamma,
int gammaSign,
double &p,
double & q,
double & r ,
double &s);
359 double pivotTol,
bool reducedSpace,
bool allowDegeneratePivot,
362 int plotCGLPobj(
int direction,
double gammaTolerance,
363 double pivotTol,
bool reducedSpace,
bool allowDegenerate,
bool modularize);
377 double f_i = alpha_i - floor(alpha_i);
379 return f_i*(1- beta);
381 return (1 - f_i)*beta;
400 void put_in_non_basic_init_space( OsiRowCut &cut);
406 friend class DebugData;
411 DebugData(
int n,
int m):
416 , initialTableau_(), initialBasics_(NULL), initialBasis_(NULL)
419 bestNewRow_ =
new double[n + m];
421 initialBasics_ =
new int[m];
422 initialNonBasics_ =
new int[n];
423 initialColsol_ =
new double[n + m];
424 trueInitialSol_ =
new double[n + m];
428 delete [] bestNewRow_;
430 delete [] initialBasics_;
431 delete [] initialNonBasics_;
432 delete [] initialColsol_;
433 delete [] trueInitialSol_;
435 delete initialBasis_;
439 double * bestNewRow_;
458 bool saveOutgoingStatus();
462 void getCurrentTableau(OsiSolverInterface &si, CglLandPSimplex &lap);
464 CoinPackedMatrix initialTableau_;
466 int * initialBasics_;
468 int *initialNonBasics_;
470 CoinWarmStartBasis * initialBasis_;
472 double * initialColsol_;
474 double * trueInitialSol_;