BCP_tm_user Class Reference

The BCP_tm_user class is the base class from which the user can derive a problem specific class to be used in the TM process. More...

#include <BCP_tm_user.hpp>

Inheritance diagram for BCP_tm_user:
Inheritance graph
[legend]
Collaboration diagram for BCP_tm_user:
Collaboration graph
[legend]

List of all members.

Public Member Functions

const BCP_proc_idprocess_id () const
 What is the process id of the current process.
void send_message (const BCP_proc_id *const target, const BCP_buffer &buf)
 Send a message to a particular process.
void broadcast_message (const BCP_process_t proc_type, const BCP_buffer &buf)
 Broadcast the message to all processes of the given type.
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 display_feasible_solution (const BCP_solution *sol)
 Display a feasible solution.
virtual void display_node_information (BCP_tree &search_tree, const BCP_tm_node &node)
 Display user information just before a new node is sent to the LP or diving into a node is acknowledged.
virtual void display_final_information (const BCP_lp_statistics &lp_stat)
 Display information after BCP finished processing the search tree.
Methods to set and get the pointer to the BCP_tm_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 setTmProblemPointer (BCP_tm_prob *ptr)
 Set the pointer.
BCP_tm_probgetTmProblemPointer ()
 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).
Methods to get/set BCP parameters on the fly



char get_param (const BCP_tm_par::chr_params key) const
int get_param (const BCP_tm_par::int_params key) const
double get_param (const BCP_tm_par::dbl_params key) const
const BCP_stringget_param (const BCP_tm_par::str_params key) const
void set_param (const BCP_tm_par::chr_params key, const bool val)
void set_param (const BCP_tm_par::chr_params key, const char val)
void set_param (const BCP_tm_par::int_params key, const int val)
void set_param (const BCP_tm_par::dbl_params key, const double val)
void set_param (const BCP_tm_par::str_params key, const char *val)
Constructor, Destructor



 BCP_tm_user ()
 Being virtual, the destructor invokes the destructor for the real type of the object being deleted.
virtual ~BCP_tm_user ()
 Being virtual, the destructor invokes the destructor for the real type of the object being deleted.
Packing and unpacking methods



virtual void pack_module_data (BCP_buffer &buf, BCP_process_t ptype)
 Pack the initial information (info that the user wants to send over) for the process specified by the last argument.
virtual BCP_solutionunpack_feasible_solution (BCP_buffer &buf)
 Unpack a MIP feasible solution that was packed by the BCP_lp_user::pack_feasible_solution() method.
virtual bool replace_solution (const BCP_solution *old_sol, const BCP_solution *new_sol)
 Decide whether to replace old_sol with new_sol.
Methods that pack/unpack warmstart, var_algo and cut_algo objects.

The packing methods take an object and a buffer as an argument and the user is supposed to pack the object into the buffer.

The argument of the unpacking methods is just the buffer. The user is supposed to return a pointer to the unpacked object.



virtual void pack_warmstart (const BCP_warmstart *ws, BCP_buffer &buf)
 Pack warmstarting information.
virtual BCP_warmstartunpack_warmstart (BCP_buffer &buf)
 Unpack warmstarting information.
virtual void pack_var_algo (const BCP_var_algo *var, BCP_buffer &buf)
 Pack an algorithmic variable.
virtual BCP_var_algounpack_var_algo (BCP_buffer &buf)
 Unpack an algorithmic variable.
virtual void pack_cut_algo (const BCP_cut_algo *cut, BCP_buffer &buf)
 Pack an algorithmic cut.
virtual BCP_cut_algounpack_cut_algo (BCP_buffer &buf)
 Unpack an algorithmic cut.
virtual void pack_user_data (const BCP_user_data *ud, BCP_buffer &buf)
 Pack an user data.
virtual BCP_user_dataunpack_user_data (BCP_buffer &buf)
 Unpack an user data.
Initial setup (creating core and root)



virtual void initialize_core (BCP_vec< BCP_var_core * > &vars, BCP_vec< BCP_cut_core * > &cuts, BCP_lp_relax *&matrix)
 Create the core of the problem by filling out the last three arguments.
