In the Quadratic Assignment Problem (QAP), we are given a set of n locations and n facilities, and told to assign each facility to a location. There are n! possible assignments. To measure the cost of each possible assignment, we multiply the prescribed flow between each pair of facilities by the distance between their assigned locations, and sum over all the pairs. Our aim is to find the assignment that minimizes this cost.
Mathematically, we can formulate the problem by defining two n by n matrices: a flow matrix F whose (i,j)-th element represents the flow between facilities i and j, and a distance matrix D whose (i,j)-th element represents the distance between locations i and j. We represent an assignment by the vector p, which is a permutation of the numbers {1, 2, ... , n }. p(j) is the location to which facility j is assigned. With these definitions, the QAP can be written as
QAP is NP-hard. Arguably, it is the most difficult NP-hard combinatorial optimization problem. Solving problems of size greater than 30 (ie. more than 900 0-1 variables) is computationally impractical. Among the exact algorithms used to solve QAP, branch and bound has been the most successful. However, the lack of a sharp lower bound is one of the major difficulties. Indeed, either the bound is too loose, or the time needed to compute the bound is prohibitive.
In 1968, Nugent, Vollman, and Ruml posed a set of problem instances of size 5, 6, 7, 8, 12, 15, 20, and 30 noted for their difficulty[1] (Note: From now on, a problem instance of size 8 will be called Nug8 and so on). These QAP instances have multiple global optima. Even worse, these globally optimal solutions are at the maxially possible distance from other globally optimal solutions.
In their 1968 paper, Nugent, Vollman, and Ruml solved the first four of these instances by enumerating all possible solutions on a GE 265 computer. Between 1978 and 1980, Nug12 and Nug15 were solved using branch and bound heuristics on a CDC-CYBER76 computer. In 1990s, techniques such as simulated annealing, genetic algorithms, randomized adaptive search, etc were used to solve instances upto Nug24 on supercomputers such as the Cray. However, it was thought that Nug30 was beyond the capability of existing computing resources.
In 2000, the team of Kurt Anstreicher, Nathan Brixius (University of Iowa), Jean-Pierre Goux (Northwester University), and Jeff Linderoth (Argonne National Laboratory) succeeded in solving Nug30 exactly. Their recipe for success was:
The dramatic improvements in the performance of networks and in the computational power of individual workstations/computers mades it possible to assemble geographically dispersed into a powerful "computational grid". Members of this computational pool can be seen in the following table:
| Number | Arch/OS | Location | 414 | Intel/Linux | Argonne | 96 | SGI/Irix | Argonne | 1024 | SGI/Irix | NCSA | 16 | Intel/Linux | NCSA | 45 | SGI/Irix | NCSA | 246 | Intel/Linux | Wisconsin | 146 | Intel/Solaris | Wisconsin | 133 | Sun/Solaris | Wisconsin | 190 | Intel/Linux | Georgia Tech | 94 | Intel/Solaris | Georgia Tech | 54 | Intel/Linux | Italy (INFN) | 25 | Intel/Linux | New Mexico | 12 | Sun/Solaris | Northwestern | 5 | Intel/Linux | Columbia U. | 10 | Sun/Solaris | Columbia U. |
|---|
Nug30 was solved in 7 days. The optimal solution to the nug30 QAP
instance is:
14,5,28,24,1,3,16,15,10,9,21,2,4,29,25,22,13,26,17,30,6,20,19,8,18,7,27,12,11,23.
In order to prove the optimality of this solution, 11,892,208,412 nodes of a branch and bound tree were explored. Solving the associated node subproblems and computing the branching information required 574,254,156,532 Frank-Wolfe iterations.
On average, there were 653 machines participating in the computation, with a maximum of 1009. One of the most remarkable features of the run was that almost 1 million linear assignment problems (LAPs) were solved each second during the course of the run. (One LAP must be solved for each Frank-Wolfe iteration).
Today's supercomputing power is greater by 2 orders of magnitude and therefore, should solve Nug30 even faster. The team did a remarkable job parallelizing the branch-and-bound algorithm.