Bcp  1.4.4
BCP_lp_node.hpp
Go to the documentation of this file.
1 // Copyright (C) 2000, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 #ifndef _BCP_LP_NODE_H
4 #define _BCP_LP_NODE_H
5 
6 #include "BCP_math.hpp"
7 #include "BCP_enum_branch.hpp"
8 #include "BCP_problem_core.hpp"
9 #include "BCP_var.hpp"
10 #include "BCP_cut.hpp"
11 #include "BCP_obj_change.hpp"
12 
13 //#############################################################################
14 
15 class BCP_warmstart;
16 class BCP_user_data;
17 
18 //#############################################################################
19 
34 };
35 
36 //#############################################################################
37 
43 private:
49  BCP_lp_parent& operator=(const BCP_lp_parent&);
52 public:
66  int index;
69 public:
78 public:
82  void clean();
84 };
85 
86 //#############################################################################
87 
92 class BCP_lp_node {
93 private:
97  BCP_lp_node(const BCP_lp_node&);
99  BCP_lp_node& operator=(const BCP_lp_node&);
102 public:
104  // *FIXME* divide data members into subgroups
111  int cg;
113  int cp;
115  int vg;
117  int vp;
120  int level;
122  int index;
130  double quality;
139  // this is tricky. this vector stores for each cut the lower bound on the
140  // lp formulation at the time when the cut was added *in this node* OR if
141  // there were columns added afterwards (stiil in the same node) then the
142  // lower bound on the lp when columns were added the last time.
150 public:
155  tm_storage(),
156  cg(-1), cp(-1), vg(-1), vp(-1),
157  level(0), index(0), iteration_count(0),
160  warmstart(0),
161  user_data(0) {}
169  inline size_t varnum() const { return vars.size(); }
171  inline size_t cutnum() const { return cuts.size(); }
177  void clean();
179 };
180 
181 //#############################################################################
182 
183 #endif
BCP_lp_node::~BCP_lp_node
~BCP_lp_node()
BCP_DoNotGenerateColumns_Fathom
@ BCP_DoNotGenerateColumns_Fathom
Do fathom the node.
Definition: BCP_enum.hpp:67
BCP_DoNotDive
@ BCP_DoNotDive
After branching all children must be returned to the Tree Manager and the LP process should wait for ...
Definition: BCP_enum_branch.hpp:151
BCP_lp_node::iteration_count
int iteration_count
Definition: BCP_lp_node.hpp:124
BCP_lp_node::level
int level
Definition: BCP_lp_node.hpp:120
BCP_lp_node::cuts
BCP_cut_set cuts
Definition: BCP_lp_node.hpp:136
BCP_lp_parent::core_as_change
BCP_problem_core_change core_as_change
Definition: BCP_lp_node.hpp:56
BCP_lp_node::cp
int cp
Definition: BCP_lp_node.hpp:113
BCP_lp_node::dive
BCP_diving_status dive
Definition: BCP_lp_node.hpp:126
BCP_vec< double >
BCP_DBL_MAX
#define BCP_DBL_MAX
Definition: BCP_math.hpp:6
BCP_user_data
Definition: BCP_USER.hpp:19
BCP_lp_node::user_data
BCP_user_data * user_data
Data the user wants to pass along with the search tree node.
Definition: BCP_lp_node.hpp:147
BCP_lp_node::cg
int cg
Definition: BCP_lp_node.hpp:111
BCP_vec::size
size_t size() const
Return the current number of entries.
Definition: BCP_vector.hpp:116
BCP_cut.hpp
BCP_diving_status
BCP_diving_status
This enumerative constant describes the diving status of the search tree node processed by the LP pro...
Definition: BCP_enum_branch.hpp:145
BCP_lp_node::quality
double quality
Definition: BCP_lp_node.hpp:130
BCP_lp_node::vp
int vp
Definition: BCP_lp_node.hpp:117
BCP_obj_change.hpp
BCP_lp_parent
NO OLD DOC.
Definition: BCP_lp_node.hpp:42
BCP_lp_node::colgen
BCP_column_generation colgen
Definition: BCP_lp_node.hpp:128
BCP_lp_parent::warmstart
BCP_warmstart * warmstart
Definition: BCP_lp_node.hpp:64
BCP_lp_parent::index
int index
Definition: BCP_lp_node.hpp:66
BCP_math.hpp
BCP_lp_node::index
int index
Definition: BCP_lp_node.hpp:122
BCP_node_storage_in_tm::warmstart
BCP_storage_t warmstart
Definition: BCP_lp_node.hpp:33
BCP_lp_node
NO OLD DOC.
Definition: BCP_lp_node.hpp:92
BCP_column_generation
BCP_column_generation
This enumerative constant describes what to do when a search tree node becomes fathomable for the cur...
Definition: BCP_enum.hpp:65
BCP_lp_node::clean
void clean()
BCP_lp_node::BCP_lp_node
BCP_lp_node()
Definition: BCP_lp_node.hpp:154
BCP_lp_parent::var_set
BCP_obj_set_change var_set
this is always explicit, it's just that coding is simpler if we reuse the BCP_obj_set_change object
Definition: BCP_lp_node.hpp:59
BCP_problem_core.hpp
BCP_node_storage_in_tm::var_change
BCP_storage_t var_change
Definition: BCP_lp_node.hpp:29
BCP_lp_node::warmstart
BCP_warmstart * warmstart
Definition: BCP_lp_node.hpp:138
BCP_cut_set
This class is just a collection of pointers to cuts with a number of methods to manipulate these cuts...
Definition: BCP_cut.hpp:279
BCP_node_storage_in_tm
NO OLD DOC.
Definition: BCP_lp_node.hpp:25
BCP_lp_node::cutnum
size_t cutnum() const
Definition: BCP_lp_node.hpp:171
BCP_var.hpp
BCP_lp_node::tm_storage
BCP_node_storage_in_tm tm_storage
Definition: BCP_lp_node.hpp:107
BCP_lp_parent::BCP_lp_parent
BCP_lp_parent()
Definition: BCP_lp_node.hpp:73
BCP_lp_parent::~BCP_lp_parent
~BCP_lp_parent()
BCP_lp_parent::clean
void clean()
BCP_node_storage_in_tm::core_change
BCP_storage_t core_change
Definition: BCP_lp_node.hpp:27
BCP_lp_node::varnum
size_t varnum() const
Definition: BCP_lp_node.hpp:169
BCP_lp_node::true_lower_bound
double true_lower_bound
Definition: BCP_lp_node.hpp:132
BCP_lp_node::lb_at_cutgen
BCP_vec< double > lb_at_cutgen
Definition: BCP_lp_node.hpp:144
BCP_var_set
This class is just a collection of pointers to variables with a number of methods to manipulate these...
Definition: BCP_var.hpp:316
BCP_storage_t
BCP_storage_t
This enumerative constant describes how to store certain data for a search tree node.
Definition: BCP_enum.hpp:84
BCP_lp_node::vars
BCP_var_set vars
Definition: BCP_lp_node.hpp:134
BCP_warmstart
Warmstarting information for the LP solver.
Definition: BCP_warmstart.hpp:24
BCP_lp_node::vg
int vg
Definition: BCP_lp_node.hpp:115
BCP_problem_core_change
This class describes changes in the core of the problem.
Definition: BCP_problem_core.hpp:116
BCP_enum_branch.hpp
BCP_lp_parent::cut_set
BCP_obj_set_change cut_set
this is always explicit, it's just that coding is simpler if we reuse the BCP_obj_set_change object
Definition: BCP_lp_node.hpp:62
BCP_node_storage_in_tm::cut_change
BCP_storage_t cut_change
Definition: BCP_lp_node.hpp:31
BCP_obj_set_change
This class stores data about how an object set (set of vars or set of cuts) changes.
Definition: BCP_obj_change.hpp:57