Você está na página 1de 11

Vida Artificial na Computao

Gustavo Sousa Pavani

Universidade Federal do ABC (UFABC) 2 Trimestre - 2008


Aula 5

PSO para o problema TSP

uma rea de pesquisa intensa, pois a aplicao do PSO para problemas discretos bastante recente. Diversas maneiras de se implementar um algoritmo baseado em PSO para o problema do caixeiro viajante:

K.P. Wang, L. Huang, C.G. Zhou, W. Pang, Particle Swarm Optimization for Traveling Salesman Problem, In Proceedings of the 2nd International Conference on Machine Learning and Cybernetics. pp. 1583-1585, 2003.
Gustavo S. Pavani

Indivduo (soluo) e funo objetivo

Suponha que o circuito no TSP seja de N cidades:

Indivduo composto por N posies, cada posio contendo o identificador numrico da cidade (entre 1 e N, inclusive), que diferente de todas as outras posies.

Indivduo sempre factvel

Funo objetivo:

Minimizar o custo do circuito entre as N cidades.

Custo = distncia(a1,a2) + distncia(a2,a3) + ... + distncia (an-1,an) + distncia(an, a1)

Gustavo S. Pavani

Operador de troca

Operador de Troca (Swap Operator - SO)


Troca dos ns ai e aj, i,j {1...N}

Indicado por SO(i,j) Soluo S = (1, 3, 5, 2, 4) Operador de troca SO(1, 2) Resultado S = (3, 1, 5, 2, 4)

Exemplo: TSP com 5 ns


Sequncia de troca (Swap Sequence - SS)

Composta de um ou mais operadores de troca


SS = (SO1, SO2, SO3, ..., SOn) A ordem dos operadores de troca na sequncia importante.

Gustavo S. Pavani

Propriedades da Sequncia de Troca

Diferentes sequncias de troca agindo na mesma soluo podem produzir um resultado igual.

Todas essas sequncias de trocas esto no mesmo conjunto equivalente de sequncias de trocas. A sequncia de troca que contm o menor nmero de operadores de trocas chamada de sequncia bsica de troca (Basic Short Sequence - BSS)

Diferentes sequncias de troca podem ser unidas atravs do operador

SS = SS1 SS2
Gustavo S. Pavani

Exemplo de BSS

Suponha duas solues A e B. Seja a sequncia bsica de troca SS, que age em B para se chegar na soluo A.Isto , A = B + SS.

Exemplo: A = (1, 2, 3, 4, 5) e B = (2, 3, 1, 5, 4)

A(1) = B(3) SO(1,3) Resultado: B1 = (1, 3, 2, 5, 4) A(2) = B(3) SO(2,3) Resultado: B2 = (1, 2, 3, 5, 4) A(4) = B(5) SO(4,5) Resultado: B3 = (1, 2, 3, 4, 5) SS = (SO(1,3); SO(2,3); SO(4,5))

Gustavo S. Pavani

Nova frmula para velocidade

vi(t) = vi(t-1) (pi - xi(t-1)) (pg - xi(t-1))

e so nmeros aleatrios entre 0 e 1.

Isto significa que o primeiro e o segundo termos so unidos expresso de velocidade com probabilidade e , respectivamente.

Seja A = (pi - xi(t-1)), que uma sequncia bsica de troca Seja B = (pg - xi(t-1)), que tambm uma sequncia bsica de troca vi uma sequncia de troca

Novo conceito de velocidade

Gustavo S. Pavani

Criao da populao inicial


Cada partcula ganha uma soluo aleatria e uma sequncia de troca, que a velocidade. Dica: para melhorar a velocidade de convergncia da populao interessante criar a populao inicial com algumas partculas resultantes de alguma heurstica.

Heurstica gulosa

Selecione um n inicial de forma aleatria. O prximo n ser a cidade mais prxima que ainda no foi selecionada. Faa isso at todos os ns sejam selecionados.

Gustavo S. Pavani

Iterao do algoritmo

Para cada partcula na populao faa


Com probabilidade , calcule a sequncia A Com probabilidade , calcule a sequncia B Calcule a velocidade vi(t), unindo a velocidade anterior e as sequncias A e B, caso aplicvel. Calcule xi(t) = xi(t-1) + vi(t) A partir de xi(t), calcule a sequncia bsica de troca.

vi(t) = xi(t) - xi(t-1) Evita a exploso de SOs na velocidade!

Atualize pi , caso a nova soluo seja superior a pi Atualize pg, caso a nova soluo seja superior a pg
Gustavo S. Pavani

Parmetros importantes

Os seguintes parmetros so bastante importantes, e no possuem uma regra melhor que tentativa e erro:

Tamanho da populao de partculas

Usualmente igual ao nmero de cidades Um nmero maior possibilita uma melhoria na explorao do algoritmo Usualmente 2 ou 4 (incluindo a prpria partcula) interessante amostrar o valor da melhor partcula a cada intervalo fixo de iteraes, para se estimar a velocidade de convergncia do algoritmo
Gustavo S. Pavani

Tamanho da vizinhana

Nmero de iteraes disponveis

10

Consideraes finais

Para se calcular o clculo probabilstico das sequncias, necessrio ter um outro nmero aleatrio , entre 0 e 1

Se o nmero sorteado for maior que , ento inclua a sequncia. Caso contrrio, no inclua a sequncia Os geradores de nmero aleatrio devem receber sementes distintas!

No se esqueam de guardar a melhor soluo de todas Otimizaes podem mudar completamente a velocidade de execuo do algoritmo
Gustavo S. Pavani

11