Cbc trunk
|
00001 // $Id$ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 00005 00006 // Edwin 11/10/2009-- carved out of CbcBranchActual 00007 00008 #ifndef CbcSimpleIntegerPseudoCost_H 00009 #define CbcSimpleIntegerPseudoCost_H 00010 00011 #include "CbcSimpleInteger.hpp" 00013 00014 class CbcSimpleIntegerPseudoCost : public CbcSimpleInteger { 00015 00016 public: 00017 00018 // Default Constructor 00019 CbcSimpleIntegerPseudoCost (); 00020 00021 // Useful constructor - passed model index 00022 CbcSimpleIntegerPseudoCost (CbcModel * model, int iColumn, double breakEven = 0.5); 00023 00024 // Useful constructor - passed and model index and pseudo costs 00025 CbcSimpleIntegerPseudoCost (CbcModel * model, int iColumn, 00026 double downPseudoCost, double upPseudoCost); 00027 // Useful constructor - passed and model index and pseudo costs 00028 CbcSimpleIntegerPseudoCost (CbcModel * model, int dummy, int iColumn, 00029 double downPseudoCost, double upPseudoCost); 00030 00031 // Copy constructor 00032 CbcSimpleIntegerPseudoCost ( const CbcSimpleIntegerPseudoCost &); 00033 00035 virtual CbcObject * clone() const; 00036 00037 // Assignment operator 00038 CbcSimpleIntegerPseudoCost & operator=( const CbcSimpleIntegerPseudoCost& rhs); 00039 00040 // Destructor 00041 virtual ~CbcSimpleIntegerPseudoCost (); 00042 00044 virtual double infeasibility(const OsiBranchingInformation * info, 00045 int &preferredWay) const; 00046 00048 virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ; 00049 00051 inline double downPseudoCost() const { 00052 return downPseudoCost_; 00053 } 00055 inline void setDownPseudoCost(double value) { 00056 downPseudoCost_ = value; 00057 } 00058 00060 inline double upPseudoCost() const { 00061 return upPseudoCost_; 00062 } 00064 inline void setUpPseudoCost(double value) { 00065 upPseudoCost_ = value; 00066 } 00067 00069 inline double upDownSeparator() const { 00070 return upDownSeparator_; 00071 } 00073 inline void setUpDownSeparator(double value) { 00074 upDownSeparator_ = value; 00075 } 00076 00078 virtual double upEstimate() const; 00080 virtual double downEstimate() const; 00081 00083 inline int method() const { 00084 return method_; 00085 } 00087 inline void setMethod(int value) { 00088 method_ = value; 00089 } 00090 00091 protected: 00093 00095 double downPseudoCost_; 00097 double upPseudoCost_; 00102 double upDownSeparator_; 00109 int method_; 00110 }; 00111 00112 00113 #endif 00114