00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef BonminCbcNlpStrategy_H
00012 #define BonminCbcNlpStrategy_H
00013
00014 #include "CbcStrategy.hpp"
00015 class CglPreProcess;
00016 class CbcNodeInfo;
00017 class CbcNode;
00018 class CoinWarmStartDiff;
00019
00020 class BonminCbcNlpStrategy : public CbcStrategy
00021 {
00022 public:
00023
00024
00025 BonminCbcNlpStrategy (int maxFailures,
00026 int maxInfeasibles,
00027 int pretendFailIsInfeasible);
00028
00029
00030 BonminCbcNlpStrategy ( const BonminCbcNlpStrategy &);
00031
00032
00033 virtual ~BonminCbcNlpStrategy ();
00034
00036 virtual CbcStrategy * clone() const;
00037
00039 virtual CbcNodeInfo * fullNodeInfo(CbcModel * model,int numberRowsAtContinuous) const;
00041 virtual CbcNodeInfo * partialNodeInfo(CbcModel * model, CbcNodeInfo * parent, CbcNode * owner,
00042 int numberChangedBounds,const int * variables,
00043 const double * boundChanges,
00044 const CoinWarmStartDiff *basisDiff) const;
00051 virtual int status(CbcModel * model, CbcNodeInfo * parent, int whereFrom);
00053 inline void setMaxFailure(int value)
00054 {
00055 maxFailure_ = value;
00056 }
00058 inline void setMaxInfeasible(int value)
00059 {
00060 maxInfeasible_ = value;
00061 }
00062
00064 virtual void setupCutGenerators(CbcModel & model);
00066 virtual void setupHeuristics(CbcModel & model);
00068 virtual void setupPrinting(CbcModel & model,int modelLogLevel);
00070 virtual void setupOther(CbcModel & model);
00071
00072 bool hasFailed()
00073 {
00074 return hasFailed_;
00075 }
00076 protected:
00077
00079 bool hasFailed_;
00081 int maxFailure_;
00083 int maxInfeasible_;
00086 int pretendFailIsInfeasible_;
00087
00088 private:
00090 BonminCbcNlpStrategy & operator=(const BonminCbcNlpStrategy& rhs);
00091
00092 };
00093
00094
00095 #endif