BM_lp Class Reference

#include <BM.hpp>

Collaboration diagram for BM_lp:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 BM_lp ()
virtual ~BM_lp ()
int & numNlpFailed ()
virtual void unpack_module_data (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 OsiSolverInterfaceinitialize_solver_interface ()
virtual void load_problem (OsiSolverInterface &osi, BCP_problem_core *core, BCP_var_set &vars, BCP_cut_set &cuts)
virtual void modify_lp_parameters (OsiSolverInterface *lp, bool in_strong_branching)
virtual BCP_solution * test_feasibility (const BCP_lp_result &lp_result, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts)
BCP_solution * test_feasibility_BB (const BCP_lp_result &lp_result, const BCP_vec< BCP_var * > &vars)
BCP_solution * test_feasibility_hybrid (const BCP_lp_result &lp_result, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts)
virtual void generate_cuts_in_lp (const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, BCP_vec< BCP_cut * > &new_cuts, BCP_vec< BCP_row * > &new_rows)
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)
virtual double compute_lower_bound (const double old_lower_bound, const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts)
virtual void initialize_new_search_tree_node (const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, const BCP_vec< BCP_obj_status > &vs, const BCP_vec< BCP_obj_status > &cs, BCP_vec< int > &var_changed_pos, BCP_vec< double > &var_new_bd, BCP_vec< int > &cut_changed_pos, BCP_vec< double > &cut_new_bd)
virtual BCP_branching_decision select_branching_candidates (const BCP_lp_result &lpres, const BCP_vec< BCP_var * > &vars, const BCP_vec< BCP_cut * > &cuts, const BCP_lp_var_pool &local_var_pool, const BCP_lp_cut_pool &local_cut_pool, BCP_vec< BCP_lp_branching_object * > &cans, bool force_branch=false)
BCP_branching_decision bbBranch (OsiBranchingInformation &brInfo, BCP_vec< BCP_lp_branching_object * > &cands)
BCP_branching_decision hybridBranch ()
void send_pseudo_cost_update (OsiBranchingInformation &branchInfo)
 Methods invoked from bbBranch().
void unpack_pseudo_costs (BCP_buffer &buf)
int sort_objects (OsiBranchingInformation &branchInfo, Bonmin::BonChooseVariable *choose, int &branchNum)
void clear_SB_results ()
void collect_branch_data (OsiBranchingInformation &branchInfo, OsiSolverInterface *solver, const int branchNum, BM_BranchData *branchData)
void do_distributed_SB (OsiBranchingInformation &branchInfo, OsiSolverInterface *solver, const CoinWarmStart *cws, const int branchNum, const int *pids, const int pidNum)
bool isBranchFathomable (int status, double obj)
int process_SB_results (OsiBranchingInformation &branchInfo, OsiSolverInterface *solver, Bonmin::BonChooseVariable *choose, OsiBranchingObject *&branchObject)
int try_to_branch (OsiBranchingInformation &branchInfo, OsiSolverInterface *solver, Bonmin::BonChooseVariable *choose, OsiBranchingObject *&branchObject, bool allowVarFix)
virtual void set_user_data_for_children (BCP_presolved_lp_brobj *best, const int selected)

Private Attributes

int in_strong
BCP_string ipopt_file_content
BCP_string nl_file_content
BCP_parameter_set< BM_parpar
BCP_buffer bm_buf
Bonmin::BonminAmplSetup bonmin_
 This contains the setup for running Bonmin in particular nlp solver, continuous solver, cut generators,.
double integerTolerance_
int numNlpFailed_
 A counter for how many times in a row did the NLP code fail.
OsiCuts cuts_
int * objInd_
 These are the indices of the integral (i.e., things that can be branched on) objects in the solver, sorted based on the priority of the corresponding objects.
int objNum_
int * infInd_
 Every time when branching decisions are to be made, we create 6 arrays, 3 for those objects that are infeasible and 3 for those that are feasible.
double * infUseful_
int infNum_
int * feasInd_
double * feasUseful_
int feasNum_
BM_SB_resultsbResult_
 This is where we keep the results in case of distributed strong branching.
