next up previous contents
Next: Pseudo-code Up: Program Design Previous: ``Bound''

``Branch''

The ``branch'' of branch and bound is the process of prioritizing partial schedules by the lower bound, my implementation uses LEDA's Fibonacci heaps, taking the best partial schedule out and extending it one task tried on each processor and inserting the extended partial schedules into the priority structure by their respective rank. The function that does the extension and insertion into the heap is called extend in my algorithm. All long the way of the branch and bound processes the algorithm is checking to see if its looking at a complete partial schedule and if it costs less than the previously seen partial schedule, if it is then the current schedule becomes the new lowest schedule.

My algorithm takes advantage of the bound information it has calculated in another ways. If the cost of the partial schedule currently being observed is longer than the lowest so far it is not inserted in to the heap. This keeps the size of the heap small and better partial schedules are the only ones looked at. Also to keep the size of the heap smaller and to limit the search space we can find a quick initial estimate as the first upper bound.



Jamie Marconi
Thu May 23 19:44:07 PDT 1996