source: trunk/Cbc/examples/CbcCompareUser.hpp @ 2496

Last change on this file since 2496 was 2469, checked in by unxusr, 8 months ago

formatting

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
Line 
1// $Id: CbcCompareUser.hpp 2469 2019-01-06 23:17:46Z forrest $
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"
11class 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*/
17class CbcCompareUser : public CbcCompareBase {
18public:
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
28  CbcCompareUser &operator=(const CbcCompareUser &rhs);
29
30  /// Clone
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);
37  /// This is alternate test function
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);
44  /// Returns true if wants code to do scan with alternate criterion
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  {
55    return weight_;
56  }
57  inline void setWeight(double weight)
58  {
59    weight_ = weight;
60  }
61
62protected:
63  // Weight for each infeasibility
64  double weight_;
65  // Weight for each infeasibility - computed from solution
66  double saveWeight_;
67  // Number of solutions
68  int numberSolutions_;
69  // count
70  mutable int count_;
71  // Tree size (at last check)
72  int treeSize_;
73};
74#endif
Note: See TracBrowser for help on using the repository browser.