O Tabu Search (Busca Tabu) Ă© um metaheurĂstico usado para resolver problemas de otimização complexos, onde nĂŁo Ă© fácil (ou Ă© impossĂvel) encontrar a solução Ăłtima exata em pouco tempo.
A ideia Ă©:
- Começar com uma solução inicial qualquer.
- Procurar por vizinhos dessa solução (pequenas mudanças).
- Escolher o melhor vizinho mesmo que ele nĂŁo seja melhor que o atual (isso ajuda a escapar de mĂnimos locais).
- Usar uma lista tabu (memória) para guardar os movimentos ou soluções recentes, evitando voltar sempre para os mesmos lugares (ficar preso em ciclos).
- Depois de várias iterações, chega-se a uma solução muito boa (não garantidamente a ótima, mas próxima).
Imagine um vendedor que precisa visitar 5 cidades e voltar à cidade inicial. Objetivo: encontrar a ordem que minimiza a distância total.
- Solução inicial: começa com uma rota qualquer, ex:
A → B → C → D → E → A
. - Vizinhança: troca duas cidades de lugar, por exemplo:
A → C → B → D → E → A
. - Avaliação: calcula a distância total da nova rota.
- Lista Tabu: se já testou essa troca recentemente, não deixa repetir (tabu).
- Melhor vizinho permitido: escolhe o vizinho que dá a menor distância sem quebrar a regra do tabu.
- Repete o processo até atingir o número de iterações ou critério de parada.
Esse código roda o Tabu Search para um TSP com 4 cidades. Ele faz trocas de cidades, evita repetições com a lista tabu, e tenta achar uma rota curta.