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

Last change on this file since 1514 was 1432, checked in by bjarni, 10 years ago

Added extra return at end of each source file where needed, to remove possible linefeed conflicts (NightlyBuild? errors)

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