source: trunk/Cbc/src/CbcSimpleIntegerPseudoCost.hpp @ 1899

Last change on this file since 1899 was 1899, checked in by stefan, 5 years ago

fixup svn properties

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 KB
Line 
1// $Id: CbcSimpleIntegerPseudoCost.hpp 1899 2013-04-09 18:12:08Z stefan $
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// Edwin 11/10/2009-- carved out of CbcBranchActual
7
8#ifndef CbcSimpleIntegerPseudoCost_H
9#define CbcSimpleIntegerPseudoCost_H
10
11#include "CbcSimpleInteger.hpp"
12/// Define a single integer class but with pseudo costs
13
14class CbcSimpleIntegerPseudoCost : public CbcSimpleInteger {
15
16public:
17
18    // Default Constructor
19    CbcSimpleIntegerPseudoCost ();
20
21    // Useful constructor - passed model index
22    CbcSimpleIntegerPseudoCost (CbcModel * model, int iColumn, double breakEven = 0.5);
23
24    // Useful constructor - passed and model index and pseudo costs
25    CbcSimpleIntegerPseudoCost (CbcModel * model, int iColumn,
26                                double downPseudoCost, double upPseudoCost);
27    // Useful constructor - passed and model index and pseudo costs
28    CbcSimpleIntegerPseudoCost (CbcModel * model, int dummy, int iColumn,
29                                double downPseudoCost, double upPseudoCost);
30
31    // Copy constructor
32    CbcSimpleIntegerPseudoCost ( const CbcSimpleIntegerPseudoCost &);
33
34    /// Clone
35    virtual CbcObject * clone() const;
36
37    // Assignment operator
38    CbcSimpleIntegerPseudoCost & operator=( const CbcSimpleIntegerPseudoCost& rhs);
39
40    // Destructor
41    virtual ~CbcSimpleIntegerPseudoCost ();
42
43    /// Infeasibility - large is 0.5
44    virtual double infeasibility(const OsiBranchingInformation * info,
45                                 int &preferredWay) const;
46
47    /// Creates a branching object
48    virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
49
50    /// Down pseudo cost
51    inline double downPseudoCost() const {
52        return downPseudoCost_;
53    }
54    /// Set down pseudo cost
55    inline void setDownPseudoCost(double value) {
56        downPseudoCost_ = value;
57    }
58
59    /// Up pseudo cost
60    inline double upPseudoCost() const {
61        return upPseudoCost_;
62    }
63    /// Set up pseudo cost
64    inline void setUpPseudoCost(double value) {
65        upPseudoCost_ = value;
66    }
67
68    /// Up down separator
69    inline double upDownSeparator() const {
70        return upDownSeparator_;
71    }
72    /// Set up down separator
73    inline void setUpDownSeparator(double value) {
74        upDownSeparator_ = value;
75    }
76
77    /// Return "up" estimate
78    virtual double upEstimate() const;
79    /// Return "down" estimate (default 1.0e-5)
80    virtual double downEstimate() const;
81
82    /// method - see below for details
83    inline int method() const {
84        return method_;
85    }
86    /// Set method
87    inline void setMethod(int value) {
88        method_ = value;
89    }
90
91protected:
92    /// data
93
94    /// Down pseudo cost
95    double downPseudoCost_;
96    /// Up pseudo cost
97    double upPseudoCost_;
98    /** Up/down separator
99        If >0.0 then do first branch up if value-floor(value)
100        >= this value
101    */
102    double upDownSeparator_;
103    /** Method -
104        0 - normal - return min (up,down)
105        1 - if before any solution return CoinMax(up,down)
106        2 - if before branched solution return CoinMax(up,down)
107        3 - always return CoinMax(up,down)
108    */
109    int method_;
110};
111
112
113#endif
114
Note: See TracBrowser for help on using the repository browser.