virtual void create_root (BCP_vec< BCP_var * > &added_vars, BCP_vec< BCP_cut * > &added_cuts, BCP_user_data *&user_data, BCP_pricing_status &pricing_status)
 Create the set of extra variables and cuts that should be added to the formulation in the root node.
Initialize new phase



virtual void init_new_phase (int phase, BCP_column_generation &colgen)
 Do whatever initialization is necessary before the phase-th phase.
Compare two search tree nodes. Return true if the first node

should be processed before the second one.

Default: The default behavior is controlled by the TreeSearchStrategy parameter which is set to 0 (BCP_BestFirstSearch) by default.



virtual bool compare_tree_nodes (const BCP_tm_node *node0, const BCP_tm_node *node1)

Private Attributes

BCP_tm_probp

Detailed Description

The BCP_tm_user class is the base class from which the user can derive a problem specific class to be used in the TM 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::tm_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 56 of file BCP_tm_user.hpp.


Constructor & Destructor Documentation

BCP_tm_user::BCP_tm_user (  )  [inline]

Being virtual, the destructor invokes the destructor for the real type of the object being deleted.

Definition at line 104 of file BCP_tm_user.hpp.

virtual BCP_tm_user::~BCP_tm_user (  )  [inline, virtual]

Being virtual, the destructor invokes the destructor for the real type of the object being deleted.

Definition at line 107 of file BCP_tm_user.hpp.


Member Function Documentation

void BCP_tm_user::setTmProblemPointer ( BCP_tm_prob ptr  )  [inline]

Set the pointer.

Definition at line 67 of file BCP_tm_user.hpp.

BCP_tm_prob* BCP_tm_user::getTmProblemPointer (  )  [inline]

Get the pointer.

Definition at line 69 of file BCP_tm_user.hpp.

double BCP_tm_user::upper_bound (  )  const

Return what is the best known upper bound (might be BCP_DBL_MAX).

char BCP_tm_user::get_param ( const BCP_tm_par::chr_params  key  )  const
int BCP_tm_user::get_param ( const BCP_tm_par::int_params  key  )  const
double BCP_tm_user::get_param ( const BCP_tm_par::dbl_params  key  )  const
const BCP_string& BCP_tm_user::get_param ( const BCP_tm_par::str_params  key  )  const
void BCP_tm_user::set_param ( const BCP_tm_par::chr_params  key,
const bool  val 
)
void BCP_tm_user::set_param ( const BCP_tm_par::chr_params  key,
const char  val 
)
void BCP_tm_user::set_param ( const BCP_tm_par::int_params  key,
const int  val 
)
void BCP_tm_user::set_param ( const BCP_tm_par::dbl_params  key,
const double  val 
)
void BCP_tm_user::set_param ( const BCP_tm_par::str_params  key,
const char *  val 
)
virtual void BCP_tm_user::pack_module_data ( BCP_buffer buf,
BCP_process_t  ptype 
) [virtual]

Pack the initial information (info that the user wants to send over) for the process specified by the last argument.

The information packed here will be unpacked in the unpack_module_data() method of the user defined class in the appropriate process.
Default: empty method.

Reimplemented in BB_tm, MCF1_tm, MCF2_tm, and MCF3_tm.

virtual BCP_solution* BCP_tm_user::unpack_feasible_solution ( BCP_buffer buf  )  [virtual]

Unpack a MIP feasible solution that was packed by the BCP_lp_user::pack_feasible_solution() method.

Default: Unpacks a BCP_solution_generic object. The built-in default should be used if and only if the built-in default was used in BCP_lp_user::pack_feasible_solution().

virtual bool BCP_tm_user::replace_solution ( const BCP_solution old_sol,
const BCP_solution new_sol 
) [virtual]

Decide whether to replace old_sol with new_sol.

When this method is invoked it has already been tested that they have the same objective function value. The purpose of the method is that the user can have a secondary objective function.

virtual void BCP_tm_user::pack_warmstart ( const BCP_warmstart ws,
BCP_buffer buf 
) [virtual]

Pack warmstarting information.

virtual BCP_warmstart* BCP_tm_user::unpack_warmstart ( BCP_buffer buf  )  [virtual]

Unpack warmstarting information.

virtual void BCP_tm_user::pack_var_algo ( const BCP_var_algo var,
BCP_buffer buf 
) [virtual]

