Clp 1.16.9
Loading...
Searching...
No Matches
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
24
25public:
26
115 int primal(int ifValuesPass = 0, int startFinishOptions = 0);
117
121 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,
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
double * ray() const
For advanced users - no need to delete - sign not changed.
Definition: ClpModel.hpp:772
This solves LPs using the primal simplex method.
bool alwaysOptimal() const
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.
bool unPerturb()
Take off effect of perturbation and say whether to try dual.
void exactOutgoing(bool onOff)
Normally outgoing variables can go out to slightly negative values (but within tolerance) - this is t...
int whileIterating(int valuesOption)
This has the flow between re-factorizations.
bool exactOutgoing() const
void primalRow(CoinIndexedVector *rowArray, CoinIndexedVector *rhsArray, CoinIndexedVector *spareArray, int valuesPass)
Row array has pivot column This chooses pivot row.
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.
int primal(int ifValuesPass=0, int startFinishOptions=0)
Primal algorithm.
void alwaysOptimal(bool onOff)
Do not change infeasibility cost and always say optimal.
void primalRay(CoinIndexedVector *rowArray)
Create primal ray.
int updatePrimalsInPrimal(CoinIndexedVector *rowArray, double theta, double &objectiveChange, int valuesPass)
The primals are updated by the given array.
int unflag()
Unflag all variables and return number unflagged.
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...
void statusOfProblemInPrimal(int &lastCleaned, int type, ClpSimplexProgress *progress, bool doFactorization, int ifValuesPass, ClpSimplex *saveModel=NULL)
Refactorizes if necessary Checks if finished.
void perturb(int type)
Perturbs problem (method depends on perturbation())
int pivotResult(int ifValuesPass=0)
Do last half of an iteration.
For saving extra information to see if looping.
Definition: ClpSolve.hpp:261
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:70
int saveModel(const char *fileName)
Save model to file, returns 0 if success.
double theta() const
Theta (pivot change)
CoinIndexedVector * rowArray(int index) const
Useful row length arrays (0,1,2,3,4,5)
Definition: ClpSimplex.hpp:727
CoinIndexedVector * columnArray(int index) const
Useful column length arrays (0,1,2,3,4,5)
Definition: ClpSimplex.hpp:731
ClpSimplexProgress * progress()
For dealing with all issues of cycling etc.