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

ClpSimplexPrimalQuadratic.hpp

00001 // Copyright (C) 2003, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 
00004 /* 
00005    Authors
00006    
00007    John Forrest
00008 
00009  */
00010 #ifndef ClpSimplexPrimalQuadratic_H
00011 #define ClpSimplexPrimalQuadratic_H
00012 
00013 class ClpQuadraticInfo;
00014 class ClpQuadraticObjective;
00015 
00016 #include "ClpSimplexPrimal.hpp"
00017 
00026 class ClpSimplexPrimalQuadratic : public ClpSimplexPrimal {
00027 
00028 public:
00029 
00040 
00041   int primalSLP(int numberPasses, double deltaTolerance);
00047   int primalQuadratic(int phase=2);
00051   int primalQuadratic2 (ClpQuadraticInfo * info,
00052                         int phase=2);
00057   ClpSimplexPrimalQuadratic * makeQuadratic(ClpQuadraticInfo & info);
00058 
00060   int endQuadratic(ClpSimplexPrimalQuadratic * quadraticModel,
00061                    ClpQuadraticInfo & info);
00063   int checkComplementarity (ClpQuadraticInfo * info,
00064                             CoinIndexedVector * array1, CoinIndexedVector * array2);
00066   void createDjs (ClpQuadraticInfo * info,
00067                   CoinIndexedVector * array1, CoinIndexedVector * array2);
00071   int whileIterating (ClpQuadraticInfo * info);
00084   int primalRow(CoinIndexedVector * rowArray,
00085                 CoinIndexedVector * rhsArray,
00086                 CoinIndexedVector * spareArray,
00087                 CoinIndexedVector * spareArray2,
00088                 ClpQuadraticInfo * info,
00089                 int cleanupIteration);
00099   void statusOfProblemInPrimal(int & lastCleaned, int type,
00100                                ClpSimplexProgress * progress,
00101                                ClpQuadraticInfo * info);
00103 
00104 };
00105 
00110 class ClpQuadraticInfo  {
00111   
00112 public:
00113   
00114 public:
00115 
00118 
00119   ClpQuadraticInfo();
00122   ClpQuadraticInfo(const ClpSimplex * model);
00124   ~ClpQuadraticInfo();
00125   // Copy
00126   ClpQuadraticInfo(const ClpQuadraticInfo&);
00127   // Assignment
00128   ClpQuadraticInfo& operator=(const ClpQuadraticInfo&);
00130      
00131 
00134 
00135   inline int numberXColumns() const
00136   {return numberXColumns_;};
00138   inline int numberQuadraticColumns() const
00139   {return numberQuadraticColumns_;};
00141   inline int numberXRows() const
00142   {return numberXRows_;};
00144   inline int numberQuadraticRows() const
00145   {return numberQuadraticRows_;};
00147   inline int sequenceIn() const
00148   {return currentSequenceIn_;};
00149   inline void setSequenceIn(int sequence) 
00150   {currentSequenceIn_=sequence;};
00152   inline int crucialSj() const
00153   {return crucialSj_;};
00154   inline void setCrucialSj(int sequence) 
00155   {crucialSj_=sequence;};
00157   inline int currentPhase() const
00158   {return currentPhase_;};
00159   inline void setCurrentPhase(int phase) 
00160   {currentPhase_=phase;};
00162   inline const double * currentSolution() const
00163   {return currentSolution_;};
00164   void setCurrentSolution(const double * solution);
00166   inline ClpQuadraticObjective * originalObjective() const
00167   { return originalObjective_;};
00168   inline void setOriginalObjective( ClpQuadraticObjective * obj)
00169   { originalObjective_ = obj;};
00171   CoinPackedMatrix * quadraticObjective() const;
00173   double * linearObjective() const;
00175   void saveStatus();
00177   void restoreStatus();
00179   inline double * djWeight() const
00180   { return djWeight_;};
00182   void createGradient(ClpSimplex * model);
00184   inline double * gradient() const
00185   { return gradient_;};
00187   inline double infeasCost() const
00188   { return infeasCost_;};
00189   inline void setInfeasCost(double value)
00190   { infeasCost_ = value;};
00192   inline int * basicRow() const
00193   { return basicRow_;};
00195   inline int * impliedSj() const
00196   { return impliedSj_;};
00198     
00199 private:
00202 
00203   ClpQuadraticObjective * originalObjective_;
00205   int * basicRow_;
00207   int * impliedSj_;
00209   int currentSequenceIn_;
00211   int crucialSj_;
00213   int validSequenceIn_;
00215   int validCrucialSj_;
00217   int currentPhase_;
00219   double * currentSolution_;
00221   int validPhase_;
00223   double * validSolution_;
00225   double * djWeight_;
00227   double * gradient_;
00229   int numberXRows_;
00231   int numberXColumns_;
00233   int numberQuadraticColumns_;
00235   int numberQuadraticRows_;
00237   double infeasCost_;
00239 };
00240 #endif
00241 

Generated on Wed Dec 3 14:37:35 2003 for CLP by doxygen 1.3.5