/home/coin/SVN-release/Clp-1.5.0/Clp/src/ClpSimplexOther.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 
00004 /* 
00005    Authors
00006    
00007    John Forrest
00008 
00009  */
00010 #ifndef ClpSimplexOther_H
00011 #define ClpSimplexOther_H
00012 
00013 #include "ClpSimplex.hpp"
00014 
00022 class ClpSimplexOther : public ClpSimplex {
00023 
00024 public:
00025 
00048   void dualRanging(int numberCheck,const int * which,
00049                    double * costIncrease, int * sequenceIncrease,
00050                    double * costDecrease, int * sequenceDecrease,
00051                    double * valueIncrease=NULL, double * valueDecrease=NULL);
00066   void primalRanging(int numberCheck,const int * which,
00067                   double * valueIncrease, int * sequenceIncrease,
00068                   double * valueDecrease, int * sequenceDecrease);
00082   int parametrics(double startingTheta, double & endingTheta,double reportIncrement,
00083                   const double * changeLowerBound, const double * changeUpperBound,
00084                   const double * changeLowerRhs, const double * changeUpperRhs,
00085                   const double * changeObjective);
00086 private:
00095   int parametricsLoop(double startingTheta, double & endingTheta,double reportIncrement,
00096                       const double * changeLower, const double * changeUpper,
00097                       const double * changeObjective, ClpDataSave & data,
00098                       bool canTryQuick);
00106   void statusOfProblemInParametrics(int type,ClpDataSave & saveData);
00117   int whileIterating(double startingTheta, double & endingTheta,double reportIncrement,
00118                       const double * changeLower, const double * changeUpper,
00119                       const double * changeObjective);
00124   int nextTheta(int type, double maxTheta, double * primalChange, double * dualChange,
00125                       const double * changeLower, const double * changeUpper,
00126                       const double * changeObjective);
00132   void checkDualRatios(CoinIndexedVector * rowArray,
00133                    CoinIndexedVector * columnArray,
00134                        double & costIncrease, int & sequenceIncrease, double & alphaIncrease,
00135                        double & costDecrease, int & sequenceDecrease, double & alphaDecrease);
00140   void checkPrimalRatios(CoinIndexedVector * rowArray,
00141                          int direction);
00143   double primalRanging1(int whichIn, int whichOther);
00144 
00145 public:
00160     int writeBasis(const char *filename,
00161                  bool writeValues=false,
00162                  int formatType=0) const;
00164     int readBasis(const char *filename);
00166   ClpSimplex * dualOfModel() const;
00170   int restoreFromDual(const ClpSimplex * dualProblem);
00174   ClpSimplex * crunch(double * rhs, int * whichRows, int * whichColumns,
00175                       int & nBound, bool moreBounds=false, bool tightenBounds=false);
00179   void afterCrunch(const ClpSimplex & small,
00180                    const int * whichRows, const int * whichColumns,
00181                    int nBound);
00184   int tightenIntegerBounds(double * rhsSpace); 
00186 };
00187 #endif

Generated on Mon Apr 28 23:48:12 2008 by  doxygen 1.4.7