- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

OsiTestSolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2000, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 // This file is licensed under the terms of Eclipse Public License (EPL).
4
5 // this is a copy of OsiVolSolverInterface (trunk rev. 1466) renamed to OsiTestSolverInterface
6
7 #ifndef OsiTestSolverInterface_H
8 #define OsiTestSolverInterface_H
9
10 #include <string>
11
12 #include "OsiTestSolver.hpp"
13
14 #include "CoinPackedMatrix.hpp"
15
16 #include "OsiSolverInterface.hpp"
17
18 static const double OsiTestInfinity = 1.0e31;
19
20 //#############################################################################
21
27 class OsiTestSolverInterface :
28 virtual public OsiSolverInterface, public VOL_user_hooks {
29 friend void OsiTestSolverInterfaceUnitTest(const std::string & mpsDir, const std::string & netlibDir);
30
31 private:
32 class OsiVolMatrixOneMinusOne_ {
33 int majorDim_;
34 int minorDim_;
35
36 int plusSize_;
37 int * plusInd_;
38 int * plusStart_;
39 int * plusLength_;
40
41 int minusSize_;
42 int * minusInd_;
43 int * minusStart_;
44 int * minusLength_;
45
46 public:
47 OsiVolMatrixOneMinusOne_(const CoinPackedMatrix& m);
48 ~OsiVolMatrixOneMinusOne_();
49 void timesMajor(const double* x, double* y) const;
50 };
51
52 public:
53 //---------------------------------------------------------------------------
56 virtual void initialSolve();
58
60 virtual void resolve();
61
63 virtual void branchAndBound() {
64 throw CoinError("Sorry, the Volume Algorithm doesn't implement B&B",
65 "branchAndBound", "OsiTestSolverInterface");
66 }
68
69 //---------------------------------------------------------------------------
85 // Set an integer parameter
86 bool setIntParam(OsiIntParam key, int value);
87 // Set an double parameter
88 bool setDblParam(OsiDblParam key, double value);
89 // Set a string parameter
90 bool setStrParam(OsiStrParam key, const std::string & value);
91 // Get an integer parameter
92 bool getIntParam(OsiIntParam key, int& value) const;
93 // Get an double parameter
94 bool getDblParam(OsiDblParam key, double& value) const;
95 // Get a string parameter
96 bool getStrParam(OsiStrParam key, std::string& value) const;
98
99 //---------------------------------------------------------------------------
101
102 virtual bool isAbandoned() const;
105 virtual bool isProvenOptimal() const;
107 virtual bool isProvenPrimalInfeasible() const;
109 virtual bool isProvenDualInfeasible() const;
111 virtual bool isPrimalObjectiveLimitReached() const;
113 virtual bool isDualObjectiveLimitReached() const;
115 virtual bool isIterationLimitReached() const;
117
118 //---------------------------------------------------------------------------
127 virtual CoinWarmStart *getEmptyWarmStart () const ;
128
130 virtual CoinWarmStart* getWarmStart() const;
133 virtual bool setWarmStart(const CoinWarmStart* warmstart);
135
136 //---------------------------------------------------------------------------
143 virtual void markHotStart();
146 virtual void solveFromHotStart();
148 virtual void unmarkHotStart();
150
151 //---------------------------------------------------------------------------
166 virtual int getNumCols() const {
168 return rowMatrixCurrent_?
169 rowMatrix_.getNumCols() : colMatrix_.getNumCols(); }
170
172 virtual int getNumRows() const {
173 return rowMatrixCurrent_?
174 rowMatrix_.getNumRows() : colMatrix_.getNumRows(); }
175
177 virtual int getNumElements() const {
178 return rowMatrixCurrent_?
179 rowMatrix_.getNumElements() : colMatrix_.getNumElements(); }
180
182 virtual const double * getColLower() const { return collower_; }
183
185 virtual const double * getColUpper() const { return colupper_; }
186
196 virtual const char * getRowSense() const { return rowsense_; }
197
206 virtual const double * getRightHandSide() const { return rhs_; }
207
216 virtual const double * getRowRange() const { return rowrange_; }
217
219 virtual const double * getRowLower() const { return rowlower_; }
220
222 virtual const double * getRowUpper() const { return rowupper_; }
223
225 virtual const double * getObjCoefficients() const { return objcoeffs_; }
226
228 virtual double getObjSense() const { return objsense_; }
229
231 virtual bool isContinuous(int colNumber) const;
232
233 #if 0
234 virtual bool isBinary(int colNumber) const;
236
241 virtual bool isInteger(int colNumber) const;
242
244 virtual bool isIntegerNonBinary(int colNumber) const;
245
247 virtual bool isFreeBinary(int colNumber) const;
248 #endif
249
251 virtual const CoinPackedMatrix * getMatrixByRow() const;
252
254 virtual const CoinPackedMatrix * getMatrixByCol() const;
255
257 virtual double getInfinity() const { return OsiTestInfinity; }
259
262 virtual const double * getColSolution() const { return colsol_; }
264
266 virtual const double * getRowPrice() const { return rowprice_; }
267
269 virtual const double * getReducedCost() const { return rc_; }
270
273 virtual const double * getRowActivity() const { return lhs_; }
274
276 virtual double getObjValue() const {
277 #if 1
278 // This does not pass unitTest if getObjValue is called before solve
279 return lagrangeanCost_;
280 #else
281 return OsiSolverInterface::getObjValue();
282 #endif
283 }
284
287 virtual int getIterationCount() const { return volprob_.iter(); }
288
306 virtual std::vector<double*> getDualRays(int maxNumRays,
307 bool fullRay = false) const;
319 virtual std::vector<double*> getPrimalRays(int maxNumRays) const;
320
321 #if 0
322
324 virtual OsiVectorInt getFractionalIndices(const double etol=1.e-05)
325 const;
326 #endif
327
328
329
330 //---------------------------------------------------------------------------
331
334 //-------------------------------------------------------------------------
338 virtual void setObjCoeff( int elementIndex, double elementValue ) {
339 objcoeffs_[elementIndex] = elementValue;
340 }
341
342 using OsiSolverInterface::setColLower ;
345 virtual void setColLower( int elementIndex, double elementValue ) {
346 collower_[elementIndex] = elementValue;
347 }
348
349 using OsiSolverInterface::setColUpper ;
352 virtual void setColUpper( int elementIndex, double elementValue ) {
353 colupper_[elementIndex] = elementValue;
354 }
355
357 virtual void setColBounds( int elementIndex,
358 double lower, double upper ) {
359 collower_[elementIndex] = lower;
360 colupper_[elementIndex] = upper;
361 }
362
371 virtual void setColSetBounds(const int* indexFirst,
372 const int* indexLast,
373 const double* boundList);
374
377 virtual void setRowLower( int elementIndex, double elementValue ) {
378 rowlower_[elementIndex] = elementValue;
379 convertBoundToSense(elementValue, rowupper_[elementIndex],
380 rowsense_[elementIndex], rhs_[elementIndex],
381 rowrange_[elementIndex]);
382 }
383
386 virtual void setRowUpper( int elementIndex, double elementValue ) {
387 rowupper_[elementIndex] = elementValue;
388 convertBoundToSense(rowlower_[elementIndex], elementValue,
389 rowsense_[elementIndex], rhs_[elementIndex],
390 rowrange_[elementIndex]);
391 }
392
394 virtual void setRowBounds( int elementIndex,
395 double lower, double upper ) {
396 rowlower_[elementIndex] = lower;
397 rowupper_[elementIndex] = upper;
398 convertBoundToSense(lower, upper,
399 rowsense_[elementIndex], rhs_[elementIndex],
400 rowrange_[elementIndex]);
401 }
402
404 virtual void setRowType(int index, char sense, double rightHandSide,
405 double range) {
406 rowsense_[index] = sense;
407 rhs_[index] = rightHandSide;
408 rowrange_[index] = range;
409 convertSenseToBound(sense, rightHandSide, range,
410 rowlower_[index], rowupper_[index]);
411 }
412
421 virtual void setRowSetBounds(const int* indexFirst,
422 const int* indexLast,
423 const double* boundList);
424
435 virtual void setRowSetTypes(const int* indexFirst,
436 const int* indexLast,
437 const char* senseList,
438 const double* rhsList,
439 const double* rangeList);
441
442 //-------------------------------------------------------------------------
446 virtual void setContinuous(int index);
448 virtual void setInteger(int index);
451 virtual void setContinuous(const int* indices, int len);
454 virtual void setInteger(const int* indices, int len);
456
457 //-------------------------------------------------------------------------
459 virtual void setObjSense(double s ) { objsense_ = s < 0 ? -1.0 : 1.0; }
460
471 virtual void setColSolution(const double * colsol);
472
483 virtual void setRowPrice(const double * rowprice);
484
485 //-------------------------------------------------------------------------
490
491 using OsiSolverInterface::addCol ;
493 virtual void addCol(const CoinPackedVectorBase& vec,
494 const double collb, const double colub,
495 const double obj);
496
497 using OsiSolverInterface::addCols ;
499 virtual void addCols(const int numcols,
500 const CoinPackedVectorBase * const * cols,
501 const double* collb, const double* colub,
502 const double* obj);
503 #if 0
504
505 virtual void addCols(const CoinPackedMatrix& matrix,
506 const double* collb, const double* colub,
507 const double* obj);
508 #endif
509
510 virtual void deleteCols(const int num, const int * colIndices);
511
512 using OsiSolverInterface::addRow ;
514 virtual void addRow(const CoinPackedVectorBase& vec,
515 const double rowlb, const double rowub);
517 virtual void addRow(const CoinPackedVectorBase& vec,
518 const char rowsen, const double rowrhs,
519 const double rowrng);
520
521 using OsiSolverInterface::addRows ;
523 virtual void addRows(const int numrows,
524 const CoinPackedVectorBase * const * rows,
525 const double* rowlb, const double* rowub);
527 virtual void addRows(const int numrows,
528 const CoinPackedVectorBase * const * rows,
529 const char* rowsen, const double* rowrhs,
530 const double* rowrng);
531 #if 0
532
533 virtual void addRows(const CoinPackedMatrix& matrix,
534 const double* rowlb, const double* rowub);
536 virtual void addRows(const CoinPackedMatrix& matrix,
537 const char* rowsen, const double* rowrhs,
538 const double* rowrng);
539 #endif
540
541 virtual void deleteRows(const int num, const int * rowIndices);
542
543 //-----------------------------------------------------------------------
544 #if 0
545
566 virtual ApplyCutsReturnCode applyCuts(const OsiCuts & cs,
567 double effectivenessLb = 0.0);
568 #endif
569
570
571
572 //---------------------------------------------------------------------------
573
574 protected:
576 void initFromRlbRub(const int rownum,
577 const double* rowlb, const double* rowub);
578 void initFromRhsSenseRange(const int rownum, const char* rowsen,
579 const double* rowrhs, const double* rowrng);
580 void initFromClbCubObj(const int colnum, const double* collb,
581 const double* colub, const double* obj);
582 public:
583
597 virtual void loadProblem(const CoinPackedMatrix& matrix,
598 const double* collb, const double* colub,
599 const double* obj,
600 const double* rowlb, const double* rowub);
601
609 virtual void assignProblem(CoinPackedMatrix*& matrix,
610 double*& collb, double*& colub, double*& obj,
611 double*& rowlb, double*& rowub);
612
625 virtual void loadProblem(const CoinPackedMatrix& matrix,
626 const double* collb, const double* colub,
627 const double* obj,
628 const char* rowsen, const double* rowrhs,
629 const double* rowrng);
630
638 virtual void assignProblem(CoinPackedMatrix*& matrix,
639 double*& collb, double*& colub, double*& obj,
640 char*& rowsen, double*& rowrhs,
641 double*& rowrng);
642
645 virtual void loadProblem(const int numcols, const int numrows,
646 const int* start, const int* index,
647 const double* value,
648 const double* collb, const double* colub,
649 const double* obj,
650 const double* rowlb, const double* rowub);
651
654 virtual void loadProblem(const int numcols, const int numrows,
655 const int* start, const int* index,
656 const double* value,
657 const double* collb, const double* colub,
658 const double* obj,
659 const char* rowsen, const double* rowrhs,
660 const double* rowrng);
661
662 using OsiSolverInterface::readMps ;
664 virtual int readMps(const char *filename,
665 const char *extension = "mps");
666
671 virtual void writeMps(const char *filename,
672 const char *extension = "mps",
673 double objSense=0.0) const;
675
676 //---------------------------------------------------------------------------
677
680 VOL_problem* volprob() { return &volprob_; }
683
684 //---------------------------------------------------------------------------
685
688 OsiTestSolverInterface ();
690
692 virtual OsiSolverInterface * clone(bool copyData = true) const;
693
695 OsiTestSolverInterface (const OsiTestSolverInterface &);
696
698 OsiTestSolverInterface & operator=(const OsiTestSolverInterface& rhs);
699
701 virtual ~OsiTestSolverInterface ();
703
704 //---------------------------------------------------------------------------
705
706 protected:
708
709
710 virtual void applyRowCut(const OsiRowCut& rc);
711
713 virtual void applyColCut(const OsiColCut& cc);
715
716 //---------------------------------------------------------------------------
717
718 private:
721 virtual int compute_rc(const VOL_dvector& u, VOL_dvector& rc);
724 virtual int solve_subproblem(const VOL_dvector& dual,
725 const VOL_dvector& rc,
726 double& lcost, VOL_dvector& x, VOL_dvector& v,
727 double& pcost);
730 virtual int heuristics(const VOL_problem& /*p*/,
731 const VOL_dvector& /*x*/, double& heur_val) {
732 heur_val = COIN_DBL_MAX;
733 return 0;
734 }
736
737 //---------------------------------------------------------------------------
738
739 private:
743 void updateRowMatrix_() const;
745 void updateColMatrix_() const;
746
749 void checkData_() const;
752 void compute_rc_(const double* u, double* rc) const;
754 void gutsOfDestructor_();
755
758 void rowRimAllocator_();
761 void colRimAllocator_();
762
764 void rowRimResize_(const int newSize);
766 void colRimResize_(const int newSize);
767
769 void convertBoundsToSenses_();
771 void convertSensesToBounds_();
772
774 bool test_zero_one_minusone_(const CoinPackedMatrix& m) const;
776
777 //---------------------------------------------------------------------------
778
779 private:
780
781 //---------------------------------------------------------------------------
785 mutable bool rowMatrixCurrent_;
788 mutable CoinPackedMatrix rowMatrix_;
790 mutable bool colMatrixCurrent_;
792 mutable CoinPackedMatrix colMatrix_;
794
795 //---------------------------------------------------------------------------
798 bool isZeroOneMinusOne_;
801 OsiVolMatrixOneMinusOne_* rowMatrixOneMinusOne_;
803 OsiVolMatrixOneMinusOne_* colMatrixOneMinusOne_;
805
806 //---------------------------------------------------------------------------
809 double *colupper_;
812 double *collower_;
814 bool *continuous_;
816 double *rowupper_;
818 double *rowlower_;
820 char *rowsense_;
822 double *rhs_;
825 double *rowrange_;
827 double *objcoeffs_;
829
830 //---------------------------------------------------------------------------
832 double objsense_;
833
834 //---------------------------------------------------------------------------
837 double *colsol_;
840 double *rowprice_;
842 double *rc_;
844 double *lhs_;
846 double lagrangeanCost_;
848
849 //---------------------------------------------------------------------------
852 double *rowpriceHotStart_;
853
855 int maxNumrows_;
857 int maxNumcols_;
858
860 VOL_problem volprob_;
861 };
862
864 void
865 OsiTestSolverInterfaceUnitTest(const std::string & mpsDir, const std::string & netlibDir);
866
867 #endif
OsiTestSolverInterface::getDualRays
virtual std::vector< double * > getDualRays(int maxNumRays, bool fullRay=false) const
Get as many dual rays as the solver can provide.
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::OsiVolMatrixOneMinusOne_
OsiVolMatrixOneMinusOne_(const CoinPackedMatrix &m)
OsiSolverInterface::setColLower
virtual void setColLower(int elementIndex, double elementValue)=0
Set a single column lower bound.
CoinPackedMatrix.hpp
OsiTestSolverInterface::rhs_
double * rhs_
Pointer to dense vector of row right-hand side values.
Definition: OsiTestSolverInterface.hpp:822
OsiTestSolverInterface::objcoeffs_
double * objcoeffs_
Pointer to dense vector of objective coefficients.
Definition: OsiTestSolverInterface.hpp:827
OsiTestSolverInterface::getRowLower
virtual const double * getRowLower() const
Get pointer to array[getNumRows()] of row lower bounds.
Definition: OsiTestSolverInterface.hpp:219
OsiTestSolverInterface::isProvenOptimal
virtual bool isProvenOptimal() const
Is optimality proven?
OsiTestSolverInterface::volprob
VOL_problem * volprob()
Get pointer to Vol model.
Definition: OsiTestSolverInterface.hpp:681
OsiTestSolverInterface::getIntParam
bool getIntParam(OsiIntParam key, int &value) const
Get an integer parameter.
OsiTestSolverInterface::colRimResize_
void colRimResize_(const int newSize)
Reallocate the rim arrays corresponding to the columns.
OsiIntParam
OsiIntParam
Definition: OsiSolverParameters.hpp:8
OsiTestSolverInterface::isAbandoned
virtual bool isAbandoned() const
Are there a numerical difficulties?
OsiTestSolverInterface::branchAndBound
virtual void branchAndBound()
Invoke solver&#39;s built-in enumeration algorithm.
Definition: OsiTestSolverInterface.hpp:63
OsiTestSolverInterface::getMatrixByCol
virtual const CoinPackedMatrix * getMatrixByCol() const
Get pointer to column-wise copy of matrix.
OsiTestSolverInterface::rowpriceHotStart_
double * rowpriceHotStart_
An array to store the hotstart information between solveHotStart() calls.
Definition: OsiTestSolverInterface.hpp:852
OsiSolverInterface::convertSenseToBound
void convertSenseToBound(const char sense, const double right, const double range, double &lower, double &upper) const
A quick inlined function to convert from the sense/rhs/range style of constraint definition to the lb...
Definition: OsiSolverInterface.hpp:2115
OsiTestSolverInterface::getMatrixByRow
virtual const CoinPackedMatrix * getMatrixByRow() const
Get pointer to row-wise copy of matrix.
OsiTestSolverInterface::rowMatrixCurrent_
bool rowMatrixCurrent_
A flag indicating whether the row ordered matrix is up-to-date.
Definition: OsiTestSolverInterface.hpp:786
OsiTestSolverInterface::isProvenPrimalInfeasible
virtual bool isProvenPrimalInfeasible() const
Is primal infeasiblity proven?
OsiTestSolverInterface::lagrangeanCost_
double lagrangeanCost_
The Lagrangean cost, a lower bound on the objective value.
Definition: OsiTestSolverInterface.hpp:846
OsiTestSolverInterface::getRowPrice
virtual const double * getRowPrice() const
Get pointer to array[getNumRows()] of dual prices.
Definition: OsiTestSolverInterface.hpp:266
OsiColCut
Column Cut Class.
Definition: OsiColCut.hpp:23
OsiTestSolverInterface::initFromRhsSenseRange
void initFromRhsSenseRange(const int rownum, const char *rowsen, const double *rowrhs, const double *rowrng)
OsiSolverInterface::addCol
virtual void addCol(const CoinPackedVectorBase &vec, const double collb, const double colub, const double obj)=0
Add a column (primal variable) to the problem.
OsiRowCut
Row Cut Class.
Definition: OsiRowCut.hpp:29
OsiTestSolverInterface::getRightHandSide
virtual const double * getRightHandSide() const
Get pointer to array[getNumRows()] of rows right-hand sides.
Definition: OsiTestSolverInterface.hpp:206
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::plusStart_
int * plusStart_
Definition: OsiTestSolverInterface.hpp:38
OsiTestSolverInterface::checkData_
void checkData_() const
Test whether the Volume Algorithm can be applied to the given problem.
OsiTestSolverInterface::colupper_
double * colupper_
Pointer to dense vector of structural variable upper bounds.
Definition: OsiTestSolverInterface.hpp:810
OsiTestSolverInterface::gutsOfDestructor_
void gutsOfDestructor_()
A method deleting every member data.
OsiTestSolverInterface::setRowLower
virtual void setRowLower(int elementIndex, double elementValue)
Set a single row lower bound Use -COIN_DBL_MAX for -infinity.
Definition: OsiTestSolverInterface.hpp:377
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::minusInd_
int * minusInd_
Definition: OsiTestSolverInterface.hpp:42
OsiTestInfinity
static const double OsiTestInfinity
Definition: OsiTestSolverInterface.hpp:18
OsiTestSolverInterface::setStrParam
bool setStrParam(OsiStrParam key, const std::string &value)
Set a string parameter.
OsiTestSolverInterface::getRowActivity
virtual const double * getRowActivity() const
Get pointer to array[getNumRows()] of row activity levels (constraint matrix times the solution vecto...
Definition: OsiTestSolverInterface.hpp:273
OsiTestSolverInterface::setColLower
virtual void setColLower(int elementIndex, double elementValue)
Set a single column lower bound Use -COIN_DBL_MAX for -infinity.
Definition: OsiTestSolverInterface.hpp:345
OsiTestSolverInterface::setObjSense
virtual void setObjSense(double s)
Set objective function sense (1 for min (default), -1 for max,)
Definition: OsiTestSolverInterface.hpp:459
OsiTestSolverInterface::getColSolution
virtual const double * getColSolution() const
Get pointer to array[getNumCols()] of primal solution vector.
Definition: OsiTestSolverInterface.hpp:263
OsiTestSolverInterface::updateColMatrix_
void updateColMatrix_() const
Update the column ordered matrix from the row ordered one.
OsiTestSolverInterface::convertBoundsToSenses_
void convertBoundsToSenses_()
For each row convert LB/UB style row constraints to sense/rhs style.
OsiTestSolverInterface::getStrParam
bool getStrParam(OsiStrParam key, std::string &value) const
Get a string parameter.
OsiTestSolverInterface::getDblParam
bool getDblParam(OsiDblParam key, double &value) const
Get a double parameter.
OsiTestSolverInterface::solveFromHotStart
virtual void solveFromHotStart()
Optimize starting from the hotstart.
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::minusLength_
int * minusLength_
Definition: OsiTestSolverInterface.hpp:44
OsiTestSolverInterface::colRimAllocator_
void colRimAllocator_()
A method allocating sufficient space for the rim vectors corresponding to the columns.
OsiTestSolverInterface::heuristics
virtual int heuristics(const VOL_problem &, const VOL_dvector &, double &heur_val)
Starting from the primal vector x, run a heuristic to produce an integer solution.
Definition: OsiTestSolverInterface.hpp:730
OsiTestSolverInterface::getObjValue
virtual double getObjValue() const
Get objective function value.
Definition: OsiTestSolverInterface.hpp:276
OsiTestSolverInterface::getEmptyWarmStart
virtual CoinWarmStart * getEmptyWarmStart() const
Get an empty warm start object.
OsiTestSolverInterface::colMatrix_
CoinPackedMatrix colMatrix_
The problem matrix in a column ordered form.
Definition: OsiTestSolverInterface.hpp:792
CoinPackedMatrix::getNumRows
int getNumRows() const
Number of rows.
Definition: CoinPackedMatrix.hpp:114
OsiTestSolverInterface::operator=
OsiTestSolverInterface & operator=(const OsiTestSolverInterface &rhs)
Assignment operator.
OsiTestSolverInterface::colMatrixOneMinusOne_
OsiVolMatrixOneMinusOne_ * colMatrixOneMinusOne_
The column ordered matrix without the elements.
Definition: OsiTestSolverInterface.hpp:803
OsiTestSolverInterface::isZeroOneMinusOne_
bool isZeroOneMinusOne_
An indicator whether the matrix is 0/1/-1.
Definition: OsiTestSolverInterface.hpp:799
OsiTestSolverInterface::rowMatrix_
CoinPackedMatrix rowMatrix_
The problem matrix in a row ordered form.
Definition: OsiTestSolverInterface.hpp:788
OsiTestSolverInterface::setColSetBounds
virtual void setColSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of columns simultaneously The default implementation just invokes setColL...
OsiTestSolverInterface::initialSolve
virtual void initialSolve()
Solve initial LP relaxation.
CoinPackedMatrix
Sparse Matrix Base Class.
Definition: CoinPackedMatrix.hpp:79
OsiTestSolverInterface::rc_
double * rc_
Pointer to dense vector of reduced costs.
Definition: OsiTestSolverInterface.hpp:842
OsiTestSolverInterface::setColBounds
virtual void setColBounds(int elementIndex, double lower, double upper)
Set a single column lower and upper bound.
Definition: OsiTestSolverInterface.hpp:357
OsiTestSolverInterface::setInteger
virtual void setInteger(int index)
Set the index-th variable to be an integer variable.
OsiTestSolverInterface::getColLower
virtual const double * getColLower() const
Get pointer to array[getNumCols()] of column lower bounds.
Definition: OsiTestSolverInterface.hpp:182
VOL_dvector
vector of doubles.
Definition: OsiTestSolver.hpp:150
OsiTestSolverInterface::updateRowMatrix_
void updateRowMatrix_() const
Update the row ordered matrix from the column ordered one.
OsiCuts
Collections of row cuts and column cuts.
Definition: OsiCuts.hpp:19
OsiTestSolverInterface::maxNumcols_
int maxNumcols_
allocated size of the column related rim vectors
Definition: OsiTestSolverInterface.hpp:857
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::~OsiVolMatrixOneMinusOne_
~OsiVolMatrixOneMinusOne_()
OsiSolverInterface::readMps
virtual int readMps(const char *filename, const char *extension="mps")
Read a problem in MPS format from the given filename.
OsiTestSolverInterface::getWarmStart
virtual CoinWarmStart * getWarmStart() const
Get warmstarting information.
OsiSolverInterface::setColUpper
virtual void setColUpper(int elementIndex, double elementValue)=0
Set a single column upper bound.
OsiTestSolverInterface::loadProblem
virtual void loadProblem(const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub)
Load in an problem by copying the arguments (the constraints on the rows are given by lower and upper...
OsiTestSolverInterface::getInfinity
virtual double getInfinity() const
Get solver&#39;s value for infinity.
Definition: OsiTestSolverInterface.hpp:257
OsiTestSolverInterface::setRowSetTypes
virtual void setRowSetTypes(const int *indexFirst, const int *indexLast, const char *senseList, const double *rhsList, const double *rangeList)
Set the type of a number of rows simultaneously The default implementation just invokes setRowType()...
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::plusLength_
int * plusLength_
Definition: OsiTestSolverInterface.hpp:39
OsiTestSolverInterface::getReducedCost
virtual const double * getReducedCost() const
Get a pointer to array[getNumCols()] of reduced costs.
Definition: OsiTestSolverInterface.hpp:269
OsiTestSolverInterface::rowRimAllocator_
void rowRimAllocator_()
A method allocating sufficient space for the rim vectors corresponding to the rows.
OsiTestSolverInterfaceUnitTest
void OsiTestSolverInterfaceUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the OsiTestSolverInterface class.
OsiTestSolverInterface::setRowBounds
virtual void setRowBounds(int elementIndex, double lower, double upper)
Set a single row lower and upper bound.
Definition: OsiTestSolverInterface.hpp:394
CoinPackedVectorBase
Abstract base class for various sparse vectors.
Definition: CoinPackedVectorBase.hpp:23
OsiTestSolverInterface::addCol
virtual void addCol(const CoinPackedVectorBase &vec, const double collb, const double colub, const double obj)
Add a column (primal variable) to the problem.
OsiTestSolverInterface::compute_rc
virtual int compute_rc(const VOL_dvector &u, VOL_dvector &rc)
compute reduced costs
OsiVectorInt
std::vector< int > OsiVectorInt
Vector of int.
Definition: OsiCollections.hpp:22
VOL_problem
This class holds every data for the Volume Algorithm and its solve method must be invoked to solve th...
Definition: OsiTestSolver.hpp:607
OsiTestSolverInterface::continuous_
bool * continuous_
Pointer to dense vector of bool to indicate if column is continuous.
Definition: OsiTestSolverInterface.hpp:814
OsiTestSolverInterface::colMatrixCurrent_
bool colMatrixCurrent_
A flag indicating whether the column ordered matrix is up-to-date.
Definition: OsiTestSolverInterface.hpp:790
OsiSolverInterface::getObjValue
virtual double getObjValue() const =0
Get the objective function value.
OsiSolverInterface::getFractionalIndices
virtual OsiVectorInt getFractionalIndices(const double etol=1.e-05) const
Get vector of indices of primal variables which are integer variables but have fractional values in t...
OsiTestSolverInterface::rowsense_
char * rowsense_
Pointer to dense vector of row sense indicators.
Definition: OsiTestSolverInterface.hpp:820
OsiTestSolverInterface::setColUpper
virtual void setColUpper(int elementIndex, double elementValue)
Set a single column upper bound Use COIN_DBL_MAX for infinity.
Definition: OsiTestSolverInterface.hpp:352
OsiTestSolverInterface::unmarkHotStart
virtual void unmarkHotStart()
Delete the snapshot.
OsiStrParam
OsiStrParam
Definition: OsiSolverParameters.hpp:88
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::plusSize_
int plusSize_
Definition: OsiTestSolverInterface.hpp:36
OsiTestSolverInterface::collower_
double * collower_
Pointer to dense vector of structural variable lower bounds.
Definition: OsiTestSolverInterface.hpp:812
OsiSolverInterface::addCols
virtual void addCols(const int numcols, const CoinPackedVectorBase *const *cols, const double *collb, const double *colub, const double *obj)
Add a set of columns (primal variables) to the problem.
OsiTestSolverInterface::readMps
virtual int readMps(const char *filename, const char *extension="mps")
Read an mps file from the given filename.
OsiTestSolverInterface::OsiTestSolverInterfaceUnitTest
friend void OsiTestSolverInterfaceUnitTest(const std::string &mpsDir, const std::string &netlibDir)
A function that tests the methods in the OsiTestSolverInterface class.
OsiTestSolverInterface::isPrimalObjectiveLimitReached
virtual bool isPrimalObjectiveLimitReached() const
Is the given primal objective limit reached?
OsiSolverInterface::convertBoundToSense
void convertBoundToSense(const double lower, const double upper, char &sense, double &right, double &range) const
A quick inlined function to convert from the lb/ub style of constraint definition to the sense/rhs/ra...
Definition: OsiSolverInterface.hpp:2081
OsiTestSolverInterface::addCols
virtual void addCols(const int numcols, const CoinPackedVectorBase *const *cols, const double *collb, const double *colub, const double *obj)
Add a set of columns (primal variables) to the problem.
OsiSolverInterface::isBinary
virtual bool isBinary(int colIndex) const
Return true if the variable is binary.
OsiTestSolverInterface::~OsiTestSolverInterface
virtual ~OsiTestSolverInterface()
Destructor.
OsiTestSolverInterface::markHotStart
virtual void markHotStart()
Create a hotstart point of the optimization process.
OsiTestSolverInterface::getPrimalRays
virtual std::vector< double * > getPrimalRays(int maxNumRays) const
Get as many primal rays as the solver can provide.
OsiSolverInterface::addRows
virtual void addRows(const int numrows, const CoinPackedVectorBase *const *rows, const double *rowlb, const double *rowub)
OsiTestSolverInterface::setColSolution
virtual void setColSolution(const double *colsol)
Set the primal solution column values.
OsiTestSolverInterface::rowupper_
double * rowupper_
Pointer to dense vector of slack variable upper bounds.
Definition: OsiTestSolverInterface.hpp:816
OsiTestSolverInterface::getNumRows
virtual int getNumRows() const
Get number of rows.
Definition: OsiTestSolverInterface.hpp:172
CoinPackedMatrix::getNumCols
int getNumCols() const
Number of columns.
Definition: CoinPackedMatrix.hpp:110
OsiTestSolverInterface::solve_subproblem
virtual int solve_subproblem(const VOL_dvector &dual, const VOL_dvector &rc, double &lcost, VOL_dvector &x, VOL_dvector &v, double &pcost)
Solve the subproblem for the subgradient step.
OsiTestSolverInterface::addRow
virtual void addRow(const CoinPackedVectorBase &vec, const double rowlb, const double rowub)
Add a row (constraint) to the problem.
OsiTestSolverInterface::setRowPrice
virtual void setRowPrice(const double *rowprice)
Set dual solution vector.
OsiSolverInterface.hpp
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::majorDim_
int majorDim_
Definition: OsiTestSolverInterface.hpp:33
OsiTestSolverInterface::convertSensesToBounds_
void convertSensesToBounds_()
For each row convert sense/rhs style row constraints to LB/UB style.
OsiSolverInterface
Abstract Base Class for describing an interface to a solver.
Definition: OsiSolverInterface.hpp:62
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::minusStart_
int * minusStart_
Definition: OsiTestSolverInterface.hpp:43
OsiTestSolverInterface::compute_rc_
void compute_rc_(const double *u, double *rc) const
Compute the reduced costs (rc) with respect to the dual values given in u.
OsiTestSolverInterface::isIterationLimitReached
virtual bool isIterationLimitReached() const
Iteration limit reached?
OsiTestSolver.hpp
COIN_DBL_MAX
const double COIN_DBL_MAX
Definition: CoinFinite.hpp:18
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::plusInd_
int * plusInd_
Definition: OsiTestSolverInterface.hpp:37
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::minusSize_
int minusSize_
Definition: OsiTestSolverInterface.hpp:41
OsiTestSolverInterface::getRowUpper
virtual const double * getRowUpper() const
Get pointer to array[getNumRows()] of row upper bounds.
Definition: OsiTestSolverInterface.hpp:222
OsiTestSolverInterface::lhs_
double * lhs_
Pointer to dense vector of left hand sides (row activity levels)
Definition: OsiTestSolverInterface.hpp:844
OsiTestSolverInterface::getColUpper
virtual const double * getColUpper() const
Get pointer to array[getNumCols()] of column upper bounds.
Definition: OsiTestSolverInterface.hpp:185
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::minorDim_
int minorDim_
Definition: OsiTestSolverInterface.hpp:34
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_::timesMajor
void timesMajor(const double *x, double *y) const
OsiTestSolverInterface::setContinuous
virtual void setContinuous(int index)
Set the index-th variable to be a continuous variable.
OsiTestSolverInterface::setWarmStart
virtual bool setWarmStart(const CoinWarmStart *warmstart)
Set warmstarting information.
OsiTestSolverInterface::rowRimResize_
void rowRimResize_(const int newSize)
Reallocate the rim arrays corresponding to the rows.
OsiTestSolverInterface::rowlower_
double * rowlower_
Pointer to dense vector of slack variable lower bounds.
Definition: OsiTestSolverInterface.hpp:818
OsiSolverInterface::addRow
virtual void addRow(const CoinPackedVectorBase &vec, const double rowlb, const double rowub)=0
Add a row (constraint) to the problem.
CoinWarmStart
Abstract base class for warm start information.
Definition: CoinWarmStart.hpp:21
OsiTestSolverInterface::setObjCoeff
virtual void setObjCoeff(int elementIndex, double elementValue)
Set an objective function coefficient.
Definition: OsiTestSolverInterface.hpp:338
CoinError
Error Class thrown by an exception.
Definition: CoinError.hpp:42
OsiTestSolverInterface::setDblParam
bool setDblParam(OsiDblParam key, double value)
Set a double parameter.
OsiTestSolverInterface::setIntParam
bool setIntParam(OsiIntParam key, int value)
Set an integer parameter.
VOL_problem::iter
int iter() const
returns the iteration number
Definition: OsiTestSolver.hpp:683
OsiTestSolverInterface::objsense_
double objsense_
Sense of objective (1 for min; -1 for max)
Definition: OsiTestSolverInterface.hpp:832
OsiTestSolverInterface::getRowRange
virtual const double * getRowRange() const
Get pointer to array[getNumRows()] of row ranges.
Definition: OsiTestSolverInterface.hpp:216
OsiTestSolverInterface::OsiTestSolverInterface
OsiTestSolverInterface()
Default Constructor.
OsiTestSolverInterface::setRowType
virtual void setRowType(int index, char sense, double rightHandSide, double range)
Set the type of a single row
Definition: OsiTestSolverInterface.hpp:404
OsiTestSolverInterface::getObjSense
virtual double getObjSense() const
Get objective function sense (1 for min (default), -1 for max)
Definition: OsiTestSolverInterface.hpp:228
OsiSolverInterface::isInteger
virtual bool isInteger(int colIndex) const
Return true if the variable is integer.
OsiTestSolverInterface::getRowSense
virtual const char * getRowSense() const
Get pointer to array[getNumRows()] of row constraint senses.
Definition: OsiTestSolverInterface.hpp:196
OsiTestSolverInterface::resolve
virtual void resolve()
Resolve an LP relaxation after problem modification.
OsiTestSolverInterface::getNumElements
virtual int getNumElements() const
Get number of nonzero elements.
Definition: OsiTestSolverInterface.hpp:177
OsiDblParam
OsiDblParam
Definition: OsiSolverParameters.hpp:52
OsiTestSolverInterface::rowrange_
double * rowrange_
Pointer to dense vector of slack upper bounds for range constraints (undefined for non-range rows)...
Definition: OsiTestSolverInterface.hpp:825
OsiSolverInterface::isFreeBinary
virtual bool isFreeBinary(int colIndex) const
Return true if the variable is binary and not fixed.
OsiTestSolverInterface::volprob_
VOL_problem volprob_
The volume solver.
Definition: OsiTestSolverInterface.hpp:860
OsiTestSolverInterface::getNumCols
virtual int getNumCols() const
Get number of columns.
Definition: OsiTestSolverInterface.hpp:167
OsiTestSolverInterface::OsiVolMatrixOneMinusOne_
Definition: OsiTestSolverInterface.hpp:32
OsiTestSolverInterface::getIterationCount
virtual int getIterationCount() const
Get how many iterations it took to solve the problem (whatever &quot;iteration&quot; mean to the solver...
Definition: OsiTestSolverInterface.hpp:287
OsiTestSolverInterface::colsol_
double * colsol_
Pointer to dense vector of primal structural variable values.
Definition: OsiTestSolverInterface.hpp:838
OsiTestSolverInterface::getObjCoefficients
virtual const double * getObjCoefficients() const
Get pointer to array[getNumCols()] of objective function coefficients.
Definition: OsiTestSolverInterface.hpp:225
OsiTestSolverInterface::isContinuous
virtual bool isContinuous(int colNumber) const
Return true if column is continuous.
VOL_user_hooks
The user hooks should be overridden by the user to provide the problem specific routines for the volu...
Definition: OsiTestSolver.hpp:565
OsiTestSolverInterface::assignProblem
virtual void assignProblem(CoinPackedMatrix *&matrix, double *&collb, double *&colub, double *&obj, double *&rowlb, double *&rowub)
Load in an problem by assuming ownership of the arguments (the constraints on the rows are given by l...
OsiTestSolverInterface::applyRowCut
virtual void applyRowCut(const OsiRowCut &rc)
Apply a row cut (append to constraint matrix).
OsiTestSolverInterface::initFromRlbRub
void initFromRlbRub(const int rownum, const double *rowlb, const double *rowub)
OsiSolverInterface::applyCuts
virtual ApplyCutsReturnCode applyCuts(const OsiCuts &cs, double effectivenessLb=0.0)
Apply a collection of cuts.
OsiTestSolverInterface::applyColCut
virtual void applyColCut(const OsiColCut &cc)
Apply a column cut (adjust one or more bounds).
OsiTestSolverInterface::rowprice_
double * rowprice_
Pointer to dense vector of dual row variable values.
Definition: OsiTestSolverInterface.hpp:840
OsiTestSolverInterface::maxNumrows_
int maxNumrows_
allocated size of the row related rim vectors
Definition: OsiTestSolverInterface.hpp:855
CoinPackedMatrix::getNumElements
CoinBigIndex getNumElements() const
Number of entries in the packed matrix.
Definition: CoinPackedMatrix.hpp:107
OsiTestSolverInterface::writeMps
virtual void writeMps(const char *filename, const char *extension="mps", double objSense=0.0) const
Write the problem into an mps file of the given filename.
OsiTestSolverInterface::test_zero_one_minusone_
bool test_zero_one_minusone_(const CoinPackedMatrix &m) const
test whether the given matrix is 0/1/-1 entries only.
OsiTestSolverInterface::deleteCols
virtual void deleteCols(const int num, const int *colIndices)
Remove a set of columns (primal variables) from the problem.
OsiTestSolverInterface::isDualObjectiveLimitReached
virtual bool isDualObjectiveLimitReached() const
Is the given dual objective limit reached?
OsiSolverInterface::isIntegerNonBinary
virtual bool isIntegerNonBinary(int colIndex) const
Return true if the variable is general integer.
OsiTestSolverInterface
Vol(ume) Solver Interface.
Definition: OsiTestSolverInterface.hpp:27
OsiTestSolverInterface::isProvenDualInfeasible
virtual bool isProvenDualInfeasible() const
Is dual infeasiblity proven?
OsiTestSolverInterface::clone
virtual OsiSolverInterface * clone(bool copyData=true) const
Clone.
OsiTestSolverInterface::addRows
virtual void addRows(const int numrows, const CoinPackedVectorBase *const *rows, const double *rowlb, const double *rowub)
OsiTestSolverInterface::setRowSetBounds
virtual void setRowSetBounds(const int *indexFirst, const int *indexLast, const double *boundList)
Set the bounds on a number of rows simultaneously The default implementation just invokes setRowLowe...
OsiTestSolverInterface::setRowUpper
virtual void setRowUpper(int elementIndex, double elementValue)
Set a single row upper bound Use COIN_DBL_MAX for infinity.
Definition: OsiTestSolverInterface.hpp:386
OsiTestSolverInterface::deleteRows
virtual void deleteRows(const int num, const int *rowIndices)
Delete a set of rows (constraints) from the problem.
OsiTestSolverInterface::rowMatrixOneMinusOne_
OsiVolMatrixOneMinusOne_ * rowMatrixOneMinusOne_
The row ordered matrix without the elements.
Definition: OsiTestSolverInterface.hpp:801
OsiTestSolverInterface::initFromClbCubObj
void initFromClbCubObj(const int colnum, const double *collb, const double *colub, const double *obj)