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
00113 int primal(int ifValuesPass=0);
00115
00118
00119 void alwaysOptimal(bool onOff);
00120 bool alwaysOptimal() const;
00125 void exactOutgoing(bool onOff);
00126 bool exactOutgoing() const;
00128
00143 int whileIterating(int valuesOption);
00144
00163 int pivotResult(int ifValuesPass=0);
00164
00165
00170 int updatePrimalsInPrimal(CoinIndexedVector * rowArray,
00171 double theta,
00172 double & objectiveChange,
00173 int valuesPass);
00182 void primalRow(CoinIndexedVector * rowArray,
00183 CoinIndexedVector * rhsArray,
00184 CoinIndexedVector * spareArray,
00185 CoinIndexedVector * spareArray2,
00186 int valuesPass);
00194 void primalColumn(CoinIndexedVector * updateArray,
00195 CoinIndexedVector * spareRow1,
00196 CoinIndexedVector * spareRow2,
00197 CoinIndexedVector * spareColumn1,
00198 CoinIndexedVector * spareColumn2);
00199
00202 int checkUnbounded(CoinIndexedVector * ray,CoinIndexedVector * spare,
00203 double changeCost);
00214 void statusOfProblemInPrimal(int & lastCleaned, int type,
00215 ClpSimplexProgress * progress,
00216 bool doFactorization,
00217 ClpSimplex * saveModel=NULL);
00219 void perturb(int type);
00221 bool unPerturb();
00223 int unflag();
00229 int nextSuperBasic(int superBasicType,CoinIndexedVector * columnArray);
00230
00232 void primalRay(CoinIndexedVector * rowArray);
00234 void clearAll();
00235
00237 };
00238 #endif
00239