/home/coin/SVN-release/OS-2.0.1/Bcp/src/LP/BCP_lp_branching.cpp File Reference

#include <cstdio>
#include <numeric>
#include <utility>
#include "CoinWarmStart.hpp"
#include "CoinTime.hpp"
#include "BCP_math.hpp"
#include "BCP_enum.hpp"
#include "BCP_matrix.hpp"
#include "BCP_warmstart.hpp"
#include "BCP_lp_result.hpp"
#include "BCP_lp_node.hpp"
#include "BCP_lp_user.hpp"
#include "BCP_lp_functions.hpp"
#include "BCP_lp_pool.hpp"
#include "BCP_lp_branch.hpp"
#include "BCP_lp.hpp"

Include dependency graph for BCP_lp_branching.cpp:

Go to the source code of this file.

Functions

static std::pair< int, int > BCP_add_branching_objects (BCP_lp_prob &p, BCP_vec< BCP_lp_branching_object * > &candidates)
static void BCP_mark_result_of_strong_branching (BCP_lp_prob &p, const BCP_lp_branching_object *can, const int added_col_num, const int added_row_num)
static BCP_branching_decision BCP_lp_select_branching_object (BCP_lp_prob &p, BCP_presolved_lp_brobj *&best_presolved)
static void BCP_lp_make_parent_from_node (BCP_lp_prob &p)
static void BCP_print_brobj_stat (BCP_lp_prob &p, const int orig_varnum, const int candidate_num, const int selected, const BCP_presolved_lp_brobj *best_presolved)
static int BCP_lp_perform_strong_branching (BCP_lp_prob &p, BCP_vec< BCP_lp_branching_object * > &candidates, BCP_presolved_lp_brobj *&best_presolved)
BCP_branching_result BCP_lp_branch (BCP_lp_prob &p)


Function Documentation

static std::pair< int, int > BCP_add_branching_objects ( BCP_lp_prob p,
BCP_vec< BCP_lp_branching_object * > &  candidates 
) [inline, static]

Definition at line 85 of file BCP_lp_branching.cpp.

References BCP_fatal_error::abort_on_error, BCP_cut_set::append(), BCP_var_set::append(), BCP_vec< T >::append(), BCP_lp_add_cols_to_lp(), BCP_lp_add_rows_to_lp(), BCP_lp_next_cut_index(), BCP_lp_next_var_index(), BCP_Object_Branching, BCP_vec< T >::begin(), BCP_lp_node::cuts, BCP_lp_branching_object::cuts_to_add, BCP_lp_user::cuts_to_rows(), BCP_vec< T >::end(), BCP_lp_branching_object::init_pos_for_added(), BCP_vec< T >::insert(), BCP_lp_node::lb_at_cutgen, lp, BCP_lp_prob::lp_result, BCP_lp_prob::lp_solver, BCP_lp_prob::node, BCP_lp_result::objval(), purge_ptr_vector(), BCP_vec< T >::reserve(), BCP_vec< T >::size(), BCP_lp_prob::user, BCP_lp_node::vars, BCP_lp_branching_object::vars_to_add, and BCP_lp_user::vars_to_cols().

Referenced by BCP_lp_perform_strong_branching(), and BCP_lp_select_branching_object().

static void BCP_mark_result_of_strong_branching ( BCP_lp_prob p,
const BCP_lp_branching_object can,
const int  added_col_num,
const int  added_row_num 
) [inline, static]

Definition at line 189 of file BCP_lp_branching.cpp.

References BCP_vec< T >::begin(), BCP_vec< T >::end(), BCP_lp_branching_object::forced_var_pos, BCP_lp_branching_object::implied_var_pos, BCP_lp_prob::node, and BCP_lp_node::vars.

Referenced by BCP_lp_perform_strong_branching().

static BCP_branching_decision BCP_lp_select_branching_object ( BCP_lp_prob p,
BCP_presolved_lp_brobj *&  best_presolved 
) [inline, static]

Definition at line 414 of file BCP_lp_branching.cpp.

