next up previous contents index
Next: The Base Class Global Up: Details Previous: The Root of the

The Master

 

In an object oriented implementation of a linear-programming based branch-and-bound algorithm we require one object that controls the optimization, in particular the enumeration and resource limits, and stores data that can be accessed from any other object involved in the optimization of a specific instance. This task is performed by the class ABA_MASTER , which is not identical with the root node of the enumeration tree. For each application of ABACUS we have to derive a class from ABA_MASTER implementing problem specific ``global'' data and functions.

Every object, which requires access to this ``global'' information, stores a pointer to the corresponding object of the class ABA_MASTER. This holds for almost all classes of the framework. For example the class ABA_SUB, implementing a subproblem of the branch-and-bound tree, has as a member a pointer to an object of the class ABA_MASTER (other members of the class ABA_SUB are omitted):

  class ABA_SUB {
    ABA_MASTER *master_;
  };
Then, we can access within a member function of the class ABA_SUB, e.g., the global upper bound by calling
  master_->upperBound();
where upperBound() is a member function of the class ABA_MASTER.

Encapsulating this global information in a class is also important, if more than one linear-programming based branch-and-bound is solved within one application. If the pricing problem within a branch-and-price algorithm is again solved with the help of ABACUS, e.g., then separate master objects with different global data are used.





Stefan Thienel
Fri Sep 19 11:32:54 MET DST 1997