Cbc  2.9.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members
ClpPredictorCorrector Class Reference

This solves LPs using the predictor-corrector method due to Mehrotra. More...

#include <ClpPredictorCorrector.hpp>

+ Inheritance diagram for ClpPredictorCorrector:
+ Collaboration diagram for ClpPredictorCorrector:

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...
 
ClpInterioroperator= (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...
 
CoinWorkDoubleprimalR () const
 Primal erturbation vector. More...
 
CoinWorkDoubledualR () 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
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
 
CoinPackedMatrixmatrix () const
 Matrix (if not ClpPackedmatrix be careful about memory leak. More...
 
int 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)
 
ClpMatrixBaserowCopy () const
 Row Matrix. More...
 
void setNewRowCopy (ClpMatrixBase *newCopy)
 Set new row matrix. More...
 
ClpMatrixBaseclpMatrix () const
 Clp Matrix. More...
 
ClpPackedMatrixclpScaledMatrix () const
 Scaled ClpPackedMatrix. More...
 
void setClpScaledMatrix (ClpPackedMatrix *scaledMatrix)
 Sets pointer to scaled ClpPackedMatrix. More...
 
ClpPackedMatrixswapScaledMatrix (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...
 
voidgetUserPointer () const
 
void setTrustedUserPointer (ClpTrustedData *pointer)
 Trusted user pointer. More...
 
ClpTrustedDatagetTrustedUserPointer () 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)
 
 ClpModel (bool emptyMessages=false)
 Default constructor. More...
 
 ClpModel (const ClpModel &rhs, int scalingMode=-1)
 Copy constructor. More...
 
ClpModeloperator= (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...
 
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...
 
int 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...
 
CoinModelcreateCoinModel () 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...
 
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 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...
 
void passInMessageHandler (CoinMessageHandler *handler)
 Pass in Message handler (not deleted at end) More...
 
CoinMessageHandlerpushMessageHandler (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...
 
CoinMessageHandlermessageHandler () const
 Return handler. More...
 
CoinMessages messages () const
 Return messages. More...
 
CoinMessagesmessagesPointer ()
 Return pointer to messages. More...
 
CoinMessages coinMessages () const
 Return Coin messages. More...
 
CoinMessagescoinMessagesPointer ()
 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...
 
ClpEventHandlereventHandler () const
 Event handler. More...
 
CoinThreadRandomrandomNumberGenerator ()
 Thread specific random number generator. More...
 
CoinThreadRandommutableRandomNumberGenerator ()
 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...
 
ClpObjectiveobjectiveAsObject () 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
 

Additional Inherited Members

- Public Attributes inherited from ClpInterior
CoinWorkDouble xsize_
 
CoinWorkDouble zsize_
 
CoinWorkDoublerhs_
 Rhs. More...
 
CoinWorkDoublex_
 
CoinWorkDoubley_
 
CoinWorkDoubledj_
 
- 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...
 
CoinWorkDoublelower_
 Working copy of lower bounds (Owner of arrays below) More...
 
CoinWorkDoublerowLowerWork_
 Row lower bounds - working copy. More...
 
CoinWorkDoublecolumnLowerWork_
 Column lower bounds - working copy. More...
 
CoinWorkDoubleupper_
 Working copy of upper bounds (Owner of arrays below) More...
 
CoinWorkDoublerowUpperWork_
 Row upper bounds - working copy. More...
 
CoinWorkDoublecolumnUpperWork_
 Column upper bounds - working copy. More...
 
CoinWorkDoublecost_
 Working copy of objective. More...
 
ClpLsqrlsqrObject_
 Pointer to Lsqr object. More...
 
ClpPdcoBasepdcoStuff_
 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...
 
CoinWorkDoubleerrorRegion_
 errorRegion. i.e. Ax More...
 
CoinWorkDoublerhsFixRegion_
 rhsFixRegion. More...
 
CoinWorkDoubleupperSlack_
 upperSlack More...
 
CoinWorkDoublelowerSlack_
 lowerSlack More...
 
CoinWorkDoublediagonal_
 diagonal More...
 
CoinWorkDoublesolution_
 solution More...
 
CoinWorkDoubleworkArray_
 work array More...
 
CoinWorkDoubledeltaX_
 delta X More...
 
CoinWorkDoubledeltaY_
 delta Y More...
 
CoinWorkDoubledeltaZ_
 deltaZ. More...
 
CoinWorkDoubledeltaW_
 deltaW. More...
 
CoinWorkDoubledeltaSU_
 deltaS. More...
 
CoinWorkDoubledeltaSL_
 
CoinWorkDoubleprimalR_
 Primal regularization array. More...
 
CoinWorkDoubledualR_
 Dual regularization array. More...
 
CoinWorkDoublerhsB_
 rhs B More...
 
CoinWorkDoublerhsU_
 rhsU. More...
 
CoinWorkDoublerhsL_
 rhsL. More...
 
CoinWorkDoublerhsZ_
 rhsZ. More...
 
CoinWorkDoublerhsW_
 rhsW. More...
 
CoinWorkDoublerhsC_
 rhs C More...
 
CoinWorkDoublezVec_
 zVec More...
 
CoinWorkDoublewVec_
 wVec More...
 
ClpCholeskyBasecholesky_
 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...
 
ClpObjectiveobjective_
 Objective. More...
 
double * rowObjective_
 Row Objective (? sign) - may be NULL. More...
 
double * columnLower_
 Column Lower. More...
 
double * columnUpper_
 Column Upper. More...
 
ClpMatrixBasematrix_
 Packed matrix. More...
 
ClpMatrixBaserowCopy_
 Row copy if wanted. More...
 
ClpPackedMatrixscaledMatrix_
 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...
 
voiduserPointer_
 User pointer for whatever reason. More...
 
ClpTrustedDatatrustedUserPointer_
 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...
 
CoinMessageHandlerhandler_
 Message handler. More...
 
bool defaultHandler_
 Flag to say if default handler (so delete) More...
 
CoinThreadRandom randomNumberGenerator_
 Thread specific random number generator. More...
 
ClpEventHandlereventHandler_
 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...
 

Detailed Description

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.

Member Function Documentation

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.


The documentation for this class was generated from the following file: