00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef ClpSimplexPrimal_H
00011 #define ClpSimplexPrimal_H
00012
00013 #include "ClpSimplex.hpp"
00014
00022 class ClpSimplexPrimal : public ClpSimplex {
00023
00024 public:
00025
00114 int primal(int ifValuesPass=0, int startFinishOptions=0);
00116
00119
00120 void alwaysOptimal(bool onOff);
00121 bool alwaysOptimal() const;
00126 void exactOutgoing(bool onOff);
00127 bool exactOutgoing() const;
00129
00144 int whileIterating(int valuesOption);
00145
00164 int pivotResult(int ifValuesPass=0);
00165
00166
00171 int updatePrimalsInPrimal(CoinIndexedVector * rowArray,
00172 double theta,
00173 double & objectiveChange,
00174 int valuesPass);
00183 void primalRow(CoinIndexedVector * rowArray,
00184 CoinIndexedVector * rhsArray,
00185 CoinIndexedVector * spareArray,
00186 CoinIndexedVector * spareArray2,
00187 int valuesPass);
00195 void primalColumn(CoinIndexedVector * updateArray,
00196 CoinIndexedVector * spareRow1,
00197 CoinIndexedVector * spareRow2,
00198 CoinIndexedVector * spareColumn1,
00199 CoinIndexedVector * spareColumn2);
00200
00203 int checkUnbounded(CoinIndexedVector * ray,CoinIndexedVector * spare,
00204 double changeCost);
00215 void statusOfProblemInPrimal(int & lastCleaned, int type,
00216 ClpSimplexProgress * progress,
00217 bool doFactorization,
00218 int ifValuesPass,
00219 ClpSimplex * saveModel=NULL);
00221 void perturb(int type);
00223 bool unPerturb();
00225 int unflag();
00231 int nextSuperBasic(int superBasicType,CoinIndexedVector * columnArray);
00232
00234 void primalRay(CoinIndexedVector * rowArray);
00236 void clearAll();
00237
00239 };
00240 #endif
00241