BM_SB_resultbestSbResult_
 A pointer to the entry that got selected.
double node_start_time
 The time when we started to process the node.
BM_stats bm_stats
 Class for collecting statistics.

Detailed Description

Definition at line 273 of file BM.hpp.


Constructor & Destructor Documentation

BM_lp::BM_lp (  ) 

virtual BM_lp::~BM_lp (  )  [virtual]


Member Function Documentation

int& BM_lp::numNlpFailed (  )  [inline]

Definition at line 336 of file BM.hpp.

virtual void BM_lp::unpack_module_data ( BCP_buffer &  buf  )  [virtual]

virtual void BM_lp::process_message ( BCP_buffer &  buf  )  [virtual]

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

virtual OsiSolverInterface* BM_lp::initialize_solver_interface (  )  [virtual]

virtual void BM_lp::load_problem ( OsiSolverInterface osi,
BCP_problem_core *  core,
BCP_var_set &  vars,
BCP_cut_set &  cuts 
) [virtual]

virtual void BM_lp::modify_lp_parameters ( OsiSolverInterface lp,
bool  in_strong_branching 
) [virtual]

virtual BCP_solution* BM_lp::test_feasibility ( const BCP_lp_result &  lp_result,
const BCP_vec< BCP_var * > &  vars,
const BCP_vec< BCP_cut * > &  cuts 
) [virtual]

BCP_solution* BM_lp::test_feasibility_BB ( const BCP_lp_result &  lp_result,
const BCP_vec< BCP_var * > &  vars 
)

BCP_solution* BM_lp::test_feasibility_hybrid ( const BCP_lp_result &  lp_result,
const BCP_vec< BCP_var * > &  vars,
const BCP_vec< BCP_cut * > &  cuts 
)

virtual void BM_lp::generate_cuts_in_lp ( const BCP_lp_result &  lpres,
const BCP_vec< BCP_var * > &  vars,
const BCP_vec< BCP_cut * > &  cuts,
BCP_vec< BCP_cut * > &  new_cuts,
BCP_vec< BCP_row * > &  new_rows 
) [virtual]

virtual void BM_lp::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 
) [virtual]

virtual double BM_lp::compute_lower_bound ( const double  old_lower_bound,
const BCP_lp_result &  lpres,
const BCP_vec< BCP_var * > &  vars,
const BCP_vec< BCP_cut * > &  cuts 
) [virtual]

virtual void BM_lp::initialize_new_search_tree_node ( const BCP_vec< BCP_var * > &  vars,
const BCP_vec< BCP_cut * > &  cuts,
const BCP_vec< BCP_obj_status > &  vs,
const BCP_vec< BCP_obj_status > &  cs,
BCP_vec< int > &  var_changed_pos,
BCP_vec< double > &  var_new_bd,
BCP_vec< int > &  cut_changed_pos,
BCP_vec< double > &  cut_new_bd 
) [virtual]

virtual BCP_branching_decision BM_lp::select_branching_candidates ( const BCP_lp_result &  lpres,
const BCP_vec< BCP_var * > &  vars,
const BCP_vec< BCP_cut * > &  cuts,
const BCP_lp_var_pool &  local_var_pool,
const BCP_lp_cut_pool &  local_cut_pool,
BCP_vec< BCP_lp_branching_object * > &  cans,
bool  force_branch = false 
) [virtual]

BCP_branching_decision BM_lp::bbBranch ( OsiBranchingInformation brInfo,
BCP_vec< BCP_lp_branching_object * > &  cands 
)

BCP_branching_decision BM_lp::hybridBranch (  ) 

void BM_lp::send_pseudo_cost_update ( OsiBranchingInformation branchInfo  ) 

Methods invoked from bbBranch().

void BM_lp::unpack_pseudo_costs ( BCP_buffer &  buf  ) 

int BM_lp::sort_objects ( OsiBranchingInformation branchInfo,
Bonmin::BonChooseVariable choose,
int &  branchNum 
)

void BM_lp::clear_SB_results (  ) 

void BM_lp::collect_branch_data ( OsiBranchingInformation branchInfo,
OsiSolverInterface solver,
const int  branchNum,
BM_BranchData branchData 
)

