coin-Bcp
ClpSimplexPrimal.hpp
Go to the documentation of this file.
1 /* $Id: ClpSimplexPrimal.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
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:
114  int primal(int ifValuesPass = 0, int startFinishOptions = 0);
116 
119  void alwaysOptimal(bool onOff);
121  bool alwaysOptimal() const;
126  void exactOutgoing(bool onOff);
127  bool exactOutgoing() const;
129 
144  int whileIterating(int valuesOption);
145 
164  int pivotResult(int ifValuesPass = 0);
165 
171  double theta,
172  double &objectiveChange,
173  int valuesPass);
182  void primalRow(CoinIndexedVector *rowArray,
183  CoinIndexedVector *rhsArray,
184  CoinIndexedVector *spareArray,
185  int valuesPass);
193  void primalColumn(CoinIndexedVector *updateArray,
194  CoinIndexedVector *spareRow1,
195  CoinIndexedVector *spareRow2,
196  CoinIndexedVector *spareColumn1,
197  CoinIndexedVector *spareColumn2);
198 
202  double changeCost);
213  void statusOfProblemInPrimal(int &lastCleaned, int type,
215  bool doFactorization,
216  int ifValuesPass,
217  ClpSimplex *saveModel = NULL);
219  void perturb(int type);
221  bool unPerturb();
223  int unflag();
229  int nextSuperBasic(int superBasicType, CoinIndexedVector *columnArray);
230 
232  void primalRay(CoinIndexedVector *rowArray);
234  void clearAll();
235 
237  int lexSolve();
238 
240 };
241 #endif
242 
243 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
244 */
void statusOfProblemInPrimal(int &lastCleaned, int type, ClpSimplexProgress *progress, bool doFactorization, int ifValuesPass, ClpSimplex *saveModel=NULL)
Refactorizes if necessary Checks if finished.
int updatePrimalsInPrimal(CoinIndexedVector *rowArray, double theta, double &objectiveChange, int valuesPass)
The primals are updated by the given array.
int primal(int ifValuesPass=0, int startFinishOptions=0)
Primal algorithm.
int unflag()
Unflag all variables and return number unflagged.
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...
int whileIterating(int valuesOption)
This has the flow between re-factorizations.
For saving extra information to see if looping.
Definition: ClpSolve.hpp:310
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...
CoinIndexedVector * columnArray(int index) const
Useful column length arrays (0,1,2,3,4,5)
Definition: ClpSimplex.hpp:820
double theta() const
Theta (pivot change)
ClpSimplexProgress * progress()
For dealing with all issues of cycling etc.
int pivotResult(int ifValuesPass=0)
Do last half of an iteration.
int saveModel(const char *fileName)
Save model to file, returns 0 if success.
void primalRow(CoinIndexedVector *rowArray, CoinIndexedVector *rhsArray, CoinIndexedVector *spareArray, int valuesPass)
Row array has pivot column This chooses pivot row.
Indexed Vector.
void clearAll()
Clears all bits and clears rowArray[1] etc.
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 ...
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:106
bool exactOutgoing() const
Do not change infeasibility cost and always say optimal.
bool unPerturb()
Take off effect of perturbation and say whether to try dual.
This solves LPs using the primal simplex method.
CoinIndexedVector * rowArray(int index) const
Useful row length arrays (0,1,2,3,4,5)
Definition: ClpSimplex.hpp:815
bool alwaysOptimal() const
Do not change infeasibility cost and always say optimal.
void primalRay(CoinIndexedVector *rowArray)
Create primal ray.
void perturb(int type)
Perturbs problem (method depends on perturbation())
int lexSolve()
Sort of lexicographic resolve.
double * ray() const
For advanced users - no need to delete - sign not changed.
Definition: ClpModel.hpp:859