source: trunk/Cbc/examples/CbcCompareUser.hpp

Last change on this file was 1574, checked in by lou, 8 years ago

Change to EPL license notice.

  • 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 1574 2011-01-05 01:13:55Z 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  { return weight_;}
55  inline void setWeight(double weight)
56  { weight_ = weight;}
57protected:
58  // Weight for each infeasibility
59  double weight_;
60  // Weight for each infeasibility - computed from solution
61  double saveWeight_;
62  // Number of solutions
63  int numberSolutions_;
64  // count
65  mutable int count_;
66  // Tree size (at last check)
67  int treeSize_;
68};
69#endif
Note: See TracBrowser for help on using the repository browser.