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

- File List
- File Members

# /home/coin/SVN-release/Osi-0.98.1/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