source: branches/sandbox/Cbc/src/CbcSimpleIntegerPseudoCost.hpp @ 1293

Last change on this file since 1293 was 1293, checked in by EdwinStraver, 10 years ago
File size: 3.2 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
Note: See TracBrowser for help on using the repository browser.