#include <BM.hpp>
Collaboration diagram for BM_lp:
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 OsiSolverInterface * | initialize_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_par > | par |
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_result * | sbResult_ |
This is where we keep the results in case of distributed strong branching. | |
BM_SB_result * | bestSbResult_ |
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. |
Definition at line 273 of file BM.hpp.
BM_lp::BM_lp | ( | ) |
virtual BM_lp::~BM_lp | ( | ) | [virtual] |
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] |
int BM_lp::in_strong [private] |
BCP_string BM_lp::ipopt_file_content [private] |
BCP_string BM_lp::nl_file_content [private] |
BCP_parameter_set<BM_par> BM_lp::par [private] |
BCP_buffer BM_lp::bm_buf [private] |
Bonmin::BonminAmplSetup BM_lp::bonmin_ [private] |
double BM_lp::integerTolerance_ [private] |
int BM_lp::numNlpFailed_ [private] |
OsiCuts BM_lp::cuts_ [private] |
int* BM_lp::objInd_ [private] |
int BM_lp::objNum_ [private] |
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.
double* BM_lp::infUseful_ [private] |
int BM_lp::infNum_ [private] |
int* BM_lp::feasInd_ [private] |
double* BM_lp::feasUseful_ [private] |
int BM_lp::feasNum_ [private] |
BM_SB_result* BM_lp::sbResult_ [private] |
BM_SB_result* BM_lp::bestSbResult_ [private] |
double BM_lp::node_start_time [private] |
BM_stats BM_lp::bm_stats [private] |