IBM ILOG Scheduler User's Manual > Local Search in Scheduler > Tabu Search for the Jobshop Problem with Alternatives > Solving the Problem > The Tabu Search Metaheuristic

The tabu search metaheuristic is identical to that implemented in the previous chapter with two exceptions. First, the list of tabu moves is now an array of pointers to LSMove instances rather than to SwapRC instances.

  IloArray<LSMove*> _tabuList;

Second, the notify method has to deal with the fact that it could be called when either a SwapRC move or a RelocateRC move is chosen. To account for this we modify the first few lines of the method so that it can identify the correct move represented by the delta solution.

  LSMove *move = 0;
  RelocateRC *relocateMove = 
    RelocateRC::findRelocateFromDelta(solver, delta, _currentSolution);
  if (0 != relocateMove) 
    move = relocateMove;
  else {
    SwapRC *swapMove = SwapRC::findSwapFromDelta(solver, 
                                                 delta, _currentSolution);
    if (0 != swapMove)
      move = swapMove;
  }

Other than these two minor modifications, the implementation of the tabu metaheuristic is identical to that in the previous chapter.