summaryrefslogtreecommitdiff
path: root/build/Bonmin/include/coin/ClpNode.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'build/Bonmin/include/coin/ClpNode.hpp')
-rw-r--r--build/Bonmin/include/coin/ClpNode.hpp349
1 files changed, 0 insertions, 349 deletions
diff --git a/build/Bonmin/include/coin/ClpNode.hpp b/build/Bonmin/include/coin/ClpNode.hpp
deleted file mode 100644
index 671d62f..0000000
--- a/build/Bonmin/include/coin/ClpNode.hpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/* $Id: ClpNode.hpp 1910 2013-01-27 02:00:13Z stefan $ */
-// Copyright (C) 2008, International Business Machines
-// Corporation and others. All Rights Reserved.
-// This code is licensed under the terms of the Eclipse Public License (EPL).
-
-#ifndef ClpNode_H
-#define ClpNode_H
-
-#include "CoinPragma.hpp"
-
-// This implements all stuff for Clp fathom
-/** This contains what is in a Clp "node"
-
- */
-
-class ClpFactorization;
-class ClpDualRowSteepest;
-class ClpNodeStuff;
-class ClpNode {
-
-public:
- /**@name Useful methods */
- //@{
- /** Applies node to model
- 0 - just tree bounds
- 1 - tree bounds and basis etc
- 2 - saved bounds and basis etc
- */
- void applyNode(ClpSimplex * model, int doBoundsEtc );
- /// Choose a new variable
- void chooseVariable(ClpSimplex * model, ClpNodeStuff * info);
- /// Fix on reduced costs
- int fixOnReducedCosts(ClpSimplex * model);
- /// Create odd arrays
- void createArrays(ClpSimplex * model);
- /// Clean up as crunch is different model
- void cleanUpForCrunch();
- //@}
-
- /**@name Gets and sets */
- //@{
- /// Objective value
- inline double objectiveValue() const {
- return objectiveValue_;
- }
- /// Set objective value
- inline void setObjectiveValue(double value) {
- objectiveValue_ = value;
- }
- /// Primal solution
- inline const double * primalSolution() const {
- return primalSolution_;
- }
- /// Dual solution
- inline const double * dualSolution() const {
- return dualSolution_;
- }
- /// Initial value of integer variable
- inline double branchingValue() const {
- return branchingValue_;
- }
- /// Sum infeasibilities
- inline double sumInfeasibilities() const {
- return sumInfeasibilities_;
- }
- /// Number infeasibilities
- inline int numberInfeasibilities() const {
- return numberInfeasibilities_;
- }
- /// Relative depth
- inline int depth() const {
- return depth_;
- }
- /// Estimated solution value
- inline double estimatedSolution() const {
- return estimatedSolution_;
- }
- /** Way for integer variable -1 down , +1 up */
- int way() const;
- /// Return true if branch exhausted
- bool fathomed() const;
- /// Change state of variable i.e. go other way
- void changeState();
- /// Sequence number of integer variable (-1 if none)
- inline int sequence() const {
- return sequence_;
- }
- /// If odd arrays exist
- inline bool oddArraysExist() const {
- return lower_ != NULL;
- }
- /// Status array
- inline const unsigned char * statusArray() const {
- return status_;
- }
- //@}
-
- /**@name Constructors, destructor */
- //@{
- /** Default constructor. */
- ClpNode();
- /// Constructor from model
- ClpNode (ClpSimplex * model, const ClpNodeStuff * stuff, int depth);
- /// Does work of constructor (partly so gdb will work)
- void gutsOfConstructor(ClpSimplex * model, const ClpNodeStuff * stuff,
- int arraysExist, int depth);
- /** Destructor */
- virtual ~ClpNode();
- //@}
-
- /**@name Copy methods (at present illegal - will abort) */
- //@{
- /** The copy constructor. */
- ClpNode(const ClpNode&);
- /// Operator =
- ClpNode& operator=(const ClpNode&);
- //@}
-
-protected:
-// For state of branch
- typedef struct {
- unsigned int firstBranch: 1; // nonzero if first branch on variable is up
- unsigned int branch: 2; // 0 means do first branch next, 1 second, 2 finished
- unsigned int spare: 29;
- } branchState;
- /**@name Data */
- //@{
- /// Initial value of integer variable
- double branchingValue_;
- /// Value of objective
- double objectiveValue_;
- /// Sum of infeasibilities
- double sumInfeasibilities_;
- /// Estimated solution value
- double estimatedSolution_;
- /// Factorization
- ClpFactorization * factorization_;
- /// Steepest edge weights
- ClpDualRowSteepest * weights_;
- /// Status vector
- unsigned char * status_;
- /// Primal solution
- double * primalSolution_;
- /// Dual solution
- double * dualSolution_;
- /// Integer lower bounds (only used in fathomMany)
- int * lower_;
- /// Integer upper bounds (only used in fathomMany)
- int * upper_;
- /// Pivot variables for factorization
- int * pivotVariables_;
- /// Variables fixed by reduced costs (at end of branch) 0x10000000 added if fixed to UB
- int * fixed_;
- /// State of branch
- branchState branchState_;
- /// Sequence number of integer variable (-1 if none)
- int sequence_;
- /// Number of infeasibilities
- int numberInfeasibilities_;
- /// Relative depth
- int depth_;
- /// Number fixed by reduced cost
- int numberFixed_;
- /// Flags - 1 duals scaled
- int flags_;
- /// Maximum number fixed by reduced cost
- int maximumFixed_;
- /// Maximum rows so far
- int maximumRows_;
- /// Maximum columns so far
- int maximumColumns_;
- /// Maximum Integers so far
- int maximumIntegers_;
- //@}
-};
-class ClpNodeStuff {
-
-public:
- /**@name Constructors, destructor */
- //@{
- /** Default constructor. */
- ClpNodeStuff();
- /** Destructor */
- virtual ~ClpNodeStuff();
- //@}
-
- /**@name Copy methods (only copies ints etc, nulls arrays) */
- //@{
- /** The copy constructor. */
- ClpNodeStuff(const ClpNodeStuff&);
- /// Operator =
- ClpNodeStuff& operator=(const ClpNodeStuff&);
- /// Zaps stuff 1 - arrays, 2 ints, 3 both
- void zap(int type);
- //@}
-
-
- /**@name Fill methods */
- //@{
- /** Fill with pseudocosts */
- void fillPseudoCosts(const double * down, const double * up,
- const int * priority,
- const int * numberDown, const int * numberUp,
- const int * numberDownInfeasible, const int * numberUpInfeasible,
- int number);
- /// Update pseudo costs
- void update(int way, int sequence, double change, bool feasible);
- /// Return maximum number of nodes
- int maximumNodes() const;
- /// Return maximum space for nodes
- int maximumSpace() const;
- //@}
-
-public:
- /**@name Data */
- //@{
- /// Integer tolerance
- double integerTolerance_;
- /// Integer increment
- double integerIncrement_;
- /// Small change in branch
- double smallChange_;
- /// Down pseudo costs
- double * downPseudo_;
- /// Up pseudo costs
- double * upPseudo_;
- /// Priority
- int * priority_;
- /// Number of times down
- int * numberDown_;
- /// Number of times up
- int * numberUp_;
- /// Number of times down infeasible
- int * numberDownInfeasible_;
- /// Number of times up infeasible
- int * numberUpInfeasible_;
- /// Copy of costs (local)
- double * saveCosts_;
- /// Array of ClpNodes
- ClpNode ** nodeInfo_;
- /// Large model if crunched
- ClpSimplex * large_;
- /// Which rows in large model
- int * whichRow_;
- /// Which columns in large model
- int * whichColumn_;
-#ifndef NO_FATHOM_PRINT
- /// Cbc's message handler
- CoinMessageHandler * handler_;
-#endif
- /// Number bounds in large model
- int nBound_;
- /// Save of specialOptions_ (local)
- int saveOptions_;
- /** Options to pass to solver
- 1 - create external reduced costs for columns
- 2 - create external reduced costs for rows
- 4 - create external row activity (columns always done)
- Above only done if feasible
- 32 - just create up to nDepth_+1 nodes
- 65536 - set if activated
- */
- int solverOptions_;
- /// Maximum number of nodes to do
- int maximumNodes_;
- /// Number before trust from CbcModel
- int numberBeforeTrust_;
- /// State of search from CbcModel
- int stateOfSearch_;
- /// Number deep
- int nDepth_;
- /// Number nodes returned (-1 if fathom aborted)
- int nNodes_;
- /// Number of nodes explored
- int numberNodesExplored_;
- /// Number of iterations
- int numberIterations_;
- /// Type of presolve - 0 none, 1 crunch
- int presolveType_;
-#ifndef NO_FATHOM_PRINT
- /// Depth passed in
- int startingDepth_;
- /// Node at which called
- int nodeCalled_;
-#endif
- //@}
-};
-class ClpHashValue {
-
-public:
- /**@name Useful methods */
- //@{
- /// Return index or -1 if not found
- int index(double value) const;
- /// Add value to list and return index
- int addValue(double value) ;
- /// Number of different entries
- inline int numberEntries() const {
- return numberHash_;
- }
- //@}
-
- /**@name Constructors, destructor */
- //@{
- /** Default constructor. */
- ClpHashValue();
- /** Useful constructor. */
- ClpHashValue(ClpSimplex * model);
- /** Destructor */
- virtual ~ClpHashValue();
- //@}
-
- /**@name Copy method */
- //@{
- /** The copy constructor. */
- ClpHashValue(const ClpHashValue&);
- /// =
- ClpHashValue& operator=(const ClpHashValue&);
- //@}
-private:
- /**@name private stuff */
- //@{
- /** returns hash */
- int hash(double value) const;
- /// Resizes
- void resize(bool increaseMax);
- //@}
-
-protected:
- /**@name Data members
- The data members are protected to allow access for derived classes. */
- //@{
- /// Data
- // for hashing
- typedef struct {
- double value;
- int index, next;
- } CoinHashLink;
- /// Hash table
- mutable CoinHashLink *hash_;
- /// Number of entries in hash table
- int numberHash_;
- /// Maximum number of entries in hash table i.e. size
- int maxHash_;
- /// Last used space
- int lastUsed_;
- //@}
-};
-#endif