4 #ifndef OsiVolSolverInterface_H
5 #define OsiVolSolverInterface_H
9 #include "VolVolume.hpp"
11 #include "CoinPackedMatrix.hpp"
46 void timesMajor(
const double* x,
double* y)
const;
61 throw CoinError(
"Sorry, the Volume Algorithm doesn't implement B&B",
62 "branchAndBound",
"OsiVolSolverInterface");
130 virtual bool setWarmStart(
const CoinWarmStart* warmstart);
231 virtual bool isBinary(
int colNumber)
const;
238 virtual bool isInteger(
int colNumber)
const;
297 virtual std::vector<double*>
getDualRays(
int maxNumRays)
const;
309 virtual std::vector<double*>
getPrimalRays(
int maxNumRays)
const;
328 virtual void setObjCoeff(
int elementIndex,
double elementValue ) {
335 virtual void setColLower(
int elementIndex,
double elementValue ) {
342 virtual void setColUpper(
int elementIndex,
double elementValue ) {
348 double lower,
double upper ) {
362 const int* indexLast,
363 const double* boundList);
367 virtual void setRowLower(
int elementIndex,
double elementValue ) {
376 virtual void setRowUpper(
int elementIndex,
double elementValue ) {
385 double lower,
double upper ) {
394 virtual void setRowType(
int index,
char sense,
double rightHandSide,
397 rhs_[index] = rightHandSide;
412 const int* indexLast,
413 const double* boundList);
426 const int* indexLast,
427 const char* senseList,
428 const double* rhsList,
429 const double* rangeList);
444 virtual void setInteger(
const int* indices,
int len);
483 virtual void addCol(
const CoinPackedVectorBase& vec,
484 const double collb,
const double colub,
489 virtual void addCols(
const int numcols,
490 const CoinPackedVectorBase *
const * cols,
491 const double* collb,
const double* colub,
495 virtual void addCols(
const CoinPackedMatrix& matrix,
496 const double* collb,
const double* colub,
500 virtual void deleteCols(
const int num,
const int * colIndices);
504 virtual void addRow(
const CoinPackedVectorBase& vec,
505 const double rowlb,
const double rowub);
507 virtual void addRow(
const CoinPackedVectorBase& vec,
508 const char rowsen,
const double rowrhs,
509 const double rowrng);
513 virtual void addRows(
const int numrows,
514 const CoinPackedVectorBase *
const * rows,
515 const double* rowlb,
const double* rowub);
517 virtual void addRows(
const int numrows,
518 const CoinPackedVectorBase *
const * rows,
519 const char* rowsen,
const double* rowrhs,
520 const double* rowrng);
523 virtual void addRows(
const CoinPackedMatrix& matrix,
524 const double* rowlb,
const double* rowub);
526 virtual void addRows(
const CoinPackedMatrix& matrix,
527 const char* rowsen,
const double* rowrhs,
528 const double* rowrng);
531 virtual void deleteRows(
const int num,
const int * rowIndices);
557 double effectivenessLb = 0.0);
567 const double* rowlb,
const double* rowub);
569 const double* rowrhs,
const double* rowrng);
571 const double* colub,
const double* obj);
587 virtual void loadProblem(
const CoinPackedMatrix& matrix,
588 const double* collb,
const double* colub,
590 const double* rowlb,
const double* rowub);
600 double*& collb,
double*& colub,
double*& obj,
601 double*& rowlb,
double*& rowub);
615 virtual void loadProblem(
const CoinPackedMatrix& matrix,
616 const double* collb,
const double* colub,
618 const char* rowsen,
const double* rowrhs,
619 const double* rowrng);
629 double*& collb,
double*& colub,
double*& obj,
630 char*& rowsen,
double*& rowrhs,
635 virtual void loadProblem(
const int numcols,
const int numrows,
636 const int* start,
const int* index,
638 const double* collb,
const double* colub,
640 const double* rowlb,
const double* rowub);
644 virtual void loadProblem(
const int numcols,
const int numrows,
645 const int* start,
const int* index,
647 const double* collb,
const double* colub,
649 const char* rowsen,
const double* rowrhs,
650 const double* rowrng);
654 virtual int readMps(
const char *filename,
655 const char *extension =
"mps");
661 virtual void writeMps(
const char *filename,
662 const char *extension =
"mps",
663 double objSense=0.0)
const;
711 virtual int compute_rc(
const VOL_dvector& u, VOL_dvector& rc);
715 const VOL_dvector& rc,
716 double& lcost, VOL_dvector& x, VOL_dvector& v,
721 const VOL_dvector& ,
double& heur_val) {
742 void compute_rc_(
const double* u,
double* rc)
const;