You are on page 1of 3

Pseudocódigo Algoritmo de Vagalumes

Entrada: F(X), X=(X1, X2, …, Xn), alfa, betaInicial, gamma


Saída: O melhor vagalume Xi

início
para i de 1 até n faça
Xi ← solucaoInicial();
fim;

determinação do coeficiente de absorção gamma;

enquanto critério de fim não terminar faça


para i de 1 até n faça
houveMovimentacao ← falso;
para i de 1 até n faça
se ( F(Xi) < F(Xj) ) então
houveMovimentacao ← verdadeiro;
Ri,j ← distância (Xi, Xj);
beta ← atratividade(betaInicial, gamma, Ri,j);
Xi <-- movimentacao(Xi, Xj, alfa, beta, distancia);
fimse;
fimpara;
se ( não houveMovimentacao ) então
Xi ← movimentacaoRandomica(Xi);
fimse;
fimpara;
fimenquanto;
fim.
Pseudocódigo Movimentação de Vagalumes

Entrada: Xi, Xj, alfa, beta, distancia;


Saída: Xi com nova permutação e brilho

início
Xi ← passoBeta(Xi, Xj, beta);
Xi ← passoAlfa(Xi, Xj, alfa, distancia);
F(Xi) <- calculadoraDeBrilho(Xi);
fim.

Pseudocódigo Movimentação de Vagalumes - Passo Beta

Entrada: Xi, Xj, beta;


Saída: Vazio

início
Xi ← preenchimentoElementosComuns(Xi, Xj);
Xi ← completarEspacosVazios(Xi, Xj, beta);
se ( contemEspacosVazios(Xi) ) então
Xi ← preenchimentoRandomico(Xi, Xj);
fimse;
fim.

Pseudocódigo Movimentação de Vagalumes - Passo Alfa Troca Dois


Elementos

Entrada: Xi, alfa, distancia


Saida: Vazio

início
quantidadeDeTrocas ← alfa * random(2, distancia);
para i de 1 até quantidadeTrocas faça
posicao1 ← random(1, tamanho(Xi));
posicao2 ← random(1, tamanho(Xi));
trocar(Xi[posicao1], Xi[posicao2]);
fimpara;
fim.
Pseudocódigo Movimentação de Vagalumes - Passo Alfa Embaralha Posições

Entrada: Xi, alfa, distancia


Saída: Vazio

início
quantidadePosicoes ← alfa * random(2, distancia);
para i de 1 até quantidadePosicoes faça
posicoes[i] ← random (1, tamanho(Xi));
fimpara;
embaralhar(Xi, posicoes);
fim.

You might also like