Professional Documents
Culture Documents
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 composto por N posies, cada posio contendo o identificador numrico da cidade (entre 1 e N, inclusive), que diferente de todas as outras posies.
Funo objetivo:
Gustavo S. Pavani
Operador de troca
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)
SS = (SO1, SO2, SO3, ..., SOn) A ordem dos operadores de troca na sequncia importante.
Gustavo S. Pavani
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)
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.
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
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
Gustavo S. Pavani
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
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.
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:
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
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