46 LP: BCP_Msg_InitialUserInfo arrived in BCP_lp_prob::process_message().\n");
62 while (oldcut != lastoldcut){
80 const int old_cp_size = cp.
size();
88 const int cutnum = cuts.
size();
89 for (
int i = 0; i < cutnum; ++i) {
120 while (oldvar != lastoldvar){
138 const int old_vp_size = vp.
size();
146 const int varnum = vars.
size();
147 for (
int i = 0; i < varnum; ++i) {
223 printf(
"Unknown message type arrived to LP: %i\n",
msg_buf.
msgtag());
307 for (cnt = 0; cuti != lastcuti; ++cuti) {
322 for ( ; cuti != lastcuti; ++cuti) {
333 printf(
"LP: %i cuts sent to cutpool\n", cnt);
virtual void send(const int target, const BCP_message_tag tag)=0
Send an empty message (message tag only) to the process given by the frist argument.
Print the number of cuts sent from the LP to the cut pool.
BCP_buffer & pack(const T &value)
Pack a single object of type T.
The message contains the description of a cut.
BCP_lp_node * node
Description he current search tree node.
void BCP_lp_unpack_active_node(BCP_lp_prob &p, BCP_buffer &buf)
Used to indicate that there is no message in the buffer of a process.
BCP_buffer & unpack(T &value)
Unpack a single object of type T.
void BCP_lp_unpack_diving_info(BCP_lp_prob &p, BCP_buffer &buf)
virtual void process_message(BCP_buffer &buf)
Process a message that has been sent by another process' user part to this process' user part...
virtual void receive(const int source, const BCP_message_tag tag, BCP_buffer &buf, const double timeout)=0
Blocking receive with timeout.
char param(BCP_lp_par::chr_params key) const
bool dont_send_to_pool() const
Return whether the cut should be sent to the Cut Pool process.
int BCP_lp_next_var_index(BCP_lp_prob &p)
double granularity() const
The message contains the statistics the LP process collected.
Abstract base class that defines members common to all types of cuts.
void set_bcpind(const int bcpind)
Set the internal index of the cut.
Request an index set for variables to be genarated.
If true then the LP process will check each newly received cut whether it already exists in the local...
Request an index set for cuts to be generated.
void set_bcpind(const int bcpind)
Set the internal index of the variable.
OsiSolverInterface * master_lp
A class that holds the methods about how to pack things.
TM sends the description of a new search tree node.
virtual void process_message()
The two objects are the same.
int sender() const
Return a const pointer to the process id of the sender of the message in the buffer.
iterator begin()
Return an iterator to the beginning of the object.
This class is just a collection of pointers to cuts with a number of methods to manipulate these cuts...
void reserve(const size_t n)
Reallocate the object to make space for n entries.
virtual BCP_warmstart * unpack_warmstart(BCP_buffer &buf, bool report_if_default=false)
Unpack warmstarting information.
TM sends diving information.
Warmstarting information for the LP solver.
double time_var_generation
void push_back(const_reference x)
Append x to the end of the vector.
Attempt column generation.
virtual void vars_to_cols(const BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_var * > &vars, BCP_vec< BCP_col * > &cols, const BCP_lp_result &lpres, BCP_object_origin origin, bool allow_multiple)
Convert a set of variables into corresponding columns for the current LP relaxation.
BCP_lp_cut_pool * local_cut_pool
int BCP_lp_next_cut_index(BCP_lp_prob &p)
BCP_lp_user * user
A class that holds the methods about how to pack things.
virtual BCP_object_compare_result compare_vars(const BCP_var *v0, const BCP_var *v1)
Compare two generated variables.
virtual BCP_object_compare_result compare_cuts(const BCP_cut *c0, const BCP_cut *c1)
Compare two generated cuts.
OsiSolverInterface * lp_solver
A class that holds the methods about how to pack things.
BCP_lp_result * lp_result
CoinWarmStart * warmstartRoot
Description of the warmstart info from the end of the root node.
size_t cutnum() const
Return the number of cuts in the core.
void BCP_lp_send_cuts_to_cp(BCP_lp_prob &p, const int eff_cnt_limit)
void compute_violations(const BCP_lp_result &lpres, BCP_lp_cut_pool::iterator first, BCP_lp_cut_pool::iterator last)
void BCP_lp_process_ub_message(BCP_lp_prob &p, BCP_buffer &buf)
The warmstart information at the end of the root.
The message contains the description of a variable.
void BCP_lp_create_lp(BCP_lp_prob &p)
virtual CoinWarmStart * convert_to_CoinWarmStart() const =0
Return an OsiWarmStart object that can be fed to the LP engine.
The TM sends the initial user packed information to the slave process.
TM warns an LP process that the second phase will start.
BCP_lp_var_pool * local_var_pool
void clear()
Completely clear the buffer.
BCP_message_tag msgtag() const
Return the message tag of the message in the buffer.
If true then the LP process will check each newly arrived variable whether it already exists in the l...
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real * ws
The object is from a variable or cut pool.
No more (violated) cuts could be found.
The two objects are comparable but the first object is better.
void pack_cut(const BCP_cut &cut)
Abstract base class that defines members common to all types of variables.
int effective_count() const
Return the effectiveness count of the cut (only in LP process).
Currently there isn't any error handling in BCP.
bool dont_send_to_pool() const
Return whether the variable should be sent to the Variable Pool process.
void BCP_lp_check_ub(BCP_lp_prob &p)
virtual void cuts_to_rows(const BCP_vec< BCP_var * > &vars, BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_row * > &rows, const BCP_lp_result &lpres, BCP_object_origin origin, bool allow_multiple)
Convert (and possibly lift) a set of cuts into corresponding rows for the current LP relaxation...
The object was generated by a variable or cut generator.
size_t size() const
Return the current number of entries.
iterator end()
Return an iterator to the end of the object.
Send index set for cuts to be generated in the future.
BCP_column_generation colgen
After branching all children must be returned to the Tree Manager and the LP process should wait for ...
This class describes the message buffer used for all processes of BCP.
No more (improving) variables could be found.
The two objects are not comparable or neither is better than the other.
The message contains cuts for the Cut Pool process.
Used by the user to send a message to the user portion of the other process.
void BCP_lp_main_loop(BCP_lp_prob &p)
Send index set for variables to be generated in the future.
BCP_message_environment * msg_env
A class that holds the methods about how to pack things.
Any process to TM or TM to any process: a new upper bound found.
iterator entry(const int i)
Return an iterator to the i-th entry.
The two objects are comparable but the second object is better.
void pack(BCP_buffer &buf)
double time_cut_generation
void compute_red_costs(const BCP_lp_result &lpres, BCP_lp_var_pool::iterator first, BCP_lp_var_pool::iterator last)
BCP_user_pack * packer
A class that holds the methods about how to pack things.