Você está na página 1de 16

Vida Artificial na Computao

Gustavo Sousa Pavani

Universidade Federal do ABC (UFABC) 2 Trimestre - 2008


Aula 4

Princpios scio-mtricos

A maioria das implementaes de enxame de partculas usam um desses dois princpios sciomtricos.

gbest: cada partcula influenciada pelo melhor desempenho de cada membro da populao inteira. lbest: cria uma vizinhana para cada indivduo contendo a si mesmo e os k vizinhos mais prximos na populao.

Exemplo: Se k = 2, ento cada indivduo i ser influenciado pelo melhor desempenho entre o grupo composto pelas partculas (i-1), i e (i+1). Dois o valor de k mais comum.

Gustavo S. Pavani

Exemplo - lbest

Gustavo S. Pavani

Exemplo - gbest

Gustavo S. Pavani

Modelo (Kennedy & Eberhart, 1997)

Probabilidade de sim ou no como funo de fatores sociais e pessoais (deciso binria):

P(xid(t) = 1) = f(xid(t-1), vid (t-1), pid, pgd)


P(xid(t) = 1) a probabilidade que o indivduo i vai escolher 1 para o bit na posio d na string de bits. xid(t-1) o estado atual da string de bits na posio d do indivduo i. t significa o passo atual da iterao e t-1 o passo anterior. vid (t-1) uma medida da predisposio do indivduo ou a probabilidade atual de decidir por 1. pid o melhor estado descoberto at ento. Por exemplo, 1 se o melhor sucesso do indivduo aconteceu quando xid era 1 ou 0 se ele era 0. pgd o melhor estado da vizinhana. Novamente 1, se o melhor sucesso alcanado por qualquer indivduo da vizinhana aconteceu quando estava no estado 1 e 0, caso contrrio.
Gustavo S. Pavani

Predisposio individual

O parmetro vid(t) determina um limiar de probabilidade, que deve ficar entre 0,0 e 1,0.

Se alto, o indivduo mais propenso a escolher 1. Se baixo, a escolha de 0 favorecida. Limiar implementado com a funo sigmide:

1 s ( v ) id 1 exp( v ) id

Gustavo S. Pavani

Ajuste da disposio do indivduo

representa um nmero aleatrio positivo tirado de uma distribuio uniforme. Normalmente, a soma do limite de dois igual a 4.

vid(t) = vid(t-1)+ 1 (pid - xid(t-1))+ 2 (pgd - xid(t-1)) Se id < s(vid(t)), ento xid(t) = 1. Caso contrrio, 0.

id um vetor de nmero aleatrios, retirados de uma distribuio uniforme entre 0,0 e 1,0.

Essas frmulas so repetidamente iteradas sobre cada dimenso do indivduo, testando toda vez para se ver se o valor atual de xid resulta em uma melhor avaliao de pid, que atualizado se isso acontece.

interessante limitar vid de forma que s(vid) no se aproxime muito de 0,0 e 1,0. Uma constante Vmax pode ser usada para limitar o intervalo de vid. Na prtica, se usa o valor de 4,0, de forma que existe uma pequena probabilidade de se mudar de estado, pois s(4.0) 0,018.
Gustavo S. Pavani

Influncia do sucesso dos vizinhos

Os indivduos tomam suas decises em uma populao, onde so influenciados pelo sucesso dos seus vizinhos. Como cada deciso do indivduo afetada por (pgd xid(t-1)), que normalmente o sucesso de outro indivduo, a influncia de um sobre outro faz com haja uma tendncia de se moverem juntos para uma mesma posio. medida que um indivduo se aproxima de outro, ele pode ter um melhor desempenho que o vizinho, influenciando-o. Boas decises se espalham pela populao.
Gustavo S. Pavani

Algoritmo PSO binrio - Iterao


For i = 1 to N If G(xi) > G(pi) then //G() avalia a qualidade For d = 1 to dimensions; pid = xid; //pid o melhor at o momento endfor; endif; g = 1; For j = 1 to ndice dos vizinhos; if G(pj) > G(pg) then g = j; endfor For d = 1 to dimensions; vid(t) = vid(t-1)+ 1 (pid - xid(t-1))+ 2 (pgd xid(t-1)) vid(t) [-Vmax', +Vmax] if id < s(vid(t)) then xid(t) = 1 else xid(t) = 0; enfor; endfor;
Gustavo S. Pavani