Pack an algorithmic variable.

Reimplemented in MCF1_tm, MCF2_tm, and MCF3_tm.

virtual BCP_var_algo* BCP_tm_user::unpack_var_algo ( BCP_buffer buf  )  [virtual]

Unpack an algorithmic variable.

Reimplemented in MCF1_tm, MCF2_tm, and MCF3_tm.

virtual void BCP_tm_user::pack_cut_algo ( const BCP_cut_algo cut,
BCP_buffer buf 
) [virtual]

Pack an algorithmic cut.

Reimplemented in BB_tm.

virtual BCP_cut_algo* BCP_tm_user::unpack_cut_algo ( BCP_buffer buf  )  [virtual]

Unpack an algorithmic cut.

Reimplemented in BB_tm.

virtual void BCP_tm_user::pack_user_data ( const BCP_user_data ud,
BCP_buffer buf 
) [virtual]

Pack an user data.

Reimplemented in BB_tm, and MCF3_tm.

virtual BCP_user_data* BCP_tm_user::unpack_user_data ( BCP_buffer buf  )  [virtual]

Unpack an user data.

Reimplemented in BB_tm, and MCF3_tm.

const BCP_proc_id* BCP_tm_user::process_id (  )  const

What is the process id of the current process.

void BCP_tm_user::send_message ( const BCP_proc_id *const   target,
const BCP_buffer buf 
)

Send a message to a particular process.

void BCP_tm_user::broadcast_message ( const BCP_process_t  proc_type,
const BCP_buffer buf 
)

Broadcast the message to all processes of the given type.

virtual void BCP_tm_user::process_message ( BCP_buffer buf  )  [virtual]

Process a message that has been sent by another process' user part to this process' user part.

virtual void BCP_tm_user::initialize_core ( BCP_vec< BCP_var_core * > &  vars,
BCP_vec< BCP_cut_core * > &  cuts,
BCP_lp_relax *&  matrix 
) [virtual]

Create the core of the problem by filling out the last three arguments.

These variables/cuts will always stay in the LP relaxation and the corresponding matrix is described by the specified matrix. If there is no core variable or cut then the returned pointer for to the matrix should be a null pointer.

Default: empty method, meaning that there are no variables/cuts in the core and this the core matrix is empty (0 pointer) as well.

Reimplemented in BB_tm, MCF1_tm, MCF2_tm, and MCF3_tm.

virtual void BCP_tm_user::create_root ( BCP_vec< BCP_var * > &  added_vars,
BCP_vec< BCP_cut * > &  added_cuts,
BCP_user_data *&  user_data,
BCP_pricing_status pricing_status 
) [virtual]

Create the set of extra variables and cuts that should be added to the formulation in the root node.

Also decide how variable pricing shuld be done, that is, if column generation is requested in the init_new_phase() method of this class then column generation should be performed according to pricing_status.

Default: empty method, meaning that no variables/cuts are added, there is no user data and no pricing should be done.

Reimplemented in BB_tm, MCF1_tm, MCF2_tm, and MCF3_tm.

virtual void BCP_tm_user::display_feasible_solution ( const BCP_solution sol  )  [virtual]

Display a feasible solution.

Reimplemented in BB_tm, MCF1_tm, MCF2_tm, and MCF3_tm.

virtual void BCP_tm_user::display_node_information ( BCP_tree search_tree,
const BCP_tm_node node 
) [virtual]

Display user information just before a new node is sent to the LP or diving into a node is acknowledged.

virtual void BCP_tm_user::display_final_information ( const BCP_lp_statistics lp_stat  )  [virtual]

Display information after BCP finished processing the search tree.

virtual void BCP_tm_user::init_new_phase ( int  phase,
BCP_column_generation colgen 
) [virtual]

Do whatever initialization is necessary before the phase-th phase.

(E.g., setting the pricing strategy.)

virtual bool BCP_tm_user::compare_tree_nodes ( const BCP_tm_node node0,
const BCP_tm_node node1 
) [virtual]

Member Data Documentation

Definition at line 58 of file BCP_tm_user.hpp.


The documentation for this class was generated from the following file:

Generated on 15 Mar 2015 for Coin-All by  doxygen 1.6.1