4 #ifndef OsiClpSolverInterface_H
5 #define OsiClpSolverInterface_H
11 #include "ClpSimplex.hpp"
12 #include "ClpLinearObjective.hpp"
13 #include "CoinPackedMatrix.hpp"
15 #include "CoinWarmStartBasis.hpp"
16 #include "ClpEventHandler.hpp"
17 #include "ClpNode.hpp"
18 #include "CoinIndexedVector.hpp"
21 class OsiClpUserSolver;
154 virtual int pivot(
int colIn,
int colOut,
int outStatus);
168 int& colOut,
int& outStatus,
169 double& t, CoinPackedVector* dx);
178 int colOut,
int outStatus,
179 double& t, CoinPackedVector* dx);
191 virtual void getBInvARow(
int row,
double* z,
double * slack=NULL)
const;
197 virtual void getBInvARow(
int row, CoinIndexedVector * z, CoinIndexedVector * slack=NULL,
198 bool keepScaled=
false)
const;
201 virtual void getBInvRow(
int row,
double* z)
const;
204 virtual void getBInvACol(
int col,
double* vec)
const ;
207 virtual void getBInvACol(
int col, CoinIndexedVector * vec)
const ;
213 virtual void getBInvACol(CoinIndexedVector * vec)
const ;
216 virtual void getBInvCol(
int col,
double* vec)
const ;
222 virtual void getBasics(
int* index)
const;
256 void * otherInformation=NULL);
301 virtual bool setWarmStart(
const CoinWarmStart* warmstart);
340 void setStuff(
double tolerance,
double increment);
369 const CoinPackedMatrix * matrix =
modelPtr_->matrix();
370 if ( matrix != NULL ) retVal=matrix->getNumElements();
376 unsigned maxLen = std::string::npos)
const;
381 unsigned maxLen = std::string::npos)
const;
433 {
return modelPtr_->optimizationDirection(); }
438 virtual bool isBinary(
int colIndex)
const;
444 virtual bool isInteger(
int colIndex)
const;
456 virtual const char *
getColType(
bool refresh=
false)
const;
501 {
return modelPtr_->numberIterations(); }
514 virtual std::vector<double*>
getDualRays(
int maxNumRays)
const;
526 virtual std::vector<double*>
getPrimalRays(
int maxNumRays)
const;
539 virtual void setObjCoeff(
int elementIndex,
double elementValue );
543 virtual void setColLower(
int elementIndex,
double elementValue );
547 virtual void setColUpper(
int elementIndex,
double elementValue );
551 double lower,
double upper );
562 const int* indexLast,
563 const double* boundList);
567 virtual void setRowLower(
int elementIndex,
double elementValue );
571 virtual void setRowUpper(
int elementIndex,
double elementValue ) ;
575 double lower,
double upper ) ;
578 virtual void setRowType(
int index,
char sense,
double rightHandSide,
590 const int* indexLast,
591 const double* boundList);
604 const int* indexLast,
605 const char* senseList,
606 const double* rhsList,
607 const double* rangeList);
629 virtual void setRowName(
int rowIndex, std::string name) ;
634 virtual void setColName(
int colIndex, std::string name) ;
650 virtual void setInteger(
const int* indices,
int len);
672 {
modelPtr_->setOptimizationDirection( s < 0 ? -1 : 1); }
706 virtual void addCol(
const CoinPackedVectorBase& vec,
707 const double collb,
const double colub,
711 virtual void addCol(
const CoinPackedVectorBase& vec,
712 const double collb,
const double colub,
713 const double obj, std::string name) ;
715 virtual void addCol(
int numberElements,
const int * rows,
const double * elements,
716 const double collb,
const double colub,
720 virtual void addCol(
int numberElements,
721 const int* rows,
const double* elements,
722 const double collb,
const double colub,
723 const double obj, std::string name) ;
725 virtual void addCols(
const int numcols,
726 const CoinPackedVectorBase *
const * cols,
727 const double* collb,
const double* colub,
730 virtual void addCols(
const int numcols,
731 const int * columnStarts,
const int * rows,
const double * elements,
732 const double* collb,
const double* colub,
735 virtual void deleteCols(
const int num,
const int * colIndices);
738 virtual void addRow(
const CoinPackedVectorBase& vec,
739 const double rowlb,
const double rowub);
746 virtual void addRow(
const CoinPackedVectorBase& vec,
747 const double rowlb,
const double rowub,
749 virtual void addRow(
const CoinPackedVectorBase& vec,
750 const char rowsen,
const double rowrhs,
751 const double rowrng);
753 virtual void addRow(
int numberElements,
const int * columns,
const double * element,
754 const double rowlb,
const double rowub) ;
757 virtual void addRow(
const CoinPackedVectorBase& vec,
758 const char rowsen,
const double rowrhs,
759 const double rowrng, std::string name) ;
761 virtual void addRows(
const int numrows,
762 const CoinPackedVectorBase *
const * rows,
763 const double* rowlb,
const double* rowub);
765 virtual void addRows(
const int numrows,
766 const CoinPackedVectorBase *
const * rows,
767 const char* rowsen,
const double* rowrhs,
768 const double* rowrng);
771 virtual void addRows(
const int numrows,
772 const int * rowStarts,
const int * columns,
const double * element,
773 const double* rowlb,
const double* rowub);
777 {
modelPtr_->modifyCoefficient(row,column,newElement, keepZero);}
780 virtual void deleteRows(
const int num,
const int * rowIndices);
822 double effectivenessLb = 0.0);
844 virtual void loadProblem(
const CoinPackedMatrix& matrix,
845 const double* collb,
const double* colub,
847 const double* rowlb,
const double* rowub);
857 double*& collb,
double*& colub,
double*& obj,
858 double*& rowlb,
double*& rowub);
872 virtual void loadProblem(
const CoinPackedMatrix& matrix,
873 const double* collb,
const double* colub,
875 const char* rowsen,
const double* rowrhs,
876 const double* rowrng);
886 double*& collb,
double*& colub,
double*& obj,
887 char*& rowsen,
double*& rowrhs,
892 virtual void loadProblem(
const int numcols,
const int numrows,
893 const CoinBigIndex * start,
const int* index,
895 const double* collb,
const double* colub,
897 const double* rowlb,
const double* rowub);
901 virtual void loadProblem(
const int numcols,
const int numrows,
902 const CoinBigIndex * start,
const int* index,
904 const double* collb,
const double* colub,
906 const char* rowsen,
const double* rowrhs,
907 const double* rowrng);
909 virtual int loadFromCoinModel ( CoinModel & modelObject,
bool keepSolution=
false);
914 virtual int readMps(
const char *filename,
915 const char *extension =
"mps") ;
918 int readMps(
const char *filename,
bool keepNames,
bool allowErrors);
920 virtual int readMps (
const char *filename,
const char*extension,
921 int & numberSets, CoinSet ** & sets);
927 virtual void writeMps(
const char *filename,
928 const char *extension =
"mps",
929 double objSense=0.0)
const;
939 const char ** rowNames,
const char ** columnNames,
940 int formatType=0,
int numberAcross=2,
941 double objSense=0.0)
const ;
943 virtual int readLp(
const char *filename,
const double epsilon = 1e-5);
949 virtual void writeLp(
const char *filename,
950 const char *extension =
"lp",
951 double epsilon = 1e-5,
952 int numberAcross = 10,
954 double objSense = 0.0,
955 bool useRowNames =
true)
const;
961 double epsilon = 1e-5,
962 int numberAcross = 10,
964 double objSense = 0.0,
965 bool useRowNames =
true)
const;
973 virtual void replaceMatrix(
const CoinPackedMatrix & matrix) ;
1061 virtual CoinBigIndex
getSizeL()
const;
1063 virtual CoinBigIndex
getSizeU()
const;
1104 virtual void reset();
1149 CoinWarmStartBasis
getBasis(ClpSimplex * model)
const;
1158 void setBasis(
const CoinWarmStartBasis & basis, ClpSimplex * model);
1163 const int * indices,
const double * elements);
1167 void setBasis(
const CoinWarmStartBasis & basis);
1172 CoinWarmStartDiff *
getBasisDiff(
const unsigned char * statusArray)
const ;
1174 CoinWarmStartBasis *
getBasis(
const unsigned char * statusArray)
const ;
1187 const int * start,
const int * indices,
const double * weights=NULL);
1222 mutable CoinWarmStartBasis*
ws_;
1345 virtual bool check()
const ;
1365 virtual ClpDisasterHandler *
clone()
const;