METAHEURÍSTICAS CLÁSSICAS · SUBTÓPICO 04
Construa com critério. Sacuda com intenção.
GRASP produz muitos bons pontos de partida com aleatoriedade controlada. VNS muda sistematicamente a vizinhança quando a busca local para de encontrar melhorias.
01 · DUAS FORMAS DE ESCAPAR
A variedade pode entrar no início ou durante o caminho.
Construa várias soluções diferentes.
Em cada iteração, a construção escolhe aleatoriamente entre candidatos suficientemente bons; depois, uma busca local intensifica o resultado.
Mude o tipo de perturbação.
Quando uma vizinhança não gera melhora, VNS “sacode” a solução em uma vizinhança maior e volta a intensificar localmente.
02 · CONTROLE DA ALEATORIEDADE
Em GRASP, α regula quão gulosa é a construção.
Só o melhor candidato entra na lista restrita. É rápido, mas repete soluções parecidas.
A lista restrita de candidatos equilibra qualidade e diversidade entre as execuções.
Todos os candidatos podem entrar. A diversidade cresce, mas a construção perde orientação.
03 · LABORATÓRIO INTERATIVO
Faça construções GRASP e perturbações VNS na mesma rota.
O cenário usa seis cidades. GRASP gera uma rota inicial a partir de uma lista restrita; VNS testa trocas cada vez maiores antes de retornar à busca local.
Rota e perturbação
O traço mostra a solução que será refinada pela busca local.
Melhor custo por fase
Construções diferentes e vizinhanças maiores ampliam as chances de melhoria.
04 · QUANDO USAR CADA UMA
As duas técnicas também funcionam muito bem juntas.
05 · NO CÓDIGO
Uma solução diferente a cada rodada, uma vizinhança diferente quando necessário.
const semente = construirComRCL(alpha);
let melhor = buscaLocal(semente);
for (let k = 1; k <= kMax; k++) {
const candidata = buscaLocal(perturbar(melhor, k));
if (custo(candidata) < custo(melhor)) { melhor = candidata; k = 0; }
}Escolha na RCL.
Faça busca local.
Aplique Nₖ.
Troque k ou recomece.
FIM DAS METAHEURÍSTICAS CLÁSSICAS
Próximo: algoritmos bioinspirados.
Agora a exploração passa a ser conduzida por populações, evolução e enxames.
Iniciar módulo →