#include <BCP_vg_user.hpp>
Collaboration diagram for BCP_vg_user:
Public Member Functions | |
void | send_var (const BCP_var &var) |
Pack the argument into the message buffer and send it to the sender of the LP solution. | |
virtual void | unpack_module_data (BCP_buffer &buf) |
Unpack the initial information sent to the Variable Generator process by the Tree Manager. | |
virtual void | unpack_dual_solution (BCP_buffer &buf) |
Unpack the LP solution arriving from the LP process. | |
virtual void | generate_vars (BCP_vec< BCP_cut * > &cuts, BCP_vec< double > &pi) |
Perform the actual variable generation. | |
virtual void | pack_var_algo (const BCP_var_algo *var, BCP_buffer &buf) |
Pack an algorithmic variable into the buffer. | |
virtual BCP_cut_algo * | unpack_cut_algo (BCP_buffer &buf) |
Unpack an algorithmic cut from the buffer. | |
Methods to set and get the pointer to the BCP_vg_prob | |
object. It is unlikely that the users would want to muck around with these (especially with the set method!) but they are here to provide total control. | |
void | setVgProblemPointer (BCP_vg_prob *ptr) |
Set the pointer. | |
BCP_vg_prob * | getVgProblemPointer () |
Get the pointer. | |
Informational methods for the user. | |
double | upper_bound () const |
Return what is the best known upper bound (might be BCP_DBL_MAX). | |
int | current_phase () const |
Return the phase the algorithm is in. | |
int | current_level () const |
Return the level of the search tree node for which cuts are being generated. | |
int | current_index () const |
Return the internal index of the search tree node for which cuts are being generated. | |
int | current_iteration () const |
Return the iteration count within the search tree node for which cuts are being generated. | |
Methods to get/set BCP parameters on the fly | |
char | get_param (const BCP_vg_par::chr_params key) const |
int | get_param (const BCP_vg_par::int_params key) const |
double | get_param (const BCP_vg_par::dbl_params key) const |
const BCP_string & | get_param (const BCP_vg_par::str_params key) const |
void | set_param (const BCP_vg_par::chr_params key, const bool val) |
void | set_param (const BCP_vg_par::chr_params key, const char val) |
void | set_param (const BCP_vg_par::int_params key, const int val) |
void | set_param (const BCP_vg_par::dbl_params key, const double val) |
void | set_param (const BCP_vg_par::str_params key, const char *val) |
Constructor, Destructor | |
BCP_vg_user () | |
virtual | ~BCP_vg_user () |
Being virtual, the destructor invokes the destructor for the real type of the object being deleted. | |
Private Attributes | |
BCP_vg_prob * | p |
In that derived class the user can store data to be used in the methods she overrides. Also that is the object the user must return in the USER_initialize::vg_init() method.
There are two kind of methods in the class. The non-virtual methods are helper functions for the built-in defaults, but the user can use them as well. The virtual methods execute steps in the BCP algorithm where the user might want to override the default behavior.
The default implementations fall into three major categories.
unpack_module_data.
)
Definition at line 50 of file BCP_vg_user.hpp.
BCP_vg_user::BCP_vg_user | ( | ) | [inline] |
Definition at line 116 of file BCP_vg_user.hpp.
virtual BCP_vg_user::~BCP_vg_user | ( | ) | [inline, virtual] |
Being virtual, the destructor invokes the destructor for the real type of the object being deleted.
Definition at line 119 of file BCP_vg_user.hpp.
void BCP_vg_user::setVgProblemPointer | ( | BCP_vg_prob * | ptr | ) | [inline] |
BCP_vg_prob* BCP_vg_user::getVgProblemPointer | ( | ) | [inline] |
double BCP_vg_user::upper_bound | ( | ) | const |
Return what is the best known upper bound (might be BCP_DBL_MAX).
int BCP_vg_user::current_phase | ( | ) | const |
Return the phase the algorithm is in.
int BCP_vg_user::current_level | ( | ) | const |
Return the level of the search tree node for which cuts are being generated.
int BCP_vg_user::current_index | ( | ) | const |
Return the internal index of the search tree node for which cuts are being generated.
int BCP_vg_user::current_iteration | ( | ) | const |
Return the iteration count within the search tree node for which cuts are being generated.
char BCP_vg_user::get_param | ( | const BCP_vg_par::chr_params | key | ) | const |
int BCP_vg_user::get_param | ( | const BCP_vg_par::int_params | key | ) | const |
double BCP_vg_user::get_param | ( | const BCP_vg_par::dbl_params | key | ) | const |
const BCP_string& BCP_vg_user::get_param | ( | const BCP_vg_par::str_params | key | ) | const |
void BCP_vg_user::set_param | ( | const BCP_vg_par::chr_params | key, | |
const bool | val | |||
) |
void BCP_vg_user::set_param | ( | const BCP_vg_par::chr_params | key, | |
const char | val | |||
) |
void BCP_vg_user::set_param | ( | const BCP_vg_par::int_params | key, | |
const int | val | |||
) |
void BCP_vg_user::set_param | ( | const BCP_vg_par::dbl_params | key, | |
const double | val | |||
) |
void BCP_vg_user::set_param | ( | const BCP_vg_par::str_params | key, | |
const char * | val | |||
) |
void BCP_vg_user::send_var | ( | const BCP_var & | var | ) |
Pack the argument into the message buffer and send it to the sender of the LP solution.
Whenever the user generates a variable in the generate_vars() method she should invoke this method to immediately send off the variable to the LP process.
virtual void BCP_vg_user::unpack_module_data | ( | BCP_buffer & | buf | ) | [virtual] |
Unpack the initial information sent to the Variable Generator process by the Tree Manager.
This information was packed by the method BCP_tm_user::pack_module_data() invoked with BCP_ProcessType_VG
as the third (target process type) argument.
Default: empty method.
virtual void BCP_vg_user::unpack_dual_solution | ( | BCP_buffer & | buf | ) | [virtual] |
Unpack the LP solution arriving from the LP process.
This method is invoked only if the user packs the info necessary for variable generation by herself, i.e., she overrides the BCP_lp_user::pack_dual_solution() method. If that's the case the user has to unpack the same info she has packed in the LP process.
virtual void BCP_vg_user::generate_vars | ( | BCP_vec< BCP_cut * > & | cuts, | |
BCP_vec< double > & | pi | |||
) | [virtual] |
Perform the actual variable generation.
Whenever a variable is generated, the user should invoke the send_var() method to send the generated variable back to the LP process.
virtual void BCP_vg_user::pack_var_algo | ( | const BCP_var_algo * | var, | |
BCP_buffer & | buf | |||
) | [virtual] |
Pack an algorithmic variable into the buffer.
When the user generates a variable in generate_vars() and invokes send_var() to send it off, this method will be invoked to pack the variable into the buffer if the variable is algorithmic. BCP knows how to pack indexed variables.
virtual BCP_cut_algo* BCP_vg_user::unpack_cut_algo | ( | BCP_buffer & | buf | ) | [virtual] |
Unpack an algorithmic cut from the buffer.
This method is invoked when the user does use algorithmic cuts and she did not override the unpack_dual_solution() method.
BCP_vg_prob* BCP_vg_user::p [private] |
Definition at line 52 of file BCP_vg_user.hpp.
Referenced by getVgProblemPointer(), and setVgProblemPointer().