/home/coin/SVN-release/CoinAll-1.1.0/Clp/src/ClpNode.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2008, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef ClpNode_H
00004 #define ClpNode_H
00005 
00006 #include "CoinPragma.hpp"
00007 
00008 // This implements all stuff for Clp fathom
00013 class ClpFactorization;
00014 class ClpDualRowSteepest;
00015 class ClpNodeStuff;
00016 class ClpNode {
00017   
00018 public:
00021 
00022   void applyNode(ClpSimplex * model, bool justBounds );
00024   int fixOnReducedCosts(ClpSimplex * model);
00026   
00029 
00030   inline double branchingValue() const
00031   { return branchingValue_;}
00033   int way() const;
00035   bool fathomed() const;
00037   void changeState();
00039   inline int sequence() const
00040   { return sequence_;}
00042   
00046   ClpNode();
00048   ClpNode (const ClpSimplex * model, const ClpNodeStuff * stuff);
00050   void gutsOfConstructor(const ClpSimplex * model, const ClpNodeStuff * stuff);
00052   virtual ~ClpNode();
00054   
00058   ClpNode(const ClpNode&);
00060   ClpNode& operator=(const ClpNode&);
00062   
00063 protected:
00064 // For state of branch
00065 typedef struct {
00066   unsigned int firstBranch:1; //  nonzero if first branch on variable is up
00067   unsigned int branch:2; //  0 means do first branch next, 1 second, 2 finished
00068   unsigned int spare:29;
00069 } branchState;
00072 
00073   double branchingValue_;
00075   ClpFactorization * factorization_;
00077   ClpDualRowSteepest * weights_;
00079   unsigned char * status_;
00081   double * primalSolution_;
00083   double * dualSolution_;
00085   int * pivotVariables_;
00087   int * fixed_;
00089   branchState branchState_;
00091   int sequence_;
00093   int numberFixed_;
00095 };
00096 class ClpNodeStuff {
00097   
00098 public:
00102   ClpNodeStuff();
00104   virtual ~ClpNodeStuff();
00106   
00110   ClpNodeStuff(const ClpNodeStuff&);
00112   ClpNodeStuff& operator=(const ClpNodeStuff&);
00114   
00115 public:
00118 
00119   double integerTolerance_;
00121   double integerIncrement_;
00123 };
00124 #endif

Generated on Sun Nov 14 14:06:32 2010 for Coin-All by  doxygen 1.4.7