Clp
1.17.8
|
This solves LPs using the predictor-corrector method due to Mehrotra. More...
#include <ClpPredictorCorrector.hpp>
Public Member Functions | |
Description of algorithm | |
int | solve () |
Primal Dual Predictor Corrector algorithm. More... | |
Functions used in algorithm | |
CoinWorkDouble | findStepLength (int phase) |
findStepLength. More... | |
CoinWorkDouble | findDirectionVector (const int phase) |
findDirectionVector. More... | |
int | createSolution () |
createSolution. Creates solution from scratch (- code if no memory) More... | |
CoinWorkDouble | complementarityGap (int &numberComplementarityPairs, int &numberComplementarityItems, const int phase) |
complementarityGap. Computes gap More... | |
void | setupForSolve (const int phase) |
setupForSolve. More... | |
void | solveSystem (CoinWorkDouble *region1, CoinWorkDouble *region2, const CoinWorkDouble *region1In, const CoinWorkDouble *region2In, const CoinWorkDouble *saveRegion1, const CoinWorkDouble *saveRegion2, bool gentleRefine) |
Does solve. More... | |
bool | checkGoodMove (const bool doCorrector, CoinWorkDouble &bestNextGap, bool allowIncreasingGap) |
sees if looks plausible change in complementarity More... | |
bool | checkGoodMove2 (CoinWorkDouble move, CoinWorkDouble &bestNextGap, bool allowIncreasingGap) |
: checks for one step size More... | |
int | updateSolution (CoinWorkDouble nextGap) |
updateSolution. Updates solution at end of iteration More... | |
CoinWorkDouble | affineProduct () |
Save info on products of affine deltaT*deltaW and deltaS*deltaZ. More... | |
void | debugMove (int phase, CoinWorkDouble primalStep, CoinWorkDouble dualStep) |
See exactly what would happen given current deltas. More... | |
Public Member Functions inherited from ClpInterior | |
ClpInterior () | |
Default constructor. More... | |
ClpInterior (const ClpInterior &) | |
Copy constructor. More... | |
ClpInterior (const ClpModel &) | |
Copy constructor from model. More... | |
ClpInterior (const ClpModel *wholeModel, int numberRows, const int *whichRows, int numberColumns, const int *whichColumns, bool dropNames=true, bool dropIntegers=true) | |
Subproblem constructor. More... | |
ClpInterior & | operator= (const ClpInterior &rhs) |
Assignment operator. This copies the data. More... | |
~ClpInterior () | |
Destructor. More... | |
void | loadProblem (const ClpMatrixBase &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
Loads a problem (the constraints on the rows are given by lower and upper bounds). More... | |
void | loadProblem (const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
void | loadProblem (const int numcols, const int numrows, const CoinBigIndex *start, const int *index, const double *value, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
Just like the other loadProblem() method except that the matrix is given in a standard column major ordered format (without gaps). More... | |
void | loadProblem (const int numcols, const int numrows, const CoinBigIndex *start, const int *index, const double *value, const int *length, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
This one is for after presolve to save memory. More... | |
int | readMps (const char *filename, bool keepNames=false, bool ignoreErrors=false) |
Read an mps file from the given filename. More... | |
void | borrowModel (ClpModel &otherModel) |
Borrow model. More... | |
void | returnModel (ClpModel &otherModel) |
Return model - updates any scalars. More... | |
int | pdco () |
Pdco algorithm - see ClpPdco.hpp for method. More... | |
int | pdco (ClpPdcoBase *stuff, Options &options, Info &info, Outfo &outfo) |
int | primalDual () |
Primal-Dual Predictor-Corrector barrier. More... | |
bool | primalFeasible () const |
If problem is primal feasible. More... | |
bool | dualFeasible () const |
If problem is dual feasible. More... | |
int | algorithm () const |
Current (or last) algorithm. More... | |
void | setAlgorithm (int value) |
Set algorithm. More... | |
CoinWorkDouble | sumDualInfeasibilities () const |
Sum of dual infeasibilities. More... | |
CoinWorkDouble | sumPrimalInfeasibilities () const |
Sum of primal infeasibilities. More... | |
CoinWorkDouble | dualObjective () const |
dualObjective. More... | |
CoinWorkDouble | primalObjective () const |
primalObjective. More... | |
CoinWorkDouble | diagonalNorm () const |
diagonalNorm More... | |
CoinWorkDouble | linearPerturbation () const |
linearPerturbation More... | |
void | setLinearPerturbation (CoinWorkDouble value) |
CoinWorkDouble | projectionTolerance () const |
projectionTolerance More... | |
void | setProjectionTolerance (CoinWorkDouble value) |
CoinWorkDouble | diagonalPerturbation () const |
diagonalPerturbation More... | |
void | setDiagonalPerturbation (CoinWorkDouble value) |
CoinWorkDouble | gamma () const |
gamma More... | |
void | setGamma (CoinWorkDouble value) |
CoinWorkDouble | delta () const |
delta More... | |
void | setDelta (CoinWorkDouble value) |
CoinWorkDouble | complementarityGap () const |
ComplementarityGap. More... | |
CoinWorkDouble | largestPrimalError () const |
Largest error on Ax-b. More... | |
CoinWorkDouble | largestDualError () const |
Largest error on basic duals. More... | |
int | maximumBarrierIterations () const |
Maximum iterations. More... | |
void | setMaximumBarrierIterations (int value) |
void | setCholesky (ClpCholeskyBase *cholesky) |
Set cholesky (and delete present one) More... | |
int | numberFixed () const |
Return number fixed to see if worth presolving. More... | |
void | fixFixed (bool reallyFix=true) |
fix variables interior says should be. More... | |
CoinWorkDouble * | primalR () const |
Primal erturbation vector. More... | |
CoinWorkDouble * | dualR () const |
Dual erturbation vector. More... | |
CoinWorkDouble | rawObjectiveValue () const |
Raw objective value (so always minimize) More... | |
int | isColumn (int sequence) const |
Returns 1 if sequence indicates column. More... | |
int | sequenceWithin (int sequence) const |
Returns sequence number within section. More... | |
void | checkSolution () |
Checks solution. More... | |
CoinWorkDouble | quadraticDjs (CoinWorkDouble *djRegion, const CoinWorkDouble *solution, CoinWorkDouble scaleFactor) |
Modifies djs to allow for quadratic. More... | |
void | setFixed (int sequence) |
To say a variable is fixed. More... | |
void | clearFixed (int sequence) |
bool | fixed (int sequence) const |
void | setFlagged (int sequence) |
To flag a variable. More... | |
void | clearFlagged (int sequence) |
bool | flagged (int sequence) const |
void | setFixedOrFree (int sequence) |
To say a variable is fixed OR free. More... | |
void | clearFixedOrFree (int sequence) |
bool | fixedOrFree (int sequence) const |
void | setLowerBound (int sequence) |
To say a variable has lower bound. More... | |
void | clearLowerBound (int sequence) |
bool | lowerBound (int sequence) const |
void | setUpperBound (int sequence) |
To say a variable has upper bound. More... | |
void | clearUpperBound (int sequence) |
bool | upperBound (int sequence) const |
void | setFakeLower (int sequence) |
To say a variable has fake lower bound. More... | |
void | clearFakeLower (int sequence) |
bool | fakeLower (int sequence) const |
void | setFakeUpper (int sequence) |
To say a variable has fake upper bound. More... | |
void | clearFakeUpper (int sequence) |
bool | fakeUpper (int sequence) const |
Public Member Functions inherited from ClpModel | |
ClpModel (bool emptyMessages=false) | |
Default constructor. More... | |
ClpModel (const ClpModel &rhs, int scalingMode=-1) | |
Copy constructor. More... | |
ClpModel & | operator= (const ClpModel &rhs) |
Assignment operator. This copies the data. More... | |
ClpModel (const ClpModel *wholeModel, int numberRows, const int *whichRows, int numberColumns, const int *whichColumns, bool dropNames=true, bool dropIntegers=true) | |
Subproblem constructor. More... | |
~ClpModel () | |
Destructor. More... | |
int | numberRows () const |
Number of rows. More... | |
int | getNumRows () const |
int | getNumCols () const |
Number of columns. More... | |
int | numberColumns () const |
double | primalTolerance () const |
Primal tolerance to use. More... | |
void | setPrimalTolerance (double value) |
double | dualTolerance () const |
Dual tolerance to use. More... | |
void | setDualTolerance (double value) |
double | primalObjectiveLimit () const |
Primal objective limit. More... | |
void | setPrimalObjectiveLimit (double value) |
double | dualObjectiveLimit () const |
Dual objective limit. More... | |
void | setDualObjectiveLimit (double value) |
double | objectiveOffset () const |
Objective offset. More... | |
void | setObjectiveOffset (double value) |
double | presolveTolerance () const |
Presolve tolerance to use. More... | |
const std::string & | problemName () const |
int | numberIterations () const |
Number of iterations. More... | |
int | getIterationCount () const |
void | setNumberIterations (int numberIterationsNew) |
int | solveType () const |
Solve type - 1 simplex, 2 simplex interface, 3 Interior. More... | |
void | setSolveType (int type) |
int | maximumIterations () const |
Maximum number of iterations. More... | |
void | setMaximumIterations (int value) |
double | maximumSeconds () const |
Maximum time in seconds (from when set called) More... | |
void | setMaximumSeconds (double value) |
void | setMaximumWallSeconds (double value) |
bool | hitMaximumIterations () const |
Returns true if hit maximum iterations (or time) More... | |
int | status () const |
Status of problem: -1 - unknown e.g. More... | |
int | problemStatus () const |
void | setProblemStatus (int problemStatusNew) |
Set problem status. More... | |
int | secondaryStatus () const |
Secondary status of problem - may get extended 0 - none 1 - primal infeasible because dual limit reached OR (probably primal infeasible but can't prove it - main status was 4) 2 - scaled problem optimal - unscaled problem has primal infeasibilities 3 - scaled problem optimal - unscaled problem has dual infeasibilities 4 - scaled problem optimal - unscaled problem has primal and dual infeasibilities 5 - giving up in primal with flagged variables 6 - failed due to empty problem check 7 - postSolve says not optimal 8 - failed due to bad element check 9 - status was 3 and stopped on time 10 - status was 3 but stopped as primal feasible 11 - status was 1/2 from presolve found infeasible or unbounded 100 up - translation of enum from ClpEventHandler. More... | |
void | setSecondaryStatus (int newstatus) |
bool | isAbandoned () const |
Are there a numerical difficulties? More... | |
bool | isProvenOptimal () const |
Is optimality proven? More... | |
bool | isProvenPrimalInfeasible () const |
Is primal infeasiblity proven? More... | |
bool | isProvenDualInfeasible () const |
Is dual infeasiblity proven? More... | |
bool | isPrimalObjectiveLimitReached () const |
Is the given primal objective limit reached? More... | |
bool | isDualObjectiveLimitReached () const |
Is the given dual objective limit reached? More... | |
bool | isIterationLimitReached () const |
Iteration limit reached? More... | |
double | optimizationDirection () const |
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore. More... | |
double | getObjSense () const |
void | setOptimizationDirection (double value) |
double * | primalRowSolution () const |
Primal row solution. More... | |
const double * | getRowActivity () const |
double * | primalColumnSolution () const |
Primal column solution. More... | |
const double * | getColSolution () const |
void | setColSolution (const double *input) |
double * | dualRowSolution () const |
Dual row solution. More... | |
const double * | getRowPrice () const |
double * | dualColumnSolution () const |
Reduced costs. More... | |
const double * | getReducedCost () const |
double * | rowLower () const |
Row lower. More... | |
const double * | getRowLower () const |
double * | rowUpper () const |
Row upper. More... | |
const double * | getRowUpper () const |
void | setObjectiveCoefficient (int elementIndex, double elementValue) |
Set an objective function coefficient. More... | |
void | setObjCoeff (int elementIndex, double elementValue) |
Set an objective function coefficient. More... | |
void | setColumnLower (int elementIndex, double elementValue) |
Set a single column lower bound Use -DBL_MAX for -infinity. More... | |
void | setColumnUpper (int elementIndex, double elementValue) |
Set a single column upper bound Use DBL_MAX for infinity. More... | |
void | setColumnBounds (int elementIndex, double lower, double upper) |
Set a single column lower and upper bound. More... | |
void | setColumnSetBounds (const int *indexFirst, const int *indexLast, const double *boundList) |
Set the bounds on a number of columns simultaneously The default implementation just invokes setColLower() and setColUpper() over and over again. More... | |
void | setColLower (int elementIndex, double elementValue) |
Set a single column lower bound Use -DBL_MAX for -infinity. More... | |
void | setColUpper (int elementIndex, double elementValue) |
Set a single column upper bound Use DBL_MAX for infinity. More... | |
void | setColBounds (int elementIndex, double lower, double upper) |
Set a single column lower and upper bound. More... | |
void | setColSetBounds (const int *indexFirst, const int *indexLast, const double *boundList) |
Set the bounds on a number of columns simultaneously More... | |
void | setRowLower (int elementIndex, double elementValue) |
Set a single row lower bound Use -DBL_MAX for -infinity. More... | |
void | setRowUpper (int elementIndex, double elementValue) |
Set a single row upper bound Use DBL_MAX for infinity. More... | |
void | setRowBounds (int elementIndex, double lower, double upper) |
Set a single row lower and upper bound. More... | |
void | setRowSetBounds (const int *indexFirst, const int *indexLast, const double *boundList) |
Set the bounds on a number of rows simultaneously More... | |
const double * | rowScale () const |
Scaling. More... | |
const double * | columnScale () const |
const double * | inverseRowScale () const |
const double * | inverseColumnScale () const |
double * | mutableRowScale () const |
double * | mutableColumnScale () const |
double * | mutableInverseRowScale () const |
double * | mutableInverseColumnScale () const |
double * | swapRowScale (double *newScale) |
void | setRowScale (double *scale) |
void | setColumnScale (double *scale) |
double | objectiveScale () const |
Scaling of objective. More... | |
void | setObjectiveScale (double value) |
double | rhsScale () const |
Scaling of rhs and bounds. More... | |
void | setRhsScale (double value) |
void | scaling (int mode=1) |
Sets or unsets scaling, 0 -off, 1 equilibrium, 2 geometric, 3 auto, 4 auto-but-as-initialSolve-in-bab. More... | |
void | unscale () |
If we constructed a "really" scaled model then this reverses the operation. More... | |
int | scalingFlag () const |
Gets scalingFlag. More... | |
double * | objective () const |
Objective. More... | |
double * | objective (const double *solution, double &offset, bool refresh=true) const |
const double * | getObjCoefficients () const |
double * | rowObjective () const |
Row Objective. More... | |
const double * | getRowObjCoefficients () const |
double * | columnLower () const |
Column Lower. More... | |
const double * | getColLower () const |
double * | columnUpper () const |
Column Upper. More... | |
const double * | getColUpper () const |
CoinPackedMatrix * | matrix () const |
Matrix (if not ClpPackedmatrix be careful about memory leak. More... | |
CoinBigIndex | getNumElements () const |
Number of elements in matrix. More... | |
double | getSmallElementValue () const |
Small element value - elements less than this set to zero, default is 1.0e-20. More... | |
void | setSmallElementValue (double value) |
ClpMatrixBase * | rowCopy () const |
Row Matrix. More... | |
void | setNewRowCopy (ClpMatrixBase *newCopy) |
Set new row matrix. More... | |
ClpMatrixBase * | clpMatrix () const |
Clp Matrix. More... | |
ClpPackedMatrix * | clpScaledMatrix () const |
Scaled ClpPackedMatrix. More... | |
void | setClpScaledMatrix (ClpPackedMatrix *scaledMatrix) |
Sets pointer to scaled ClpPackedMatrix. More... | |
ClpPackedMatrix * | swapScaledMatrix (ClpPackedMatrix *scaledMatrix) |
Swaps pointer to scaled ClpPackedMatrix. More... | |
void | replaceMatrix (ClpMatrixBase *matrix, bool deleteCurrent=false) |
Replace Clp Matrix (current is not deleted unless told to and new is used) So up to user to delete current. More... | |
void | replaceMatrix (CoinPackedMatrix *newmatrix, bool deleteCurrent=false) |
Replace Clp Matrix (current is not deleted unless told to and new is used) So up to user to delete current. More... | |
double | objectiveValue () const |
Objective value. More... | |
void | setObjectiveValue (double value) |
double | getObjValue () const |
char * | integerInformation () const |
Integer information. More... | |
double * | infeasibilityRay (bool fullRay=false) const |
Infeasibility/unbounded ray (NULL returned if none/wrong) Up to user to use delete [] on these arrays. More... | |
double * | unboundedRay () const |
double * | ray () const |
For advanced users - no need to delete - sign not changed. More... | |
bool | rayExists () const |
just test if infeasibility or unbounded Ray exists More... | |
void | deleteRay () |
just delete ray if exists More... | |
const double * | internalRay () const |
Access internal ray storage. Users should call infeasibilityRay() or unboundedRay() instead. More... | |
bool | statusExists () const |
See if status (i.e. basis) array exists (partly for OsiClp) More... | |
unsigned char * | statusArray () const |
Return address of status (i.e. basis) array (char[numberRows+numberColumns]) More... | |
unsigned char * | statusCopy () const |
Return copy of status (i.e. More... | |
void | copyinStatus (const unsigned char *statusArray) |
Copy in status (basis) vector. More... | |
void | setUserPointer (void *pointer) |
User pointer for whatever reason. More... | |
void * | getUserPointer () const |
void | setTrustedUserPointer (ClpTrustedData *pointer) |
Trusted user pointer. More... | |
ClpTrustedData * | getTrustedUserPointer () const |
int | whatsChanged () const |
What has changed in model (only for masochistic users) More... | |
void | setWhatsChanged (int value) |
int | numberThreads () const |
Number of threads (not really being used) More... | |
void | setNumberThreads (int value) |
void | passInMessageHandler (CoinMessageHandler *handler) |
Pass in Message handler (not deleted at end) More... | |
CoinMessageHandler * | pushMessageHandler (CoinMessageHandler *handler, bool &oldDefault) |
Pass in Message handler (not deleted at end) and return current. More... | |
void | popMessageHandler (CoinMessageHandler *oldHandler, bool oldDefault) |
back to previous message handler More... | |
void | newLanguage (CoinMessages::Language language) |
Set language. More... | |
void | setLanguage (CoinMessages::Language language) |
void | setDefaultMessageHandler () |
Overrides message handler with a default one. More... | |
CoinMessageHandler * | messageHandler () const |
Return handler. More... | |
CoinMessages | messages () const |
Return messages. More... | |
CoinMessages * | messagesPointer () |
Return pointer to messages. More... | |
CoinMessages | coinMessages () const |
Return Coin messages. More... | |
CoinMessages * | coinMessagesPointer () |
Return pointer to Coin messages. More... | |
void | setLogLevel (int value) |
Amount of print out: 0 - none 1 - just final 2 - just factorizations 3 - as 2 plus a bit more 4 - verbose above that 8,16,32 etc just for selective debug. More... | |
int | logLevel () const |
bool | defaultHandler () const |
Return true if default handler. More... | |
void | passInEventHandler (const ClpEventHandler *eventHandler) |
Pass in Event handler (cloned and deleted at end) More... | |
ClpEventHandler * | eventHandler () const |
Event handler. More... | |
CoinThreadRandom * | randomNumberGenerator () |
Thread specific random number generator. More... | |
CoinThreadRandom & | mutableRandomNumberGenerator () |
Thread specific random number generator. More... | |
void | setRandomSeed (int value) |
Set seed for thread specific random number generator. More... | |
int | lengthNames () const |
length of names (0 means no names0 More... | |
void | setLengthNames (int value) |
length of names (0 means no names0 More... | |
const std::vector< std::string > * | rowNames () const |
Row names. More... | |
const std::string & | rowName (int iRow) const |
std::string | getRowName (int iRow) const |
Return name or Rnnnnnnn. More... | |
const std::vector< std::string > * | columnNames () const |
Column names. More... | |
const std::string & | columnName (int iColumn) const |
std::string | getColumnName (int iColumn) const |
Return name or Cnnnnnnn. More... | |
ClpObjective * | objectiveAsObject () const |
Objective methods. More... | |
void | setObjective (ClpObjective *objective) |
void | setObjectivePointer (ClpObjective *newobjective) |
int | emptyProblem (int *infeasNumber=NULL, double *infeasSum=NULL, bool printMessage=true) |
Solve a problem with no elements - return status and dual and primal infeasibilites. More... | |
void | times (double scalar, const double *x, double *y) const |
Return y + A * x * scalar in y . More... | |
void | transposeTimes (double scalar, const double *x, double *y) const |
Return y + x * scalar * A in y . More... | |
bool | setIntParam (ClpIntParam key, int value) |
Set an integer parameter. More... | |
bool | setDblParam (ClpDblParam key, double value) |
Set an double parameter. More... | |
bool | setStrParam (ClpStrParam key, const std::string &value) |
Set an string parameter. More... | |
bool | getIntParam (ClpIntParam key, int &value) const |
bool | getDblParam (ClpDblParam key, double &value) const |
bool | getStrParam (ClpStrParam key, std::string &value) const |
void | generateCpp (FILE *fp) |
Create C++ lines to get to current state. More... | |
unsigned int | specialOptions () const |
For advanced options 1 - Don't keep changing infeasibility weight 2 - Keep nonLinearCost round solves 4 - Force outgoing variables to exact bound (primal) 8 - Safe to use dense initial factorization 16 -Just use basic variables for operation if column generation 32 -Create ray even in BAB 64 -Treat problem as feasible until last minute (i.e. More... | |
void | setSpecialOptions (unsigned int value) |
bool | inCbcBranchAndBound () const |
void | loadProblem (const ClpMatrixBase &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
Loads a problem (the constraints on the rows are given by lower and upper bounds). More... | |
void | loadProblem (const CoinPackedMatrix &matrix, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
void | loadProblem (const int numcols, const int numrows, const CoinBigIndex *start, const int *index, const double *value, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
Just like the other loadProblem() method except that the matrix is given in a standard column major ordered format (without gaps). More... | |
int | loadProblem (CoinModel &modelObject, bool tryPlusMinusOne=false) |
This loads a model from a coinModel object - returns number of errors. More... | |
void | loadProblem (const int numcols, const int numrows, const CoinBigIndex *start, const int *index, const double *value, const int *length, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
This one is for after presolve to save memory. More... | |
void | loadQuadraticObjective (const int numberColumns, const CoinBigIndex *start, const int *column, const double *element) |
Load up quadratic objective. More... | |
void | loadQuadraticObjective (const CoinPackedMatrix &matrix) |
void | deleteQuadraticObjective () |
Get rid of quadratic objective. More... | |
void | setRowObjective (const double *rowObjective) |
This just loads up a row objective. More... | |
int | readMps (const char *filename, bool keepNames=false, bool ignoreErrors=false) |
Read an mps file from the given filename. More... | |
int | readGMPL (const char *filename, const char *dataName, bool keepNames=false) |
Read GMPL files from the given filenames. More... | |
void | copyInIntegerInformation (const char *information) |
Copy in integer informations. More... | |
void | deleteIntegerInformation () |
Drop integer informations. More... | |
void | setContinuous (int index) |
Set the index-th variable to be a continuous variable. More... | |
void | setInteger (int index) |
Set the index-th variable to be an integer variable. More... | |
bool | isInteger (int index) const |
Return true if the index-th variable is an integer variable. More... | |
void | resize (int newNumberRows, int newNumberColumns) |
Resizes rim part of model. More... | |
void | deleteRows (int number, const int *which) |
Deletes rows. More... | |
void | addRow (int numberInRow, const int *columns, const double *elements, double rowLower=-COIN_DBL_MAX, double rowUpper=COIN_DBL_MAX) |
Add one row. More... | |
void | addRows (int number, const double *rowLower, const double *rowUpper, const CoinBigIndex *rowStarts, const int *columns, const double *elements) |
Add rows. More... | |
void | addRows (int number, const double *rowLower, const double *rowUpper, const CoinBigIndex *rowStarts, const int *rowLengths, const int *columns, const double *elements) |
Add rows. More... | |
void | addRows (int number, const double *rowLower, const double *rowUpper, const CoinPackedVectorBase *const *rows) |
int | addRows (const CoinBuild &buildObject, bool tryPlusMinusOne=false, bool checkDuplicates=true) |
Add rows from a build object. More... | |
int | addRows (CoinModel &modelObject, bool tryPlusMinusOne=false, bool checkDuplicates=true) |
Add rows from a model object. More... | |
void | deleteColumns (int number, const int *which) |
Deletes columns. More... | |
void | deleteRowsAndColumns (int numberRows, const int *whichRows, int numberColumns, const int *whichColumns) |
Deletes rows AND columns (keeps old sizes) More... | |
void | addColumn (int numberInColumn, const int *rows, const double *elements, double columnLower=0.0, double columnUpper=COIN_DBL_MAX, double objective=0.0) |
Add one column. More... | |
void | addColumns (int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinBigIndex *columnStarts, const int *rows, const double *elements) |
Add columns. More... | |
void | addColumns (int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinBigIndex *columnStarts, const int *columnLengths, const int *rows, const double *elements) |
void | addColumns (int number, const double *columnLower, const double *columnUpper, const double *objective, const CoinPackedVectorBase *const *columns) |
int | addColumns (const CoinBuild &buildObject, bool tryPlusMinusOne=false, bool checkDuplicates=true) |
Add columns from a build object If tryPlusMinusOne then will try adding as +-1 matrix if no matrix exists. More... | |
int | addColumns (CoinModel &modelObject, bool tryPlusMinusOne=false, bool checkDuplicates=true) |
Add columns from a model object. More... | |
void | modifyCoefficient (int row, int column, double newElement, bool keepZero=false) |
Modify one element of a matrix. More... | |
void | chgRowLower (const double *rowLower) |
Change row lower bounds. More... | |
void | chgRowUpper (const double *rowUpper) |
Change row upper bounds. More... | |
void | chgColumnLower (const double *columnLower) |
Change column lower bounds. More... | |
void | chgColumnUpper (const double *columnUpper) |
Change column upper bounds. More... | |
void | chgObjCoefficients (const double *objIn) |
Change objective coefficients. More... | |
void | borrowModel (ClpModel &otherModel) |
Borrow model. More... | |
void | returnModel (ClpModel &otherModel) |
Return model - nulls all arrays so can be deleted safely also updates any scalars. More... | |
void | createEmptyMatrix () |
Create empty ClpPackedMatrix. More... | |
CoinBigIndex | cleanMatrix (double threshold=1.0e-20) |
Really clean up matrix (if ClpPackedMatrix). More... | |
void | copy (const ClpMatrixBase *from, ClpMatrixBase *&to) |
Copy contents - resizing if necessary - otherwise re-use memory. More... | |
void | dropNames () |
Drops names - makes lengthnames 0 and names empty. More... | |
void | copyNames (const std::vector< std::string > &rowNames, const std::vector< std::string > &columnNames) |
Copies in names. More... | |
void | copyRowNames (const std::vector< std::string > &rowNames, int first, int last) |
Copies in Row names - modifies names first .. last-1. More... | |
void | copyColumnNames (const std::vector< std::string > &columnNames, int first, int last) |
Copies in Column names - modifies names first .. last-1. More... | |
void | copyRowNames (const char *const *rowNames, int first, int last) |
Copies in Row names - modifies names first .. last-1. More... | |
void | copyColumnNames (const char *const *columnNames, int first, int last) |
Copies in Column names - modifies names first .. last-1. More... | |
void | setRowName (int rowIndex, std::string &name) |
Set name of row. More... | |
void | setColumnName (int colIndex, std::string &name) |
Set name of col. More... | |
int | findNetwork (char *rotate, double fractionNeeded=0.75) |
Find a network subset. More... | |
CoinModel * | createCoinModel () const |
This creates a coinModel object. More... | |
int | writeMps (const char *filename, int formatType=0, int numberAcross=2, double objSense=0.0) const |
Write the problem in MPS format to the specified file. More... | |
Additional Inherited Members | |
Public Attributes inherited from ClpInterior | |
CoinWorkDouble | xsize_ |
CoinWorkDouble | zsize_ |
CoinWorkDouble * | rhs_ |
Rhs. More... | |
CoinWorkDouble * | x_ |
CoinWorkDouble * | y_ |
CoinWorkDouble * | dj_ |
Protected Member Functions inherited from ClpInterior | |
void | gutsOfDelete () |
Does most of deletion. More... | |
void | gutsOfCopy (const ClpInterior &rhs) |
Does most of copying. More... | |
bool | createWorkingData () |
Returns true if data looks okay, false if not. More... | |
void | deleteWorkingData () |
bool | sanityCheck () |
Sanity check on input rim data. More... | |
int | housekeeping () |
This does housekeeping. More... | |
Protected Member Functions inherited from ClpModel | |
void | gutsOfDelete (int type) |
Does most of deletion (0 = all, 1 = most) More... | |
void | gutsOfCopy (const ClpModel &rhs, int trueCopy=1) |
Does most of copying If trueCopy 0 then just points to arrays If -1 leaves as much as possible. More... | |
void | getRowBound (int iRow, double &lower, double &upper) const |
gets lower and upper bounds on rows More... | |
void | gutsOfLoadModel (int numberRows, int numberColumns, const double *collb, const double *colub, const double *obj, const double *rowlb, const double *rowub, const double *rowObjective=NULL) |
puts in format I like - 4 array matrix - may make row copy More... | |
void | gutsOfScaling () |
Does much of scaling. More... | |
double | rawObjectiveValue () const |
Objective value - always minimize. More... | |
bool | permanentArrays () const |
If we are using maximumRows_ and Columns_. More... | |
void | startPermanentArrays () |
Start using maximumRows_ and Columns_. More... | |
void | stopPermanentArrays () |
Stop using maximumRows_ and Columns_. More... | |
const char *const * | rowNamesAsChar () const |
Create row names as char **. More... | |
const char *const * | columnNamesAsChar () const |
Create column names as char **. More... | |
void | deleteNamesAsChar (const char *const *names, int number) const |
Delete char * version of names. More... | |
void | onStopped () |
On stopped - sets secondary status. More... | |
Protected Attributes inherited from ClpInterior | |
CoinWorkDouble | largestPrimalError_ |
Largest error on Ax-b. More... | |
CoinWorkDouble | largestDualError_ |
Largest error on basic duals. More... | |
CoinWorkDouble | sumDualInfeasibilities_ |
Sum of dual infeasibilities. More... | |
CoinWorkDouble | sumPrimalInfeasibilities_ |
Sum of primal infeasibilities. More... | |
CoinWorkDouble | worstComplementarity_ |
Worst complementarity. More... | |
CoinWorkDouble * | lower_ |
Working copy of lower bounds (Owner of arrays below) More... | |
CoinWorkDouble * | rowLowerWork_ |
Row lower bounds - working copy. More... | |
CoinWorkDouble * | columnLowerWork_ |
Column lower bounds - working copy. More... | |
CoinWorkDouble * | upper_ |
Working copy of upper bounds (Owner of arrays below) More... | |
CoinWorkDouble * | rowUpperWork_ |
Row upper bounds - working copy. More... | |
CoinWorkDouble * | columnUpperWork_ |
Column upper bounds - working copy. More... | |
CoinWorkDouble * | cost_ |
Working copy of objective. More... | |
ClpLsqr * | lsqrObject_ |
Pointer to Lsqr object. More... | |
ClpPdcoBase * | pdcoStuff_ |
Pointer to stuff. More... | |
CoinWorkDouble | mu_ |
Below here is standard barrier stuff mu. More... | |
CoinWorkDouble | objectiveNorm_ |
objectiveNorm. More... | |
CoinWorkDouble | rhsNorm_ |
rhsNorm. More... | |
CoinWorkDouble | solutionNorm_ |
solutionNorm. More... | |
CoinWorkDouble | dualObjective_ |
dualObjective. More... | |
CoinWorkDouble | primalObjective_ |
primalObjective. More... | |
CoinWorkDouble | diagonalNorm_ |
diagonalNorm. More... | |
CoinWorkDouble | stepLength_ |
stepLength More... | |
CoinWorkDouble | linearPerturbation_ |
linearPerturbation More... | |
CoinWorkDouble | diagonalPerturbation_ |
diagonalPerturbation More... | |
CoinWorkDouble | gamma_ |
CoinWorkDouble | delta_ |
CoinWorkDouble | targetGap_ |
targetGap More... | |
CoinWorkDouble | projectionTolerance_ |
projectionTolerance More... | |
CoinWorkDouble | maximumRHSError_ |
maximumRHSError. maximum Ax More... | |
CoinWorkDouble | maximumBoundInfeasibility_ |
maximumBoundInfeasibility. More... | |
CoinWorkDouble | maximumDualError_ |
maximumDualError. More... | |
CoinWorkDouble | diagonalScaleFactor_ |
diagonalScaleFactor. More... | |
CoinWorkDouble | scaleFactor_ |
scaleFactor. For scaling objective More... | |
CoinWorkDouble | actualPrimalStep_ |
actualPrimalStep More... | |
CoinWorkDouble | actualDualStep_ |
actualDualStep More... | |
CoinWorkDouble | smallestInfeasibility_ |
smallestInfeasibility More... | |
CoinWorkDouble | historyInfeasibility_ [LENGTH_HISTORY] |
CoinWorkDouble | complementarityGap_ |
complementarityGap. More... | |
CoinWorkDouble | baseObjectiveNorm_ |
baseObjectiveNorm More... | |
CoinWorkDouble | worstDirectionAccuracy_ |
worstDirectionAccuracy More... | |
CoinWorkDouble | maximumRHSChange_ |
maximumRHSChange More... | |
CoinWorkDouble * | errorRegion_ |
errorRegion. i.e. Ax More... | |
CoinWorkDouble * | rhsFixRegion_ |
rhsFixRegion. More... | |
CoinWorkDouble * | upperSlack_ |
upperSlack More... | |
CoinWorkDouble * | lowerSlack_ |
lowerSlack More... | |
CoinWorkDouble * | diagonal_ |
diagonal More... | |
CoinWorkDouble * | solution_ |
solution More... | |
CoinWorkDouble * | workArray_ |
work array More... | |
CoinWorkDouble * | deltaX_ |
delta X More... | |
CoinWorkDouble * | deltaY_ |
delta Y More... | |
CoinWorkDouble * | deltaZ_ |
deltaZ. More... | |
CoinWorkDouble * | deltaW_ |
deltaW. More... | |
CoinWorkDouble * | deltaSU_ |
deltaS. More... | |
CoinWorkDouble * | deltaSL_ |
CoinWorkDouble * | primalR_ |
Primal regularization array. More... | |
CoinWorkDouble * | dualR_ |
Dual regularization array. More... | |
CoinWorkDouble * | rhsB_ |
rhs B More... | |
CoinWorkDouble * | rhsU_ |
rhsU. More... | |
CoinWorkDouble * | rhsL_ |
rhsL. More... | |
CoinWorkDouble * | rhsZ_ |
rhsZ. More... | |
CoinWorkDouble * | rhsW_ |
rhsW. More... | |
CoinWorkDouble * | rhsC_ |
rhs C More... | |
CoinWorkDouble * | zVec_ |
zVec More... | |
CoinWorkDouble * | wVec_ |
wVec More... | |
ClpCholeskyBase * | cholesky_ |
cholesky. More... | |
int | numberComplementarityPairs_ |
numberComplementarityPairs i.e. ones with lower and/or upper bounds (not fixed) More... | |
int | numberComplementarityItems_ |
numberComplementarityItems_ i.e. number of active bounds More... | |
int | maximumBarrierIterations_ |
Maximum iterations. More... | |
bool | gonePrimalFeasible_ |
gonePrimalFeasible. More... | |
bool | goneDualFeasible_ |
goneDualFeasible. More... | |
int | algorithm_ |
Which algorithm being used. More... | |
Protected Attributes inherited from ClpModel | |
double | optimizationDirection_ |
Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore. More... | |
double | dblParam_ [ClpLastDblParam] |
Array of double parameters. More... | |
double | objectiveValue_ |
Objective value. More... | |
double | smallElement_ |
Small element value. More... | |
double | objectiveScale_ |
Scaling of objective. More... | |
double | rhsScale_ |
Scaling of rhs and bounds. More... | |
int | numberRows_ |
Number of rows. More... | |
int | numberColumns_ |
Number of columns. More... | |
double * | rowActivity_ |
Row activities. More... | |
double * | columnActivity_ |
Column activities. More... | |
double * | dual_ |
Duals. More... | |
double * | reducedCost_ |
Reduced costs. More... | |
double * | rowLower_ |
Row lower. More... | |
double * | rowUpper_ |
Row upper. More... | |
ClpObjective * | objective_ |
Objective. More... | |
double * | rowObjective_ |
Row Objective (? sign) - may be NULL. More... | |
double * | columnLower_ |
Column Lower. More... | |
double * | columnUpper_ |
Column Upper. More... | |
ClpMatrixBase * | matrix_ |
Packed matrix. More... | |
ClpMatrixBase * | rowCopy_ |
Row copy if wanted. More... | |
ClpPackedMatrix * | scaledMatrix_ |
Scaled packed matrix. More... | |
double * | ray_ |
Infeasible/unbounded ray. More... | |
double * | rowScale_ |
Row scale factors for matrix. More... | |
double * | columnScale_ |
Column scale factors. More... | |
double * | inverseRowScale_ |
Inverse row scale factors for matrix (end of rowScale_) More... | |
double * | inverseColumnScale_ |
Inverse column scale factors for matrix (end of columnScale_) More... | |
int | scalingFlag_ |
Scale flag, 0 none, 1 equilibrium, 2 geometric, 3, auto, 4 dynamic, 5 geometric on rows. More... | |
unsigned char * | status_ |
Status (i.e. More... | |
char * | integerType_ |
Integer information. More... | |
void * | userPointer_ |
User pointer for whatever reason. More... | |
ClpTrustedData * | trustedUserPointer_ |
Trusted user pointer e.g. for heuristics. More... | |
int | intParam_ [ClpLastIntParam] |
Array of integer parameters. More... | |
int | numberIterations_ |
Number of iterations. More... | |
int | solveType_ |
Solve type - 1 simplex, 2 simplex interface, 3 Interior. More... | |
unsigned int | whatsChanged_ |
int | problemStatus_ |
Status of problem. More... | |
int | secondaryStatus_ |
Secondary status of problem. More... | |
int | lengthNames_ |
length of names (0 means no names) More... | |
int | numberThreads_ |
Number of threads (not very operational) More... | |
unsigned int | specialOptions_ |
For advanced options See get and set for meaning. More... | |
CoinMessageHandler * | handler_ |
Message handler. More... | |
bool | defaultHandler_ |
Flag to say if default handler (so delete) More... | |
CoinThreadRandom | randomNumberGenerator_ |
Thread specific random number generator. More... | |
ClpEventHandler * | eventHandler_ |
Event handler. More... | |
std::vector< std::string > | rowNames_ |
Row names. More... | |
std::vector< std::string > | columnNames_ |
Column names. More... | |
CoinMessages | messages_ |
Messages. More... | |
CoinMessages | coinMessages_ |
Coin messages. More... | |
int | maximumColumns_ |
Maximum number of columns in model. More... | |
int | maximumRows_ |
Maximum number of rows in model. More... | |
int | maximumInternalColumns_ |
Maximum number of columns (internal arrays) in model. More... | |
int | maximumInternalRows_ |
Maximum number of rows (internal arrays) in model. More... | |
CoinPackedMatrix | baseMatrix_ |
Base packed matrix. More... | |
CoinPackedMatrix | baseRowCopy_ |
Base row copy. More... | |
double * | savedRowScale_ |
Saved row scale factors for matrix. More... | |
double * | savedColumnScale_ |
Saved column scale factors. More... | |
std::string | strParam_ [ClpLastStrParam] |
Array of string parameters. More... | |
This solves LPs using the predictor-corrector method due to Mehrotra.
It also uses multiple centrality corrections as in Gondzio.
See; S. Mehrotra, "On the implementation of a primal-dual interior point method", SIAM Journal on optimization, 2 (1992) J. Gondzio, "Multiple centraility corrections in a primal-dual method for linear programming", Computational Optimization and Applications",6 (1996)
It is rather basic as Interior point is not my speciality
It inherits from ClpInterior. It has no data of its own and is never created - only cast from a ClpInterior object at algorithm time.
It can also solve QPs
Definition at line 37 of file ClpPredictorCorrector.hpp.
int ClpPredictorCorrector::solve | ( | ) |
Primal Dual Predictor Corrector algorithm.
Method
Big TODO
CoinWorkDouble ClpPredictorCorrector::findStepLength | ( | int | phase | ) |
findStepLength.
CoinWorkDouble ClpPredictorCorrector::findDirectionVector | ( | const int | phase | ) |
findDirectionVector.
int ClpPredictorCorrector::createSolution | ( | ) |
createSolution. Creates solution from scratch (- code if no memory)
CoinWorkDouble ClpPredictorCorrector::complementarityGap | ( | int & | numberComplementarityPairs, |
int & | numberComplementarityItems, | ||
const int | phase | ||
) |
complementarityGap. Computes gap
void ClpPredictorCorrector::setupForSolve | ( | const int | phase | ) |
setupForSolve.
void ClpPredictorCorrector::solveSystem | ( | CoinWorkDouble * | region1, |
CoinWorkDouble * | region2, | ||
const CoinWorkDouble * | region1In, | ||
const CoinWorkDouble * | region2In, | ||
const CoinWorkDouble * | saveRegion1, | ||
const CoinWorkDouble * | saveRegion2, | ||
bool | gentleRefine | ||
) |
Does solve.
region1 is for deltaX (columns+rows), region2 for deltaPi (rows)
bool ClpPredictorCorrector::checkGoodMove | ( | const bool | doCorrector, |
CoinWorkDouble & | bestNextGap, | ||
bool | allowIncreasingGap | ||
) |
sees if looks plausible change in complementarity
bool ClpPredictorCorrector::checkGoodMove2 | ( | CoinWorkDouble | move, |
CoinWorkDouble & | bestNextGap, | ||
bool | allowIncreasingGap | ||
) |
: checks for one step size
int ClpPredictorCorrector::updateSolution | ( | CoinWorkDouble | nextGap | ) |
updateSolution. Updates solution at end of iteration
CoinWorkDouble ClpPredictorCorrector::affineProduct | ( | ) |
Save info on products of affine deltaT*deltaW and deltaS*deltaZ.
void ClpPredictorCorrector::debugMove | ( | int | phase, |
CoinWorkDouble | primalStep, | ||
CoinWorkDouble | dualStep | ||
) |
See exactly what would happen given current deltas.