Cgl 0.59.7

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ClpSimplexPrimal.hpp
Go to the documentation of this file.
1 /* $Id: ClpSimplexPrimal.hpp 1665 2011-01-04 17:55:54Z lou $ */
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 /*
6 Authors
7
8 John Forrest
9
10 */
11 #ifndef ClpSimplexPrimal_H
12 #define ClpSimplexPrimal_H
13
14 #include "ClpSimplex.hpp"
15
23 class ClpSimplexPrimal : public ClpSimplex {
24
25 public:
26
115 int primal(int ifValuesPass = 0, int startFinishOptions = 0);
117
120 void alwaysOptimal(bool onOff);
122 bool alwaysOptimal() const;
127 void exactOutgoing(bool onOff);
128 bool exactOutgoing() const;
130
145 int whileIterating(int valuesOption);
146
165 int pivotResult(int ifValuesPass = 0);
166
167
172 int updatePrimalsInPrimal(CoinIndexedVector * rowArray,
173 double theta,
174 double & objectiveChange,
175 int valuesPass);
184 void primalRow(CoinIndexedVector * rowArray,
185 CoinIndexedVector * rhsArray,
186 CoinIndexedVector * spareArray,
187 int valuesPass);
195 void primalColumn(CoinIndexedVector * updateArray,
196 CoinIndexedVector * spareRow1,
197 CoinIndexedVector * spareRow2,
198 CoinIndexedVector * spareColumn1,
199 CoinIndexedVector * spareColumn2);
200
203 int checkUnbounded(CoinIndexedVector * ray, CoinIndexedVector * spare,
204 double changeCost);
215 void statusOfProblemInPrimal(int & lastCleaned, int type,
216 ClpSimplexProgress * progress,
217 bool doFactorization,
218 int ifValuesPass,
219 ClpSimplex * saveModel = NULL);
221 void perturb(int type);
223 bool unPerturb();
225 int unflag();
231 int nextSuperBasic(int superBasicType, CoinIndexedVector * columnArray);
232
234 void primalRay(CoinIndexedVector * rowArray);
236 void clearAll();
237
239 int lexSolve();
240
242 };
243 #endif
244
ClpModel::ray
double * ray() const
For advanced users - no need to delete - sign not changed.
Definition: ClpModel.hpp:772
ClpSimplex.hpp
ClpSimplexPrimal::perturb
void perturb(int type)
Perturbs problem (method depends on perturbation())
ClpSimplexPrimal::whileIterating
int whileIterating(int valuesOption)
This has the flow between re-factorizations.
ClpSimplexPrimal::primalRay
void primalRay(CoinIndexedVector *rowArray)
Create primal ray.
ClpSimplex::theta
double theta() const
Theta (pivot change)
Definition: ClpSimplex.hpp:1182
ClpSimplexPrimal::checkUnbounded
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...
ClpSimplexPrimal::statusOfProblemInPrimal
void statusOfProblemInPrimal(int &lastCleaned, int type, ClpSimplexProgress *progress, bool doFactorization, int ifValuesPass, ClpSimplex *saveModel=NULL)
Refactorizes if necessary Checks if finished.
ClpSimplexProgress
For saving extra information to see if looping.
Definition: ClpSolve.hpp:261
ClpSimplexPrimal::alwaysOptimal
bool alwaysOptimal() const
ClpSimplexPrimal::primalColumn
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...
ClpSimplexPrimal::updatePrimalsInPrimal
int updatePrimalsInPrimal(CoinIndexedVector *rowArray, double theta, double &objectiveChange, int valuesPass)
The primals are updated by the given array.
ClpSimplexPrimal::exactOutgoing
bool exactOutgoing() const
ClpSimplexPrimal::pivotResult
int pivotResult(int ifValuesPass=0)
Do last half of an iteration.
ClpSimplexPrimal::unflag
int unflag()
Unflag all variables and return number unflagged.
ClpSimplex
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:70
ClpSimplexPrimal::unPerturb
bool unPerturb()
Take off effect of perturbation and say whether to try dual.
CoinIndexedVector
Indexed Vector.
Definition: CoinIndexedVector.hpp:104
ClpSimplexPrimal::nextSuperBasic
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 ...
ClpSimplexPrimal::primalRow
void primalRow(CoinIndexedVector *rowArray, CoinIndexedVector *rhsArray, CoinIndexedVector *spareArray, int valuesPass)
Row array has pivot column This chooses pivot row.
ClpSimplexPrimal::primal
int primal(int ifValuesPass=0, int startFinishOptions=0)
Primal algorithm.
ClpSimplex::columnArray
CoinIndexedVector * columnArray(int index) const
Useful column length arrays (0,1,2,3,4,5)
Definition: ClpSimplex.hpp:731
ClpSimplexPrimal::lexSolve
int lexSolve()
Sort of lexicographic resolve.
ClpSimplex::saveModel
int saveModel(const char *fileName)
Save model to file, returns 0 if success.
ClpSimplexPrimal::clearAll
void clearAll()
Clears all bits and clears rowArray[1] etc.
ClpSimplex::progress
ClpSimplexProgress * progress()
For dealing with all issues of cycling etc.
Definition: ClpSimplex.hpp:1330
ClpSimplex::rowArray
CoinIndexedVector * rowArray(int index) const
Useful row length arrays (0,1,2,3,4,5)
Definition: ClpSimplex.hpp:727
ClpSimplexPrimal
This solves LPs using the primal simplex method.
Definition: ClpSimplexPrimal.hpp:23