References BCP_presolved_lp_brobj::action(), BCP_Abandoned, BCP_add_branching_objects(), BCP_DoBranch, BCP_DoNotBranch, BCP_DoNotBranch_Fathomed, BCP_DoNotDive, BCP_KeepChild, BCP_lp_perform_strong_branching(), BCP_print_brobj_stat(), BCP_ReturnChild, BCP_vec< T >::begin(), c, BCP_presolved_lp_brobj::candidate(), BCP_lp_branching_object::child_num, BCP_lp_node::cuts, BCP_lp_node::dive, BCP_vec< T >::end(), BCP_vec< T >::erase(), BCP_lp_result::get_results(), BCP_presolved_lp_brobj::initialize_lower_bound(), BCP_lp_result::lhs(), BCP_lp_prob::local_cut_pool, BCP_lp_prob::local_var_pool, BCP_lp_prob::lp_result, BCP_lp_prob::lp_solver, BCP_lp_par::LpVerb_StrongBranchResult, BCP_lp_par::MaxPresolveIter, BCP_lp_user::modify_lp_parameters(), BCP_lp_prob::node, BCP_lp_result::objval(), BCP_lp_prob::param(), BCP_lp_result::primalTolerance(), BCP_lp_user::print(), BCP_lp_node::quality, BCP_lp_user::select_branching_candidates(), BCP_lp_user::set_actions_for_children(), BCP_presolved_lp_brobj::set_objective_values(), BCP_lp_user::set_user_data_for_children(), BCP_vec< T >::size(), BCP_lp_prob::stat, BCP_lp_result::termcode(), BCP_lp_statistics::time_branching, BCP_lp_node::true_lower_bound, BCP_lp_prob::user, BCP_lp_node::vars, BCP_lp_result::x(), and x.

Referenced by BCP_lp_branch().

static void BCP_lp_make_parent_from_node ( BCP_lp_prob p  )  [inline, static]

Definition at line 553 of file BCP_lp_branching.cpp.

References BCP_obj_set_change::_change, BCP_obj_set_change::_new_objs, BCP_Storage_NoData, BCP_Storage_WrtParent, BCP_vec< T >::clear(), BCP_lp_prob::core, BCP_node_storage_in_tm::core_change, BCP_node_storage_in_tm::cut_change, BCP_lp_parent::cut_set, BCP_problem_core::cutnum(), BCP_lp_node::cuts, BCP_lp_node::index, BCP_lp_parent::index, BCP_lp_prob::node, BCP_lp_prob::parent, BCP_vec< T >::reserve(), BCP_vec< T >::size(), BCP_lp_node::tm_storage, BCP_vec< T >::unchecked_push_back(), BCP_lp_node::user_data, BCP_node_storage_in_tm::var_change, BCP_lp_parent::var_set, BCP_problem_core::varnum(), BCP_lp_node::vars, BCP_node_storage_in_tm::warmstart, BCP_lp_node::warmstart, and BCP_lp_parent::warmstart.

Referenced by BCP_lp_branch().

static void BCP_print_brobj_stat ( BCP_lp_prob p,
const int  orig_varnum,
const int  candidate_num,
const int  selected,
const BCP_presolved_lp_brobj best_presolved 
) [inline, static]

Definition at line 42 of file BCP_lp_branching.cpp.

References BCP_presolved_lp_brobj::action(), BCP_DBL_MAX, BCP_FathomChild, BCP_KeepChild, BCP_ReturnChild, BCP_presolved_lp_brobj::candidate(), BCP_lp_branching_object::child_num, BCP_lp_prob::lp_result, BCP_lp_prob::lp_solver, BCP_presolved_lp_brobj::lpres(), BCP_lp_par::LpVerb_ChildrenInfo, BCP_lp_par::LpVerb_StrongBranchPositions, BCP_lp_par::LpVerb_StrongBranchResult, BCP_lp_result::objval(), BCP_lp_prob::param(), BCP_lp_user::print(), BCP_lp_branching_object::print_branching_info(), BCP_lp_prob::user, and BCP_lp_result::x().

