Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

BCP_cut Class Reference

#include <BCP_cut.hpp>

Inheritance diagram for BCP_cut:

BCP_cut_algo BCP_cut_core BCP_cut_indexed List of all members.

Public Member Functions

Constructor and destructor
Note that there is no default constructor. There is no such thing as "default cut".

 BCP_cut (const double lb, const double ub)
virtual ~BCP_cut ()
Query methods
virtual BCP_object_t obj_type () const=0
int effective_count () const
double lb () const
double ub () const
BCP_IndexType bcpind () const
Query methods
BCP_obj_status status () const
bool dont_send_to_pool () const
bool is_non_removable () const
bool is_to_be_removed () const
Modifying methods
void set_effective_count (const int cnt)
int increase_effective_count ()
int decrease_effective_count ()
void set_lb (const double lb)
void set_ub (const double ub)
void change_lb_ub_st (const BCP_obj_change &change)
void change_bounds (const double lb, const double ub)
void set_bcpind (const BCP_IndexType bcpind)
Modifying methods
void set_status (const BCP_obj_status stat)
void dont_send_to_pool (bool flag)
void make_active ()
void make_non_removable ()
void make_to_be_removed ()

Protected Attributes

double _lb
double _ub

Private Member Functions

Disabled methods
 BCP_cut ()
 BCP_cut (const BCP_cut &)
BCP_cutoperator= (const BCP_cut &)

Private Attributes

BCP_IndexType _bcpind
BCP_obj_status _status
int _eff_cnt

Detailed Description

Abstract base class that defines members common to all types of cuts. Classes describing the three types of cuts (core, indexed and algorithmic) are derived from this class. No object of type BCP_cut can exist (having purely virtual members in the class enforces this restriction).

Definition at line 28 of file BCP_cut.hpp.


Constructor & Destructor Documentation

BCP_cut::BCP_cut  )  [private]
 

The default constructor is declared but not defined to disable it.

BCP_cut::BCP_cut const BCP_cut  )  [private]
 

The copy constructor is declared but not defined to disable it.

BCP_cut::BCP_cut const double  lb,
const double  ub
[inline]
 

The constructor sets the internal index of the cut to zero and the other data members to the given arguments.

Definition at line 67 of file BCP_cut.hpp.

References _bcpind, _eff_cnt, _lb, _status, _ub, and ub().

00067                                               :
00068        _bcpind(0), _status(BCP_ObjNoInfo), _eff_cnt(0), _lb(lb), _ub(ub) {}

virtual BCP_cut::~BCP_cut  )  [inline, virtual]
 

The destructor is virtual so that the appropriate destructor is invoked for every cut.

Definition at line 71 of file BCP_cut.hpp.

00071 {}


Member Function Documentation

BCP_IndexType BCP_cut::bcpind  )  const [inline]
 

Return the internal index of the cut.

Definition at line 85 of file BCP_cut.hpp.

References _bcpind.

Referenced by BCP_problem_core::pack(), and BCP_cg_user::send_cut().

00085 { return _bcpind; }

void BCP_cut::change_bounds const double  lb,
const double  ub
[inline]
 

Change just the lower/upper bounds.

Definition at line 141 of file BCP_cut.hpp.

References _lb, _status, and _ub.

Referenced by BCP_vg_prob::unpack_cut().

00141                                                                 {
00142        _lb = lb;
00143        _ub = ub;
00144        if (lb < -1e30 && ub > 1e30)
00145          _status = static_cast<BCP_obj_status>(_status | BCP_ObjInactive);
00146     }

void BCP_cut::change_lb_ub_st const BCP_obj_change &  change  )  [inline]
 

Set the lower/upper bounds and the status of the cut simultaneously to the values given in the data members of the argument.

Definition at line 133 of file BCP_cut.hpp.

References _lb, _status, and _ub.

00133                                                               {
00134        _lb = change.lb;
00135        _ub = change.ub;
00136        _status = change.stat;
00137        if (_lb < -1e30 && _ub > 1e30)
00138          _status = static_cast<BCP_obj_status>(_status | BCP_ObjInactive);
00139     }

