• Main Page
  • Classes
  • Files
  • File List
  • File Members

/build/buildd/clp-1.11.1/Clp/src/ClpSimplexDual.hpp

Go to the documentation of this file.
00001 /* $Id: ClpSimplexDual.hpp 1458 2009-11-05 12:34:07Z forrest $ */
00002 // Copyright (C) 2002, International Business Machines
00003 // Corporation and others.  All Rights Reserved.
00004 
00005 /* 
00006    Authors
00007    
00008    John Forrest
00009 
00010  */
00011 #ifndef ClpSimplexDual_H
00012 #define ClpSimplexDual_H
00013 
00014 #include "ClpSimplex.hpp"
00015 
00023 class ClpSimplexDual : public ClpSimplex {
00024 
00025 public:
00026 
00118   int dual(int ifValuesPass,int startFinishOptions=0);
00127   int strongBranching(int numberVariables,const int * variables,
00128                       double * newLower, double * newUpper,
00129                       double ** outputSolution,
00130                       int * outputStatus, int * outputIterations,
00131                       bool stopOnFirstInfeasible=true,
00132                       bool alwaysFinish=false,
00133                       int startFinishOptions=0);
00135   ClpFactorization * setupForStrongBranching(char * arrays, int numberRows, 
00136                                              int numberColumns,bool solveLp=false);
00138   void cleanupAfterStrongBranching(ClpFactorization * factorization);
00140 
00156   int whileIterating(double * & givenPi,int ifValuesPass); 
00164   int updateDualsInDual(CoinIndexedVector * rowArray,
00165                   CoinIndexedVector * columnArray,
00166                   CoinIndexedVector * outputArray,
00167                   double theta,
00168                   double & objectiveChange,
00169                         bool fullRecompute);
00173   void updateDualsInValuesPass(CoinIndexedVector * rowArray,
00174                   CoinIndexedVector * columnArray,
00175                   double theta);
00179   void flipBounds(CoinIndexedVector * rowArray,
00180                   CoinIndexedVector * columnArray);
00192   double dualColumn(CoinIndexedVector * rowArray,
00193                   CoinIndexedVector * columnArray,
00194                   CoinIndexedVector * spareArray,
00195                   CoinIndexedVector * spareArray2,
00196                   double accpetablePivot,
00197                   CoinBigIndex * dubiousWeights);
00199   int dualColumn0(const CoinIndexedVector * rowArray,
00200                   const CoinIndexedVector * columnArray,
00201                   CoinIndexedVector * spareArray,
00202                   double acceptablePivot,
00203                   double & upperReturn, double &bestReturn,double & badFree);
00210   void checkPossibleValuesMove(CoinIndexedVector * rowArray,
00211                                CoinIndexedVector * columnArray,
00212                               double acceptablePivot);
00219   void checkPossibleCleanup(CoinIndexedVector * rowArray,
00220                                CoinIndexedVector * columnArray,
00221                               double acceptablePivot);
00226   void doEasyOnesInValuesPass(double * givenReducedCosts);
00236   void dualRow(int alreadyChosen);
00246   int changeBounds(int initialize,CoinIndexedVector * outputArray,
00247                    double & changeCost);
00250   bool changeBound( int iSequence);
00252   void originalBound(int iSequence);
00255   int checkUnbounded(CoinIndexedVector * ray,CoinIndexedVector * spare,
00256                      double changeCost);
00266   void statusOfProblemInDual(int & lastCleaned, int type,
00267                              double * givenDjs, ClpDataSave & saveData,
00268                              int ifValuesPass);
00271   int perturb();
00277   int fastDual(bool alwaysFinish=false);
00280   int numberAtFakeBound();
00281 
00287   int pivotResult();
00289   int nextSuperBasic();
00292   int startupSolve(int ifValuesPass,double * saveDuals,int startFinishOptions);
00293   void finishSolve(int startFinishOptions);
00294   void gutsOfDual(int ifValuesPass,double * & saveDuals,int initialStatus,
00295                   ClpDataSave & saveData);
00296   //int dual2(int ifValuesPass,int startFinishOptions=0);
00297   void resetFakeBounds(int type);
00298   
00300 };
00301 #endif

Generated on Fri Aug 20 2010 06:29:29 by  doxygen 1.7.1