void BM_lp::do_distributed_SB ( OsiBranchingInformation branchInfo,
OsiSolverInterface solver,
const CoinWarmStart cws,
const int  branchNum,
const int *  pids,
const int  pidNum 
)

bool BM_lp::isBranchFathomable ( int  status,
double  obj 
)

int BM_lp::process_SB_results ( OsiBranchingInformation branchInfo,
OsiSolverInterface solver,
Bonmin::BonChooseVariable choose,
OsiBranchingObject *&  branchObject 
)

int BM_lp::try_to_branch ( OsiBranchingInformation branchInfo,
OsiSolverInterface solver,
Bonmin::BonChooseVariable choose,
OsiBranchingObject *&  branchObject,
bool  allowVarFix 
)

virtual void BM_lp::set_user_data_for_children ( BCP_presolved_lp_brobj *  best,
const int  selected 
) [virtual]


Member Data Documentation

int BM_lp::in_strong [private]

Definition at line 278 of file BM.hpp.

BCP_string BM_lp::ipopt_file_content [private]

Definition at line 280 of file BM.hpp.

BCP_string BM_lp::nl_file_content [private]

Definition at line 281 of file BM.hpp.

BCP_parameter_set<BM_par> BM_lp::par [private]

Definition at line 282 of file BM.hpp.

BCP_buffer BM_lp::bm_buf [private]

Definition at line 283 of file BM.hpp.

Bonmin::BonminAmplSetup BM_lp::bonmin_ [private]

This contains the setup for running Bonmin in particular nlp solver, continuous solver, cut generators,.

..

Definition at line 287 of file BM.hpp.

double BM_lp::integerTolerance_ [private]

Definition at line 289 of file BM.hpp.

int BM_lp::numNlpFailed_ [private]

A counter for how many times in a row did the NLP code fail.

When the NLP fails we branch; hopefully it'll be OK in the children. If it fails too many times in a row then we fathom the node: it's hopelessly difficult.

Definition at line 295 of file BM.hpp.

OsiCuts BM_lp::cuts_ [private]

Definition at line 297 of file BM.hpp.

int* BM_lp::objInd_ [private]

These are the indices of the integral (i.e., things that can be branched on) objects in the solver, sorted based on the priority of the corresponding objects.

Definition at line 302 of file BM.hpp.

int BM_lp::objNum_ [private]

Definition at line 303 of file BM.hpp.

int* BM_lp::infInd_ [private]

Every time when branching decisions are to be made, we create 6 arrays, 3 for those objects that are infeasible and 3 for those that are feasible.

infInd_ contains the indices of the objects (into the objects_ array of objects) that are not feasible, infUseful_ cointains their usefulness and infNum_ their number. They are ordered by their priority and within that by their usefulness (that depends on their pseudocosts, etc.). feasXXX_ contains the same for objects that are feasible, except that SOS objects are not listed there, nor variables that are fixed.

Definition at line 313 of file BM.hpp.

double* BM_lp::infUseful_ [private]

Definition at line 314 of file BM.hpp.

int BM_lp::infNum_ [private]

Definition at line 315 of file BM.hpp.

int* BM_lp::feasInd_ [private]

Definition at line 316 of file BM.hpp.

double* BM_lp::feasUseful_ [private]

Definition at line 317 of file BM.hpp.

int BM_lp::feasNum_ [private]

Definition at line 318 of file BM.hpp.

BM_SB_result* BM_lp::sbResult_ [private]

This is where we keep the results in case of distributed strong branching.

The length of the array is objNum_

Definition at line 322 of file BM.hpp.

BM_SB_result* BM_lp::bestSbResult_ [private]

A pointer to the entry that got selected.

Definition at line 324 of file BM.hpp.

double BM_lp::node_start_time [private]

The time when we started to process the node.

Definition at line 327 of file BM.hpp.

BM_stats BM_lp::bm_stats [private]

Class for collecting statistics.

Definition at line 330 of file BM.hpp.


The documentation for this class was generated from the following file:
Generated on Thu Jun 26 03:10:47 2008 for Bonmin by  doxygen 1.4.7