Referenced by BCP_lp_select_branching_object().

static int BCP_lp_perform_strong_branching ( BCP_lp_prob p,
BCP_vec< BCP_lp_branching_object * > &  candidates,
BCP_presolved_lp_brobj *&  best_presolved 
) [inline, static]

Definition at line 247 of file BCP_lp_branching.cpp.

References BCP_lp_branching_object::apply_child_bd(), BCP_add_branching_objects(), BCP_DBL_MAX, BCP_lp_delete_cols_and_rows(), BCP_lp_test_feasibility(), BCP_mark_result_of_strong_branching(), BCP_NewPresolvedIsBetter, BCP_NewPresolvedIsBetter_BranchOnIt, BCP_OldPresolvedIsBetter, BCP_vec< T >::begin(), BCP_presolved_lp_brobj::candidate(), BCP_lp_branching_object::child_num, BCP_lp_user::compare_branching_candidates(), BCP_lp_node::cuts, BCP_lp_branching_object::cuts_affected(), BCP_vec< T >::end(), BCP_lp_user::generate_cuts_in_lp(), BCP_lp_user::getOsiBabSolver(), BCP_lp_node::index, BCP_lp_node::iteration_count, BCP_lp_node::level, lp, BCP_lp_prob::lp_result, BCP_lp_prob::lp_solver, BCP_lp_par::LpVerb_PresolvePositions, BCP_lp_par::LpVerb_PresolveResult, BCP_lp_par::LpVerb_StrongBranchResult, BCP_lp_par::MaxPresolveIter, BCP_lp_user::modify_lp_parameters(), BCP_lp_prob::node, BCP_lp_prob::param(), BCP_lp_user::print(), BCP_lp_branching_object::print_branching_info(), purge_ptr_vector(), BCP_vec< T >::size(), BCP_lp_prob::user, BCP_lp_node::vars, BCP_lp_branching_object::vars_affected(), ws, and BCP_lp_result::x().

Referenced by BCP_lp_select_branching_object().

BCP_branching_result BCP_lp_branch ( BCP_lp_prob p  ) 

Definition at line 618 of file BCP_lp_branching.cpp.

References BCP_lp_branching_object::apply_child_bd(), BCP_BranchingContinueThisNode, BCP_BranchingDivedIntoNewNode, BCP_BranchingFathomedThisNode, BCP_DoBranch, BCP_DoNotBranch, BCP_DoNotBranch_Fathomed, BCP_lp_clean_up_node(), BCP_lp_make_parent_from_node(), BCP_lp_perform_fathom(), BCP_lp_select_branching_object(), BCP_lp_send_cuts_to_cp(), BCP_lp_send_node_description(), BCP_Msg_NodeDescription_Discarded, BCP_Msg_NoMessage, BCP_presolved_lp_brobj::candidate(), BCP_lp_par::CutEffectiveCountBeforePool, BCP_lp_node::cuts, BCP_lp_branching_object::cuts_affected(), BCP_lp_branching_object::forced_cut_bd_child(), BCP_lp_branching_object::forced_cut_pos, BCP_lp_branching_object::forced_var_bd_child(), BCP_lp_branching_object::forced_var_pos, BCP_lp_branching_object::implied_cut_bd_child(), BCP_lp_branching_object::implied_cut_pos, BCP_lp_branching_object::implied_var_bd_child(), BCP_lp_branching_object::implied_var_pos, BCP_presolved_lp_brobj::is_pruned(), BCP_lp_prob::lp_solver, BCP_lp_par::LpVerb_FathomInfo, BCP_lp_prob::node, BCP_lp_prob::param(), BCP_lp_user::print(), BCP_cut_set::set_lb_ub(), BCP_var_set::set_lb_ub(), BCP_lp_prob::user, BCP_presolved_lp_brobj::user_data(), BCP_lp_node::user_data, BCP_lp_node::vars, and BCP_lp_branching_object::vars_affected().

Referenced by BCP_lp_main_loop().


Generated on Thu Oct 8 03:04:05 2009 by  doxygen 1.4.7