source: branches/devel/Cbc/src/CbcFathom.hpp @ 489

Last change on this file since 489 was 36, checked in by forrest, 15 years ago

start of CbcFathom? class

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.8 KB
Line 
1// Copyright (C) 2004, International Business Machines
2// Corporation and others.  All Rights Reserved.
3#ifndef CbcFathom_H
4#define CbcFathom_H
5
6class CbcModel;
7
8//#############################################################################
9/** Fathom base class.
10
11    The idea is that after some branching the problem will be effectively smaller than
12    the original problem and maybe there will be a more specialized technique which can completely
13    fathom this branch quickly.
14
15    One method is to presolve the problem to give a much smaller new problem and then do branch
16    and cut on that.  Another might be dynamic programming.
17
18 */
19
20class CbcFathom {
21public:
22  // Default Constructor
23  CbcFathom ();
24
25  // Constructor with model - assumed before cuts
26  CbcFathom (CbcModel & model);
27
28  virtual ~CbcFathom();
29
30  /// update model (This is needed if cliques update matrix etc)
31  virtual void setModel(CbcModel * model);
32 
33  /// Clone
34  virtual CbcFathom * clone() const=0;
35
36  /// Resets stuff if model changes
37  virtual void resetModel(CbcModel * model)=0;
38
39  /** returns 0 if no fathoming attempted, 1 fully fathomed,
40      2 incomplete search, 3 incomplete search but treat as complete.
41      If solution then newSolution will not be NULL and
42      will be freed by CbcModel.  It is expected that the solution is better
43      than best so far but CbcModel will double check.
44
45      If returns 3 then of course there is no guarantee of global optimum
46  */
47  virtual int fathom(double *& newSolution)=0;
48
49  // Is this method possible
50  inline bool possible() const
51  { return possible_;};
52
53protected:
54
55  /// Model
56  CbcModel * model_;
57  /// Possible - if this method of fathoming can be used
58  bool possible_;
59private:
60 
61  /// Illegal Assignment operator
62  CbcFathom & operator=(const CbcFathom& rhs);
63 
64};
65
66#endif
Note: See TracBrowser for help on using the repository browser.