Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

OsiSimplexInterface.hpp

00001 // Copyright (C) 2003, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef OsiSimplexInterface_H
00004 #define OsiSimplexInterface_H
00005 
00006 #include <string>
00007 #include <vector>
00008 
00009 #include "CoinMessageHandler.hpp"
00010 #include "CoinPackedVectorBase.hpp"
00011 
00012 #include "OsiSolverParameters.hpp"
00013 
00014 class CoinPackedMatrix;
00015 class CoinWarmStart;
00016 
00017 //#############################################################################
00018 
00026 class OsiSimplexInterface  {
00027    friend void OsiSimplexInterfaceCommonUnitTest(
00028       const OsiSolverInterface* emptySi,
00029       const std::string & mpsDir);
00030 
00031 public:
00033 
00034 
00040   virtual void enableSimplexInterface(bool doingPrimal) {};
00041 
00043   virtual void disableSimplexInterface() {};
00044 
00046   virtual bool basisIsAvailable() = 0;
00047 
00057   virtual void getBasisStatus(int* cstat, int* rstat) = 0;
00058 
00061   virtual int setBasisStatus(const int* cstat, const int* rstat) = 0;
00062 
00067   virtual int pivot(int colIn, int colOut, int outStatus) = 0;
00068 
00079   virtual int primalPivotResult(int colIn, int sign, 
00080                                 int& colOut, int& outStatus, 
00081                                 double& t, CoinPackedVector* dx) = 0;
00082 
00089   virtual int dualPivotResult(int& colIn, int& sign, 
00090                               int colOut, int outStatus, 
00091                               double& t, CoinPackedVector* dx) = 0;
00092 
00094   virtual void getReducedGradient(double* columnReducedCosts, 
00095                                   double * duals,
00096                                   const double * c) = 0;
00097 
00100   virtual void setObjectiveAndRefresh(double* c) = 0;
00101 
00103   virtual void getBInvARow(int row, double* z) = 0;
00104 
00106   virtual void getBInvRow(int row, double* z) = 0;
00107 
00109   virtual void getBInvACol(int col, double* vec) = 0;
00110 
00112   virtual void getBInvCol(int col, double* vec) = 0;
00113 
00118   virtual void getBasics(int* index) = 0;
00120 
00121 
00123 
00124 
00125     OsiSimplexInterface(); 
00126     
00128     OsiSimplexInterface(const OsiSimplexInterface & rhs);
00129   
00131     OsiSimplexInterface & operator=(const OsiSimplexInterface& rhs);
00132   
00134     virtual ~OsiSimplexInterface();
00136 
00137   //---------------------------------------------------------------------------
00138 
00139 private:
00141 
00142 
00143 };
00144 
00145 //#############################################################################
00151 void
00152 OsiSimplexInterfaceCommonUnitTest(
00153    const OsiSolverInterface* emptySi,
00154    const std::string & mpsDir);
00155 
00156 #endif

Generated on Wed Dec 3 14:35:33 2003 for Osi by doxygen 1.3.5