Loading...
Searching...
No Matches
ClpMatrixBase.hpp
Go to the documentation of this file.
/* $Id$ */
// Copyright (C) 2002, International Business Machines
// Corporation and others. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
#ifndef ClpMatrixBase_H
#define ClpMatrixBase_H
#include "CoinPragma.hpp"
#include "CoinTypes.hpp"
#include "CoinPackedMatrix.hpp"
class CoinIndexedVector;
class ClpSimplex;
class ClpModel;
// Compilers can produce better code if they know about __restrict
#ifndef COIN_RESTRICT
#ifdef COIN_USE_RESTRICT
#define COIN_RESTRICT __restrict
#else
#define COIN_RESTRICT
#endif
#endif
class ClpMatrixBase {
public:
virtual CoinPackedMatrix *getPackedMatrix() const = 0;
virtual bool isColOrdered() const = 0;
virtual CoinBigIndex getNumElements() const = 0;
virtual int getNumCols() const = 0;
virtual int getNumRows() const = 0;
virtual const double *getElements() const = 0;
virtual const int *getIndices() const = 0;
virtual const CoinBigIndex *getVectorStarts() const = 0;
virtual const int *getVectorLengths() const = 0;
virtual int getVectorLength(int index) const;
virtual void deleteCols(const int numDel, const int *indDel) = 0;
virtual void deleteRows(const int numDel, const int *indDel) = 0;
#ifndef CLP_NO_VECTOR
virtual void appendCols(int number, const CoinPackedVectorBase *const *columns);
virtual void appendRows(int number, const CoinPackedVectorBase *const *rows);
#endif
virtual void modifyCoefficient(int row, int column, double newElement,
bool keepZero = false);
virtual int appendMatrix(int number, int type,
const CoinBigIndex *starts, const int *index,
const double *element, int numberOther = -1);
virtual ClpMatrixBase *reverseOrderedCopy() const
{
return NULL;
}
virtual int countBasis(const int *whichColumn,
int &numberColumnBasic)
= 0;
virtual void fillBasis(ClpSimplex *model,
const int *whichColumn,
int &numberColumnBasic,
int *row, int *start,
int *rowCount, int *columnCount,
CoinFactorizationDouble *element)
= 0;
virtual int scale(ClpModel *, ClpSimplex * = NULL) const
{
return 1;
}
virtual void scaleRowCopy(ClpModel *) const {}
virtual bool canGetRowCopy() const
{
return true;
}
inline virtual ClpMatrixBase *scaledColumnCopy(ClpModel *) const
{
return this->clone();
}
virtual bool allElementsInRange(ClpModel *,
double, double,
int = 15)
{
return true;
}
virtual void setDimensions(int numrows, int numcols);
virtual void rangeOfElements(double &smallestNegative, double &largestNegative,
double &smallestPositive, double &largestPositive);
virtual void unpack(const ClpSimplex *model, CoinIndexedVector *rowArray,
int column) const = 0;
virtual void unpackPacked(ClpSimplex *model,
CoinIndexedVector *rowArray,
int column) const = 0;
virtual int refresh(ClpSimplex *)
{
return 0;
}
// Really scale matrix
virtual void reallyScale(const double *rowScale, const double *columnScale);
virtual CoinBigIndex *dubiousWeights(const ClpSimplex *model, int *inputWeights) const;
virtual void add(const ClpSimplex *model, CoinIndexedVector *rowArray,
int column, double multiplier) const = 0;
virtual void add(const ClpSimplex *model, double *array,
int column, double multiplier) const = 0;
virtual void releasePackedMatrix() const = 0;
virtual bool canDoPartialPricing() const;
virtual int hiddenRows() const;
virtual void partialPricing(ClpSimplex *model, double start, double end,
int &bestSequence, int &numberWanted);
virtual int extendUpdated(ClpSimplex *model, CoinIndexedVector *update, int mode);
virtual void primalExpanded(ClpSimplex *model, int mode);
virtual void dualExpanded(ClpSimplex *model, CoinIndexedVector *array,
double *other, int mode);
virtual int generalExpanded(ClpSimplex *model, int mode, int &number);
virtual int updatePivot(ClpSimplex *model, double oldInValue, double oldOutValue);
virtual void createVariable(ClpSimplex *model, int &bestSequence);
virtual int checkFeasible(ClpSimplex *model, double &sum) const;
double reducedCost(ClpSimplex *model, int sequence) const;
virtual void correctSequence(const ClpSimplex *model, int &sequenceIn, int &sequenceOut);
//---------------------------------------------------------------------------
virtual void times(double scalar,
const double *COIN_RESTRICT x, double *COIN_RESTRICT y) const = 0;
virtual void times(double scalar,
const double *COIN_RESTRICT x, double *COIN_RESTRICT y,
const double *COIN_RESTRICT rowScale,
const double *COIN_RESTRICT columnScale) const;
virtual void transposeTimes(double scalar,
const double *COIN_RESTRICT x, double *COIN_RESTRICT y) const = 0;
virtual void transposeTimes(double scalar,
const double *COIN_RESTRICT x, double *COIN_RESTRICT y,
const double *COIN_RESTRICT rowScale,
const double *COIN_RESTRICT columnScale,
double *COIN_RESTRICT spare = NULL) const;
#if COIN_LONG_WORK
// For long double versions (aborts if not supported)
virtual void times(CoinWorkDouble scalar,
const CoinWorkDouble *COIN_RESTRICT x, CoinWorkDouble *COIN_RESTRICT y) const;
virtual void transposeTimes(CoinWorkDouble scalar,
const CoinWorkDouble *COIN_RESTRICT x, CoinWorkDouble *COIN_RESTRICT y) const;
#endif
virtual void transposeTimes(const ClpSimplex *model, double scalar,
const CoinIndexedVector *x,
CoinIndexedVector *y,
CoinIndexedVector *z) const = 0;
virtual void subsetTransposeTimes(const ClpSimplex *model,
const CoinIndexedVector *x,
const CoinIndexedVector *y,
CoinIndexedVector *z) const = 0;
virtual bool canCombine(const ClpSimplex *,
const CoinIndexedVector *) const
{
return false;
}
virtual int transposeTimes2(const ClpSimplex *model,
const CoinIndexedVector *pi1, CoinIndexedVector *dj1,
const CoinIndexedVector *pi2,
CoinIndexedVector *spare,
double *infeas, double *reducedCost,
double referenceIn, double devex,
// Array for exact devex to say what is in reference framework
unsigned int *reference,
double *weights, double scaleFactor);
virtual void subsetTimes2(const ClpSimplex *model,
CoinIndexedVector *dj1,
const CoinIndexedVector *pi2, CoinIndexedVector *dj2,
double referenceIn, double devex,
// Array for exact devex to say what is in reference framework
unsigned int *reference,
double *weights, double scaleFactor);
virtual void listTransposeTimes(const ClpSimplex *model,
double *x,
int *y,
int number,
double *z) const;
virtual ClpMatrixBase *clone() const = 0;
virtual ClpMatrixBase *subsetClone(
int numberRows, const int *whichRows,
int numberColumns, const int *whichColumns) const;
virtual void backToBasics() {}
inline int type() const
{
return type_;
}
void setType(int newtype)
{
type_ = newtype;
}
void useEffectiveRhs(ClpSimplex *model);
virtual double *rhsOffset(ClpSimplex *model, bool forceRefresh = false,
bool check = false);
inline int lastRefresh() const
{
return lastRefresh_;
}
inline int refreshFrequency() const
{
return refreshFrequency_;
}
inline void setRefreshFrequency(int value)
{
refreshFrequency_ = value;
}
inline bool skipDualCheck() const
{
return skipDualCheck_;
}
inline void setSkipDualCheck(bool yes)
{
skipDualCheck_ = yes;
}
inline int minimumObjectsScan() const
{
return minimumObjectsScan_;
}
inline void setMinimumObjectsScan(int value)
{
minimumObjectsScan_ = value;
}
inline int minimumGoodReducedCosts() const
{
return minimumGoodReducedCosts_;
}
inline void setMinimumGoodReducedCosts(int value)
{
minimumGoodReducedCosts_ = value;
}
inline double startFraction() const
{
return startFraction_;
}
inline void setStartFraction(double value)
{
startFraction_ = value;
}
inline double endFraction() const
{
return endFraction_;
}
inline void setEndFraction(double value)
{
endFraction_ = value;
}
inline double savedBestDj() const
{
return savedBestDj_;
}
inline void setSavedBestDj(double value)
{
savedBestDj_ = value;
}
inline int originalWanted() const
{
return originalWanted_;
}
inline void setOriginalWanted(int value)
{
originalWanted_ = value;
}
inline int currentWanted() const
{
return currentWanted_;
}
inline void setCurrentWanted(int value)
{
currentWanted_ = value;
}
inline int savedBestSequence() const
{
return savedBestSequence_;
}
inline void setSavedBestSequence(int value)
{
savedBestSequence_ = value;
}
protected:
ClpMatrixBase();
public:
virtual ~ClpMatrixBase();
protected:
// Copy
ClpMatrixBase(const ClpMatrixBase &);
// Assignment
ClpMatrixBase &operator=(const ClpMatrixBase &);
protected:
double *rhsOffset_;
double startFraction_;
double endFraction_;
double savedBestDj_;
int originalWanted_;
int currentWanted_;
int savedBestSequence_;
int type_;
int lastRefresh_;
int refreshFrequency_;
int minimumObjectsScan_;
int minimumGoodReducedCosts_;
int trueSequenceIn_;
int trueSequenceOut_;
bool skipDualCheck_;
};
// bias for free variables
#define FREE_BIAS 1.0e1
// Acceptance criteria for free variables
#define FREE_ACCEPT 1.0e2
#endif
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
*/
COIN_RESTRICT
#define COIN_RESTRICT
Definition ClpMatrixBase.hpp:21
ClpMatrixBase::unpackPacked
virtual void unpackPacked(ClpSimplex *model, CoinIndexedVector *rowArray, int column) const =0
Unpacks a column into an CoinIndexedvector in packed format Note that model is NOT const.
ClpMatrixBase::isColOrdered
virtual bool isColOrdered() const =0
Whether the packed matrix is column major ordered or not.
ClpMatrixBase::transposeTimes
virtual void transposeTimes(double scalar, const double *COIN_RESTRICT x, double *COIN_RESTRICT y, const double *COIN_RESTRICT rowScale, const double *COIN_RESTRICT columnScale, double *COIN_RESTRICT spare=NULL) const
And for scaling - default aborts for when scaling not supported (unless pointers NULL when as normal)...
ClpMatrixBase::getIndices
virtual const int * getIndices() const =0
A vector containing the minor indices of the elements in the packed matrix.
ClpMatrixBase::lastRefresh
int lastRefresh() const
If rhsOffset used this is iteration last refreshed.
Definition ClpMatrixBase.hpp:400
ClpMatrixBase::setDimensions
virtual void setDimensions(int numrows, int numcols)
Set the dimensions of the matrix.
ClpMatrixBase::releasePackedMatrix
virtual void releasePackedMatrix() const =0
Allow any parts of a created CoinPackedMatrix to be deleted.
ClpMatrixBase::dubiousWeights
virtual CoinBigIndex * dubiousWeights(const ClpSimplex *model, int *inputWeights) const
Given positive integer weights for each row fills in sum of weights for each column (and slack).
ClpMatrixBase::getVectorLengths
virtual const int * getVectorLengths() const =0
The lengths of the major-dimension vectors.
ClpMatrixBase::trueSequenceIn_
int trueSequenceIn_
True sequence in (i.e. from larger problem).
Definition ClpMatrixBase.hpp:546
ClpMatrixBase::reverseOrderedCopy
virtual ClpMatrixBase * reverseOrderedCopy() const
Returns a new matrix in reverse order without gaps Is allowed to return NULL if doesn't want to have ...
Definition ClpMatrixBase.hpp:96
ClpMatrixBase::checkFeasible
virtual int checkFeasible(ClpSimplex *model, double &sum) const
Just for debug if odd type matrix.
ClpMatrixBase::savedBestDj_
double savedBestDj_
Best reduced cost so far.
Definition ClpMatrixBase.hpp:528
ClpMatrixBase::rhsOffset
virtual double * rhsOffset(ClpSimplex *model, bool forceRefresh=false, bool check=false)
Returns effective RHS offset if it is being used.
ClpMatrixBase::setEndFraction
void setEndFraction(double value)
Definition ClpMatrixBase.hpp:455
ClpMatrixBase::minimumGoodReducedCosts_
int minimumGoodReducedCosts_
Partial pricing tuning parameter - minimum number of negative reduced costs to get.
Definition ClpMatrixBase.hpp:544
ClpMatrixBase::add
virtual void add(const ClpSimplex *model, CoinIndexedVector *rowArray, int column, double multiplier) const =0
Adds multiple of a column into an CoinIndexedvector You can use quickAdd to add to vector.
ClpMatrixBase::setMinimumGoodReducedCosts
void setMinimumGoodReducedCosts(int value)
Definition ClpMatrixBase.hpp:437
ClpMatrixBase::appendCols
virtual void appendCols(int number, const CoinPackedVectorBase *const *columns)
Append Columns.
ClpMatrixBase::savedBestSequence_
int savedBestSequence_
Saved best sequence in pricing.
Definition ClpMatrixBase.hpp:534
ClpMatrixBase::subsetClone
virtual ClpMatrixBase * subsetClone(int numberRows, const int *whichRows, int numberColumns, const int *whichColumns) const
Subset clone (without gaps).
ClpMatrixBase::scaledColumnCopy
virtual ClpMatrixBase * scaledColumnCopy(ClpModel *) const
Realy really scales column copy Only called if scales already exist.
Definition ClpMatrixBase.hpp:131
ClpMatrixBase::backToBasics
virtual void backToBasics()
Gets rid of any mutable by products.
Definition ClpMatrixBase.hpp:376
ClpMatrixBase::startFraction
double startFraction() const
Current start of search space in matrix (as fraction).
Definition ClpMatrixBase.hpp:442
ClpMatrixBase::add
virtual void add(const ClpSimplex *model, double *array, int column, double multiplier) const =0
Adds multiple of a column into an array.
ClpMatrixBase::setSavedBestSequence
void setSavedBestSequence(int value)
Definition ClpMatrixBase.hpp:491
ClpMatrixBase::primalExpanded
virtual void primalExpanded(ClpSimplex *model, int mode)
utility primal function for dealing with dynamic constraints mode=0 - Set up before "update" and "tim...
ClpMatrixBase::generalExpanded
virtual int generalExpanded(ClpSimplex *model, int mode, int &number)
general utility function for dealing with dynamic constraints mode=0 - Create list of non-key basics ...
ClpMatrixBase::setOriginalWanted
void setOriginalWanted(int value)
Definition ClpMatrixBase.hpp:473
ClpMatrixBase::getNumCols
virtual int getNumCols() const =0
Number of columns.
ClpMatrixBase::correctSequence
virtual void correctSequence(const ClpSimplex *model, int &sequenceIn, int &sequenceOut)
Correct sequence in and out to give true value (if both -1 maybe do whole matrix).
ClpMatrixBase::savedBestSequence
int savedBestSequence() const
Current best sequence.
Definition ClpMatrixBase.hpp:487
ClpMatrixBase::times
virtual void times(double scalar, const double *COIN_RESTRICT x, double *COIN_RESTRICT y, const double *COIN_RESTRICT rowScale, const double *COIN_RESTRICT columnScale) const
And for scaling - default aborts for when scaling not supported (unless pointers NULL when as normal)...
ClpMatrixBase::dualExpanded
virtual void dualExpanded(ClpSimplex *model, CoinIndexedVector *array, double *other, int mode)
utility dual function for dealing with dynamic constraints mode=0 - Set up before "updateTranspose" a...
ClpMatrixBase::unpack
virtual void unpack(const ClpSimplex *model, CoinIndexedVector *rowArray, int column) const =0
Unpacks a column into an CoinIndexedvector.
ClpMatrixBase::setSavedBestDj
void setSavedBestDj(double value)
Definition ClpMatrixBase.hpp:464
ClpMatrixBase::allElementsInRange
virtual bool allElementsInRange(ClpModel *, double, double, int=15)
Checks if all elements are in valid range.
Definition ClpMatrixBase.hpp:146
ClpMatrixBase::currentWanted_
int currentWanted_
Current number of negative reduced costs which we still need.
Definition ClpMatrixBase.hpp:532
ClpMatrixBase::skipDualCheck_
bool skipDualCheck_
whether to skip dual checks most of time
Definition ClpMatrixBase.hpp:550
ClpMatrixBase::setCurrentWanted
void setCurrentWanted(int value)
Definition ClpMatrixBase.hpp:482
ClpMatrixBase::updatePivot
virtual int updatePivot(ClpSimplex *model, double oldInValue, double oldOutValue)
update information for a pivot (and effective rhs)
ClpMatrixBase::getNumRows
virtual int getNumRows() const =0
Number of rows.
ClpMatrixBase::reducedCost
double reducedCost(ClpSimplex *model, int sequence) const
Returns reduced cost of a variable.
ClpMatrixBase::ClpMatrixBase
ClpMatrixBase()
Default constructor.
ClpMatrixBase::minimumObjectsScan_
int minimumObjectsScan_
Partial pricing tuning parameter - minimum number of "objects" to scan.
Definition ClpMatrixBase.hpp:542
ClpMatrixBase::setType
void setType(int newtype)
Sets type.
Definition ClpMatrixBase.hpp:388
ClpMatrixBase::getPackedMatrix
virtual CoinPackedMatrix * getPackedMatrix() const =0
Return a complete CoinPackedMatrix.
ClpMatrixBase::listTransposeTimes
virtual void listTransposeTimes(const ClpSimplex *model, double *x, int *y, int number, double *z) const
Return x *A in z but just for number indices in y.
ClpMatrixBase::transposeTimes
virtual void transposeTimes(double scalar, const double *COIN_RESTRICT x, double *COIN_RESTRICT y) const =0
Return y + x * scalar * A in y.
ClpMatrixBase::subsetTimes2
virtual void subsetTimes2(const ClpSimplex *model, CoinIndexedVector *dj1, const CoinIndexedVector *pi2, CoinIndexedVector *dj2, double referenceIn, double devex, unsigned int *reference, double *weights, double scaleFactor)
Updates second array for steepest and does devex weights (need not be coded).
ClpMatrixBase::type
int type() const
Returns type.
Definition ClpMatrixBase.hpp:383
ClpMatrixBase::getVectorStarts
virtual const CoinBigIndex * getVectorStarts() const =0
ClpMatrixBase::minimumGoodReducedCosts
int minimumGoodReducedCosts() const
Partial pricing tuning parameter - minimum number of negative reduced costs to get.
Definition ClpMatrixBase.hpp:433
ClpMatrixBase::canDoPartialPricing
virtual bool canDoPartialPricing() const
Says whether it can do partial pricing.
ClpMatrixBase::countBasis
virtual int countBasis(const int *whichColumn, int &numberColumnBasic)=0
Returns number of elements in column part of basis.
ClpMatrixBase::fillBasis
virtual void fillBasis(ClpSimplex *model, const int *whichColumn, int &numberColumnBasic, int *row, int *start, int *rowCount, int *columnCount, CoinFactorizationDouble *element)=0
Fills in column part of basis.
ClpMatrixBase::type_
int type_
type (may be useful)
Definition ClpMatrixBase.hpp:536
ClpMatrixBase::lastRefresh_
int lastRefresh_
If rhsOffset used this is iteration last refreshed.
Definition ClpMatrixBase.hpp:538
ClpMatrixBase::refreshFrequency
int refreshFrequency() const
If rhsOffset used this is refresh frequency (0==off).
Definition ClpMatrixBase.hpp:405
ClpMatrixBase::modifyCoefficient
virtual void modifyCoefficient(int row, int column, double newElement, bool keepZero=false)
Modify one element of packed matrix.
ClpMatrixBase::setMinimumObjectsScan
void setMinimumObjectsScan(int value)
Definition ClpMatrixBase.hpp:428
ClpMatrixBase::appendRows
virtual void appendRows(int number, const CoinPackedVectorBase *const *rows)
Append Rows.
ClpMatrixBase::useEffectiveRhs
void useEffectiveRhs(ClpSimplex *model)
Sets up an effective RHS.
ClpMatrixBase::extendUpdated
virtual int extendUpdated(ClpSimplex *model, CoinIndexedVector *update, int mode)
expands an updated column to allow for extra rows which the main solver does not know about and retur...
ClpMatrixBase::endFraction
double endFraction() const
Current end of search space in matrix (as fraction).
Definition ClpMatrixBase.hpp:451
ClpMatrixBase::originalWanted
int originalWanted() const
Initial number of negative reduced costs wanted.
Definition ClpMatrixBase.hpp:469
ClpMatrixBase::reallyScale
virtual void reallyScale(const double *rowScale, const double *columnScale)
ClpMatrixBase::createVariable
virtual void createVariable(ClpSimplex *model, int &bestSequence)
Creates a variable.
ClpMatrixBase::scale
virtual int scale(ClpModel *, ClpSimplex *=NULL) const
Creates scales for column copy (rowCopy in model may be modified) default does not allow scaling retu...
Definition ClpMatrixBase.hpp:116
ClpMatrixBase::transposeTimes2
virtual int transposeTimes2(const ClpSimplex *model, const CoinIndexedVector *pi1, CoinIndexedVector *dj1, const CoinIndexedVector *pi2, CoinIndexedVector *spare, double *infeas, double *reducedCost, double referenceIn, double devex, unsigned int *reference, double *weights, double scaleFactor)
Updates two arrays for steepest and does devex weights (need not be coded) Returns nonzero if updates...
ClpMatrixBase::getElements
virtual const double * getElements() const =0
A vector containing the elements in the packed matrix.
ClpMatrixBase::transposeTimes
virtual void transposeTimes(const ClpSimplex *model, double scalar, const CoinIndexedVector *x, CoinIndexedVector *y, CoinIndexedVector *z) const =0
Return x * scalar *A + y in z.
ClpMatrixBase::rangeOfElements
virtual void rangeOfElements(double &smallestNegative, double &largestNegative, double &smallestPositive, double &largestPositive)
Returns largest and smallest elements of both signs.
ClpMatrixBase::setRefreshFrequency
void setRefreshFrequency(int value)
Definition ClpMatrixBase.hpp:409
ClpMatrixBase::refresh
virtual int refresh(ClpSimplex *)
Purely for column generation and similar ideas.
Definition ClpMatrixBase.hpp:179
ClpMatrixBase::minimumObjectsScan
int minimumObjectsScan() const
Partial pricing tuning parameter - minimum number of "objects" to scan.
Definition ClpMatrixBase.hpp:424
ClpMatrixBase::skipDualCheck
bool skipDualCheck() const
whether to skip dual checks most of time
Definition ClpMatrixBase.hpp:414
ClpMatrixBase::refreshFrequency_
int refreshFrequency_
If rhsOffset used this is refresh frequency (0==off).
Definition ClpMatrixBase.hpp:540
ClpMatrixBase::startFraction_
double startFraction_
Current start of search space in matrix (as fraction).
Definition ClpMatrixBase.hpp:524
ClpMatrixBase::scaleRowCopy
virtual void scaleRowCopy(ClpModel *) const
Scales rowCopy if column copy scaled Only called if scales already exist.
Definition ClpMatrixBase.hpp:122
ClpMatrixBase::deleteRows
virtual void deleteRows(const int numDel, const int *indDel)=0
Delete the rows whose indices are listed in indDel.
ClpMatrixBase::ClpMatrixBase
ClpMatrixBase(const ClpMatrixBase &)
ClpMatrixBase::setStartFraction
void setStartFraction(double value)
Definition ClpMatrixBase.hpp:446
ClpMatrixBase::savedBestDj
double savedBestDj() const
Current best reduced cost.
Definition ClpMatrixBase.hpp:460
ClpMatrixBase::times
virtual void times(double scalar, const double *COIN_RESTRICT x, double *COIN_RESTRICT y) const =0
Return y + A * x * scalar in y.
ClpMatrixBase::trueSequenceOut_
int trueSequenceOut_
True sequence out (i.e. from larger problem).
Definition ClpMatrixBase.hpp:548
ClpMatrixBase::canCombine
virtual bool canCombine(const ClpSimplex *, const CoinIndexedVector *) const
Returns true if can combine transposeTimes and subsetTransposeTimes and if it would be faster.
Definition ClpMatrixBase.hpp:328
ClpMatrixBase::operator=
ClpMatrixBase & operator=(const ClpMatrixBase &)
ClpMatrixBase::clone
virtual ClpMatrixBase * clone() const =0
ClpMatrixBase::rhsOffset_
double * rhsOffset_
Effective RHS offset if it is being used.
Definition ClpMatrixBase.hpp:522
ClpMatrixBase::appendMatrix
virtual int appendMatrix(int number, int type, const CoinBigIndex *starts, const int *index, const double *element, int numberOther=-1)
Append a set of rows/columns to the end of the matrix.
ClpMatrixBase::~ClpMatrixBase
virtual ~ClpMatrixBase()
Destructor (has to be public).
ClpMatrixBase::getNumElements
virtual CoinBigIndex getNumElements() const =0
Number of entries in the packed matrix.
ClpMatrixBase::endFraction_
double endFraction_
Current end of search space in matrix (as fraction).
Definition ClpMatrixBase.hpp:526
ClpMatrixBase::getVectorLength
virtual int getVectorLength(int index) const
The length of a single major-dimension vector.
ClpMatrixBase::canGetRowCopy
virtual bool canGetRowCopy() const
Returns true if can create row copy.
Definition ClpMatrixBase.hpp:124
ClpMatrixBase::partialPricing
virtual void partialPricing(ClpSimplex *model, double start, double end, int &bestSequence, int &numberWanted)
Partial pricing.
ClpMatrixBase::subsetTransposeTimes
virtual void subsetTransposeTimes(const ClpSimplex *model, const CoinIndexedVector *x, const CoinIndexedVector *y, CoinIndexedVector *z) const =0
Return x *A in z but just for indices in y.
ClpMatrixBase::currentWanted
int currentWanted() const
Current number of negative reduced costs which we still need.
Definition ClpMatrixBase.hpp:478
ClpMatrixBase::setSkipDualCheck
void setSkipDualCheck(bool yes)
Definition ClpMatrixBase.hpp:418
ClpMatrixBase::hiddenRows
virtual int hiddenRows() const
Returns number of hidden rows e.g. gub.
ClpMatrixBase::originalWanted_
int originalWanted_
Initial number of negative reduced costs wanted.
Definition ClpMatrixBase.hpp:530
ClpMatrixBase::deleteCols
virtual void deleteCols(const int numDel, const int *indDel)=0
Delete the columns whose indices are listed in indDel.
ClpModel
Definition ClpModel.hpp:38
ClpSimplex
This solves LPs using the simplex method.
Definition ClpSimplex.hpp:106