Free cookie consent management tool by TermsFeed Policy Generator
wiki:Documentation/Reference/Robust Taboo Search

Version 3 (modified by abeham, 13 years ago) (diff)

--

Robust Taboo Search

Introduction

This algorithm was first described in Taillard, E. 1991. Robust Taboo Search for the Quadratic Assignment Problem. Parallel Computing 17, pp. 443-455. It is among the most cited algorithms to solve instances of the quadratic assignment problem (QAP).

There are two main differences to a "standard" tabu search:

  1. The tenure of tabu elements is a random variable instead of a static value.
  2. The algorithm features a long-term diversification method which favors moves that have not been performed in a long time. If a move would assign to facilities to locations that both have not been assigned to for a long number of iterations then the move is performed regardless of quality. If there are multiple of these moves in one iteration the best one is performed.

The introduction of randomness in the tabu search makes the search more robust in that it can escape cycling (also see the [ReactiveTabuSearch Reactive Tabu Search]). Cycling is the behavior when the tabu search returns to the same solution over and over. The length of such a cycle is greater than the tabu tenure since during the tenure moves are prohibited.

The long-term diversification helps the algorithm when it is stuck in a certain sub-space of the fitness landscape. This could happen when single elements of the solution have a high weight on the fitness function and are thus very unlikely to be moved as soon as they're arranged "optimally" with respect to a number of options. By forcing the search to move to configurations that have not been visited a long time it is able to escape such sub-spaces.

Implementation in HeuristicLab

The implementation in HeuristicLab is closely related to the C and C++ implementation given by Eric Taillard himself on his webpage. There are two implementations: An older one written for C++ compilers and a newer one written for C compilers. Apart from programming specific differences, the two algorithms mainly differ in the aspect of tabu tenure adaption. In the C++ version the tabu tenure is set as described in the original publication as a uniformly distributed random variable between min and max. In the newer C version however the tabu tenure is set to x3 * max and rounded down with x being a uniformly distributed random variable in the interval (0;1]. The final interval thus is between [0;max], but skewed towards lower values. In HeuristicLab you can choose between either form through the option UseNewTabuTenureAdaptionScheme (set it to false for the old min-max approach, true for the newer way).

Apart from the approach itself also some default values have changed. In the C++ implementation the aspiration tenure (called AlternativeAspirationTenure in HeuristicLab) is set to N2/2, while in the C implementation it is set to 5*N2. In HeuristicLab however we did not use either scheme, but performed a linear regression on the parameters Taillard has given in his results tables (see Fig. 1). The regression model and thus the parameter is determined by 203*N-2274 and was lower-bounded by 100 for small N. The min and max parameters are adapted similar to the implementations (min = 0.9*N, max = 1.1*N when the old adaption scheme is used, min = 0, max = 8*N when UseNewTabuTenureAdaptionScheme is set to true).

Fig. 1

Attachments (1)

Download all attachments as: .zip