/home/coin/SVN-release/OS-2.0.1/Bcp/src/Member/BCP_branch.cpp

Go to the documentation of this file.
00001 // Copyright (C) 2000, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #include "BCP_error.hpp"
00004 #include "BCP_branch.hpp"
00005 #include "BCP_buffer.hpp"
00006 #include "OsiSolverInterface.hpp"
00007 #include "BCP_lp_branch.hpp"
00008 
00009 BCP_internal_brobj::BCP_internal_brobj(BCP_lp_branching_object& candidate) :
00010   _child_num(candidate.child_num),
00011   _var_positions(), _cut_positions(), _var_bounds(), _cut_bounds()
00012 {
00013   if (candidate.forced_var_pos) {
00014     _var_positions = *candidate.forced_var_pos;
00015     _var_bounds = *candidate.forced_var_bd;
00016   }
00017   if (candidate.forced_cut_pos) {
00018     _cut_positions = *candidate.forced_cut_pos;
00019     _cut_bounds = *candidate.forced_cut_bd;
00020   }
00021 }
00022 
00023 
00024 void
00025 BCP_internal_brobj::apply_child_bounds(OsiSolverInterface* lp,
00026                                        int child_ind) const
00027 {
00028   if (_var_positions.size() > 0) {
00029     lp->setColSetBounds(_var_positions.begin(), _var_positions.end(),
00030                         var_bounds_child(child_ind));
00031   }
00032   if (_cut_positions.size() > 0) {
00033     lp->setRowSetBounds(_cut_positions.begin(), _cut_positions.end(),
00034                         cut_bounds_child(child_ind));
00035   }
00036 }
00037 
00038 void BCP_internal_brobj::pack(BCP_buffer& buf) const {
00039   buf.pack(_child_num)
00040     .pack(_var_positions).pack(_var_bounds)
00041     .pack(_cut_positions).pack(_cut_bounds);
00042 }
00043 
00044 void BCP_internal_brobj::unpack(BCP_buffer& buf) {
00045   buf.unpack(_child_num)
00046     .unpack(_var_positions).unpack(_var_bounds)
00047     .unpack(_cut_positions).unpack(_cut_bounds);
00048 }

Generated on Thu Oct 8 03:02:52 2009 by  doxygen 1.4.7