6.338J Final Project
(Updated) Progress Report
Asanka Herath (asanka AT mit.edu)
Buddhika Kottahachchi (buddhika AT mit.edu)
Based on the work we've done in the past week, the progress made and the lessons learned, we have had to re-think our strategy and re-scope the problem we wish to solve as part of our final project. However, we believe the new focus does not take away from our original objective. Therefore, we first re-state our project objective in a more concrete manner.
Project Objective
To explore the intuition that applying a parallel
approach to a search problem not only allows us to deal with problems that have
large search spaces, but that applying branch and bound techniques to the
parallelized approach actually reduce the subset of the search space that needs
to be traversed before reaching the desired solution. (ie. we wish to show a relationship
between the number of nodes used and the size of the subset of the search space
that actually needs to be traversed while searching for a solution).
Given this objective, and our belief that we had found a reasonable starting point based on some previous work done in Denmark (report), we framed the project originally towards practical applications in the apparel industry. Unfortunately, the authors of the aforementioned report declined to work with us and so, we were left with the option of replicating some of their work. In order to do so, we needed a means to manipulate polygons. We considered writing our own library for this, realized it was a futile exercise and then considered FastGEO (an object Pascal based geometry library) and CGAL (a C++ based geometry library). CGAL didn't have the functionality we desired (ie. even simple boolean operations on polygons required convoluted coding), but FastGEO was promising. However, manually porting it to C or C++ was not possible in the given time frame. We did attempt to do an automated port using PtoC but that wasn't successful.
At this point we stepped back and re-examined our goals. Writing a geometry library didn't seem to fit well with the goals of our project and of the class. So, we tried to re-scope what we will be implementing.
Our new implementation goals are as follows:
Implement a
solution to a specialized case of the
bin-packing problem where we consider a 2D constant width
W, variable height H bin being filled with rectangles of arbitrary
dimensions (fulfilling the condition that a given rectangle can be placed in a
bin of width W). Our solution will
optimize H for a given set of rectangles. We will be running independent
instances of the search on multiple nodes and will be co-ordinating the branch
and bound operations via the front-end. Thus, once a particular node finds a
partially optimal solution H1 none of the nodes will
thereafter explore candidate solutions that exceed H1. We
will also collect empirical data of the search space that was actually traversed
against the number of nodes used, in order to provide evidence supporting our
thesis.
Progress Made
General design of the code structure.
A Rectangle class
implementing the set of operations we desire
. These include intersection detection, rotation(to simplify things we
only consider 2 orientations: horizontal and vertical).
I/O functionality to load problems and save solutions.
Need to be done
The serial solution generator
(bounded exhaustive).
The front-end branch and bound
co-ordinator.
Visualization functionality.
Data collection
functionality.
Potential Issues
Ensuring that all the nodes are
working on different candidate solutions (ie. avoid redundancy).
Simply
sharing bounds might not give enough of an improvement to compensate for the
overhead of parallelization and still demonstrate an improvement. We are
considering several methods
of sharing optimal bounds for subproblems which could be implemented if time
permits.
Last modified on 04/24/2004