The BCP_cg_user class is the base class from which the user can derive a problem specific class to be used in the Cut Generator process. More...
#include <BCP_cg_user.hpp>
Public Member Functions | |
void | send_cut (const BCP_cut &cut) |
Pack the argument into the message buffer and send it to the sender of the LP solution. More... | |
virtual void | unpack_module_data (BCP_buffer &buf) |
Unpack the initial information sent to the Cut Generator process by the Tree Manager. More... | |
virtual void | unpack_primal_solution (BCP_buffer &buf) |
Unpack the LP solution arriving from the LP process. More... | |
virtual void | generate_cuts (BCP_vec< BCP_var * > &vars, BCP_vec< double > &x) |
Perform the actual cut generation. More... | |
Methods to set and get the pointer to the BCP_cg_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 | setCgProblemPointer (BCP_cg_prob *ptr) |
Set the pointer. More... | |
BCP_cg_prob * | getCgProblemPointer () |
Get the pointer. More... | |
Informational methods for the user. | |
double | upper_bound () const |
Return what is the best known upper bound (might be BCP_DBL_MAX) More... | |
int | current_phase () const |
Return the phase the algorithm is in. More... | |
int | current_level () const |
Return the level of the search tree node for which cuts are being generated. More... | |
int | current_index () const |
Return the internal index of the search tree node for which cuts are being generated. More... | |
int | current_iteration () const |
Return the iteration count within the search tree node for which cuts are being generated. More... | |
Methods to get/set BCP parameters on the fly | |
char | get_param (const BCP_cg_par::chr_params key) const |
int | get_param (const BCP_cg_par::int_params key) const |
double | get_param (const BCP_cg_par::dbl_params key) const |
const BCP_string & | get_param (const BCP_cg_par::str_params key) const |
void | set_param (const BCP_cg_par::chr_params key, const bool val) |
void | set_param (const BCP_cg_par::chr_params key, const char val) |
void | set_param (const BCP_cg_par::int_params key, const int val) |
void | set_param (const BCP_cg_par::dbl_params key, const double val) |
void | set_param (const BCP_cg_par::str_params key, const char *val) |
Constructor, Destructor | |
BCP_cg_user () | |
Being virtual, the destructor invokes the destructor for the real type of the object being deleted. More... | |
virtual | ~BCP_cg_user () |
Being virtual, the destructor invokes the destructor for the real type of the object being deleted. More... | |
![]() | |
virtual | ~BCP_user_class () |
Private Attributes | |
BCP_cg_prob * | p |
The BCP_cg_user class is the base class from which the user can derive a problem specific class to be used in the Cut Generator process.
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::cg_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.
Definition at line 50 of file BCP_cg_user.hpp.
|
inline |
Being virtual, the destructor invokes the destructor for the real type of the object being deleted.
Definition at line 115 of file BCP_cg_user.hpp.
|
inlinevirtual |
Being virtual, the destructor invokes the destructor for the real type of the object being deleted.
Definition at line 118 of file BCP_cg_user.hpp.
|
inline |
Set the pointer.
Definition at line 61 of file BCP_cg_user.hpp.
|
inline |
Get the pointer.
Definition at line 63 of file BCP_cg_user.hpp.
double BCP_cg_user::upper_bound | ( | ) | const |
Return what is the best known upper bound (might be BCP_DBL_MAX)
Definition at line 15 of file BCP_cg_user.cpp.
int BCP_cg_user::current_phase | ( | ) | const |
Return the phase the algorithm is in.
Definition at line 16 of file BCP_cg_user.cpp.
int BCP_cg_user::current_level | ( | ) | const |
Return the level of the search tree node for which cuts are being generated.
Definition at line 17 of file BCP_cg_user.cpp.
int BCP_cg_user::current_index | ( | ) | const |
Return the internal index of the search tree node for which cuts are being generated.
Definition at line 18 of file BCP_cg_user.cpp.
int BCP_cg_user::current_iteration | ( | ) | const |
Return the iteration count within the search tree node for which cuts are being generated.
Definition at line 19 of file BCP_cg_user.cpp.
char BCP_cg_user::get_param | ( | const BCP_cg_par::chr_params | key | ) | const |
Definition at line 25 of file BCP_cg_user.cpp.
int BCP_cg_user::get_param | ( | const BCP_cg_par::int_params | key | ) | const |
Definition at line 28 of file BCP_cg_user.cpp.
double BCP_cg_user::get_param | ( | const BCP_cg_par::dbl_params | key | ) | const |
Definition at line 31 of file BCP_cg_user.cpp.
const BCP_string & BCP_cg_user::get_param | ( | const BCP_cg_par::str_params | key | ) | const |
Definition at line 34 of file BCP_cg_user.cpp.
void BCP_cg_user::set_param | ( | const BCP_cg_par::chr_params | key, |
const bool | val | ||
) |
Definition at line 37 of file BCP_cg_user.cpp.
void BCP_cg_user::set_param | ( | const BCP_cg_par::chr_params | key, |
const char | val | ||
) |
Definition at line 39 of file BCP_cg_user.cpp.
void BCP_cg_user::set_param | ( | const BCP_cg_par::int_params | key, |
const int | val | ||
) |
Definition at line 41 of file BCP_cg_user.cpp.
void BCP_cg_user::set_param | ( | const BCP_cg_par::dbl_params | key, |
const double | val | ||
) |
Definition at line 43 of file BCP_cg_user.cpp.
void BCP_cg_user::set_param | ( | const BCP_cg_par::str_params | key, |
const char * | val | ||
) |
Definition at line 45 of file BCP_cg_user.cpp.
Pack the argument into the message buffer and send it to the sender of the LP solution.
Whenever the user generates a cut in the generate_cuts() method she should invoke this method to immediately send off the cut to the LP process.
Definition at line 51 of file BCP_cg_user.cpp.
|
virtual |
Unpack the initial information sent to the Cut Generator process by the Tree Manager.
This information was packed by the method BCP_tm_user::pack_module_data() invoked with BCP_ProcessType_CG
as the third (target process type) argument.
Default: empty method.
Definition at line 69 of file BCP_cg_user.cpp.
|
virtual |
Unpack the LP solution arriving from the LP process.
This method is invoked only if the user packs the info necessary for cut generation by herself, i.e., she overrides the BCP_lp_user::pack_primal_solution(). If that's the case the user has to unpack the same info she has packed in the LP process.
Definition at line 79 of file BCP_cg_user.cpp.
Perform the actual cut generation.
Whenever a cut is generated, the user should invoke the send_cut() method to send the generated cut back to the LP process.
Definition at line 112 of file BCP_cg_user.cpp.
|
private |
Definition at line 52 of file BCP_cg_user.hpp.