- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# /home/coin/SVN-release/Cgl-0.55.0/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