Dip-All  0.91.0
CbcCompareUser.hpp
Go to the documentation of this file.
1 // $Id: CbcCompareUser.hpp 1574 2011-01-05 01:13:55Z lou $
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 
6 #ifndef CbcCompareUser_H
7 #define CbcCompareUser_H
8 
9 #include "CbcNode.hpp"
10 #include "CbcCompareBase.hpp"
11 class CbcModel;
12 /* This is an example of a more complex rule with data
13  It is default after first solution
14  If weight is 0.0 then it is computed to hit first solution
15  less 2%
16 */
18 public:
19  // Default Constructor
20  CbcCompareUser () ;
21  // Constructor with weight
22  CbcCompareUser (double weight);
23 
24  // Copy constructor
25  CbcCompareUser ( const CbcCompareUser &rhs);
26 
27  // Assignment operator
29 
31  virtual CbcCompareBase * clone() const;
32 
33  ~CbcCompareUser() ;
34  /* This returns true if weighted value of node y is less than
35  weighted value of node x */
36  virtual bool test (CbcNode * x, CbcNode * y) ;
38  virtual bool alternateTest (CbcNode * x, CbcNode * y);
39  // This allows method to change behavior as it is called
40  // after each solution
41  virtual bool newSolution(CbcModel * model,
42  double objectiveAtContinuous,
43  int numberInfeasibilitiesAtContinuous) ;
45  virtual bool fullScan() const;
46  // This allows method to change behavior
47  // Return true if want tree re-sorted
48  virtual bool every1000Nodes(CbcModel * model,int numberNodes);
49 
50  /* if weight == -1.0 then depth first (before solution)
51  if -2.0 then do breadth first just for first 1000 nodes
52  */
53  inline double getWeight() const
54  { return weight_;}
55  inline void setWeight(double weight)
56  { weight_ = weight;}
57 protected:
58  // Weight for each infeasibility
59  double weight_;
60  // Weight for each infeasibility - computed from solution
61  double saveWeight_;
62  // Number of solutions
64  // count
65  mutable int count_;
66  // Tree size (at last check)
67  int treeSize_;
68 };
69 #endif
virtual bool test(CbcNode *x, CbcNode *y)
This is test function.
CbcCompareUser & operator=(const CbcCompareUser &rhs)
double getWeight() const
virtual bool alternateTest(CbcNode *x, CbcNode *y)
This is alternate test function.
virtual CbcCompareBase * clone() const
Clone.
virtual bool newSolution(CbcModel *model, double objectiveAtContinuous, int numberInfeasibilitiesAtContinuous)
Reconsider behaviour after discovering a new solution.
virtual bool fullScan() const
Returns true if wants code to do scan with alternate criterion.
void setWeight(double weight)
virtual bool every1000Nodes(CbcModel *model, int numberNodes)
Information required while the node is live.
Definition: CbcNode.hpp:49
Simple Branch and bound class.
Definition: CbcModel.hpp:101