11 #ifndef AbcSimplexPrimal_H
12 #define AbcSimplexPrimal_H
115 int primal(
int ifValuesPass = 0,
int startFinishOptions = 0);
175 double & objectiveChange,
181 double theta,
bool valuesPass);
185 const double * originalCost,
186 const double extraCost[4],
187 double & objectiveChange,
void createUpdateDuals(CoinIndexedVector &rowArray, const double *originalCost, const double extraCost[4], double &objectiveChange, int valuesPass)
After rowArray will have cost changes for use next iteration.
void primalColumn(CoinPartitionedVector *updateArray, CoinPartitionedVector *spareRow2, CoinPartitionedVector *spareColumn1)
Chooses primal pivot column updateArray has cost updates (also use pivotRow_ from last iteration) Wou...
int doFTUpdate(CoinIndexedVector *vector[4])
Do FT update as separate function for minor iterations (nonzero return code on problems) ...
int unflag()
Unflag all variables and return number unflagged.
int primal(int ifValuesPass=0, int startFinishOptions=0)
Primal algorithm.
bool exactOutgoing() const
Do not change infeasibility cost and always say optimal.
void perturb(int type)
Perturbs problem (method depends on perturbation())
void updatePartialUpdate(CoinIndexedVector &partialUpdate)
Update partial Ftran by R update.
int lexSolve()
Sort of lexicographic resolve.
CoinIndexedVector * columnArray(int index) const
Useful column length arrays (0,1,2,3,4,5)
This solves LPs using the primal simplex method.
double theta() const
Theta (pivot change)
bool unPerturb()
Take off effect of perturbation and say whether to try dual.
int pivotResult(int ifValuesPass=0)
Do last half of an iteration.
void statusOfProblemInPrimal(int type)
Refactorizes if necessary Checks if finished.
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 ...
double updateMinorCandidate(const CoinIndexedVector &updateBy, CoinIndexedVector &candidate, int sequenceIn)
Update minor candidate vector - new reduced cost returned later try and get change in reduced cost (t...
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...
void clearAll()
Clears all bits and clears rowArray[1] etc.
CoinIndexedVector * rowArray(int index) const
Useful row length arrays (0,1,2,3,4,5)
int whileIterating(int valuesOption)
This has the flow between re-factorizations.
int updatePrimalsInPrimal(CoinIndexedVector *rowArray, double theta, double &objectiveChange, int valuesPass)
The primals are updated by the given array.
bool alwaysOptimal() const
Do not change infeasibility cost and always say optimal.
int pivotResult4(int ifValuesPass=0)
This has the flow between re-factorizations.
void primalRow(CoinIndexedVector *rowArray, CoinIndexedVector *rhsArray, CoinIndexedVector *spareArray, int valuesPass)
Row array has pivot column This chooses pivot row.
int sequenceIn() const
Return sequence In or Out.
void primalRay(CoinIndexedVector *rowArray)
Create primal ray.
double * ray() const
For advanced users - no need to delete - sign not changed.