20     while (proci != lastproci) {
 
   21         if (proci->first == proc)
 
   38     bool so_far_so_good = 
true;
 
   50 #if ! defined(BCP_ONLY_LP_PROCESS_HANDLING_WORKS) 
   51     if (so_far_so_good && p.slaves.cg) {
 
   52         cg = p.slaves.cg->get_free_proc();
 
   57             so_far_so_good = 
false;
 
   61     if (so_far_so_good && p.slaves.vg) {
 
   62         vg = p.slaves.vg->get_free_proc();
 
   67             so_far_so_good = 
false;
 
   71     if (so_far_so_good && p.slaves.cp) {
 
   73             cp = p.slaves.cp->get_free_proc();
 
   95     if (so_far_so_good && p.slaves.vp) {
 
   97             vp = p.slaves.vp->get_free_proc();
 
  120     if (! so_far_so_good)
 
  170         bool process_this = 
true;
 
  173             process_this = 
false;
 
  174         if (next_node->getTrueLB() >
 
  176             process_this = 
false;
 
  177         if (next_node->getTrueLB() >
 
  179             process_this = 
false;
 
  191                 printf(
"TM: Pruning NODE %i LEVEL %i instead of sending it.\n",
 
  192                        next_node->
index(), next_node->getDepth());
 
  204 TM: Moving NODE %i LEVEL %i into the next phase list \n\ 
  205     instead of sending it.\n",
 
  206                        next_node->
index(), next_node->getDepth());
 
  229     if (node_to_send->
send()) {
 
  233 #ifdef BCP__DUMP_PROCINFO 
  234 #if (BCP__DUMP_PROCINFO == 1) 
  235     dump_procinfo(p, 
"start_one_node()");
 
  242 #ifdef BCP__DUMP_PROCINFO 
  243 #if (BCP__DUMP_PROCINFO == 1) 
  244 void dump_procinfo(
BCP_tm_prob& p, 
const char* str)
 
  246     printf(
"TM: ***** dump_procinfo from %s *********\n", str);
 
  247     printf(
"TM: ********** Active nodes *********\n");
 
  248     for (
int i = 0; i < p.slaves.lp->size(); ++i) {
 
  250             printf(
"TM:     %i, %i, %i\n",
 
  253             printf(
"TM:     %i, %i, %i\n",
 
  257     printf(
"TM: ********** All nodes *********\n");
 
  276 TM: couldn't start new node but there's a free LP ?!\n");
 
  294     const int n = candidates.size();
 
  295     const std::vector<CoinTreeNode*>& nodes = candidates.getNodes();
 
  296     for (
int i = 0; i < 
n; ++i) {
 
  297         printf(
"%5i", dynamic_cast<BCP_tm_node*>(nodes[i])->index());
 
  318             if (tmpar.
entry(static_cast<BCP_tm_par::chr_params>(i)) == 2) {
 
  319                 tmpar.
set_entry(static_cast<BCP_tm_par::chr_params>(i), 
true);
 
  321                 tmpar.
set_entry(static_cast<BCP_tm_par::chr_params>(i), 
false);
 
  325             if (lppar.
entry(static_cast<BCP_lp_par::chr_params>(i)) == 2) {
 
  326                 lppar.
set_entry(static_cast<BCP_lp_par::chr_params>(i), 
true);
 
  328                 lppar.
set_entry(static_cast<BCP_lp_par::chr_params>(i), 
false);
 
  332             if (cgpar.
entry(static_cast<BCP_cg_par::chr_params>(i)) == 2) {
 
  333                 cgpar.
set_entry(static_cast<BCP_cg_par::chr_params>(i), 
true);
 
  335                 cgpar.
set_entry(static_cast<BCP_cg_par::chr_params>(i), 
false);
 
  368         fm = fm == -1 ? 192 * (1<<20)  : fm;
 
Just a marker for the first CgVerb. 
 
BCP_parameter_set< BCP_vg_par > vg
 
BCP_parameter_set< BCP_cg_par > cg
 
Just a marker for the first LpVerb. 
 
std::map< int, BCP_tm_node * > active_nodes
A map from the process ids to the nodes (what they work on) 
 
void clear()
Delete every entry. 
 
Print out a message when the default version of an overridable method is executed. 
 
Print out a message when the default version of an overridable method is executed. 
 
Do not generate columns, but send back the node to the Tree Manager for processing in the next phase...
 
double granularity() const 
 
Print information about nodes that are pruned by bound in the tree manager. 
 
bool has_free_node_id() const 
Decide if there is an id that can be returned for processin a node. 
 
Print out a message when the default version of an overridable method is executed. 
 
BCP_tm_node_status status
 
void BCP_tm_list_candidates(BCP_tm_prob &p)
 
char entry(const chr_params key) const 
 
TM sends the description of a new search tree node. 
 
iterator begin()
Return an iterator to the beginning of the object. 
 
CoinSearchTreeManager candidate_list
 
BCP_vec< BCP_tm_node * > next_phase_nodes
a vector of nodes to be processed in the next phase 
 
The maximum size of the memory heap the TS can use. 
 
Indicates whether message passing is serial (all processes are on the same processor) or not...
 
Just a marker for the last TmVerb. 
 
void push_back(const_reference x)
Append x to the end of the vector. 
 
void BCP_tm_remove_vg(BCP_tm_prob &p, const int index)
 
static BCP_node_start_result BCP_tm_start_one_node(BCP_tm_prob &p)
 
void BCP_tm_remove_lp(BCP_tm_prob &p, const int index)
 
bool BCP_tm_assign_processes(BCP_tm_prob &p, BCP_tm_node *node)
 
BCP_vec< BCP_tm_node * > nodes_to_free
 
BCP_node_start_result BCP_tm_start_new_nodes(BCP_tm_prob &p)
 
void fint fint fint real fint real real real real real real real real real fint real fint * lp
 
void set_entry(const chr_params key, const char val)
 
int request_node_id()
Request an id for processing nodes. 
 
BCP_node_start_result
This enumerative constant describes ... 
 
BCP_parameter_set< BCP_tm_par > par
 
Print out a message when the default version of an overridable method is executed. 
 
Verbosity flags for the tree manager. 
 
void BCP_sanity_checks(BCP_tm_prob &p)
 
void BCP_print_memusage(BCP_tm_prob &p)
 
Just a marker for the last LpVerb. 
 
Currently there isn't any error handling in BCP. 
 
BCP_message_environment * msg_env
A class that holds the methods about how to pack things. 
 
The maximum size of the memory heap the TM can use. 
 
size_t size() const 
Return the current number of entries. 
 
iterator end()
Return an iterator to the end of the object. 
 
Invoke "display_feasible_solution" user routine for the best feasible solution after the entire tree ...
 
The class BCP_vec serves the same purpose as the vector class in the standard template library...
 
void BCP_tm_remove_explored(BCP_tm_prob &p, BCP_tm_node *node)
 
BCP_scheduler lp_scheduler
members to measure how long it took to process the root node. 
 
BCP_parameter_set< BCP_lp_par > lp
 
Print statistics: running time, tree size, best solution value. 
 
Just a marker for the last CgVerb. 
 
BCP_slave_params slave_pars
 
A flag that instructs BCP to be (almost) absolutely silent. 
 
virtual bool alive(const int pid)=0
Test if the process given by the argument is alive or not. 
 
BCP_column_generation current_phase_colgen
 
static void BCP_tm_free_nodes(BCP_tm_prob &p)
 
void BCP_tm_modify_pool_counters(BCP_tm_prob &p, BCP_tm_node *node)
 
BCP_vec< std::pair< int, int > >::iterator BCP_tm_identify_process(BCP_vec< std::pair< int, int > > &proclist, int proc)
 
bool send()
return true or false depending on whether the node was really sent out or it's still waiting for some...
 
char param(BCP_tm_par::chr_params key) const 
 
BCP_parameter_set< BCP_ts_par > ts
 
static long BCP_free_mem()
 
void BCP_tm_remove_cg(BCP_tm_prob &p, const int index)
 
void BCP_check_parameters(BCP_tm_prob &p)