29 next_cut_index_set_start(1),
30 next_var_index_set_start(1),
52 const int wait_stat_freq = 1200;
53 bool do_print =
false;
55 printf(
"TM: final statistics:\n");
58 if (floor(t/wait_stat_freq) >
cnt) {
59 cnt =
static_cast<int>(floor(t/wait_stat_freq));
60 printf(
"TM: statistics at %12.6f:\n", t);
65 for (
int i = 0; i <
num_lp; ++i) {
69 printf(
"TM: With %5i LP working: wait: %12.6f queue: %.2f\n",
72 printf(
"TM: With %5i LP working: wait: %12.6f queue: %.2f\n",
85 const int bcpind = var.
bcpind();
89 const double obj = var.
obj();
90 const double lb = var.
lb();
91 const double ub = var.
ub();
101 throw BCP_fatal_error(
"BCP_tm_prob::_pack_var(): unexpected obj_t.\n");
128 throw BCP_fatal_error(
"BCP_tm_prob::_unpack_var(): unexpected obj_t.\n");
149 BCP_tm_prob::unpack_var(): received a var with positive bcpind, \n\
150 but the var already exists.\n");
171 const int bcpind = cut.
bcpind();
174 const double lb = cut.
lb();
175 const double ub = cut.
ub();
185 throw BCP_fatal_error(
"BCP_tm_prob::_pack_cut(): unexpected obj_t.\n");
208 throw BCP_fatal_error(
"BCP_tm_prob::_unpack_cut(): unexpected obj_t.\n");
229 BCP_tm_prob::unpack_cut(): received a cut with positive bcpind, \n\
230 but the cut already exists.\n");
static double lb_multiplier
The lower bounds of the unexplored search tree nodes.
BCP_buffer msg_buf
members to measure how long it took to process the root node.
BCP_var * unpack_var_without_bcpind(BCP_buffer &buf)
BCP_buffer & pack(const T &value)
Pack a single object of type T.
void print(bool final, double t)
BCP_buffer & unpack(T &value)
Unpack a single object of type T.
void set_var_type(const BCP_var_t type)
Set the integrality type of the variable.
std::map< int, int > cuts_remote
std::map< int, Coin::SmartPtr< BCP_cut > > cuts_local
Abstract base class that defines members common to all types of cuts.
virtual BCP_cut_algo * unpack_cut_algo(BCP_buffer &buf)
Unpack an algorithmic cut.
void set_bcpind(const int bcpind)
Set the internal index of the cut.
void set_bcpind(const int bcpind)
Set the internal index of the variable.
Core cuts are the cuts that always stay in the LP formulation.
double ub() const
Return the upper bound on the cut.
Core variables are the variables that always stay in the LP formulation.
BCP_obj_status
This enumerative constant gives the status of an object (variable or cut).
void change_bounds(const double lb, const double ub)
Change the lower and upper bounds to the given values.
double lb() const
Return the lower bound on the cut.
void fint fint fint real fint real real real real real real real real real * e
std::map< int, Coin::SmartPtr< BCP_var > > vars_local
double ub() const
Return the upper bound.
virtual void pack_cut_algo(const BCP_cut_algo *cut, BCP_buffer &buf)
Pack an algorithmic cut.
BCP_lp_statistics * lp_stat
BCP_obj_status status() const
Return the status of the cut.
double obj() const
Return the objective coefficient.
void set_status(const BCP_obj_status stat)
Set the status of the cut.
virtual BCP_object_t obj_type() const =0
Return the type of the variable.
void pack_cut(const BCP_cut &cut)
BCP_var_t var_type() const
Return the integrality type of the variable.
std::map< int, int > vars_remote
Abstract base class that defines members common to all types of variables.
Currently there isn't any error handling in BCP.
void pack_var(const BCP_var &var)
BCP_user_pack * packer
A class that holds the methods about how to pack things.
int bcpind() const
Return the internal index of the variable.
BCP_obj_status status() const
Return the status of the variable.
virtual BCP_var_algo * unpack_var_algo(BCP_buffer &buf)
Unpack an algorithmic variable.
This class describes the message buffer used for all processes of BCP.
void change_bounds(const double lb, const double ub)
Change just the lower/upper bounds.
void set_obj(const double obj)
Set the objective coefficient.
virtual void pack_var_algo(const BCP_var_algo *var, BCP_buffer &buf)
Pack an algorithmic variable.
void fint fint fint fint fint fint fint fint fint fint real real real real real real real real real fint real fint real char real * user
double lb() const
Return the lower bound.
BCP_tm_user * user
A class that holds the methods about how to pack things.
BCP_problem_core_change * core_as_change
void set_status(const BCP_obj_status status)
Set the status of the variable.
int bcpind() const
Return the internal index of the cut.
BCP_object_t
This enumerative constant describes the possible types of objects (variables and cuts).
virtual BCP_object_t obj_type() const =0
Return the type of the variable.
BCP_cut * unpack_cut_without_bcpind(BCP_buffer &buf)
BCP_var_t
This enumerative constant describes the integrality type of a variable.