Mini-projetos Computacionais

Tema: Problema do Caixeiro Viajante (TSP)

Dado um conjunto de N ns e a distncia entre esses pares de ns, ache um caminho de tamanho mnimo onde cada cidade visitada exatamente uma vez. Grande interesse cientfico e prtico.

Grupos de trs alunos. Dois algoritmos:


Particle Swarm Optimization (PSO). Ant Colony Optimization (ACO). Relatrio nos moldes de trabalho cientfico.
Gustavo S. Pavani

Apresentao na ltima aula do trimestre

10

Problema do Caixeiro Viajante

Verso Simtrica.

A distncia de um n para outro igual nas duas direes. http://www.iwr.uniheidelberg.de/groups/comopt/software/TSPLIB95/ Distncias so nmeros inteiros. Documentao do formato em: http://www.informatik.uniheidelberg.de/groups/comopt/software/TSPLIB95/DO C.PS
Gustavo S. Pavani

Uso das instncias padronizadas do TSPLIB95.


11

Formato do arquivo TSPLIB95

Parte especificao

Formato <palavra-chave> : <valor>


NAME : <string> TYPE : <string>. No nosso caso, TSP COMMENT : <string>. Ex: nome do criador da instncia. DIMENSION : <string>. No nosso caso, nmero de ns. EDGE_WEIGTH_TYPE : <string>

EXPLICIT, EUC_2D, GEO, ... FULL_MATRIX, UPPER_ROW, ...

EDGE_WEIGTH_FORMAT : <string>. Quando explcito.

EOF

Gustavo S. Pavani

12

Formato do arquivo TSPLIB95

Parte dados

NODE_COORD_SECTION

<inteiro> <real> <real> EDGE_LIST: <inteiro> <inteiro> ADJ_LIST: <inteiro> <inteiro> <inteiro> ... <inteiro> -1 TOUR_SECTION: lista de inteiros dando a sequncia em que cada n visitado. Terminado por 1. EDGE_WEIGTH_SECTION:

EDGE_DATA_SECTION

Gustavo S. Pavani

13

Clculo da Distncia

Distncia Euclidiana (EUC_2D)

int xd = x[i] x[j]; int yd = y[i] y[j]; int dij = Math.round(Math.sqrt((double)(xd*xd + yd*yd))); static int PI = 3.141592; static int RRR = 6378.388; int degree = Math.round(x[i]); double min = x[i] degree; latitude[i] = PI * (degree + 5.0*min / 3.0) / 180.0; degree = Math.round(y[i]); min = y[i] degree; longitude[i] = PI * (degree + 5.0*min / 3.0) / 180.0; double q1 = Math.cos(longitude[i] - longitude[j]); double q2 = Math.cos(latitude[i] latitude[j]); double q3 = Math.cos(latitude[i] + latitude[j]); int dij = (int) (RRR* Math.acos(0.5*((1.0 + q1) * q2 (1.0 q1)* q3)) + 1.0);
Gustavo S. Pavani

Distncia Geogrfica (GEO)

14

Tarefa para Casa

Fazer as classes que so capazes de ler os seguintes arquivos, para montar uma matriz de distncias entre as cidades:

ulysses22.tsp tsp225.tsp

Crie a classe capaz de ler as voltas timas dessas duas instncias (extenso .opt.tour) para testar os mtodos dos clculos de distncias. (EUC_2D e GEO).

ulysses22 = 7013 tsp225 = 3919

D uma olhada nas heursticas propostas em:


http://itp.nat.uni-magdeburg.de/~mertens/TSP/node2.html
Gustavo S. Pavani

15

No Haver Aula dia 27 de Junho

No haver aula dia 27 de Junho, prxima sexta-feira! Motivo: Congresso Internacional.


Reposio

Duas aulas prticas de 1 hora (local e data a serem definidos).

Gustavo S. Pavani

16

Você também pode gostar