int BCP_cut::decrease_effective_count  )  [inline]
 

Decrease the effectiveness count by 1 (or to -1 if it was positive). Return the new effectiveness count.

Definition at line 123 of file BCP_cut.hpp.

References _eff_cnt.

00123                                           {
00124        _eff_cnt = _eff_cnt >= 0 ? -1 : _eff_cnt - 1;
00125        return _eff_cnt;
00126     }

void BCP_cut::dont_send_to_pool bool  flag  )  [inline]
 

Set/unset the flag controlling whether the cut could be sent to the Cut Pool process.

Definition at line 156 of file BCP_cut.hpp.

References _status.

00156                                                {
00157          _status = static_cast<BCP_obj_status>(flag ?
00158                                             _status | BCP_ObjDoNotSendToPool :
00159                                             _status & ~BCP_ObjDoNotSendToPool);
00160       }

bool BCP_cut::dont_send_to_pool  )  const [inline]
 

Return whether the cut should be sent to the Cut Pool process. (Assuming that it stays in the formulation long enough to qualify to be sent to the Cut Pool at all.

Definition at line 94 of file BCP_cut.hpp.

References _status.

00094                                             {
00095          return _status & BCP_ObjDoNotSendToPool ? true : false;
00096       }

int BCP_cut::effective_count  )  const [inline]
 

Return the effectiveness count of the cut (only in LP process).

Definition at line 79 of file BCP_cut.hpp.

References _eff_cnt.

00079 { return _eff_cnt; }

int BCP_cut::increase_effective_count  )  [inline]
 

Increase the effectiveness count by 1 (or to 1 if it was negative). Return the new effectiveness count.

Definition at line 117 of file BCP_cut.hpp.

References _eff_cnt.

00117                                           {
00118        _eff_cnt = _eff_cnt <= 0 ? 1 : _eff_cnt + 1;
00119        return _eff_cnt;
00120     }

bool BCP_cut::is_non_removable  )  const [inline]
 

Return whether the cut marked as NotRemovable. Such cuts are, e.g., the branching cuts.

Definition at line 99 of file BCP_cut.hpp.

References _status.

00099                                            {
00100          return (_status & BCP_ObjNotRemovable) ? true : false;
00101       }

bool BCP_cut::is_to_be_removed  )  const [inline]
 

Return whether the cut must be removed from the formulation. There are very few circumstances when this flag is set; all of them are completely internal to BCP.

Definition at line 105 of file BCP_cut.hpp.

References _status.

00105                                            {
00106          return (_status & BCP_ObjToBeRemoved) != 0;
00107       }

double BCP_cut::lb  )  const [inline]
 

Return the lower bound on the cut.

Definition at line 81 of file BCP_cut.hpp.

References _lb.

Referenced by BCP_problem_core::pack(), and BCP_cg_user::send_cut().

00081 { return _lb; }

void BCP_cut::make_active  )  [inline]
 

Mark the cut as active. Note that when this method is invoked the lp formulation must be modified as well: the original bounds of the cut must be reset.

Definition at line 164 of file BCP_cut.hpp.

References _status.

00164                                 {
00165          _status = static_cast<BCP_obj_status>(_status & ~BCP_ObjInactive);
00166       }

void BCP_cut::make_non_removable  )  [inline]
 

Mark the cut as NotRemovable.

Definition at line 168 of file BCP_cut.hpp.

References _status.

00168                                        {
00169          _status =
00170            static_cast<BCP_obj_status> ((_status & ~BCP_ObjToBeRemoved) |
00171                                         BCP_ObjNotRemovable);
00172       }

void BCP_cut::make_to_be_removed  )  [inline]
 

Mark the cut as ToBeRemoved. It will actually be removed immediately after all cuts that have to be marked this way are marked.

Definition at line 175 of file BCP_cut.hpp.

References _status.

