00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef BlisTreeNode_h_
00026 #define BlisTreeNode_h_
00027
00028
00029
00030 #include "AlpsNodeDesc.h"
00031
00032 #include "BcpsObjectPool.h"
00033 #include "BcpsTreeNode.h"
00034
00035 #include "BcpsNodeDesc.h"
00036 #include "BlisNodeDesc.h"
00037
00038 class BcpsModel;
00039 class BlisModel;
00040
00041
00042
00046
00047
00048
00049 class BlisTreeNode : public BcpsTreeNode {
00050
00051 private:
00052
00054 BlisTreeNode(const BlisTreeNode&);
00055
00056 BlisTreeNode& operator=(const BlisTreeNode&);
00057
00059
00060
00062
00063
00065
00066
00067 bool parallel(BlisModel *model,
00068 OsiCuts *newCutSet,
00069 int lastNew,
00070 OsiRowCut *rowCut);
00071
00072 public:
00073
00075 BlisTreeNode()
00076 :
00077 BcpsTreeNode()
00078 { init(); }
00079
00081 BlisTreeNode(BlisModel* m) {
00082 init();
00083 desc_ = new BlisNodeDesc(m);
00084 }
00085
00087 BlisTreeNode(AlpsNodeDesc *&desc) {
00088 init();
00089 desc_ = desc;
00090 desc = NULL;
00091 }
00092
00094 virtual ~BlisTreeNode() {
00095
00096
00097 }
00098
00100 void init() {
00101
00102
00103 }
00104
00106 AlpsTreeNode* createNewTreeNode(AlpsNodeDesc *&desc) const;
00107
00109
00110 virtual void convertToExplicit();
00111 virtual void convertToRelative();
00113
00115 virtual int installSubProblem(BcpsModel *mode);
00116
00118 virtual int process(bool isRoot = false, bool rampUp = false);
00119
00121 virtual int bound(BcpsModel *model);
00122
00127 virtual std::vector< CoinTriple<AlpsNodeDesc*, AlpsNodeStatus, double> >
00128 branch();
00129
00131 int selectBranchObject(BlisModel *model,
00132 bool& foundSol,
00133 int numPassesLeft);
00134
00136 virtual int chooseBranchingObject(BcpsModel*) { return AlpsReturnStatusOk;}
00137
00139 int generateConstraints(BlisModel *model, OsiCuts & cutPool);
00140
00142 int applyConstraints(BlisModel *model,
00143 OsiCuts & cutPool,
00144 const double *solution);
00145
00147 int reducedCostFix(BlisModel *model);
00148
00150
00151
00153
00154
00156 virtual AlpsEncoded* encode() const;
00157
00159 virtual AlpsKnowledge* decode(AlpsEncoded&) const;
00160 };
00161
00162 #endif