25     const std::string &mpsDir);
 
   35     const int *colIndices,
 
   36     const double *lbElements);
 
   44     const int *colIndices,
 
   45     const double *ubElements);
 
   64   using OsiCut::operator==;
 
   72   using OsiCut::operator!=;
 
  113   virtual double violated(
const double *solution) 
const;
 
  138   virtual void print() 
const;
 
  157   const int *colIndices,
 
  158   const double *lbElements)
 
  165   const int *colIndices,
 
  166   const double *ubElements)
 
  200   if (this->OsiCut::operator!=(rhs))
 
  212   return !((*this) == rhs);
 
  256   for ( i=0; i<cutLbs.size(); i++ ) {
 
  257     int colIndx = cutLbs.indices()[i];
 
  259     if ( cutLbs.elements()[i] > oldColLb[colIndx] )
 
  260       newLb = cutLbs.elements()[i];
 
  262       newLb = oldColLb[colIndx];
 
  264     double newUb = oldColUb[colIndx];
 
  265     if ( cutUbs.indexExists(colIndx) )
 
  266       if ( cutUbs[colIndx] < newUb ) newUb = cutUbs[colIndx];
 
  271   for ( i=0; i<cutUbs.size(); i++ ) {
 
  272     int colIndx = cutUbs.indices()[i];
 
  273     double newUb = cutUbs.elements()[i] < oldColUb[colIndx] ? cutUbs.elements()[i] : oldColUb[colIndx];
 
  274     double newLb = oldColLb[colIndx];
 
  275     if ( cutLbs.indexExists(colIndx) )
 
  276       if ( cutLbs[colIndx] > newLb ) newLb = cutLbs[colIndx];
 
  297     double newUb = oldColUb[colIndx];
 
  299       if (cutUbs[colIndx] < newUb)
 
  300         newUb = cutUbs[colIndx];
 
  308     double newLb = oldColLb[colIndx];
 
  310       if (cutLbs[colIndx] > newLb)
 
  311         newLb = cutLbs[colIndx];
 
virtual bool infeasible(const OsiSolverInterface &im) const 
Returns true if the cut is infeasible with respect to its bounds and the   column bounds in the solve...
 
CoinPackedVector lbs_
Lower bounds. 
 
virtual OsiColCut * clone() const 
Clone. 
 
void setLbs(int nElements, const int *colIndices, const double *lbElements)
Set column lower bounds. 
 
bool isExistingIndex(int i) const 
Return true if the i'th element of the full storage vector exists in the packed storage vector...
 
virtual int getNumElements() const 
Get the size. 
 
int getMinIndex() const 
Get value of minimum index. 
 
virtual const double * getElements() const 
Get element values. 
 
virtual bool operator==(const OsiColCut &rhs) const 
equal - true if lower bounds, upper bounds,   and OsiCut are equal. 
 
virtual ~OsiColCut()
Destructor. 
 
virtual int getNumCols() const =0
Get the number of columns. 
 
virtual void print() const 
Print cuts in collection. 
 
Abstract Base Class for describing an interface to a solver. 
 
CoinPackedVector ubs_
Upper bounds. 
 
friend void OsiColCutUnitTest(const OsiSolverInterface *baseSiP, const std::string &mpsDir)
A function that tests the methods in the OsiColCut class. 
 
OsiColCut()
Default Constructor. 
 
virtual const double * getColLower() const =0
Get a pointer to an array[getNumCols()] of column lower bounds. 
 
virtual bool consistent() const 
Returns true if the cut is consistent with respect to itself. 
 
void setVector(int size, const int *inds, const double *elems, bool testForDuplicateIndex=COIN_DEFAULT_VALUE_FOR_DUPLICATE)
Set vector size, indices, and elements. 
 
OsiColCut & operator=(const OsiColCut &rhs)
Assignment operator. 
 
void setUbs(int nElements, const int *colIndices, const double *ubElements)
Set column upper bounds. 
 
virtual double violated(const double *solution) const 
Returns infeasibility of the cut with respect to solution passed in i.e. 
 
const CoinPackedVector & lbs() const 
Get column lower bounds. 
 
void duplicateIndex(const char *methodName=NULL, const char *className=NULL) const 
Throw an exception if there are duplicate indices. 
 
virtual bool operator!=(const OsiColCut &rhs) const 
not equal 
 
virtual const int * getIndices() const 
Get indices of elements. 
 
int getMaxIndex() const 
Get value of maximum index. 
 
const CoinPackedVector & ubs() const 
Get column upper bounds. 
 
virtual const double * getColUpper() const =0
Get a pointer to an array[getNumCols()] of column upper bounds.