00175                                        {
00176          _status = BCP_ObjToBeRemoved;
00177       }

virtual BCP_object_t BCP_cut::obj_type  )  const [pure virtual]
 

Return the type of the variable.

Implemented in BCP_cut_core, BCP_cut_indexed, and BCP_cut_algo.

Referenced by BCP_cg_user::send_cut().

BCP_cut& BCP_cut::operator= const BCP_cut  )  [private]
 

The assignment operator is declared but not defined to disable it.

void BCP_cut::set_bcpind const BCP_IndexType  bcpind  )  [inline]
 

Set the internal index of the cut.

Definition at line 148 of file BCP_cut.hpp.

References _bcpind.

Referenced by BCP_cut_core::BCP_cut_core(), BCP_problem_core::unpack(), and BCP_vg_prob::unpack_cut().

00148 { _bcpind = bcpind; }

void BCP_cut::set_effective_count const int  cnt  )  [inline]
 

Set the effectiveness count to the given value.

Definition at line 114 of file BCP_cut.hpp.

References _eff_cnt.

Referenced by BCP_cut_core::BCP_cut_core().

00114 { _eff_cnt = cnt; }

void BCP_cut::set_lb const double  lb  )  [inline]
 

Set the lower bound on the cut.

Definition at line 128 of file BCP_cut.hpp.

References _lb.

00128 { _lb = lb; }

void BCP_cut::set_status const BCP_obj_status  stat  )  [inline]
 

Set the status of the cut.

Definition at line 153 of file BCP_cut.hpp.

References _status.

Referenced by BCP_cut_core::BCP_cut_core(), BCP_problem_core::unpack(), and BCP_vg_prob::unpack_cut().

00153 { _status = stat; }

void BCP_cut::set_ub const double  ub  )  [inline]
 

Set the upper bound on the cut.

Definition at line 130 of file BCP_cut.hpp.

References _ub.

00130 { _ub = ub; }

BCP_obj_status BCP_cut::status  )  const [inline]
 

Return the status of the cut.

Definition at line 90 of file BCP_cut.hpp.

References _status.

Referenced by BCP_problem_core::pack(), and BCP_cg_user::send_cut().

00090 { return _status; }

double BCP_cut::ub  )  const [inline]
 

Return the upper bound on the cut.

Definition at line 83 of file BCP_cut.hpp.

References _ub.

Referenced by BCP_cut(), BCP_problem_core::pack(), and BCP_cg_user::send_cut().

00083 { return _ub; }


Member Data Documentation

BCP_IndexType BCP_cut::_bcpind [private]
 

The internal, unique index of the cut.

Definition at line 45 of file BCP_cut.hpp.

Referenced by BCP_cut(), bcpind(), and set_bcpind().

int BCP_cut::_eff_cnt [private]
 

Effectiveness counter (used only in the LP process).

Definition at line 49 of file BCP_cut.hpp.

Referenced by BCP_cut(), decrease_effective_count(), effective_count(), increase_effective_count(), and set_effective_count().

double BCP_cut::_lb [protected]
 

Lower bound of the cut.

Definition at line 55 of file BCP_cut.hpp.

Referenced by BCP_cut(), change_bounds(), change_lb_ub_st(), lb(), and set_lb().

BCP_obj_status BCP_cut::_status [private]
 

The status of the cut.

Definition at line 47 of file BCP_cut.hpp.

Referenced by BCP_cut(), change_bounds(), change_lb_ub_st(), dont_send_to_pool(), is_non_removable(), is_to_be_removed(), make_active(), make_non_removable(), make_to_be_removed(), set_status(), and status().

double BCP_cut::_ub [protected]
 

Upper bound of the cut.

Definition at line 57 of file BCP_cut.hpp.

Referenced by BCP_cut(), change_bounds(), change_lb_ub_st(), set_ub(), and ub().


The documentation for this class was generated from the following file:
Generated on Wed Dec 3 14:32:37 2003 for BCP by doxygen 1.3.5