Dip  0.92.4
AlpsDecompTreeNode.h
Go to the documentation of this file.
1 //===========================================================================//
2 // This file is part of the DIP Solver Framework. //
3 // //
4 // DIP is distributed under the Eclipse Public License as part of the //
5 // COIN-OR repository (http://www.coin-or.org). //
6 // //
7 // Authors: Matthew Galati, SAS Institute Inc. (matthew.galati@sas.com) //
8 // Ted Ralphs, Lehigh University (ted@lehigh.edu) //
9 // Jiadong Wang, Lehigh University (jiw408@lehigh.edu) //
10 // //
11 // Copyright (C) 2002-2019, Lehigh University, Matthew Galati, Ted Ralphs //
12 // All Rights Reserved. //
13 //===========================================================================//
14 
15 #ifndef AlpsDecompTreeNode_h_
16 #define AlpsDecompTreeNode_h_
17 
18 //===========================================================================//
19 #include "Alps.h"
20 #include "AlpsTreeNode.h"
21 
22 //===========================================================================//
23 class AlpsNodeDesc;
24 class AlpsDecompModel;
25 
26 //===========================================================================//
28 private:
30  std::string m_classTag;
31 
32  std::vector< std::pair<int, double> > downBranchLB_;
33  std::vector< std::pair<int, double> > downBranchUB_;
34  std::vector< std::pair<int, double> > upBranchLB_;
35  std::vector< std::pair<int, double> > upBranchUB_;
36 
37 public:
40  AlpsTreeNode(),
41  m_classTag ("ALPSTN")
42 
43  {
44  //quality_ = -ALPS_OBJ_MAX;//MVG?
45  }
46 
48  virtual ~AlpsDecompTreeNode() {
49  }
50 
51  bool checkIncumbent(AlpsDecompModel* model,
52  const DecompSolution* decompSol);
53 
54  //---
55  //--- pure virtual functions from AlpsTreeNode or AlpsTreeNode
56  //---
57 
60 
62  int chooseBranchingObject(AlpsModel* model);
63 
64 
65  //point direct to DECOMP?
67  int process(bool isRoot = false, bool rampUp = false);
68 
73  std::vector< CoinTriple<AlpsNodeDesc*, AlpsNodeStatus, double> > branch();
74 
75 };
76 
77 #endif
std::vector< std::pair< int, double > > upBranchLB_
AlpsDecompTreeNode()
Default constructor.
std::vector< CoinTriple< AlpsNodeDesc *, AlpsNodeStatus, double > > branch()
Takes the explicit description of the current active node and creates the children&#39;s descriptions...
int process(bool isRoot=false, bool rampUp=false)
Performing the bounding operation.
virtual ~AlpsDecompTreeNode()
Destructor.
std::string m_classTag
class tag for debugging
Derivation of AlpsModel for DECOMP.
std::vector< std::pair< int, double > > downBranchUB_
This class holds one node of the search tree.
Definition: AlpsTreeNode.h:50
std::vector< std::pair< int, double > > downBranchLB_
AlpsTreeNode * createNewTreeNode(AlpsNodeDesc *&desc) const
Create a new node based on given desc.
std::vector< std::pair< int, double > > upBranchUB_
bool checkIncumbent(AlpsDecompModel *model, const DecompSolution *decompSol)
int chooseBranchingObject(AlpsModel *model)
To be defined.
A class to refer to the description of a search tree node.
Definition: AlpsNodeDesc.h:35