Clp trunk
|
00001 /* $Id$ */ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 00005 /* 00006 Authors 00007 00008 John Forrest 00009 00010 */ 00011 #ifndef ClpSimplexPrimal_H 00012 #define ClpSimplexPrimal_H 00013 00014 #include "ClpSimplex.hpp" 00015 00023 class ClpSimplexPrimal : public ClpSimplex { 00024 00025 public: 00026 00115 int primal(int ifValuesPass = 0, int startFinishOptions = 0); 00117 00120 00121 void alwaysOptimal(bool onOff); 00122 bool alwaysOptimal() const; 00127 void exactOutgoing(bool onOff); 00128 bool exactOutgoing() const; 00130 00145 int whileIterating(int valuesOption); 00146 00165 int pivotResult(int ifValuesPass = 0); 00166 00167 00172 int updatePrimalsInPrimal(CoinIndexedVector * rowArray, 00173 double theta, 00174 double & objectiveChange, 00175 int valuesPass); 00184 void primalRow(CoinIndexedVector * rowArray, 00185 CoinIndexedVector * rhsArray, 00186 CoinIndexedVector * spareArray, 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 int lexSolve(); 00240 00242 }; 00243 #endif 00244