Go to the documentation of this file.
11 #ifndef ClpSimplexPrimal_H
12 #define ClpSimplexPrimal_H
114 int primal(
int ifValuesPass = 0,
int startFinishOptions = 0);
172 double &objectiveChange,
183 CoinIndexedVector *rhsArray,
184 CoinIndexedVector *spareArray,
194 CoinIndexedVector *spareRow1,
195 CoinIndexedVector *spareRow2,
196 CoinIndexedVector *spareColumn1,
197 CoinIndexedVector *spareColumn2);
215 bool doFactorization,
This solves LPs using the simplex method.
double theta() const
Theta (pivot change)
bool exactOutgoing() const
void perturb(int type)
Perturbs problem (method depends on perturbation())
CoinIndexedVector * rowArray(int index) const
Useful row length arrays (0,1,2,3,4,5)
void primalRay(CoinIndexedVector *rowArray)
Create primal ray.
void statusOfProblemInPrimal(int &lastCleaned, int type, ClpSimplexProgress *progress, bool doFactorization, int ifValuesPass, ClpSimplex *saveModel=NULL)
Refactorizes if necessary Checks if finished.
CoinIndexedVector * columnArray(int index) const
Useful column length arrays (0,1,2,3,4,5)
int unflag()
Unflag all variables and return number unflagged.
int pivotResult(int ifValuesPass=0)
Do last half of an iteration.
int saveModel(const char *fileName)
Save model to file, returns 0 if success.
double * ray() const
For advanced users - no need to delete - sign not changed.
bool unPerturb()
Take off effect of perturbation and say whether to try dual.
void primalColumn(CoinIndexedVector *updateArray, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2)
Chooses primal pivot column updateArray has cost updates (also use pivotRow_ from last iteration) Wou...
int updatePrimalsInPrimal(CoinIndexedVector *rowArray, double theta, double &objectiveChange, int valuesPass)
The primals are updated by the given array.
For saving extra information to see if looping.
This solves LPs using the primal simplex method.
void exactOutgoing(bool onOff)
Normally outgoing variables can go out to slightly negative values (but within tolerance) - this is t...
int nextSuperBasic(int superBasicType, CoinIndexedVector *columnArray)
Get next superbasic -1 if none, Normal type is 1 If type is 3 then initializes sorted list if 2 uses ...
int lexSolve()
Sort of lexicographic resolve.
void primalRow(CoinIndexedVector *rowArray, CoinIndexedVector *rhsArray, CoinIndexedVector *spareArray, int valuesPass)
Row array has pivot column This chooses pivot row.
int primal(int ifValuesPass=0, int startFinishOptions=0)
Primal algorithm.
void clearAll()
Clears all bits and clears rowArray[1] etc.
bool alwaysOptimal() const
ClpSimplexProgress * progress()
For dealing with all issues of cycling etc.
int whileIterating(int valuesOption)
This has the flow between re-factorizations.
int checkUnbounded(CoinIndexedVector *ray, CoinIndexedVector *spare, double changeCost)
Checks if tentative optimal actually means unbounded in primal Returns -3 if not, 2 if is unbounded.