Vous êtes sur la page 1sur 95

Mini-Cursos Pr-Colquio 13 e 14 de novembro de 2006

Mtodos de Otimizao
no Determinsticos
Evaristo C. Biscaia Jr.
Rogrio L. Pagano
Eduardo R. de A. Lima

Modelando e Simulando o Futuro

16 e 17 de novembro de 2006
PEQ / COPPE / UFRJ
Rio de Janeiro RJ

Apostila baseada no material da Escola Piloto de


Engenharia Qumica elaborado por:
Evaristo C. Biscaia Jr. e Roberta C. Vieira

1.

INTRODUO

1.1. Mtodos de Otimizao


1.2. Mtodos Tipo Gradiente
1.3. Mtodos Heursticos
1.4. Quando usar Otimizao Heurstica
1.5. Mtodos de Otimizao Natural: analogias com a natureza
1.6. Mtodos Hbridos
1.7. Quando no usar Otimizao Heurstica
1.8. Cmputo de nmeros pseudo-aleatrios

1. INTRODUO
1.1.

Mtodos de Otimizao

A otimizao matemtica uma rea da cincia computacional que busca responder


pergunta O que melhor? para problemas em que a qualidade de uma resposta pode ser
medida por um nmero. Estes problemas aparecem em praticamente todas as reas do
conhecimento: negcios, cincias fsicas, qumicas e biolgicas, engenharia, arquitetura,
economia e administrao. A quantidade de ferramentas disponveis para auxiliar nesta tarefa
quase to grande quanto o nmero de aplicaes.
Para resolver um problema, preciso primeiro formul-lo. A Funo Objetivo uma
funo que associa cada ponto no espao de solues a um nmero real. Este nmero permite
medir a qualidade de uma resposta: no problema de minimizao, quanto menor este valor,
melhor a resposta. No problema de maximizao, o inverso ocorre. O tratamento matemtico de
problemas de maximizao e minimizao anlogo, j que h vrias maneiras de converter um
problema no outro. Apenas por questo de uniformidade, toda a discusso ao longo deste curso
se basear no problema de minimizao.
Um mtodo de otimizao chamado de Determinstico se for possvel prever todos os
seus passos conhecendo seu ponto de partida. Em outras palavras, um mtodo determinstico
sempre leva mesma resposta se partir do mesmo ponto inicial. Em oposio a estes mtodos,
existem os chamados mtodos Estocsticos ou Aleatrios, onde o carter aleatrio de vrios
processos simulado. Nestes mtodos, vrias escolhas so feitas com base em nmeros
aleatrios, sorteados no momento de execuo do cdigo. Como a cada execuo do cdigo os
nmeros sorteados sero diferentes, um mtodo aleatrio no executar a mesma seqncia de
operaes em duas execues sucessivas. Partindo de um mesmo ponto inicial, cada execuo do
cdigo seguir o seu prprio caminho, e possivelmente levar a uma resposta final diferente.
voltar para INTRODUO

1.2.

Mtodos Tipo Gradiente

Mtodos de otimizao bastante familiares para os engenheiros qumicos so os que


empregam a derivada de uma funo para encontrar seu timo. Estes mtodos so
determinsticos, ou seja, sempre chegaro mesma resposta se sarem do mesmo ponto inicial.

Mtodos de Subida (ou Descida) Mais ngreme


A forma mais simples do mtodo tipo gradiente o mtodo chamado de subida mais
ngreme (em ingls: steepest ascent), quando se deseja determinar o mximo de uma funo
escalar, ou o de descida mais ngreme (em ingls: steepest descent), no caso de busca do
mnimo. Para entender a concepo bsica deste mtodo a figura abaixo apresentada:
MXIMO

MNIMO

Na faixa entre a e b e entre c e d a derivada ( ou o gradiente) da funo positiva e na


faixa entre b e c a derivada (ou o gradiente) da funo positiva. Observe que x = b um ponto
de mximo e que x = c um ponto de mnimo.
Um procedimento recursivo que levaria ao valor de x em que a funo assume seu valor
mximo (ou seja, x=b) seria aquele que partindo de condies iniciais entre a e b caminharia
para a direita (na direo de b) e que partindo de condies iniciais entre b e c caminharia para a
esquerda (na direo de b), portanto o procedimento recursivo caminha sempre na mesma
direo do gradiente da funo. O correspondente mtodo iterativo pode ser representado por:

[ ]

X ( k +1) = X ( k ) + f X ( k ) , onde um escalar positivo.


Por outro lado, um procedimento recursivo que levaria ao valor de x em que a funo
assume seu valor mnimo (ou seja, x=c) seria aquele que partindo de condies iniciais entre b e
c caminharia para a direita (na direo de c) e que partindo de condies iniciais entre c e d
caminharia para a esquerda (na direo de c), portanto o procedimento recursivo caminha

3
sempre na direo contrria do gradiente da funo. O correspondente mtodo iterativo pode
ser representado por:

[ ]

X ( k +1) = X ( k ) f X ( k ) , onde um escalar positivo.


Para ilustrar este procedimento a funo: f ( x ) = x ( x 2 100) considerada. A derivada
desta funo : f ( x ) = g ( x ) = 3 x 2 100 que se anula em : x = 10

3 5.774 . O ponto

x = 5.774 , em vista de f (5.774) = 6 5.774 < 0 , um ponto de mximo e o ponto


x = +5.774 , em vista de f (+5.774) = +6 5.774 > 0 , um ponto de mnimo.
O mtodo do gradiente de subida mais ngreme neste exemplo descrito pelo

[ ]

procedimento recursivo: X (k +1) = X (k ) + 3 X (k ) 100 com > 0 e para k= 0, 1, 2,...

com X(0) chute inicial. Adotando este algoritmo com X (0 ) = 10 e = 0.1 resulta:
k

X (k )

-10

+10

+30

+290

+25510

no convergindo portanto ao valor desejado [ x = 5.774 ]. Adotando o mesmo chute inicial:


X (0 ) = 10 e = 0.04 resulta:
k

X (k )

-10,000

-4,000

-5,560

-5,560

-5,778

-5,773

-5,774

convergindo ao valor desejado aps 6 iteraes.


O mtodo do gradiente de descida mais ngreme neste exemplo descrito pelo

[ ]

procedimento recursivo: X (k +1) = X (k ) 3 X (k ) 100 com > 0 e para k= 0, 1, 2,...

com X(0) chute inicial. Adotando este algoritmo com X (0 ) = +10 e = 0.1 resulta:
k

X (k )

+10

-10

-30

-290

-25510

no convergindo portanto ao valor desejado [ x = +5.774 ]. Adotando o mesmo chute inicial:


X (0 ) = +10 e = 0.04 resulta:

4
k

X (k )

10.000

4.000

5,560

5,560

5,778

5,773

5,774

convergindo ao valor desejado aps 6 iteraes.


O exemplo acima demonstra que a escolha de um valor adequado de primordial para
a convergncia do procedimento. Por inspeo, verifica-se que, quando se utiliza o chute inicial
igual 10 ( ou + 10 na busca do ponto de mnimo), o procedimento s converge com valores de
menores do que 0.06, alm disto verifica-se que este valor mnimo de pode depender do
chute inicial adotado.
Mtodos de Newton
A aplicao do mtodo de Newton-Raphson busca do zero da funo gradiente, d
origem ao Mtodo de Newton de busca do extremo de funes contnuas com as duas primeiras
derivadas contnuas. Este algoritmo traduzido pelo mtodo recursivo:
X ( k +1) = X ( k )

[ ].
f [X ( k ) ]
f X(k )

Na realidade este procedimento atualiza o valor de do mtodo do gradiente em cada iterao k


segundo: ( k ) =

[ ], procedimento vlido tanto para a subida mais ngreme quanto para a

f X ( k )

descida mais ngreme.


No exemplo ilustrativo anterior, tem-se: f ( x ) = 6 x , assim:

[ (k )]2 100 = 3 [X(k )]2 + 100

3 X
X (k +1) = X (k )

6 X (k )

Adotando este algoritmo com X (0 ) = 10

com X (0 ) = +10

6 X (k )

resulta:

X (k )

-10,000

-6,667

-5,833

-5,774

-5,774

X (k )

10,000

6,667

5,833

5,774

5,774

resulta:

Convergindo a ambos os pontos em 4 iteraes, sem a necessidade de pesquisar o valor de .

5
Generalizao dos Mtodos para o Problema Multivarivel
O mtodo do gradiente pode ser generalizado para uma funo escalar de n variveis de
acordo com os algoritmos recursivos:

[ ]
X(k +1) = X(k ) f [X(k ) ]
X(k +1) = X(k ) + f X(k )

Mtodo da subida mais ngreme


Mtodo da descida mais ngreme

f (x )

x1
f (x )
Onde : f [x] = x o Vetor Gradiente da funo f(x).
2
M
f (x )
x
n
Para ilustrar este procedimento a funo: f (x ) = (x1 3)2 + 9 (x 2 5)2 considerada,
3
esta funo apresenta um ponto de mnimo em x = e o Vetor Gradiente desta funo :
5
2 (x1 3)
. O Mtodo da descida mais ngreme aplicado a esta funo traduzido
f [x] =
18 (x 2 5)
pelo procedimento recursivo:
2 X ( k ) 3
X( k +1) X ( k )
6 + (1 2 ) X( k )
1
= 1 1

1
=

( k +1) ( k )

(
k
)

18 X 2 5 90 + (1 18 ) X1( k )
X2
X2


1
considerando o chute inicial : X(0) = e = 0.1 os seguintes resultados numricos so
1
obtidos:
k

X1( k )

X 2( k )

1.4000

8.2000

1.7200

2.4400

MMM

MMM

MMM

51

3.0000

5.0000

Neste procedimento o valor de mantido constante. Uma modificao do mtodo pode ser
feita no sentido de buscar, em cada iterao, o valor timo de [ esta modificao faz com que

6
o mtodo do gradiente seja conhecido por mtodo do gradiente com busca do tamanho do
passo - (em ingls line search) ]. Esta modificao aplicada ao exemplo ilustrativo anterior
onde:
2 X ( k ) 3
X( k +1) X ( k )
6 + (1 2 ) X( k )
1
= 1 1

=
( k +1) ( k )

(
k
)

18 X 5 90 + (1 18 ) X1( k )
X2
X2
2


assim o valor de f(x) no final do passo k seria:
2

f [ X( k ) , ] = (1 2 )2 X1( k ) 3 + 9 (1 18 )2 X1( k ) 5

considerando f [ X( k ) , ] uma funo apenas de , resulta:


2
2
f [ X( k ) , ]
= 4 (1 2 ) X ( k ) 3 324 (1 18 ) X1( k ) 5

o valor timo de o que minimiza f [ X ( k ) , ] ou seja :


(k )

otimo =

[ X1

(k )

3] 2 + 81 [X 2

5] 2

(k )
(k )
2 [X1 3] 2 + 1458 [X 2 5] 2

f [ X( k ) , ]

= 0 resultando em:
otimo

1
Considerando o mesmo chute inicial : X(0) = e = 0.1 os seguintes resultados numricos
1
so obtidos:
k

X1( k )

X (2k )

timo

0.0557

1.2228

5.011

0.4880

2.9573

4.9146

0.0557

2.9991

5.0002

0.4880

2.9992

4.9982

0.0557

3.0000

5.0000

0.4880

O procedimento recursivo neste caso converge em um nmero bem menor de iteraes,


entretanto cada iterao mais dispendiosa(sob o ponto de vista computacional) podendo at
resultar em um maior tempo computacional!

7
Para encerrar a apresentao de algoritmos tipo gradiente o Mtodo de Newton
apresentado. Este procedimento quando aplicado a uma funo escalar de n variveis traduzido
pelo procedimento recursivo:

{ [ ]}1 f [X(k )]

X(k +1) = X(k ) H X(k )

onde: H (x) a Matriz Hessiana de f(x) que armazena os valores das derivadas segundas de f(x)
2f ( x ) 2f ( x )
segundo: Hij =
=
= H ji para i, j = 1, 2, ...., n.
x i x j x jx i
No exemplo ilustrativo anterior a matriz Hessiana uma matriz constante:
2 0
, isto ocorre devido ao fato de f(x) ser uma funo quadrtica. Neste caso, e
H (x) =
0 18
apenas no caso da funo ser quadrtica, o Mtodo de Newton converge em apenas uma iterao
independente do valor inicial adotado! . O custo computacional da implementao do Mtodo de
Newton geralmente muito elevado pois envolve, em cada iterao, o cmputo das derivadas
primeiras e segundas da funo.
Se o seu problema puder ser resolvido por um mtodo tipo gradiente, esta provavelmente
ser sua a melhor alternativa. No entanto, nem todos os problemas podem ser tratados por um
mtodo tipo gradiente. Seu uso inviabilizado sempre que:

houver descontinuidades na funo objetivo f(x), ou houver mais de um mnimo


(discutiremos esta caracterstica mais adiante);

no se puder escrever uma funo objetivo f(x) diferencivel;


calcular derivadas for invivel.
Nestes casos, precisaremos de mtodos alternativos para resolver nossos problemas. Estes
mtodos freqentemente sero mtodos heursticos de otimizao.
voltar para INTRODUO

1.3.

Mtodos Heursticos

Uma heurstica uma regra prtica derivada da experincia. No existe uma prova
conclusiva de sua validade, e espera-se que a tcnica heurstica funcione muitas vezes mas no
sempre. Uma heurstica nos ajudar a encontrar solues boas, mas no necessariamente timas.
A maior parte do que fazemos no nosso dia-a-dia tanto profissional quanto pessoal
envolve a resoluo heurstica de problemas. Um exemplo: todos os dias, ao sair de casa para ir
para o trabalho, voc precisa escolher que caminho fazer. Voc quer fazer o melhor caminho,
mas a sua definio de melhor envolve vrios fatores: tempo de percurso, aspectos de segurana,
qualidade da pavimentao, probabilidade de ficar preso em um monstruoso engarrafamento,

8
entre outros. Para fazer a otimizao do seu trajeto antes de sair de casa, voc precisaria se
conectar Internet e buscar vrias informaes: verificar as condies de trfego de sua cidade
naquele momento, buscar por notcias relatando acidentes, verificar se h obras nos seus
percursos, etc. Com estas informaes, voc pesaria prs e contras de cada rota e atribuiria uma
nota (um nmero real) a cada um dos possveis percursos. O percurso com a melhor nota naquela
manh seria o escolhido.
Certamente voc no faz isto, ou no teria tempo para o desjejum. Voc conhece, pela
sua experincia, que em alguns horrios algumas estradas devem ser evitadas, e outras
favorecidas. No mximo, voc toma seu desjejum ouvindo a uma rdio que d boletins
peridicos sobre o trnsito. Depois de algumas semanas, nem isto: voc simplesmente entra no
seu carro e vai para o trabalho, usando a rota que, pela sua experincia acumulada, lhe parece a
melhor.
Suas heursticas vo provavelmente funcionar na maioria das vezes, mas nem sempre:
algum dia voc pode ter problemas na rota escolhida. Mas voc no se incomoda: se ficar preso
em um engarrafamento, aproveita para a oportunidade para ligar para sua me, que vive
cobrando mais ateno.
Um mtodo heurstico de otimizao pode ser determinstico ou estocstico, a depender
se empregar ou no nmeros sorteados aleatoriamente para executar seu algoritmo.
Os anos 80 foram marcados pelo ressurgimento de mtodos heursticos de otimizao
como ferramentas adicionais para tentar superar as limitaes das heursticas convencionais.
Embora com filosofias distintas, estas metaheursticas possuem em comum caractersticas que as
distinguem das heursticas convencionais, como por exemplo, incluir ferramentas para tentar
escapar das armadilhas dos timos locais e a facilidade para trabalhar em ambientes paralelos.
So exatamente estes mtodos heursticos estocsticos e inspirados em fenmenos da natureza
o objeto de estudo deste curso.
voltar para INTRODUO

1.4.

Quando usar Otimizao Heurstica

H duas reas que dependem fortemente de tcnicas de otimizao heurstica: a


Otimizao Global e a Otimizao Combinatria. Estes dois tipos de problemas so freqentes
na Engenharia Qumica.

a) Otimizao Global
No problema de Otimizao Local, busca-se um minimizador local da funo real F(x)
onde x um vetor de variveis reais. Em outras palavras, busca-se um vetor x* tal que F(x*)
F(x) para todo x prximo a x*. O problema de Otimizao Global consiste em encontrar um x*
que minimiza F(x) para todos os possveis valores de x. Este um problema muito mais difcil, e

9
para a maioria das aplicaes mnimos locais j so bons o suficiente, particularmente quando o
usurio pode usar sua experincia para delimitar a regio de busca e/ou fornecer um bom ponto
de partida para o algoritmo.
H critrios para determinar se um ponto ou no um timo local. Por exemplo, para
funes reais o critrio de primeira derivada nula indica a existncia de um extremo, e o sinal da
segunda derivada indica se este extremo um mximo ou um mnimo. No entanto, no existe
qualquer critrio que permita identificar um mnimo global. Para entender o porqu, considere o
problema de escalar uma montanha com uma neblina muito densa. Mesmo com pouca
visibilidade, fcil dizer que voc est no topo de uma montanha: ao tentar dar um passo
adicional em qualquer direo, voc ver que a tendncia de descida. Voc certamente parar
de caminhar e fincar sua bandeira. No entanto, como distinguir se voc est no topo de uma
montanha muito alta ou apenas no topo de um pequeno morro, como o preguioso abaixo? O
morro um exemplo de mximo local, e um algoritmo que apenas faa buscas locais buscando
por solues melhores no conseguir escapar destas armadilhas para mtodos de otimizao
global.

Os mtodos que empregam derivadas so sempre otimizadores locais da funo F(x). A


figura abaixo ilustra estes conceitos. Vamos observar a funo polinomial F(x) abaixo.
F( x ) =

1
( x + 10 ) ( x + 6 ) ( x + 5 ) ( x + 1 ) ( x 7 ) ( x 10 )
10000

Observe que existem mnimos locais em x = -8,834, x = -2,546 e x = 8,817, sendo este
ltimo o mnimo global. A funo apresenta mximos locais em x= -5,518 e x = 3,914. Um

10
mtodo tipo gradiente no convergiria para o mnimo global desejado para qualquer condio
inicial, como ilustrado nas figuras abaixo.

se arbitrado x < -5,518, o mtodo convergiria para x = -8,834;

se arbitrado -5,518 < x < 3,914, o mtodo convergiria para x = -2,546;

se arbitrado x > 3,914, o mtodo convergiria para x = 8,817.

Para problemas difceis como a Otimizao Global, os mtodos heursticos de busca tm


sido largamente estudados e utilizados. No pode ser provado que estes mtodos encontraro
uma soluo tima ou mesmo uma soluo boa. No entanto, muitas vezes eles encontram a
melhor soluo conhecida, o que pode ser mais do que o suficiente para a aplicao em questo.

b) Otimizao Combinatria
Uma outra rea de aplicao de mtodos heursticos a rea de Otimizao
Combinatorial, ou Otimizao Combinatria. Combinatorial geralmente significa que o espao
de estados discreto (e.g., um espao de tipos de molculas, ou caractersticas de um produto).
Este espao pode ser finito ou apenas enumervel. Qualquer problema discreto pode ser visto
como combinatorial.
Talvez o mais conhecido dos problemas combinatoriais seja o Problema do Caixeiro
Viajante. Neste problema, imagina-se que um vendedor precise visitar um certo nmero de
cidades e ento voltar para casa. A tarefa do algoritmo determinar a seqncia tima de cidades
a percorrer, de forma que a distncia percorrida seja mnima. Observe na figura abaixo que
alguns caminhos so melhores que outros, e determinar o menor caminho um problema muito
difcil. A funo objetivo a minimizar no PCV clssico a distncia percorrida, mas pode ser
adicionado um peso ao caminho. Assim, possvel que um trecho da estrada que esteja em
boas condies seja favorecido em detrimento de um trecho perigoso ou com asfalto ruim, ou
que setores onde se cobre pedgio sejam evitados.

11

Dois possveis trajetos para ligar 14 cidades: qual o melhor?

Vrios
problemas
reais
e
importantes podem ser interpretados como
um PCV: minimizao do tempo que um
rob industrial gasta para soldar a carcaa
de um automvel; minimizao do custo
(em tempo ou combustvel) da rota da
distribuio diria de um jornal;
minimizao do tempo de abastecimento de
vrias bases militares envolvidas numa
guerra, entre muitos outros. Tamanha a
importncia deste problema, a Companhia
Proctor & Gamble fez um concurso em
1962 para determinar a menor rota que
passasse por 33 cidades dos Estados
Unidos. Houve empate entre muitos
candidatos, que puderam encontrar a
soluo tima.
O problema do caixeiro um clssico exemplo de problema de otimizao combinatria.
A primeira coisa que podemos pensar para resolver esse tipo de problema reduzi-lo a um
problema de enumerao: achamos todas as rotas possveis e, usando um computador,
calculamos o comprimento de cada uma delas e ento vemos qual a menor. ( claro que se
acharmos todas as rotas estaremos contando-as, da podermos dizer que estamos reduzindo o
problema de otimizao a um de enumerao ).
Para acharmos o nmero R(n) de rotas para o caso de n cidades, basta fazer um raciocnio
combinatrio simples e clssico. Por exemplo, no caso de n = 4 cidades, a primeira e ltima
posio so fixas, de modo que elas no afetam o clculo; na segunda posio podemos colocar

12
qualquer uma das 3 cidades restantes, e uma vez escolhida uma delas, podemos colocar qualquer
uma das 2 restantes na terceira posio; na quarta posio no teramos nenhuma escolha, pois
sobrou apenas uma cidade; consequentemente, o nmero de rotas 3 x 2 x 1 = 6. De modo
semelhante, para o caso de n cidades, como a primeira fixa, o nmero total de escolhas que
podemos fazer (n-1) x (n-2) x ... x 3 x 2 x 1. De modo que, usando a notao de fatorial, R(n)
= (n-1)!. Nossa estratgia consiste ento em: gerar cada uma dessas R(n) rotas, calcular o
comprimento total das viagens de cada rota e ver qual delas tem o menor comprimento total.
Trabalho fcil para o computador, diria algum. Bem, talvez no. Vejamos o porqu.
Suponha que esteja disponvel um computador muito rpido, capaz de fazer 1 bilho de
adies por segundo (1 Gflops) . Isso parece uma velocidade imensa, capaz de tudo. No caso de
20 cidades, o computador precisa apenas de 19 adies para dizer qual o comprimento de uma
rota, sendo capaz ento de calcular 109 / 19 = 53 milhes de rotas por segundo. Contudo, essa
imensa velocidade um nada frente imensido do nmero 19! de rotas que precisar examinar.
Acredite se puder, o valor de 19! 121 645 100 408 832 000 ( ou , aproximadamente, 1,2 1017
em notao cientfica ). Consequentemente, ele precisar de 1,2 1017 / ( 53 milhes ) = 2,3 109
segundos para completar sua tarefa, o que eqivale a cerca de 73 anos.
A grande dificuldade dos problemas combinatoriais que a quantidade de possveis
solues cresce com uma velocidade fatorial, e rapidamente o computador torna-se incapaz de
enumerar todas as possveis solues do problema. Na tabela abaixo, estes clculos foram
executados para alguns outros tamanhos de problema.
nmero
de cidades

Capacidade
[rotas/s]

rotas a avaliar
[rotas]

tempo
computacional

5
10
15
20
25

2,50 108
1,11 108
7,14 107
5,26 107
4,17 107

2,40 101
3,63 105
8,72 1010
1,22 1017
6,20 1023

Insignificante
~ 0,003 s
~ 3,3 s
73 anos
470 milhes de anos

109/(n-1)

(n-1)!

(n-1)! / [109/(n-1)]

Observe que o aumento no valor do n provoca uma ligeira reduo na capacidade do


computador em avaliar rotas (ela diminui apenas de um sexto ao aumentar n de 5 para 25), mas
provoca um aumento gigantesco no tempo total de clculo (o nmero de rotas a avaliar muda da
ordem de 101 para 1023). Em outras palavras: a inviabilidade computacional devida presena
da funo fatorial na medida do esforo computacional. Com efeito, se essa complexidade fosse
expressa em termos de um polinmio em n o nosso computador seria perfeitamente capaz de
suportar o aumento de n. Confira isso na seguinte tabela, que corresponde a um esforo
computacional polinomial R( n ) = n5:

13
nmero
de cidades

Capacidade
[rotas/s]

rotas a avaliar , n3
[rotas]

tempo
computacional

5
10
15
20
25

2,50 108
1,11 108
7,14 107
5,26 107
4,17 107

1,25 102
1,00 103
3,38 103
8,00 103
1,56 104

5,00 10-7 s
9,00 10-6 s
4,73 10-5 s
1,52 10-4 s
3,75 10-4 s

109/(n-1)

n3

n3 / [109/(n-1)]

Ento o mtodo reducionista no prtico (a no ser para poucas cidades), mas ser que
no pode-se inventar algum mtodo prtico (por exemplo, envolvendo esforo polinomial na
varivel n) para resolver o problema do caixeiro? Apesar de inmeros esforos, ainda no foi
encontrado este mtodo. Na verdade, a existncia ou no de um mtodo polinomial para resolver
o problema do caixeiro viajante um dos grandes problemas em aberto da Matemtica na
medida em que S. A. COOK (1971) e R. M. KARP (1972) mostraram que uma grande
quantidade de problemas importantes podem ser reduzidos, em tempo polinomial, ao problema
do caixeiro.
Consequentemente: se descobrirmos como resolver o problema do caixeiro em tempo
polinomial ficaremos sendo capazes de resolver, tambm em tempo polinomial, uma grande
quantidade de outros problemas matemticos importantes; por outro lado, se um dia algum
provar que impossvel resolver o problema do caixeiro em tempo polinomial no nmero de
cidades, tambm se ter estabelecido que uma grande quantidade de problemas importantes no
tem soluo prtica.
No se conhece um algoritmo polinomial para encontrar a soluo tima de um PCV,
mas possvel construir um algoritmo polinomial para testar se um conjunto de solues
propostas a tentativas so solues do problema. E o PCV representante de uma classe
enorme de problemas, que podem ser reduzidos a ele. Costuma-se resumir essas propriedades do
problema do caixeiro dizendo que ele pertence categoria dos problemas no-determinsticos
polinomiais completos, ou NP - completos.
Para problemas de otimizao combinatria, no h algoritmos que levem soluo
tima em um tempo vivel. Assim, usam-se sempre mtodos heursticos determinsticos ou
aleatrios - para chegar a solues que se possam por em prtica, ainda que no sejam timas
(ou no tenhamos provas de que o so). O algoritmo que se utiliza para a obteno de solues
aproximadas tem como finalidade que as solues sejam encontradas num tempo razovel para
os fins prticos a que se destina, e que a sua qualidade seja o melhor possvel tendo em conta as
limitaes de tempo.

14
O problema do caixeiro viajante serve atualmente de problema padro (benchmark) para
testar algoritmos de otimizao combinatria.
voltar para INTRODUO

1.5.

Mtodos de Otimizao Natural: analogias com a natureza

A partir da dcada de 1950, foram criados vrios algoritmos heursticos na tentativa de


simular fenmenos biolgicos. Estes algoritmos, que so na verdade algoritmos de otimizao,
tm alguns aspectos em comum. O mais marcante seu carter aleatrio, na tentativa de simular
o acaso que parece governar processos distintos na natureza, desde a evoluo das espcies at o
comportamento social dos animais.
Na dcada de 1980, com a exploso da computao, se tornou vivel empregar estes
algoritmos para a otimizao de funes e processos quando mtodos mais tradicionais no
tinham sucesso: problemas de otimizao combinatria (e.g. problema do caixeiro viajante e
problemas de colorao de mapas), problemas onde a funo objetivo no pode ser expressa
matematicamente (e.g. identificao de suspeitos) ou problemas com vrios mnimos locais.
Vrios mtodos heursticos de otimizao surgiram motivados por fenmenos da
natureza, como o Recozimento Simulado (Simulated Annealing), os Algoritmos Genticos, as
Tcnicas de Enxame (Swarm Algorithms) e as tcnicas de Otimizao por Colnia de Formigas
(Ant Colony Optimization).

a) Recozimento Simulado (Simulated Annealing)


O mtodo de Recozimento Simulado (Simulated Annealing) um tipo de mtodo de
busca local de implementao extremamente simples, que se origina do processo de recozimento
de metais (METROPOLIS et al., 1953; EGLESE, 1990). Neste processo, os metais so
aquecidos acima de seu ponto de fuso e resfriados lentamente, de forma a se organizarem em
estruturas cristalinas de mnima energia. Em mtodos de busca local clssicos, a partir da
soluo atual gerada uma nova soluo-tentativa, e esta substitui a anterior se o valor da funo
objetivo (energia) associada for menor. Na tcnica de recozimento simulado, transies para
solues de maior energia so permitidas segundo uma certa probabilidade, evitando assim que o
mtodo fique preso na bacia de atrao de um mnimo local. Esta probabilidade est ligada
temperatura do sistema fsico original, e diminui com o passar das iteraes. A estratgia de
resfriamento do mtodo um dos aspectos mais crticos em sua implementao. Como o
mtodo trabalha com uma soluo apenas, sugerida por vrios autores a execuo em paralelo
de vrias cpias do algoritmo partindo de condies iniciais distintas.

15

b) Algoritmos Genticos (AG)


Algoritmos Genticos (AG) so mtodos relativamente recentes que no usam qualquer
informao de derivada e, por isto, apresentam boas chances de no serem aprisionados em
timos locais. Provas completas de sua convergncia no foram demonstradas ainda. No entanto,
sua aplicao em problemas prticos geralmente leva para o timo global ou pelo menos para
solues mais satisfatrias que as fornecidas por outros mtodos. Este mtodo se baseia no
processo de seleo natural e evoluo da espcies, principalmente no paradigma de
sobrevivncia dos mais aptos. Os indivduos que apresentam melhor adequao (menor valor da
funo objetivo) apresentam maior probabilidade de se reproduzirem e passarem para a prxima
gerao seus genes bem sucedidos. No entanto, todos os indivduos (aptos ou no) esto sujeitos
a mutaes aleatrias de tempos em tempos.
Em sua implementao, os Algoritmos Genticos requerem a definio de vrios parmetros que afetam o desempenho do algoritmo de vrias formas. O tamanho da populao (o
nmero de indivduos formando a populao) deve ser suficientemente grande para garantir
diversidade suficiente e assim cobrir bem o espao de solues. Outros parmetros como a
probabilidade de cruzamento, taxa de mutao e mecanismos de mutao e cruzamento afetam o
AG de forma menos significativa. No h valores de parmetros reconhecidamente timos,
apenas faixas sugeridas de trabalho (MICHALEWICZ, 1996). Mesmo sendo muito mais rpido
que mtodos tipo busca exaustiva, ainda so mtodos muito lentos se comparados com mtodos
do tipo gradiente, j que no empregam qualquer informao referente derivada da funo
objetivo (GOLDBERG, 1989).

c) Tcnicas de Enxame (Particle Swarm Optimization, PSO)


As tcnicas de enxame (KENNEDY e EBERHART, 1995) exploram a analogia com o
comportamento social de animais, como enxames de abelhas, cardumes de peixes ou bandos de
pssaros. Nestes, cada indivduo do grupo toma suas prprias decises, mas sempre de alguma
forma baseado na experincia do lder do grupo. Matematicamente, cada indivduo do bando
considerado um ponto do espao n-dimensional e a velocidade deste indivduo, a direo de
busca a ser usada nesta candidata a soluo. A direo de busca em uma iterao determinada
atravs da ponderao entre a experincia daquela soluo e da melhor soluo j encontrada
pelo grupo (metaforicamente, a soluo lder). Ressalta-se que o peso de inrcia w empregado
para controlar o impacto da histria prvia de velocidade na velocidade atual. Um maior valor de
w favorece a explorao global, enquanto um peso de inrcia menor tende a facilitar explorao
local. Seleo satisfatria do peso de inrcia w fornece, ento, um equilbrio entre capacidade de
explorao global e local. Os principais parmetros para o mtodo so as ponderaes entre as
experincias individual e coletiva (c1 e c2) e o fator de inrcia w.

16

d) Ant Colony(AC)
As tcnicas de colnia de formigas ( DORIGO, MANIEZZO e COLORNI, 1996)
baseiam-se no comportamento das formigas que apresentam a formidvel capacidade de,
malgrado serem insetos praticamente cegos, conseguirem estabelecer o menor caminho entre o
formigueiro e a fonte de alimento e retornar da mesma forma. Etologistas ( segundo o Houaiss
2001- aquele que se dedica ao estudo do comportamento social e individual de animais!)
verificaram que atravs de uma substncia qumica chamada feromnio que as formigas trocam
informaes relativas aos caminhos. Uma formiga em movimento secreta uma certa quantidade
de feromnio no solo, criando assim uma trilha desta substncia biologicamente muito ativa.
Enquanto uma formiga isolada se move de uma forma absolutamente aleatria, uma formiga
encontrando uma trilha j percorrida por outra(s) formiga(s) detecta seu rastro e decide com alta
probabilidade seguir o mesmo caminho, reforando desta forma a trilha escolhida com seu
prprio feromnio. Este comportamento coletivo cooperativo classificado como autocataltico,
pois quanto maior o nmero de formigas percorrendo um caminho mais atrativo torna-se o
mesmo. Este processo ento caracterizado por uma retroalimentao ( feedback) positiva, uma
vez que a probabilidade de uma formiga escolher um determinado caminho tanto maior quanto
maior for o nmero de formigas que j o tenha percorrido.
A tabela seguinte mostra a popularizao destes mtodos junto comunidade cientfica.
V-se, pelo nmero de artigos publicados em peridicos indexados internacionais, que os trs
primeiros so mais tradicionais. Os recentes PSO e AC ainda esto sendo mais discutidos em
conferncias e congressos.

SA
Tabu
GA
AC
PSO

at
1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002
1986
0
12
11
25
17
19
26
36
76
96
93
95
83
88
84
83
2
0
0
0
0
0
1
0
4
13
27
33
49
36
22
26
33
1
0
0
0
0
2
7
26
22 145 206 278 269 274 296 363 259
3
0
0
0
0
0
0
0
0
0
0
0
0
2
5
4
3
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
2

total
846
245
2150
15
4

voltar para INTRODUO

1.6.

Mtodos Hbridos

Mtodos puramente heursticos incorporam pouca informao do sistema de equaes, e


conseqentemente no so os mais eficientes do ponto de vista computacional (especialmente
nas cercanias da soluo onde mtodos de busca local so capazes de resolver o problema).
Desta forma, mtodos hbridos de algoritmos de busca local e heursticos de otimizao parecem
mais apropriados. freqentemente reportada na literatura a capacidade destes mtodos hbridos
de escapar de bacias de atrao de mnimos locais ainda retendo boa eficincia computacional
(GOLDBERG, 1989).

17
O tipo de mtodo hbrido mais freqentemente citado aquele em que um mtodo
heurstico utilizado para gerar um certo nmero de boas solues, candidatas soluo tima.
Ento, um mtodo de busca local utilizado para transformar estas solues em um conjunto de
mnimos locais. Esta populao melhorada realimentada no algoritmo heurstico at que o
critrio de terminao do algoritmo seja satisfeito. Vrias variaes deste mtodo podem ser
criadas, modificando o nmero de candidatas otimizadas e a freqncia desta otimizao.
Tais hbridos, ao invs de apresentarem operadores ou representaes padro, incorporam
o conhecimento do problema a resolver por parte do usurio, de forma a produzir solues
melhores e produzi-las ainda mais rapidamente. Mesmo sendo menos genricos e de
implementao um pouco mais sofisticada, sua utilizao em problemas reais, ou de dimenses
maiores, vm se mostrando bem mais eficiente, mais do que compensando suas possveis
desvantagens.
Um exemplo de aplicao bem sucedida de um algoritmo gentico hbrido foi
apresentado por KRAGELUND (1997). O problema foi definir escalas de trabalho de mdicos
durante as frias de vero obedecendo a vrias restries, classificadas em leves (apenas
preferncias, no deveriam mas poderiam ser violadas) e severas (no poderiam ser violadas de
forma alguma). Para resolver o problema, foi utilizado um hbrido de AG com um mtodo de
busca local. Sua implementao foi feita atravs de um operador que atua em 3 etapas:
localizar todas as restries violadas por este quadro de horrios (candidato a soluo)
selecionar randomicamente uma das restries violadas
usar um mtodo de otimizao local simples, que varia com a restrio, e reduzir sua
violao.
Segundo o autor, mtodo simples de busca local j so suficientes para resultados
satisfatrios serem obtidos. Os algoritmos hbridos mostraram-se superiores aos simples Para
exemplificar, foram compilados alguns resultados apresentados pelo autor na tabela a seguir,
onde os nmeros representam violaes s restries leves e severas, perfazendo 397 e 25
restries respectivamente. O critrio de parada correspondeu a 120 minutos de computao.

Compilao dos resultados apresentados por KRAGELUND (1997)


Mtodo
Empregado

melhor

mdia

pior

severas

leves

severas

leves

severas

leves

sucesso

Busca Randmica

106

23

114,6

20,9

121

21

0 / 20

Steepest Descent

20

16

26,7

17,6

32

19

0 / 20

AG + Busca Local, comum

1,4

4,3

1 / 20

AG + Busca Local, subpop.

0,6

3,5

10 / 20

voltar para INTRODUO

18

1.7.

Quando no usar Otimizao Heurstica

Se for possvel empregar um mtodo tipo gradiente para resolver o seu problema, ele sem
dvida ser o algoritmo mais eficiente que h, j que ele incorpora muito mais informao sobre
o espao de busca.
Os mtodo heursticos so freqentemente chamados de methods of last resort, algo a
ser empregado quando tudo o mais no funciona. Isto porque estes mtodos so via de regra
lentos, ou pelo menos muito mais lentos para resolver o mesmo problema que um mtodo que
empregue derivadas. No entanto, muitas vezes estes mtodos so os nicos de que se dispem, e
consequentemente so os melhores!
Com o avano da capacidade dos computadores e das linguagens de programao, o
custo computacional associado a estes mtodos se tornou muito menos assustador, e qualquer PC
consegue resolver um problema razovel em alguns minutos. Por exemplo, considere o seguinte
exemplo apresentado por ZUBEN: resolver o problema do caixeiro viajante para 100 cidades. O
autor empregou um Algoritmo Gentico, e foram testados 400.000 solues dentre as possveis
9,33 10155. O tempo de simulao em um Pentium III 450 MHz foi de 287 segundos, pouco
menos de 5 minutos. As figuras abaixo, reportadas pelo autor, mostram a evoluo da resposta
obtida com o nmero de iteraes do algoritmo.
Melhor indivduo na populao inicial

Melhor indivduo aps 500 geraes

Melhor indivduo aps 2000 geraes

Melhor indivduo aps 4000 geraes

voltar para INTRODUO

19

1.8.

Cmputo de nmeros pseudo-aleatrios

Usar um computador que apenas segue instrues deterministicamente prprogramadas para sortear nmeros verdadeiramente aleatrios soa como uma contradio. Por
isto, os nmeros gerados por computador so mais apropriadamente denominados de nmeros
pseudo-aleatrios, ou pseudo-randmicos.
Como destacado anteriormente, as metaheursticas propostas inspiradas na natureza tm
em comum seu carter estocstico. Isto significa que vrias decises do algoritmo se baseiam em
nmeros sorteados aleatoriamente segundo alguma distribuio de probabilidades. H vrias
distribuies contnuas de probabilidade, e a funo que as caracteriza a funo Densidade de
Probabilidade (DP). A probabilidade de que um nmero verdadeiramente aleatrio encontre-se
no intervalo fechado [x1,x2] dada pela integral abaixo:
P( x1 x x 2 ) =

x1

DP( x) dx

x2

que corresponde rea sob a curva DP(x) entre x1 e x2.


A distribuio mais usada pelos mtodos de otimizao estocsticos a distribuio
uniforme, segundo a qual qualquer nmero dentro do domnio [a,b] tem a mesma chance de ser
sorteado. Matematicamente, a funo densidade de probabilidade da distribuio uniforme
dada por:
1
axb

DP( x ) = (b a )
0
otherwise
A probabilidade de sortear um nmero dentro de um intervalo [c,d] proporcional ao tamanho
deste intervalo, e igual frao do domnio que este intervalo representa. Em outras palavras,
d 1

P(c x d ) =

cb a

dx =

d c
ba

Algumas aplicaes tambm usam a distribuio normal, segundo a qual um valor x to mais
provvel de ser sorteado quanto mais prximo for da mdia , e desvios para mais ou para
menos so igualmente provveis. A funo densidade de probabilidade possui um forma de sino
e representada pela funo:
1 x 2
DP( x ) =
exp

2
2
1

A probabilidade de sortear um nmero dentro de um intervalo [c,d] no proporcional ao


tamanho do intervalo, e calculada por:

20
d

P(c x d ) = DP( x ) dx =
c

1
x
erf

2
2

onde erf(x) a funo erro. H vrias tabelas para calcular esta integral, e todos os softwares
matemticos possuem a funo erro embutida. As figuras abaixo mostram a forma das funes
densidade de probabilidade para estas duas distribuies.

Qualquer que seja a distribuio de probabilidades do seu interesse, apenas nmeros


inteiros uniformemente distribudos so gerados nos computadores. Algoritmos especficos
(tambm chamados de filtros) so usados para converter os nmeros de uma distribuio em
outra. (Veja os exerccios 4 e 5).
Um gerador de nmeros pseudo-aleatrios em um computador digital uma funo
determinstica chamada funo de transio que produz uma seqncia de nmeros, os quais
emulam uma varivel aleatria uniformemente distribuda. Como esta funo leva de um nmero
para outro e h uma quantidade finita de nmeros que se pode representar no computador, esta
funo peridica. O que se deseja que ela tenha o maior perodo possvel, idealmente da
ordem da quantidade de nmeros representveis.
Esta funo implementada como rand k+1 = f (rand k), e necessrio fornecer um nmero
(rand 0) para dar partida no algoritmo. Este nmero conhecido como semente, e sua definio
muito importante. Se for usada a mesma semente em duas execues sucessivas de um cdigo,
exatamente a mesma seqncia de nmeros aleatrios ser gerada. Esta caracterstica usada
quando se quer comparar o efeito de algum parmetro do mtodo. Na maioria das vezes, porm,
esta repetio deve ser evitada. Muitos trabalhos sugerem construir o nmero semente a partir da
data e hora da execuo do programa, de forma que cada execuo do seu algoritmo tenha
nmeros aleatrios diferentes.
No uma tarefa simples desenvolver um gerador de nmeros pseudo-aleatrios, e h
alguns algoritmos reportados na literatura. importante que se use um bom gerador de nmeros
aleatrios. Ser bom, do ponto de vista do usurio, significa que: (i) os nmeros gerados seguem a
distribuio de probabilidades indicada; (ii) os nmeros gerados no so correlacionados; (iii) o

21
gerador possui repetitividade, ou seja, gerar a mesma seqncia de nmeros aleatrios

sempre que receber a mesma semente; (iv) seu custo computacional baixo.
Qualquer software matemtico possui um ou mais geradores de nmeros randmicos
embutidos, e uns certamente so melhores que outros. Para programadores em linguagens
Fortran e C, h subrotinas descritas e/ou implementadas nos pacotes como LINPACK e
LAPACK e nos manuais tipo Numerical Recipes. Abaixo encontra-se a implementao em
Fortran de um destes algoritmos.
c#######################################################################
c SUBROUTINE RAN3
c Returns a uniform random deviate between 0.0 and 1.0. Set idum to
c any negative value to initialize or reinitialize the sequence.
c This function is taken from W.H. Press', "Numerical Recipes" p. 199.
c#######################################################################
subroutine ran3(idum,rand)
implicit double precision (a-h,m,o-z)
parameter (mbig=4000000.,mseed=1618033.,mz=0.,fac=1./mbig)
c
c

According to Knuth, any large mbig, and any smaller (but


still large) mseed can be substituted for the above values.

Dimension ma(55)
Data iff /0/
if (idum.lt.0 .or. iff.eq.0) then
iff=1
mj=mseed-dble(iabs(idum))
mj=dmod(mj,mbig)
ma(55)=mj
mk=1
do i=1,54
ii=mod(21*i,55)
ma(ii)=mk
mk=mj-mk
if(mk.lt.mz) mk=mk+mbig
mj=ma(ii)
enddo
do k=1,4
do i=1,55
ma(i)=ma(i)-ma(1+mod(i+30,55))
if(ma(i).lt.mz) ma(i)=ma(i)+mbig
enddo
enddo
inext=0
inextp=31
idum=1
endif
inext=inext+1
if(inext.eq.56) inext=1
inextp=inextp+1
if(inextp.eq.56) inextp=1
mj=ma(inext)-ma(inextp)
if(mj.lt.mz) mj=mj+mbig
ma(inext)=mj
rand=mj*fac
return
C-----end of subroutine ran3-----------------------------------------end

voltar para INTRODUO

1. INTRODUO
PARTE 2

1.9.

Mtodos puramente estocsticos

a) Busca Estocstica Simples


Neste mtodo se executa uma simples busca aleatria dos valores das
variveis independentes da funo que permanea dentro dos seus respectivos
intervalos de validade. Assim seja, por exemplo, a busca do mnimo de uma funo
escalar de n variveis:
f (x ) sendo x n tal que xi ,min xi xi ,max para i = 1, ..., n

No presente procedimento, cada novo ponto de busca gerado segundo:

xi = xi ,min + (xi ,max xi ,min ) rnd (1) para i = 1, L, n , onde rnd(1) um gerador de
nmeros aleatrios no intervalo [0,1] com distribuio uniforme.
Aps o novo valor de x ser gerado a funo f (x ) calculada e confrontada
com o melhor valor encontrado at o momento, caso o novo valor da funo for
menor que o menor valor registrado este ltimo ponto e o novo valor da funo so
armazenados como sendo, respectivamente, o melhor ponto e o melhor valor de f. O
nmero de vezes que tal procedimento repetido escolhido pelo usurio.
A forma algortmica do mtodo apresentada a seguir:
Etapa 0: Especificao de N : nmero de pontos de busca e gerao do ponto inicial:
xi(0 ) = xi ,min + (xi ,max xi ,min ) rnd (1) para i = 1, L , n

calcule

( )

f melhor = f x (0 )

x melhor = x (0 ) ;
Etapa 1: Execute N vezes
xi ,novo = xi ,min + (xi ,max xi ,min ) rnd (1) para i = 1, L, n e f novo = f (x novo ) .

2
Compare f novo com f melhor , caso f novo < f melhor faa x melhor x novo e f melhor f novo
e caso f novo f melhor nada faa! .
Etapa 2: Informe os valores de x melhor e f melhor .
Os resultados finais obtidos [os valores de x melhor e f melhor ] sero diferentes
cada vez que se rodar o programa computacional correspondente, porm tal
procedimento bem robusto e sempre apresentar um resultado. So duas as
principais vantagens do mtodo o algoritmo de fcil implementao e adequado para
funes multimodais. Em muitas situaes este algoritmo pode ser considerado como
de explorao inicial do espao de busca vivel e o ponto final fornecido pode ser
adotado com o ponto inicial para um procedimento de otimizao mais sofisticado ou
rigoroso. A principal desvantagem do algoritmo sua total ausncia de aprendizado,
nada aprendendo com as sucessivas buscas, pois procura de forma absolutamente
estpida novos pontos no incorporando informao alguma das buscas anteriores.
Outra possvel desvantagem do procedimento a possibilidade de haver regies do
espao vivel de busca que no tenham sido adequadamente varridas, havendo a
possibilidade de exatamente em uma dessas regies se encontrar o valor mnimo da
funo. Para reduzir o efeito dessas duas vantagens duas novas formas do mtodo de
busca aleatria so sugeridas, sendo apresentadas a seguir.

b) Busca Estocstica em Malha Uniforme


Neste mtodo se executa uma simples busca aleatria dos valores das
variveis independentes da funo em torno de pontos uniformemente distribudos
dentro dos intervalos de validade de cada uma das variveis independentes. Assim
seja: xi ,min xi xi ,max para i = 1, ..., n gera-se inicialmente a malha uniforme:
xi ,max xi ,min
xi(k ) = xi ,min + k xi para k = 0, L , mi e i = 1, L , n . Onde: xi =
mi

compondo-se os pontos da malha com todas as combinaes possveis das variveis


n

[o nmero total de pontos da malha :

(1 + m ) ].
i

i =1

3
A seguir, em torno de cada um dos pontos da malha, executam-se N buscas aleatrias
de acordo com:
xi ,novo = xi(k ) + rnd (1) xi para i = 1, L , n e k = 0, L , mi 1 , onde rnd(1) um

gerador de nmeros aleatrios no intervalo [0,1] com distribuio uniforme,


procedendo-se em cada uma destas buscas de forma anloga ao procedimento 1 .

A forma algortmica do mtodo, para

duas variveis independentes,

apresentada a seguir:
Etapa 0: Especificao de N : nmero de buscas em torno de cada ponto da malha; m1
e m2 : nmero de pontos da malha uniforme em cada uma das duas direes e gerao
do ponto inicial:
xi(0 ) = xi ,min + (xi ,max xi ,min ) rnd (1) para i = 1 e 2

calcule

( )

f melhor = f x (0 )

x1,min
x
x melhor = x (0 ) , zere o contador fazendo k = 0 , calcule x1 = 1,max
m1

x 2,max x 2,min
x 2 =
m2

, x1,inf erior x1,min , x 2,inf erior x 2,min e gere os pontos da malha

de acordo com:
Para i de 1 a m1
Para j de 1 a m2
k k +1
x1(k ) x1,inf erior , x 2(k ) x 2,inf erior

x 2,inf erior x 2,inf erior + x 2


x1,inf erior x1,min + x1
x 2,inf erior x 2,min

4
Zere novamente o contador fazendo k = 0 ;
Etapa 1: Para i de 1 a [m1 m2 ] faa k k + 1

Execute N vezes
xi ,novo = xi( k ) + rnd (1) xi para i = 1 e 2 e f novo = f (x novo ) .

Compare f novo com f melhor , caso f novo < f melhor faa x melhor x novo e f melhor f novo
e caso f novo f melhor nada faa! .
Etapa 2: Informe os valores de x melhor e f melhor .

c) Busca Estocstica Adaptativa


Neste mtodo se executa uma simples busca aleatria dos valores das
variveis independentes da funo em torno do melhor ponto encontrado at o
momento de uma nova busca se iniciar. Procura-se tambm neste procedimento se
reduzir o tamanho do intervalo de busca medida que melhores valores da funo
objetivo so encontrados, segundo uma estratgia heurstica.
No presente procedimento, cada novo ponto de busca gerado segundo:
xi = xi ,melhor + (xi ,max xi ,min ) [2 rnd (1) - 1] para i = 1, L, n
k

, onde rnd(1) um

gerador de nmeros aleatrios no intervalo [0,1] com distribuio uniforme e k um


nmero inteiro mpar [ sugere-se adotar o valor de k igual a 3 ou 5 no incio do
processo recursivo, aumentando-se o valor para 7 ou 9 medida que o valor da funo
f vai se aproximando do mnimo].Na realidade o procedimento pode conduzir a

valores das variveis fora da regio vivel devendo assim se proceder:


xi = xi ,melhor + (xi ,max xi ,min ) [2 rnd (1) - 1] para i = 1, L, n , a seguir calcula-se:
k

5
xi ,min se xi < xi ,min

xi = xi se xi ,min xi xi ,max

x
i ,max se xi > xi ,max
A forma algortmica do mtodo apresentada a seguir:
Etapa 0: Especificao de N : nmero de pontos de busca e gerao do ponto inicial:
xi(0 ) = xi ,min + (xi ,max xi ,min ) rnd (1) para i = 1, L , n

calcule

( )

f melhor = f x (0 ) ;

x melhor = x (0 ) e k 3 ou 5 ;
Etapa 1: Execute N vezes
xi ,novo = xi ,melhor + (xi ,max xi ,min ) [2 rnd (1) - 1]

xi ,novo

para i = 1, L , n

xi ,min se xi ,novo < xi ,min

xi ,novo se xi ,min xi ,novo xi ,max e f novo = f (x novo ) .


x
i ,max se xi ,novo > xi ,max

Compare f novo com f melhor , caso f novo < f melhor faa x melhor x novo , f melhor f novo
se f melhor < faa k 7 ou 9 e caso f novo f melhor nada faa! .
Etapa 2: Informe os valores de x melhor e f melhor .

1
2. MTODO DE RECOZIMENTO SIMULADO (SIMULATED ANNEALING)
2.1. Analogia Fsica: o recozimento de metais (annealing)
2.2. A Traduo Matemtica: o algoritmo bsico
2.3. A Programao de Recozimento
2.4. Critrio de Aceitao de Solues de Maior Energia
2.5. A Estrutura de Vizinhana
2.6. Aspectos de Implementao do Algoritmo
2.7. Exemplo Ilustrativo

2. MTODO DE RECOZIMENTO SIMULADO


2.1. Analogia Fsica: o recozimento de metais (annealing)
O recozimento de metais (tambm chamado de recristalizao) um processo de alterao
de propriedades de um material metlico por aquecimento e resfriamento lento.
Quando um material submetido a um processamento a frio, sua estrutura cristalina
deformada e surgem vrios pontos de tenso. Os cristais deformados tm mais energia que os no
deformados, por causa da desorganizao da estrutura cristalina nas interfaces entre os gros. Esta
estruturas so estveis nesta temperatura, j que os tomos no tm mobilidade suficiente para
alterar a sua organizao cristalina. Havendo oportunidade, os tomos iro se deslocar visando um
arranjo mais perfeito e regular, de menor energia.
Para fazer cristais perfeitos a partir da tcnica de recozimento, a temperatura do sistema
aumentada at pouco abaixo do ponto de fuso do material. A altas temperaturas, os tomos se
movimentaro, e eventualmente chegaro configurao mais estvel que pode ser alcanada nesta
temperatura. A temperatura reduzida, e dado algum tempo para o material se acomodar a cada
nova temperatura, tentando minimizar sua energia. A seqncia de alteraes de temperatura e o
tempo gasto em cada etapa configura uma programao de recozimento (annealing schedule).
Quanto mais organizada a estrutura cristalina de um material, menor a sua energia. Para
qualquer material, existe pelo menos uma estrutura atmica que minimiza sua energia na
temperatura de zero absoluto. Esta energia mnima global corresponde ao arranjo perfeitamente
regular do material, sem qualquer interface entre gros de organizao cristalina diferente. H
estruturas que so estveis a certas temperaturas, j que os tomos no tm mobilidade suficiente na
rede cristalina para buscar novas estruturas. Estes estados correspondem a mnimos locais de
energia.
A Figura 1 mostra a estrutura cristalina do material antes e depois do processo de
recozimento.

Figura 1 - Morfologia de um filme de CdTe depositado pela tcnica CSS:


a) sem tratamento trmico; b) tratado a 430oC por 30 min (CRUZ et al.)

voltar para RECOZIMENTO SIMULADO

2.2. A Traduo Matemtica: o algoritmo bsico


O mtodo de Recozimento Simulado (simulated annealing) um tipo de mtodo de busca
local de implementao extremamente simples proposto por METROPOLIS et al. (1953), que
perceberam que a natureza faz na verdade a minimizao da energia da estrutura cristalina quando o
material recozido para remover defeitos de sua estrutura atmica. KIRKPATRICK et al. (1983)
estenderam o mtodo de otimizao termodinmica de Metropolis para o problema de otimizao
combinatorial.
Na analogia matemtica, o estado do sistema termodinmico corresponde soluo atual do
problema combinatrio, a equao de energia para o sistema termodinmico a funo objetivo e o
estado de referncia anlogo ao mnimo global da funo. A maior dificuldade na implementao
do algoritmo o fato de no haver parmetro anlogo no problema combinatrio temperatura.
Alm disto, o que evita o algoritmo de ficar preso em um mnimo local (conhecido como
quenching ou tmpera, na metalurgia) a seleo adequada da programao do recozimento.
Escolher uma programao significa definir os seguintes fatores: a temperatura inicial, o nmero de
iteraes do algoritmo com a mesma temperatura e a estratgia de reduo de temperatura ao longo
da execuo do algoritmo. Os tomos de um cristal se movem pouco a pouco, passando de uma
estrutura para uma estrutura muito prxima da anterior, chamada de estrutura vizinha. A definio
de uma estrutura de vizinhana pode ser muito simples ou bastante complexa, a depender da
aplicao considerada.
No algoritmo bsico, a partir de um ponto no espao de solues calcula-se um novo ponto
vizinho do atual. Se a energia (o valor da funo objetivo) menor neste novo ponto, este passa a
ser o nosso ponto atual: um ponto seu vizinho calculado e o algoritmo continua. Se a energia

3
maior neste novo ponto, ele no automaticamente descartado. H uma certa probabilidade de ele
ser aceito como o novo ponto atual, e esta probabilidade to maior quanto maior for o parmetro
temperatura ou quanto menor for a diferena de energia entre os dois pontos.
Queremos reduzir o valor da energia, mas ainda assim aceitamos como nova soluo um
ponto que seja pior que o anterior? O motivo para esta aparente contradio simples: para que se
v de um mnimo local a um mnimo global da estrutura acessando apenas pontos vizinhos,
necessrio que, pelo menos em alguns pontos ao longo desta trajetria, a energia do sistema
aumente. Em outras palavras, a nica maneira de ir de um mnimo local para o mnimo global (ou
para outro mnimo local) aumentando a energia do sistema. A Figura 2 ilustra este fato.

Figura 2 Para ir de um mnimo local (em x=-2) para o mnimo global (em x=9)
necessrio passar por regies de mximo (em torno de x=4).

Nas primeiras iteraes do algoritmo, a temperatura est alta. A probabilidade de aceitar


uma transio para um ponto de maior energia alta. Com isto, o mtodo consegue sair de bacias de
atrao de mnimos locais e varrer bem o espao de solues. Lentamente, com o passar das
iteraes, a temperatura vai sendo reduzida segundo um esquema de resfriamento pr-definido. As
transies para pontos de maior energia vo ficando cada vez menos provveis, e o mtodo passa a
fazer mais explorao local do que explorao global no espao de solues. Ao final do algoritmo,
a temperaturas muito baixas, apenas so aceitas transies para solues melhores, e o mtodo
eventualmente levar ao mnimo de uma bacia de atrao.
O algoritmo bsico est representado na Figura 3. As etapas mais sensveis do mtodo so:
a seleo da temperatura inicial, a definio do esquema de resfriamento, a determinao do nmero
de iteraes em cada temperatura (nXmax) e o nmero de ciclos de resfriamento (nTmax). Estes
aspectos sero detalhados nas prximas sees.

4
definir temperatura inicial T
arbitrar ponto inicial x
calcular energia E=f(x)
nT=0, nX=0

nX > nXmax ?

reduz valor da temperatura T


nX=0
nT=nT+1

nX=nX+1

calcula ponto vizinho x novo


calcular energia Enovo=f(x novo)
calcula =Enovo-E

x x novo
E Enovo

nT > nTmax ?

FIM

<0?

calcula probabilidade P(E,)


calcula rand[0,1]

rand<P ?

Figura 3 Algoritmo bsico do Recozimento Simulado

voltar para RECOZIMENTO SIMULADO

2.3. A Programao de Recozimento


Quando a temperatura muito baixa, o algoritmo aceita apenas transies que melhoram a
soluo atual. Este algoritmo conhecido como um hill climber (escalador de morros, em
traduo literal). O sistema rapidamente encontrar um mnimo local e nenhuma melhora adicional
ser conseguida, independente do nmero de iteraes permitidas. Por outro lado, se a temperatura

5
for muito grande, praticamente qualquer transio aceita, e o algoritmo se comportar como um
algoritmo de busca aleatria simples.
Pode ser demonstrado que, se a temperatura for reduzida de forma lenta o suficiente (o
inverso do logaritmo do tempo) a probabilidade de o mtodo levar ao mnimo global em T=0 tende
a um. Este esquema de resfriamento to lento torna a minimizao de qualquer funo invivel, e o
interesse nesta prova de convergncia mais cientfico que prtico.
Qualquer funo montona decrescente pode ser usada como funo de resfriamento. Uma
escolha muito usual a reduo linear da temperatura, fazendo T k+1 = T k. O parmetro varia
tipicamente entre 0,7 e 0,95. Funes exponenciais de resfriamento so tambm utilizadas na
literatura da rea.
Como definir os parmetros do algoritmo? Como uma regra geral, o nmero de temperaturas
empregadas (n1) deve ser pequeno algo entre 10 e 20 costuma ser suficiente. J o nmero de
iteraes com a mesma temperatura (n2) deve ser um pouco maior, para que se d tempo suficiente
ao algoritmo para buscar o espao de solues com aquela temperatura. Se este nmero for grande
demais, no s o esforo computacional ser desnecessariamente alto com o algoritmo poder ficar
vagando pelo espao, sem se concentrar em uma regio mais promissora. Algo entre 20 e 100
iteraes so empregadas, a depender da complexidade do espao de solues e dos recursos
computacionais disponveis.
Apenas em uma coisa todos os trabalhos da rea concordam: experimentao fundamental
para que se definam os parmetros do mtodo.
voltar para RECOZIMENTO SIMULADO

2.4. Critrio de Aceitao de Solues de Maior Energia


O critrio proposto por Metropolis consiste em avaliar a diferena de energia entre a soluo
atual e a nova soluo e calcular E k+1-E k. Se negativo, isto significa que a soluo atual
melhor que a anterior, e esta ltima substituda. Se positivo, a probabilidade de esta soluo de
maior energia substituir a anterior dada por p = exp( / T ) .
Transies muito ruins (ou seja, com grande) so menos provveis que as transies
pouco ruins. Quanto menor a temperatura, menos provvel que uma transio ruim seja aceita.
As figuras abaixo mostram o comportamento da funo probabilidade. Observe que para um valor
de /T igual a 5 ( 5 vezes maior que a temperatura) a probabilidade de aceitao praticamente
nula, e que a probabilidade de aceitao de 50% corresponde a /T=ln(2)=0,69.

Figura 4 Probabilidade de aceitao de uma transio de maior energia:


(a) P x para vrios valores de temperatura T; (b) P x (/T).

Como implementar este critrio probabilstico de aceitao? Primeiramente sorteado um


nmero randmico r a partir de uma distribuio uniforme no intervalo [0,1]. Considere que p
representa a probabilidade de a transio para este novo ponto ser aceita. A probabilidade do
nmero sorteado r ser menor ou igual do que p, tambm contido no intervalo [0,1], (100p)%. Esta
uma caracterstica da distribuio uniforme que foi discutida na Aula 1. Logo, se r<p a transio
aceita. Do contrrio, este ponto descartado e um novo vizinho do ponto atual calculado.
Os valores inicial e final da temperatura dependem da escala da sua funo. Lembre-se que
h 50% de chance de aceitar uma transio para uma soluo pior quando /T= 0,69. Alguns
trabalhos na literatura sugerem que sejam definidos os parmetros de resfriamento tais que 80% das
transies pobres sejam aceitas no incio do algoritmo. No entanto, este critrio difcil de ser
aplicado na prtica, e nem sempre corresponde melhor escolha de parmetros.
voltar para RECOZIMENTO SIMULADO

2.5. A Estrutura de Vizinhana


A definio da estrutura de vizinhana fundamental para a implementao do algoritmo.
Uma estrutura de vizinhana nada mais do que uma maneira de calcular uma soluo prxima
soluo anterior. Para um mesmo problema, vrias estruturas de vizinhana so cabveis. A
vizinhana de um ponto corresponde ao conjunto de todos os pontos que lhe so vizinhos.
Por exemplo, imagine o problema de minimizao de uma funo com domnio no 2.
Podemos calcular um ponto vizinho no plano real de vrias maneiras. Poderamos: (i) somar (ou
subtrair) uma quantidade fixa em uma ou mais direes; (ii) dar um passo de tamanho em
alguma direo arbitrria; (iii) selecionar qualquer ponto que diste no mais que do ponto
anterior. Estas possveis vizinhanas de tamanho esto representadas na Figura 5, respectivamente
nas cores vermelha, azul e verde.

Figura 5- Possveis estruturas de vizinhana no plano real (quadriculado de x).

A definio da estrutura de vizinhana em problemas de otimizao de estruturas de


molculas menos intuitiva, uma possibilidade seria definir uma molcula vizinha como uma
molcula em que todos os grupos funcionais so iguais exceto um. A figura abaixo mostra dois
pares de molculas vizinhas.

Figura 6- Pares de molculas vizinhas.

voltar para RECOZIMENTO SIMULADO

2.6. Aspectos de Implementao do Algoritmo


Uma caracterstica do recozimento simulado: no h qualquer garantia de que o ltimo
ponto visitado ser o melhor ponto j visitado pelo algoritmo. Uma modificao simples e efetiva
no algoritmo original consiste em registrar em uma varivel parte este melhor resultado
encontrado. Assim, possvel que o seu problema seja resolvido mesmo com uma programao de
recozimento pobre.
A figura abaixo mostra o resultado de execues do cdigo onde, por uma escolha
inadequada de parmetros, o mnimo global da soluo foi visitado mas abandonado em seguida.
Para evitar este problema, a melhor soluo encontrada ao longo da execuo do algoritmo foi
registrada parte. Observe que o timo global foi encontrado nas duas situaes.

Figura 7 Possveis resultados de otimizao onde o timo foi visitado e abandonado

Uma outra sugesto freqente na literatura consiste em executar vrias vezes o algoritmo
com o mesmo grupo de parmetros, partindo de diversas condies iniciais, seqencialmente ou em
paralelo. Assim, um possvel erro na seleo do chute inicial, do gerador de nmeros aleatrios ou
da programao de resfriamento tem seu efeito suavizado. O preo a pagar o drstico aumento no
custo computacional.

voltar para RECOZIMENTO SIMULADO

2.7. Exemplo Ilustrativo


Para entender o significado dos parmetros do mtodo, considere o problema de
minimizao da funo F(x) apresentada abaixo.
F( x ) =

1
10000

( x + 10 ) ( x + 6 ) ( x + 5 ) ( x + 1 ) ( x 7 ) ( x 10 )

Figura 8 Espao de busca da funo teste

Observe que existem mnimos locais em x = -8,834, x = -2,546 e x = 8,817, sendo este
ltimo o mnimo global. A funo apresenta mximos locais em x= -5,518 e x = 3,914. Um mtodo

9
tipo gradiente no convergiria para o mnimo global desejado para qualquer condio inicial:

se arbitrado x < -5,518, o mtodo convergiria para x = -8,834;

se arbitrado -5,518 < x < 3,914, o mtodo convergiria para x = -2,546;

se arbitrado x > 3,914, o mtodo convergiria para x = 8,817.

Figura 9 Extremos da funo teste

Foi implementado o algoritmo de Recozimento Simulado apresentado na Figura 3. Foi


empregado um esquema simples de resfriamento, tal que T k+1 = T k. Os parmetros empregados
foram =0,85, T0=30, n1 = 15 e n2 = 90. O cdigo implementado em Maple est apresentado na
homepage do curso.
Os resultados abaixo correspondem a algumas execues do algoritmo. Cabe lembrar que a
cada execuo o cdigo levar a uma seqncia de tentativas diferente por conta dos nmeros
aleatrios envolvidos. Isto justifica a diversidade dos grficos. Foi implementada a modificao
comentada no texto: o melhor ponto visitado ao longo da execuo do algoritmo armazenado.
Assim, esto mostrados nos grficos abaixo o ponto de partida do algoritmo, o resultado final
fornecido (ponto de parada do algoritmo) e o melhor ponto visitado ao longo da execuo.
Apenas como um teste, foi alterado o parmetro que controla a velocidade de
resfriamento. Observe que um resfriamento rpido demais levou o mtodo a ficar preso em um
mnimo local (Figura 10a). O resfriamento na taxa adequada levou o algoritmo ao mnimo global
desejado (Figura 10b).

Figura 10 Possveis resultados de otimizao empregando Recozimento Simulado: (a) =0,75; (b) =0,80.

10
O resfriamento lento demais, mantidos todos os demais parmetros, fez com que o algoritmo
ficasse sempre com a temperatura muito alta. Com isto, foi feita pouca explorao local, e o
algoritmo passou a maior parte do tempo se comportando como um algoritmo de busca aleatria
exaustiva. Encontrar o mnimo questo de sorte: o mtodo pode ou no passar por perto do
mnimo local, como se observa nas Figuras 11a e 11b.

Figura 11 Possveis resultados de otimizao empregando Recozimento Simulado com =0,90

No h um conjunto de parmetros reconhecidamente bom para o algoritmo, que se aplique


a qualquer sistema sendo otimizado. Experimentao fundamental para o sucesso da otimizao.
voltar para RECOZIMENTO SIMULADO

3. ALGORITMOS GENTICOS
PARTE 1
3.1 Analogia Fsica: a evoluo das espcies
3.2 A Traduo Matemtica: o algoritmo bsico
3.3 Codificao dos Indivduos
3.4 Avaliao da Aptido de um Indivduo
3.5 Operador Cruzamento
3.6 Operador Mutao

3. ALGORITMOS GENTICOS
3.1. Analogia Fsica: a evoluo das espcies
At meados do sculo 19, os naturalistas acreditavam que cada espcie havia sido criada separadamente por um ser supremo ou atravs de gerao espontnea. O trabalho do naturalista Carolus Linnaeus sobre a classificao biolgica de organismos despertou o interesse pela similaridade
entre certas espcies, levando a acreditar na existncia de uma certa relao entre elas. Outros trabalhos influenciaram os naturalistas em direo teoria da seleo natural, tais como os de Jean
Baptiste Lamark, que sugeriu uma teoria evolucionria no "uso e desuso" de rgos; e de Thomas
Robert Malthus, que props que fatores ambientais tais como doenas e carncia de alimentos, limitavam o crescimento de uma populao.
Depois de mais de 20 anos de observaes e experimentos, Charles Darwin apresentou em
1858 sua teoria de evoluo atravs de seleo natural, simultaneamente com outro naturalista ingls Alfred Russel Wallace. No ano seguinte, Darwin publica o seu On the Origin of Species by
Means of Natural Selection com a sua teoria completa, sustentada por muitas evidncias colhidas
durante suas viagens a bordo do Beagle.
Este trabalho influenciou muito o futuro no apenas da Biologia, Botnica e Zoologia, mas
tambm teve grande influncia sobre o pensamento religioso, filosfico, poltico e econmico da
poca. A teoria da evoluo e a computao nasceram praticamente na mesma poca: Charles Babbage, um dos fundadores da computao moderna e amigo pessoal de Darwin desenvolveu sua
mquina analtica em 1833. Ambos provavelmente estariam surpresos e orgulhosos com a ligao
entre estas duas reas.
Por volta de 1900, o trabalho de Gregor Mendel, desenvolvido em 1865, sobre os princpios
bsicos de herana gentica, foi redescoberto pelos cientistas e teve grande influncia sobre os futuros trabalhos relacionados evoluo. A moderna teoria da evoluo combina a gentica e as idias
de Darwin e Wallace sobre a seleo natural, criando o princpio bsico de Gentica Populacional: a
variabilidade entre indivduos em uma populao de organismos que se reproduzem sexualmente
produzida pela mutao e pela recombinao gentica. Este princpio foi desenvolvido durante os
anos 30 e 40, por bilogos e matemticos de importantes centros de pesquisa.
Nos anos 50 e 60, muitos bilogos comearam a desenvolver simulaes computacionais de
sistemas genticos. Entretanto, foi John Holland quem comeou, seriamente, a desenvolver as primeiras pesquisas no tema. A idia inicial de Holland foi tentar imitar algumas etapas do processo de
evoluo natural das espcies incorporando-as a um algoritmo computacional. Holland foi gradualmente refinando suas idias e em 1975 publicou o seu livro Adaptation in Natural and Artificial
Systems, hoje considerado a Bblia de Algoritmos Genticos. Desde ento, estes algoritmos vm
sendo aplicados com sucesso nos mais diversos problemas de otimizao e aprendizado de mquina. (http://www.iagenetico.hpg.ig.com.br/introd.html )
voltar para ALGORITMOS GENTICOS

3.2. A Traduo Matemtica: o algoritmo bsico


Um modelo simplificado do processo de seleo natural poderia ser expresso por:
(i) as caractersticas (boas ou ruins) dos indivduos esto registradas nos seus genes, de forma codificada;
(ii) cada gerao de indivduos em uma populao formada pela combinao do material gentico
dos indivduos da gerao anterior;
(iii) ocasionalmente, ocorrem mutaes aleatrias no material gentico de um indivduo, que podem
torn-lo mais ou menos apto a sobreviver em seu meio;
(iv) os indivduos mais aptos tm maior chance de sobreviverem e conseguirem passar seus genes
para a prxima gerao, ou seja, tm maior chance de se reproduzirem;
(v) qualquer indivduo - mais ou menos apto - tem a mesma probabilidade de sofrer mutao.
Com inspirao nestas premissas simples, possvel formular algoritmos para efetuar a otimizao de uma funo objetivo arbitrria, os chamados Algoritmos Genticos (AGs).
Na analogia matemtica, a aptido est relacionada ao valor da funo objetivo. Cada indivduo corresponde a uma possvel soluo do problema de otimizao e cada gerao uma iterao do algoritmo. Os AGs operam sobre um conjunto de possveis solues do problema, e no
apenas uma (como mtodos determinsticos ou o mtodo
de Recozimento Simulado, vistos nas aulas anteriores).
Em cada iterao, operadores so aplicados aos indivduos
para simular os fenmenos de seleo natural, de gerao
de novos indivduos pela reproduo sexuada e de mutao aleatria dos indivduos.
A figura ao lado mostra as principais etapas do algoritmo gentico bsico. A cada iterao do algoritmo as
solues mais promissoras do problema (os indivduos
mais aptos) tm maior probabilidade de serem selecionadas para gerarem novas solues tentativa (descendentes).
Em seguida, alguns indivduos so selecionados aleatoriamente, independente de sua aptido, para sofrerem uma
mudana arbitrria (mutao). O valor da funo objetivo
ento calculado para cada elemento deste novo conjunto
de solues tentativa. Os mtodos de seleo so projetados para escolher preferencialmente indivduos com maiores notas de aptido, embora no exclusivamente, a fim de
manter a diversidade da populao.
Os passos 2 a 5 so continuamente repetidos at que um critrio de parada seja satisfeito.
Estes critrios so dependentes do problema, mas geralmente correspondem a ter sido encontrada

4
uma resposta suficientemente boa para o problema ou ter sido executado um certo nmero de iteraes do algoritmo (geraes).
Assim como a natureza caminha no sentido de maximizar a aptido dos indivduos, os algoritmos genticos caminham no sentido de otimizar o valor da funo objetivo. Estes algoritmos,
apesar de serem computacionalmente muito simples, so bastante poderosos. No h provas matemticas rigorosas da convergncia do algoritmo, mas as aplicaes do algoritmo vm crescendo nos
ltimos anos, principalmente devido s vantagens que este apresenta quando comparado a outros
mtodos de otimizao. Podem-se destacar as seguintes:
i) O algoritmo no requer o clculo de derivadas da funo objetivo;
ii) Descontinuidades na funo objetivo no afetam o desempenho do algoritmo;
iii) A presena de mnimos locais no reduz a eficincia do algoritmo;
iv) O algoritmo se aplica a problemas em que a funo objetivo no pode ser representada por uma
funo matemtica.
Nas prximas sees, cada etapa dos Algoritmos Genticos ser detalhada.
voltar para ALGORITMOS GENTICOS

3.3. Codificao dos Indivduos


Na natureza, todas as caractersticas do indivduo, responsveis por seu grau de aptido, esto codificadas nos genes que constituem os cromossomos. Analogamente, os Algoritmos Genticos otimizam o valor da funo objetivo (o fentipo da soluo, a sua caracterstica observvel)
atuando sobre a representao codificada dos genes dos indivduos (o gentipo da soluo). Assim, o primeiro passo ao se empregar um Algoritmo Gentico definir que codificao ser empregada.
H vrias maneiras de representar um indivduo de forma codificada. Tradicionalmente, os
indivduos so representados por vetores binrios, isto , cada elemento do vetor pode ser preenchido de 2 maneiras apenas: 1 ou 0. Se h 2 maneiras de preencher um dgito, h 4 maneiras de preencher uma seqncia de 2 dgitos (00, 01, 10 e 11), 8 maneiras de preencher uma seqncia de 3 dgitos (000, 001, 010, 100, 011, 101, 110 e 111), etc... Generalizando, h 2n maneiras de preencher
uma seqncia de n dgitos.
A grande vantagem desta representao o fato de ela ser independente do problema. Uma
vez encontrada a representao em vetores binrios de um conjunto de indivduos, os operadores
genticos padro podem ser utilizados, o que facilita a utilizao dos AGs em diferentes classes de
problemas.
Como um exemplo, analisemos o problema do caixeiro viajante que precisa passar pelas 4
capitais da Regio Sudeste do Brasil. Ser necessrio empregar 2 dgitos na representao de cada
cidade, pois este o nmero mnimo de dgitos capaz de representar 4 diferentes nmeros. Podemos
representar um determinado roteiro atravs da concatenao dos cdigos associados s cidades vi-

5
sitadas. Por exemplo, usando a associao mostrada na tabela abaixo, podemos codificar as rotas
mostradas nos esquemas em seguida como seqncias de 8 dgitos.
CIDADE

CDIGO

Rio de Janeiro

00

So Paulo

01

Belo Horizonte

10

Vitria

11

Obviamente no existe sentido em codificar um problema do caixeiro viajante com 4 cidades, pois s h trs possveis rotas, mostradas abaixo. Mas, para o problema com 15 cidades, j h a
necessidade de um mtodo de otimizao para auxiliar na tarefa de encontrar a melhor rota. Neste
problema, so necessrios 4 dgitos para codificar as cidades, e cada rota ser identificada por uma
seqncia de 15*4=60 dgitos.

codificao 01101100

codificao 01100011

codificao 01101100

Se uma varivel real estiver sendo codificada, necessrio primeiro discretizar o domnio.
Apenas como um exemplo imagine que uma das variveis a otimizar em um problema seja uma
frao molar. Esta varivel encontra-se entre 0 e 1, e a depender da preciso requerida para represent-la, um nmero diferente de dgitos necessrio. Para represent-la com uma preciso de 0,1 j
haver 11 possveis valores para esta varivel, e sero necessrios 4 dgitos para represent-la. Observe que sero ocupadas (associadas a um valor numrico da varivel) apenas 11 das 16 possveis seqncias binrias formadas com 4 dgitos. Isto significa que 5 seqncias de dgitos no estaro associadas a qualquer valor da varivel x. Indivduos que possuem uma destas codificaes para
representar a varivel x so chamados de esprios.
A codificao binria, apesar de ser a mais tradicional e conferir generalidade aos operadores, no a mais adequada para qualquer tipo de problema. Apenas para ilustrar, veja que h apenas
3 rotas possveis no PCV com 4 cidades, mas possvel codificar 28 = 256 rotas com 8 dgitos!

6
Outras formas de codificao adaptadas a cada tipo de problema sero apresentadas na prxima
aula e durante os exemplos.
voltar para ALGORITMOS GENTICOS

3.4. Avaliao da Aptido de um indivduo


Avaliar um indivduo num AG significa determinar o seu nvel de aptido de sobrevivncia.
Ou seja, num AG sobrevivem prioritariamente os indivduo mais aptos. Em problemas de otimizao, o critrio de sobrevivncia determinado pelo valor da funo objetivo.
A depender do problema, avaliar o valor da funo objetivo pode envolver a avaliao de
uma expresso algbrica, a resoluo de um sistema algbrico no linear ou mesmo a integrao de
um conjunto de equaes diferenciais. Qualquer que seja o procedimento numrico, nesta etapa
preciso decodificar a varivel binria e avaliar a qualidade da soluo representada.
No problema do caixeiro viajante, o objetivo minimizar o trajeto percorrido para visitar todas as cidades. Cada indivduo corresponde a uma possvel rota, e o valor da aptido de um indivduo a distncia percorrida nesta rota.
Um outro detalhe importante para a implementao do mtodo: possvel (e at bastante
provvel) que indivduos esprios sejam gerados ao longo da execuo do algoritmo gentico. A
maneira mais tradicional de lidar com este problema , no momento de avaliar a aptido do indivduo, detectar que ele no vlido e atribuir um valor muito ruim de aptido. Assim, ele no conseguir se reproduzir e estes genes defeituosos vo eventualmente ser eliminados da populao pelo
processo de seleo natural.
Uma das muitas alteraes feitas no algoritmo bsico para torn-lo competitivo frente a outras tcnicas de otimizao foi adaptar os operadores para que estes indivduos esprios no sejam
gerados. Desta forma reduz-se o custo computacional do algoritmo, j que apenas solues vlidas
so consideradas. Estas particularidades sero discutidas com mais detalhe na prxima aula, onde os
Algoritmos Genticos modificados sero discutidos.
voltar para ALGORITMOS GENTICOS

3.5. Operador Cruzamento


O operador cruzamento consiste em gerar um ou dois cromossomos filhos a partir das informaes dos dois cromossomos pais. Suponha que, por algum mecanismo, tenham sido escolhidos os dois cromossomos pais P1 e P2, representados abaixo como cadeias de 32 bits:
P1

1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0

P2

1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0

7
No operador mais clssico, chamado de operador cruzamento simples, inicialmente seleciona-se de forma aleatria uma posio, onde se efetua um corte entre dois genes adjacentes em
cada cromossomo pai. No nosso exemplo, o corte foi feito entre o 12o e o 13o bit. possvel gerar
at dois filhos (F1 e F2) pela concatenao dos cromossomos dos pais, mas no incomum que
apenas um destes filhos seja introduzido na nova populao. O nmero de filhos por cruzamento (1
ou 2) uma parmetro a ser definido pelo usurio.
P1

1 0 1 0 0 1 0 1 1 1 0 1

0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0

P2

1 0 1 1 1 0 1 0 1 0 1 0

1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0

F1

1 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0

F2

1 0 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0

H um nmero infinito de variaes deste algoritmo bsico. Talvez a mais simples seja o
cruzamento simples em mltiplos pontos, onde no um mais vrios pontos de corte so determinados aleatoriamente. Abaixo est representado o cruzamento com 2 pontos de corte (7o / 8o bit e o
24o / 25o bit).
P1

1 0 1 0 0 1 0

1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1

1 0 1 0 1 1 0 0

P2

1 0 1 1 1 0 1

0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0

0 1 0 1 1 0 1 0

F1

1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0

F2

1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0

Outra variao bastante freqente o chamado cruzamento uniforme, onde determina-se a


percentagem de genes que vo ser trocados, procede-se o sorteio destes genes, e efetua-se a troca do
material gentico dos pais nestas posies.
P1

1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0

P2

1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0

F1

1 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 0

F2

1 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0

8
No exemplo acima, um parmetro do algoritmo seria 25% de substituio de genes no cruzamento. Para os dois pais selecionados, foram aleatoriamente sorteadas as posies de troca de
material gentico como 2, 3, 6, 12, 13, 14, 19 e 29. Observe que h 50% de chance de a troca de um
gene no modificar o indivduo (como por exemplo para os genes 2, 3 e 29).
Em uma populao real, nem todos os casais tm filhos ao mesmo tempo, e h a coexistncia de indivduos mais novos e mais velhos, possivelmente trocando material gentico. Da mesma forma, nos Algoritmos Genticos, nem todos os indivduos passam pelo operador cruzamento
em todas as iteraes, e muitas vezes os indivduos (especialmente os bons) so mantidos na populao por vrias geraes.
O procedimento implementado em um Algoritmo Gentico padro detalhado a seguir. Se
h Nind indivduos na populao, e deseja-se obter 1 filho por cruzamento, so selecionados por um
sorteio especial Nind pares de indivduos. Este sorteio favorece os indivduos mais aptos, mas no
exclui a possibilidade de os menos aptos serem sorteados. Existe uma certa probabilidade p de o
operador cruzamento ser aplicado, tipicamente da ordem de 70%. Para cada um dos pares formado,
sorteado um nmero aleatrio r uniformemente distribudo no intervalo [0,1]. Se rp, ento o operador cruzamento aplicado a este casal, gerando um indivduo na nova populao. Se r>p ento
no haver um filho, e um dos pais dever ser introduzido na nova populao. Aps a avaliao dos
Nind casais, Nind indivduos (novos ou antigos) tero sido introduzidos na nova gerao de indivduos.
voltar para ALGORITMOS GENTICOS

3.6. Operador Mutao


O operador mutao altera aleatoriamente um ou mais bits de um cromossomo. Este operador utilizado para permitir uma diversificao no processo de busca e introduzir diversidade. H
pesquisadores que defendem a tese de que este o verdadeiro operador gentico, o responsvel por
toda a evoluo.
Assim como o operador cruzamento, o operador mutao no aplicado a todos os indivduos. Existe uma probabilidade p (tipicamente da ordem de 5%) de o operador ser aplicado a um
indivduo. Para cada indivduo da populao, sorteia-se um nmero randmico r uniformemente
distribudo no intervalo [0,1]. Se rp, ento o operador mutao aplicado a este indivduo, gerando um indivduo diferente na nova populao. Se r>p ento no haver mutao, e o indivduo
deixado inalterado. Observe que todos os indivduos esto igualmente sujeitos a sofrer mutao.
Para aplicar o operador mutao, normalmente sorteia-se aleatoriamente um bit, e este alterado. No exemplo abaixo, o 11o bit do indivduo foi sorteado, e consequentemente foi alterado de
1 para 0.
1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0
1 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0

3. ALGORITMOS GENTICOS
PARTE 2
3.7

Aspectos de Implementao do Algoritmo

3.8

Seleo da Codificao

3.9

Operadores Genticos Modificados

3.10 Outros operadores: elitismo, reinicializao e niching


3.11 Variantes clssicas: Micro AG e AG Paralelo
3.12 Exemplo Ilustrativo

3. ALGORITMOS GENTICOS
3.7.

Aspectos de Implementao do Algoritmo

a) Algoritmos de Seleo de Indivduos


Para que o operador cruzamento seja aplicado, primeiro os pais (dois indivduos da populao) precisam ser selecionados. importante que este procedimento de seleo leve em conta a
aptido dos indivduos: indivduos mais aptos devem ter maior probabilidade de serem selecionados, e assim se reproduzirem e passarem seus genes para a prxima gerao.
H vrios procedimentos de seleo, sendo os mais usuais a Seleo por Roleta (roulette
wheel selection) e a Seleo por Torneio (tournament selection).
No procedimento de seleo por roleta, cada indivduo da populao representado na roleta proporcionalmente sua aptido. Assim, aos indivduos com alta aptido dada uma poro
maior da roleta, enquanto aos de aptido mais baixa dada uma poro relativamente menor da
roleta. Finalmente, a roleta girada um determinado nmero de vezes, e so escolhidos os indivduos sorteados na roleta.
Matematicamente, a probabilidade de seleo de um indivduo (visualizada como a frao
da roleta) calculada como a razo entre a aptido do indivduo e o somatrio de todas as aptides
individuais. Com base neste nmero, pode ser determinada a faixa de sorteio favorvel quele indivduo. Na tabela abaixo, o procedimento de roleta ilustrado para uma populao com 5 indivduos.
Observe que a faixa favorvel tem extenso determinada pela probabilidade de seleo do indivduo, e qualquer nmero aleatrio sorteado entre 0 e 1 pode ser associado a um indivduo.
indivduo

aptido

probabilidade de
seleo

faixa
favorvel

3.80

19.00%

0 0,19

7.80

39.00%

0,19 0,58

1.60

8.00%

0,58 0,66

4.40

22.00%

0,66 0,88

2.40

12.00%

0,88 1,00

20.00

100.00%

Para exemplificar o procedimento, foram sorteados 10 indivduos com o auxlio de um gerador de nmeros randmicos uniforme. Os nmeros gerados esto apresentados na tabela abaixo, e
observa-se que o procedimento de roleta vai gerar distribuies bastante prximas s de probabilidades de seo dado que o nmero de indivduos sorteados seja suficientemente grande e seja empregado um gerador de nmeros randmicos confivel.

3
indivduo
associado
2
4
2
1
3
2
1
5
2
4

0.45
frao sorteada

0.4

probabilidade de seleo

0.35
percentagem

nmero
gerado
.567
.736
.300
.107
.660
.231
.138
1.00
.366
.701

0.3
0.25
0.2
0.15
0.1
0.05
0
1

3
indivduo

J no procedimento de seleo por torneio, sorteiam-se dois indivduos ao acaso, comparam-se suas aptides e o mais apto destes dois selecionado. Este procedimento repetido para
cada indivduo a ser selecionado. No necessrio calcular a probabilidade de seleo ou uma faixa
favorvel, e como conseqncia este procedimento muito mais simples e rpido.

b) Seleo dos Parmetros do Algoritmo


importante analisar de que maneira alguns parmetros influem no comportamento dos Algoritmos Genticos, para que se possa estabelec-los conforme as necessidades do problema e dos
recursos disponveis.
Tamanho da Populao. O tamanho da populao afeta o desempenho global e a eficincia
dos AGs. Com uma populao pequena o desempenho pode cair, pois deste modo a populao fornece uma pequena cobertura do espao de busca do problema. Uma grande populao geralmente
fornece uma cobertura representativa do domnio do problema, alm de prevenir convergncias
prematuras para solues locais ao invs de globais. No entanto, para se trabalhar com grandes populaes, so necessrios maiores recursos computacionais, ou que o algoritmo trabalhe por um
perodo de tempo muito maior. Tipicamente, empregam-se entre 20 e 200 indivduos.
Nmero de geraes. O nmero de geraes est intimamente relacionado ao tamanho da
populao e ao tempo computacional disponvel para a execuo do algoritmo. O usurio deve escolher entre usar uma populao pequena por muitas geraes ou uma populao maior por menos
geraes. Se o nmero de geraes for muito grande, deve ser avaliada a possibilidade de ser efetuada a reinicializao da populao periodicamente. No h um valor comumente aceito na literatura
para este parmetro.
Taxa de Cruzamento. Se esta taxa for muito alta, estruturas com boas aptides podero ser
retiradas muito rapidamente. Se esta taxa for muito pequena, o algoritmo ser muito lento. Tipicamente, a probabilidade de cruzamento de cerca de 70% quando gerado um filho por cruzamento.

4
Taxa de Mutao. Uma baixa taxa de mutao previne que uma dada posio fique estagnada em um valor, alm de possibilitar que se chegue em qualquer ponto do espao de busca. Com
uma taxa muito alta a busca se torna essencialmente aleatria. Tipicamente, a probabilidade de mutao de cerca de 5%.
Outros parmetros. H outros parmetros a definir no cdigo, mas o seu impacto menor
que os destacados anteriormente. Como um exemplo, podemos citar o nmero de filhos por cruzamento e a porcentagem de genes trocados no cruzamento uniforme.
voltar para ALGORITMOS GENTICOS

3.8.

Seleo da Codificao

Os algoritmos genticos na sua forma original utilizam a representao binria para codificar
os indivduos. A codificao binria certamente confere generalidade ao algoritmo. Uma vez convertidos para o domnio binrio, o problema do caixeiro viajante e um problema de otimizao paramtrica so virtualmente idnticos. Esta representao, no entanto, no a mais eficiente para
diversos problemas de otimizao, por vrios motivos.
z Podem ser criados indivduos no viveis ou esprios.
Em muitas codificaes, nem todos os indivduos so viveis. Este conceito fica melhor esclarecido atravs de um exemplo. Vamos representar atravs de codificao binria os 5 estados
da varivel s que representa a cor de um determinado produto. Observe que no h cor associada s codificaes 101, 110 e 111.
s

000

001

010

011

100

101

110

111

cor

preto

rosa

verde

azul

laranja

H 3/8 de chance que este indivduos esprios sejam introduzidos na populao inicial, aleatoriamente determinada. Mesmo se forem eliminados os indivduos esprios nesta instncia,
ainda assim estes indivduos reapareceriam, durante a execuo do algoritmo, como produto
da aplicao dos operadores genticos aos indivduos vlidos.
Imagine que deva ser aplicado codificao da cor azul (011) o operador mutao, definido
como a alterao de um bit aleatrio do indivduo. Se o segundo ou terceiro bits forem alterados, sero obtidas as cores rosa e verde, respectivamente. No entanto, se o primeiro bit for alterado, ser obtida um valor da varivel ao qual no se associa qualquer cor.

5
H basicamente trs alternativas para contornar este problema: (i) adaptam-se os operadores
genticos para que sempre seja criado um indivduo vivel a partir de dois indivduos viveis;
(ii) penaliza-se o indivduo no vivel no momento de calcular sua aptido; (iii) altera-se o
tipo de codificao (por exemplo, representando as 5 cores por nmeros de 1 a 5).
z A mudana de um bit pode levar a grandes modificaes no indivduo.
Quando se usa a codificao binria para representar nmeros, reais ou naturais, no existe a
garantia de que nmeros com codificao parecida sejam parecidos. Por exemplo, observe a
codificao de alguns nmeros naturais entre 0 e 31. Apenas mudando um dgito (um bit) do
indivduo codificado, podemos obter desde um nmero parecido at um nmero significativamente diferente. Esta aparente falta de coerncia atrapalha a convergncia do algoritmo
gentico.
11111
11110

31
30

11111
11101

31
29

11111
11011

31
27

11111
10111

31
23

11111
01111

31
15

Para contornar este problema, foi proposta por Gray uma forma de codificao binria onde
nmeros vizinhos na escala adotada (real, natural) possuem codificao bastante prxima. O
preo a pagar a maior complexidade no momento de codificao e decodificao do indivduo. Esta codificao pouco usada atualmente.
z A discretizao do espao de busca real aumenta a dimenso do problema.
Para representar estas variveis (reais) como nmeros binrios, primeiro necessrio discretizar o espao de busca real e ento criar uma relao entre estes valores e nmeros binrios.
Queremos otimizar a temperatura de operao e a concentrao de reagente na alimentao de
um processo. A temperatura pode variar entre 50 e 150oC, e a concentrao de reagente na
corrente de alimentao, entre 15 e 30 g/l. A varivel a otimizar x = [ T C ]T um vetor de
2 posies. O tamanho da varivel codificada, no entanto ser funo do nmero de divises
adotado. Se forem usadas 3 divises do intervalo, haver 4 valores possveis para cada varivel, sendo necessrios 2 bits para representar cada uma delas. Cada indivduo seria representado por um vetor de 4 posies.
T (oC)
50
66,6
83,3
100

codificao
00
01
10
11

C
15,0
20,0
25,0
30,0

codificao
00
01
10
11

Provavelmente a preciso requerida seria maior do que esta. O tamanho do vetor codificado
aumenta conforma a preciso aumenta, conforme detalhado na tabela abaixo.

6
nmero de intervalos:
tamanho do intervalo:
em T
em C
bits necessrios
tamanho do indivduo

15

63

255

1023

4095

100
15
1
2

33,3
5
2
4

14,3
2,1
3
6

6,7
1,0
4
8

1,6
0,2
6
12

0,4
0,06
8
16

0,1
0,02
10
20

0,02
0,004
12
24

A utilizao de representaes em nveis de abstrao mais altos tem sido investigada. Em


particular, a codificao empregando nmeros reais vm ganhando muito fora em problemas de
otimizao paramtrica, os mais comuns em engenharia.
Como um exemplo, imagine que est sendo resolvido um problema em que as variveis so
as fraes molares dos 10 compostos em uma mistura gasosa. Apenas 9 precisam ser parte do nosso problema, e o outro pode ser calculado atravs da restrio de soma de fraes molares. Se fosse
necessria uma preciso de 0,01 , seriam necessrios 7 dgitos para cada varivel, ou seja, um vetor
de 63 dgitos. Empregando codificao real, um vetor de 7 posies de variveis reais seria empregado, e nenhuma considerao a priori sobre a preciso do mtodo seria necessria. Compare na
figura abaixo as duas representaes do mesmo indivduo. A codificao real representa uma enorme simplificao na representao de vetores reais, e empregada rotineiramente nos problemas de
otimizao paramtrica na engenharia.
1 01001 11010 01011 01010 1101 01010 00010 10101 01010 10010 10100 00111 010

0,03 0,16 0,08 0,05 0,11 0,12 0,11

Um outro exemplo o Problema do Caixeiro Viajante com N cidades. Empregando codificao binria, so necessrios m dgitos para codificar cada cidade, sendo m o menor nmero inteiro
tal que m > log 2 N . Logo, o vetor binrio que representa cada rota ter tamanho m.N. Alm disto,
vimos que praticamente todos os indivduos gerados pela aplicao dos operadores clssicos do
tamanho sero esprios, ou no vlidos. Os trabalhos reportados na literatura que empregam algoritmos genticos para resolver o PCV empregam o que alguns autores chamaram de codificao
inteira, em que as cidades so numeradas de 1 a N. Cada rota representada por um vetor inteiro de
dimenso N em que os cdigos das cidades so ordenados segundo a ordem de visita s cidades.
Para trabalhar com estas codificaes diferenciadas, precisam ser criados operadores especficos. Estes algoritmos particularizados para o problema de interesse costumas ser muito mais eficientes que um AG genrico, j que atravs da codificao e dos operadores so incorporadas informaes sobre o espao de solues.
voltar para ALGORITMOS GENTICOS

3.9.

Operadores Genticos Modificados

Para trabalhar com estas codificaes diferenciadas, precisam ser criados operadores especficos. Estes algoritmos particularizados para o problema de interesse costumam ser muito mais eficientes que um AG genrico, j que atravs da codificao e dos operadores so incorporadas informaes sobre o espao de solues. Cada codificao impe uma forma diferente de adaptao
dos operadores.
Operador Cruzamento
O operador cruzamento deve combinar a informao de dois indivduos e gerar um ou dois
outros. Algumas alternativas de cruzamento quando se utiliza codificao real esto exemplificadas
na figura abaixo.

Podemos seguir as mesmas idias dos operadores clssicos (binrios) e copiar parte da informao de cada pai, empregando um ou mais pontos de corte - respectivamente, (a) e (b) na figura
abaixo. Estes pontos de corte so sorteados aleatoriamente para cada par de solues.

Outra alternativa bastante comum fazer a mdia aritmtica de cada posio dos dois vetores,
tal que F1i = (Ai + Bi)/2. Este operador atua deterministicamente sobre o par de solues aleatoriamente escolhido, e apenas um filho por cruzamento gerado, como se observa no esquema (c).

Podemos tambm fazer uma mdia ponderada dos dois vetores empregando um peso aleatrio
p, de forma que cada posio F1i = (1-p) Ai + p Bi. O segundo filho pode ser gerado pela inverso da
regra de cruzamento, ou seja, F2i = (1-p) Bi + p Ai. Observe que o cruzamento por mdia aritmtica
corresponde ao sorteio ponderado com p=0,5. Na figura abaixo o esquema (d) mostra a aplicao
deste operador com peso p=0,2.

pais

filhos
(a)
F1

(b)
F2

F1

F2

(c)

(d) p =0,2

F1

F1

F2

0,53

0,84

0,53 0,84

0,53 0,84

0,69

0,78 0,59

0,04

0,31

0,04 0,31

0,31 0,04

0,18

0,26 0,09

0,85

0,19

0,19 0,85

0,19 0,85

0,52

0,32 0,72

0,04

0,03

0,03 0,04

0,03 0,04

0,04

0,03 0,04

0,68

0,26

0,26 0,68

0,68 0,26

0,47

0,34 0,60

0,69

0,78

0,78 0,69

0,69 0,78

0,73

0,76 0,71

8
Um problema do caixeiro viajante possui a peculiaridade de que no pode haver repetio
dentro do vetor de inteiros. Se os operadores levarem isto em considerao, sempre geraro indivduos vlidos. Um exemplo de operador cruzamento especfico poderia ser o mostrado abaixo:
x

sortear um ponto de corte aleatoriamente;


dividir a rota A em dois pedaos;

10

10

10

10

10

eliminar da soluo B as cidades que esto no primeiro pedao de A e formar o filho F1 pela concatenao deste pedao de A com o que sobrou de B,
mantendo a ordem das cidades.
repetir o procedimento com o segundo pedao de A
para gerar o segundo filho F2, se desejado.
Na figura ao lado, foi ilustrado o procedimento para
um PCV com 10 cidades. Foi sorteada a quinta cidade
como ponto de corte.

10

F1

10

F2

10

Operador Mutao
O operador deve introduzir mudanas aleatrias em uma parte especfica da representao
do indivduo. Podem ser mantidas as idias dos operadores clssicos, apenas alterando-se sua implementao. Um possvel operador mutao para codificao real consistiria em sortear uma posio do vetor e alter-la (sortear qualquer ponto no domnio desta varivel ou alter-la em um percentual aleatoriamente determinado). Para o PCV, poderamos simplesmente trocar a ordem de visita a duas cidades, contguas ou no na rota associada quekle indivduo. Estas idias esto aplicadas nos esquemas abaixo.
x

B'

0,84

0,84

0,31

0,31

0,19

0,22

0,03

0,03

0,26

0,26

0,78

0,78

10

B'

10

10

B'

10

Apenas alguns exemplos ilustrativos de operadores genticos adaptados foram apresentados.


H muitas variantes destes operadores ou mesmo operadores fundamentalmente diferentes sendo
citados na literatura. Como leitura complementar sobre a incorporao de estruturas de dados a
codificao e aos operadores, sugere-se o fascinante livro de Michalewicz (1996), Genetic Algorithms + Data Structures = Evolution Programs: Third Edition.
voltar para ALGORITMOS GENTICOS

3.10. Outros operadores: elitismo, reinicializao e niching


Vrios operadores diferentes foram sendo acrescentados aos Algoritmos Genticos com o
passar dos anos e o acmulo da experincia na rea. Alguns, por serem particularmente interessantes e de carter geral, merecem destaque.
O operador elitismo consiste em replicar o melhor indivduo de uma gerao, inalterado, na
gerao subsequente. Com isto, espera-se que a melhor soluo encontrada at o momento no se
perca devido ao carter estocstico do mtodo. Quem diria, os Algoritmos Genticos j vm fazendo clonagem h muitos anos!
A reinicializao peridica da populao, para muitos autores, considerada como um operador que evita a estagnao dos AGs (fenmeno demonstrado chamado de genetic drift). Aps um
certo nmero de geraes, a populao converge para uma regio do espao e o valor da funo
objetivo pouco melhorado ao longo de vrias geraes. Eventualmente, o operador mutao levar
um dos indivduos para uma regio melhor do espao de solues, e este indivduo mais evoludo
ir disseminar seus genes na populao. No entanto, esta evoluo poderia demorar um nmero
muito grande de geraes, tornando o custo computacional do algoritmo proibitivo. Uma medida
para acelerar a convergncia do cdigo a reinicializao da populao. Os melhores indivduos da
populao so armazenados, a populao aleatoriamente definida (como na partida do algoritmo)
e em seguida estes melhores indivduos so inseridos na populao. Com isto, espera-se acelerar a
convergncia do algoritmo.
Uma outra estratgia interessante a estratgia de niching. Pode haver uma regio indesejada do espao de busca, por corresponder a um mnimo local, por representar uma regio de solues
inviveis, ou por outro motivo qualquer. Para fazer com que esta regio seja evitada pelos indivduos, costuma-se acrescentar, ao valor da funo objetivo, uma penalidade proporcional proximidade desta regio. Assim, os indivduos nesta regio tero menos probabilidade de se reproduzirem e
a populao se afastar desta regio.
H muitos operadores diferenciados na literatura. A maior parte deles tenta incorporar conhecimento sobre o problema ou sobre o espao de busca nos operadores genticos clssicos. lembre-se que se uma codificao diferente da binria for adotada, todos os operadores devero ser definidos de acordo com esta codificao particular.
voltar para ALGORITMOS GENTICOS

3.11. Variantes clssicas: Micro AG e AG Paralelo


Apesar do seu carter genrico, o desempenho dos AGs na sua forma convencional no se
mostra satisfatrio para muitos problemas que j possuem algoritmos eficientes para a sua soluo
aproximada. H alguns conjuntos de modificaes que j so clssicos. Entre eles, o Micro AG e o
AG paralelo.

10
No Micro Algoritmo Gentico (Micro GA), empregada uma populao muito pequena
(at 10 indivduos) e altas taxas de mutao (at 20%). A reinicializao freqente e o elitismo so
cruciais para a convergncia do algoritmo. Para vrias aplicaes, h uma reduo drstica do tempo computacional.
Outra variante o Algoritmo Gentico Paralelo, onde algumas populaes evoluem em paralelo, como se vivessem em ilhas isoladas. De tempos em tempos, ocorre a migrao de indivduos
de uma ilha para a outra, e ocorre a injeo de material gentico novo nas populaes. O nmero de
indivduos a migrar e a freqncia com que ocorre esta migrao so alguns dos parmetros do
novo operador migrao.
voltar para ALGORITMOS GENTICOS

3.12. Exemplos Ilustrativos


Na homepage do curso h um exemplo de aplicao de algoritmo gentico com codificao
real. O j conhecido problema de minimizao de uma funo polinomial utilizado. Todos os parmetros adotados e operadores usados esto descritos no programa. Observe que a convergncia do
AG muito mais rpida que a do Recozimento Simulado, j que empregamos uma populao de
solues tentativa, e no apenas uma.
voltar para ALGORITMOS GENTICOS

1
4. MTODO DE ENXAME DE PARTCULAS ( PARTICLE SWARM)
4.1. Analogia Comportamental: todos por um e um por todos
4.2. A Traduo Matemtica: o algoritmo bsico
4.3. A Programao do Algoritmo
4.4. Exemplos Ilustrativos
4. MTODO DE ENXAME DE PARTCULAS
4.1. Analogia Comportamental : todos por um e um por todos

Figura 1 Uma imensa nuvem de pssaros [ red-billed queleas] retornam a seu viveiro natural
ao pr do sol, Delta do Okavango, Botswana, frica
O mtodo de enxame de partculas pode ser explicado de uma forma simples atravs de uma
analogia de comportamento social apresentada por M. Clerc [ The Swarm & The Queen. Towards a
Deterministic and Adaptive Particle Swarm Optimization de Maurice Clerc Artigo
disponibilizado na Internet na Home Page http://clerc.maurice.free.fr/PSO/]. O autor sugere a
seguinte situao fictcia: Suponha que voc e alguns amigos esto busca de um tesouro
enterrado em uma ilha. Cada membro da expedio tem um rdio-comunicador-receptor, podendo
se comunicar com todos os membros informando-os sobre a situao em que se encontra, bem
como ouvir todos os comunicados trocados entre os membros. Assim, cada explorador sabe a
localizao de toda a equipe e est informado sobre a situao (quo prximo est do encontro do
tesouro) de cada membro. O seu prximo deslocamento ser feito fundamentado em sua prpria
experincia e nos relatos ouvidos em seu rdio. Desta forma, havendo real cooperao e troca de
informaes entre os membros da equipe, o tesouro ser achado em um tempo bem menor do que se
voc fosse escavar sozinho vrios buracos na ilha... .Em suma, o aspecto cooperativo da busca do
tesouro poderia ter como epteto a famosa frase encontrada no final do Captulo 9 do livro Os Trs
Mosqueteiros de Alexandre Dumas todos por um e um por todos, este nosso lema, no ? .

2
Este mesmo comportamento cooperativo e de troca de informaes encontrado entre vrias
espcies animais: em revoadas de pssaros, em cardumes de peixes, em enxames de abelhas, etc.
Cientistas de diferentes reas tentaram modelar estes comportamentos e simul-los, em particular
Reynolds [ Reynolds, C.W. (1987) Flocks, herds and schools : a distributed behavioral model
em Computer Graphics, 21 (4): 25-34] discute a riqueza do movimento de revoadas de pssaros, de
manadas de animais terrestres ou de cardumes de peixes procurando estabelecer regras bsicas do
comportamento individual que justifiquem o comportamento do grupo. O objetivo do trabalho foi o
desenvolvimento da animao, por computao grfica, do movimento de cada membro do grupo,
estando portanto fora do escopo do presente curso. Entretanto, a concluso mais pertinente do artigo
se refere ao fato do movimento simulado da revoada de pssaros ser o resultado de comportamentos
relativamente simples do movimento de cada um dos indivduos (pssaros). Um outro trabalho
pioneiro o de Heppner & Grenander [ Heppner, F & Grenander, U. (1990) A stochastic
nonlinear model for coordinated birds flocks em The Ubiquity of Chaos Editado por S. Krasner
, AAAS Publications, Washington DC] trabalho conjunto entre um bilogo (primeiro autor!) e um
matemtico que busca estabelecer as regras que descrevam a perfeita sincronia do movimento de
um grande nmero de pssaros tanto em suas sbitas e bem orquestradas mudanas de direo,
como no seu espalhamento e posterior reagrupamento.
O primeiro trabalho sobre o algoritmo de otimizao natural denominado ENXAME DE
PARTCULAS( Particle swarm em Ingls) o de Eberhart & Kennedy [ Kennedy, J. & Eberhart,
R. (1995), - Particle Swarm Optimization em Proceedings IEEE International Conference on
Neural Networks (Perth, Austrlia) pginas 1942-1948 , artigo disponibilizado na Internet na Home
Page:
http://www.engr.iupui.edu/~shi/Coference/psopap4.html]
que,
motivados
pelo
comportamento gregrio do movimento de animais ( pssaros, peixes, abelhas, gado, etc.) ,
propuseram um algoritmo de otimizao no determinstico bastante eficiente, robusto e de simples
implementao computacional.
A traduo matemtica do algoritmo de Eberhart & Kennedy apresentado no prximo
item, entendendo-se que o termo partcula se refere a cada um dos indivduos do grupo (termo
equivalente a indivduo no algoritmo gentico) e o termo enxame se refere ao grupo de indivduos.
importante enfatizar que neste algoritmo, de forma distinta do algoritmo gentico, o indivduo (a
partcula) mantido ntegro durante todo o processo, sobrevivendo sem envelhecer at o final do
procedimento, a nica modificao sofrida pelo indivduo sua localizao no espao.
voltar para ENXAME DE PARTCULAS

4.2. A Traduo Matemtica: o algoritmo bsico


No artigo de Eberhart & Kennedy (1995) no se encontra demonstrao formal alguma do
algoritmo proposto pelos autores, o mtodo proposto j est apresentado em sua forma recursiva
adequada para implementao computacional. Uma tentativa de apresentar este algoritmo
apresentada neste item, resultando desta nova formulao uma verso modificada do algoritmo

3
originalmente proposto.
A idia fundamental do algoritmo o estabelecimento, em cada passo ou iterao, do
movimento de cada uma das partculas do grupo composto por n partculas (sendo o valor de n
escolhido pelo usurio!). Este movimento norteado pela lembrana da melhor posio (melhor
valor da funo objetivo) no espao que a partcula j encontrou em seu movimento e no
conhecimento da melhor posio j encontrada por todo o grupo. A utilizao da melhor posio
individual da partcula pode ser classificada como uma espcie de autoconfiana (ou
coloquialmente como o comportamento sou-mais-eu!) e a informao da melhor posio do grupo
pode ser classificada como um comportamento gregrio do indivduo (ou coloquialmente como o
comportamento maria-vai-com-as-outras!). Para assegurar a existncia de uma certa personalidade
em cada indivduo se dota cada indivduo do grupo de um comportamento distinto e aleatrio em
que a ponderao destas duas informaes sorteada ao longo do processo, assumindo assim um
valor diferente para cada uma das partculas e variando este valor ao longo do processo iterativo
(procurando traduzir uma certa mudana humor do indivduo ao longo do tempo). Assim,
considerando o movimento da partcula em um plano ou em um espao bi-dimensional e sua
localizao neste espao caracterizada por suas coordenadas:
Partcula k posio no plano xy no passo ou iterao i:

(x

(i ) (i )
k , yk

) onde k = 1, 2,...,n

(nmero total de partculas no enxame) e i = 1, 2,...,m (nmero total de passos); melhor posio da

partcula k : x kmelhor , y kmelhor e melhor posio j encontrada pelo enxame (todas as partculas)
x global , y global .

A Fora Motriz que movimentar cada uma das partculas ser proporcional distncia
entre a posio atual da partcula e o ponto resultante da mdia ponderada entre a melhor posio
individual da partcula e a melhor posio do enxame, isto :

X (i ) x ( melhor ) + (1 ) x
global
()
k
X ki = (ki ) =
onde e so dois nmeros aleatrios [0,1].

Y y ( melhor ) + (1 ) y
global
k
k

y kmelhor

MELHOR INDIVIDUAL

y melhor

MELHOR GLOBAL

x kmelhor

x melhor

O tringulo sombreado na figura acima representa a regio no plano xy de todos os

4
pontos X k(i ) .
Considerando o movimento de cada partcula anlogo ao do movimento do sistema
mecnico carrinho+mola+amortecedor resulta no balano de foras (em forma adimensional!):
Na direo x:

e na direo y:

d 2 x k (t )
dt 2

= 2 k

d 2 y k (t )
dt

dx k (t )
K x k (t ) X k(i )
dt

= 2 k

dy k (t )
K y k (t ) Yk(i )
dt

estas duas equaes diferenciais so resolvidas no intervalo de tempo (tempo artificial


adimensional, que na realidade mede, em sua forma discreta, as iteraes do processo) :
t i = i t < t (i + 1) t = t i +1 . No incio do intervalo se tem: x k (t i ) = x k(i ) ; y k (t i ) = y k(i ) ;
dx k (t )
dy k (t )
= (ki ) e
= (ki ) (que so os dois componentes do vetor velocidade da partcula
dt t
dt t
i

no incio do intervalo). Os parmetros k e k so dois nmeros aleatrios (adimensionais!) [0,1]


e a constante K um valor qualquer (escolhido pelo usurio) 1.
Reescrevendo as duas equaes diferenciais em termos dos dois componentes do vetor
velocidade resulta no sistema de equaes diferenciais de primeira ordem:

d k (t )
(i )
dt = 2 k k (t ) K x k (t ) X k

dx k (t )

= k (t )

dt
d (t )
k = 2 k k (t ) K y k (t ) Y (i )
k
dt
dy k (t )

= k (t )

dt

Resolvendo numericamente estas equaes pelo mtodo de Euler explcito, resulta no final
do intervalo:

(i +1) = (i ) 2 t (i ) K t x (i ) X (i )
k
k
k
k
k
k
(i )
(
)
(
+
1
i
i)

xk
= x k + t k
(i +1)
(
i)
= k 2 k t (ki ) K t y k(i ) Yk(i )
k

y k(i +1) = y k(i ) + t (ki )

Definindo as variveis : V x = t e V y = t resulta:

V (i +1) = V (i ) 2 t V (i ) K t 2 x (i ) X (i )
k
x, k
x, k
k
k
x, k
(
)
i
(
)
(
)
+
1
i
i

xk
= x k + V x, k

(i )
(i )
(i )
(i )
(i )
2
V y , k = V y , k 2 k t V y, k K t y k Yk

y k(i +1) = y k(i ) + V y(i, )k

Agrupando os parmetros das expresses acima chega-se forma iterativa do mtodo


conforme sugerida por Eberhart & Kennedy (1995)1:

[x

(i )
global x k

[y

(i )
global y k

V (i +1) = (i ) V (i ) + c x melhor x (i ) + c
1
2
x, k
k
k
x, k
(
)
i
(
)
(
)
+
1
+
1
i
i

= xk + V x, k
xk

(i +1)
(i ) (i )
melhor
y k(i ) + c 2
V y , k = V y , k + c1 y k

y k(i +1) = y k(i ) + V y(i, k+1)

para i = 0 , 1, ..., m-1; sugere-se adotar a ponderao (i) decrescente com i de forma linear segundo

i
a expresso: (i ) = inicial + final inicial
com final < inicial; as constantes c1 e c2
m 1
so valores reais positivos escolhidos pelo usurio e os parmetros , , e so valores
randmicos ou aleatrios sorteados em cada passo do processo iterativo. As posies e velocidades
iniciais das partculas podem ser definidas pelo usurio ou ento geradas aleatoriamente pelo
computador.
Uma forma alternativa do procedimento recursivo pode tambm ser obtida (sendo
referenciada a partir deste instante como algoritmo modificado de enxame de partculas,
abreviadamente PSO-modificado, em contraposio ao de Eberhart & Kennedy denominado de
PSO-clssico) atravs da soluo analtica, em cada intervalo de tempo, do sistema original de
EDOs:
d 2 x k (t )
dx (t )
+ 2 k k + K

dt 2
dt
2
d y k (t ) + 2 dy k (t ) + K
k
dt 2
dt

[x (t ) X ] = 0
[y (t ) Y ] = 0
k

(i )
k

(i )
k

congelando os valores de X k(i ) e Yk(i ) em seus valores no incio do intervalo, sorteando os valores
de k e k apenas uma vez em ti e resolvendo o sistema com as condies iniciais:

Note que na discretizao das equaes diferenciais o procedimento de integrao da posio o Euler implcito

enquanto que o das velocidades o Euler explcito!

6
dx (t )
dy k (t )
= (ki ) e
= (ki ) , resulta:
x k (t i ) = x k(i ) ; y k (t i ) = y k(i ) ; k
dt t
dt t
i

[ (

(i +1)
sen ( t )
(i )
(i )
(i )
(i )
(i )
= X k + exp( k t ) x k X k cos( t ) + k x k X k + (ki )

xk

(
)
sen
t

(i +1) = exp( t ) (i ) cos( t ) 2 + 2 x (i ) X (i ) + (i )

k
k
k k
k
k
k
k

(
sen
t )

i
i
i
i
i
(
)
(
)
(
)
(
)
(
)
(
)
(
)
+
i
i
1
y
= Yk + exp( k t ) y k Yk cos( t ) + k y k Yk + k

(
)

sen
t

(i )
i
i
(
)
(
)
(
(
)
i +1)
i
= exp( k t ) k cos( t ) 2 + k2 y k Yk + k k
k

[(

[(

)(

) ]
[ (
)
)(
]

onde: = K 2k e = K 2k .
Esta forma modificada do algoritmo s necessita (alm da especificao do nmero de
partculas , do nmero de iteraes e dos valores iniciais das posies e velocidades das partculas)
da especificao dos parmetros t > 0 e K [K 1 para assegurar o movimento oscilatrio
amortecido das partculas!]. Este a grande vantagem deste mtodo modificado (no algoritmo
clssico se deve especificar os valores das constantes c1, c2 e de inicial e final) e a maior
complexidade do algoritmo apenas aparente j que o procedimento recursivo anlogo ao do
clssico diferindo apenas no clculo em cada passo dos valores de funes trigonomtricas simples
(seno e cosseno) e da funo exponencial o que no aumenta em nada o custo computacional do
cdigo.
voltar para ENXAME DE PARTCULAS

4.3. A Programao do Algoritmo


As duas formas do algoritmo so, sob o ponto de vista de implementao, semelhantes
diferindo apenas nas expresses matemticas de clculo da posio e da velocidade de cada
partcula ao cabo de cada iterao e nas especificaes das constantes pertinentes.
O algoritmo PSO-clssico para a busca do mximo de uma funo f(x,y) pode assim ser
sumarizado pelo pseudo-cdigo abaixo:
Etapa Inicial (Iterao zero): Entre com n (o nmero de partculas do enxame), m (o nmero
de iteraes), especifique os valores de final , inicial, c1, c2 e os valores mnimos e mximos de x e
de y. Gere as condies iniciais segundo o procedimento2:

Nos procedimentos a funo .rnd () gera nmeros aleatrios com distribuio uniforme entre 0(zero) e .

7
para k = 1, ...., n faa rnd (1) ; x k x min + ( x MAX x min ) e x kmelhor x k
rnd (1) ; y k y min + ( y MAX y min ) e y kmelhor y k
V x, k 0 e V y , k 0 (optou-se neste caso para partir com as partculas em
repouso!).
Faa x melhor x1 ; y melhor y1 ; f1( melhor ) f ( x1 , y1 ) e fglobal f1( melhor ) ;
Etapa a) para i = 2,...., n faa f i( melhor ) f ( xi , yi )
se f i( melhor ) > fglobal ento faa x melhor xi ; y melhor yi e
fglobal f i( melhor ) volte para o incio da Etapa a com o prximo i;
se f i( melhor ) fglobal volte para o incio da Etapa a com o prximo i;

i 1
Etapa 1 (Iterao i) P ara i = 1, ...., m faa inicial + final inicial

m 1
Etapa 1-a) Para k = 1,...,n faa: rnd (1) ; rnd (1) ; rnd (1) e rnd (1)

V x, k V x, k + c1 x kmelhor x k + c 2 x global x k

V y , k V y , k + c1 y kmelhor y k + c 2 y global y k
x k x k + V x, k e y k y k + V y , k
Se x k > x MAX faa x k x MAX e V x, k 0
Se x k < x min faa x k x min e V x, k 0
Se y k > y MAX faa y k y MAX e V y , k 0
Se y k < y min faa y k y min e V y , k 0
Calcule f atual f ( x k , y k )

8
Se f atual > f k(melhor ) faa f k( melhor ) f atual , x k( melhor ) x k e y k( melhor ) y k ;
verifique a seguir se f atual > fglobal faa fglobal f atual , x global x k e
y global y k ; caso f atual fglobal volte ao incio Etapa 1-a) com o prximo k se
k < n, caso contrrio [ k n] v para o incio da Etapa 1 com o prximo i se i < m,
caso contrrio [ i m] v para a Etapa 2
Se f atual f k(melhor ) volte ao incio Etapa 1-a) com o prximo k se k < n, caso
contrrio [ k n] v para o incio da Etapa 1 com o prximo i se i < m, caso contrrio
[ i m] v para a Etapa 2
Etapa 2 O processo iterativo terminou os melhores valores de x e y so : x global e y global e
neste ponto o valor da funo : fglobal

FIM
O algoritmo PSO-modificado para a busca do mximo de uma funo f(x,y) pode assim ser
sumarizado pelo pseudo-cdigo abaixo:
Etapa Inicial (Iterao zero): Entre com n (o nmero de partculas do enxame), m (o nmero
de iteraes), especifique os valores de t > 0 e K [K 1] e os valores mnimos e mximos de x e de
y. Gere as condies iniciais segundo o procedimento:
para k = 1, ...., n faa rnd (1) ; x k x min + ( x MAX x min ) e x kmelhor x k
rnd (1) ; y k y min + ( y MAX y min ) e y kmelhor y k
k 0 e k 0 (optou-se neste caso para partir com as partculas em
repouso!).
Faa x melhor x1 ; y melhor y1 ; f1( melhor ) f ( x1 , y1 ) e fglobal f1( melhor ) ;
Etapa a) para i = 2,...., n faa f i( melhor ) f ( xi , yi )
se f i( melhor ) > fglobal ento faa x melhor xi ; y melhor yi e
fglobal f i( melhor ) volte para o incio da Etapa a com o prximo i;

9
se f i( melhor ) fglobal volte para o incio da Etapa a com o prximo i;
Etapa 3 (Iterao i) P ara i = 1, ...., m execute Etapa 1-a)
Etapa 1-a) Para k = 1,...,n faa: rnd (1) ; rnd (1) ; rnd (1) e rnd (1)
Calcule : K 2 ; X x k( melhor ) + (1 ) x global ; A x k X ;
B

A + k
; f1 exp( t ) cos( t ) e f 2 exp( t ) sen( t )

x k X + A f1 + B f 2
k k f1 ( A + B ) f 2
Se x k > x MAX faa x k x MAX e k 0
Se x k < x min faa x k x min e k 0
a seguir calcule : K 2 ; Y y k( melhor ) + (1 ) y global C y k Y ;
D

C + k
; g1 exp( t ) cos( t ) e g 2 exp( t ) sen( t )

y k Y + C g1 + D g 2
k k g1 ( C + D ) g 2
Se y k > y MAX faa y k y MAX e k 0
Se y k < y min faa y k y min e k 0
Calcule f atual f ( x k , y k )
Se f atual > f k(melhor ) faa f k( melhor ) f atual , x k( melhor ) x k e y k( melhor ) y k ;
verifique a seguir se f atual > fglobal faa fglobal f atual , x global x k e
y global y k ; caso f atual fglobal volte ao incio Etapa 1-a) com o prximo k se

10
k < n, caso contrrio [ k n] v para o incio da Etapa 1 com o prximo i se i < m,
caso contrrio [ i m] v para a Etapa 2
Se f atual f k(melhor ) volte ao incio Etapa 1-a) com o prximo k se k < n, caso
contrrio [ k n] v para o incio da Etapa 1 com o prximo i se i < m, caso contrrio
[ i m] v para a Etapa 2
Etapa 4 O processo iterativo terminou os melhores valores de x e y so : x global e y global e
neste ponto o valor da funo : fglobal .

FIM
A seleo dos valores dos parmetros/constantes dos dois algoritmos uma tarefa de
tentativa-e-erro, a recomendao que se d nestes casos e para estes tipos de algoritmos a
execuo de um grande nmero de experimentos numricos. A prtica adquirida atravs da
implementao computacional dos algoritmos e a resoluo de exerccios simples fundamental
para se adquirir alguma sensibilidade sobre os valores destes parmetros/constantes. Mesmo assim
se deve alertar que no h valores mgicos destes parmetros/constantes e sempre desconfie de
artigos cientficos que sugiram de forma categrica valores particulares destes parmetros como os
melhores.
voltar para ENXAME DE PARTCULAS

4.4. Exemplos Ilustrativos


Para entender o significado dos parmetros do mtodo, considere a mesma funo
considerada nos algoritmos genticos, que a minimizao de F(x) apresentada abaixo.
F( x ) =

1
10000

( x + 10 ) ( x + 6 ) ( x + 5 ) ( x + 1 ) ( x 7 ) ( x 10 )

11

Figura 2

Espao de busca da funo teste

Observe que existem mnimos locais em x -8,834, x -2,546 e x 8,817, sendo este

ltimo o mnimo global. A funo apresenta mximos locais em x -5,518 e x 3,914.

Figura 3 Extremos da funo teste

As duas verses do PSO foram implementadas computacionalmente. Abaixo mostrada a


evoluo dos valores timos da funo e da varivel x ao longo do procedimento evolutivo com a
forma clssica do algoritmo tendo sido utilizado os seguintes conjunto de parmetros: inicial=0,9 ;
final=0 ; c1=c2 =1; xMAX = +12 e xmin = -12.Adotando-se uma populao de 10(dez) partculas, um
mximo de 20 (vinte) iteraes e partindo de localizaes iniciais aleatrias (entre 12 e +12) e do
repouso.

12

8.8

X n+ 1 , i 7.5

12 X n , i
8.6

8.817

7.022

8.825

f otimo

8.4
8.263 8.2

10

15

8.129 8.5

20

10

15

20
m

Figura 4 Evoluo dos Melhores Valores

Figura 5 Evoluo dos Melhores Valores

Globais da Funo Teste

Globais da Varivel

Uma

animao

desta

soluo

pode

ser

reproduzida

clicando-se

no

programa

Univarivel_PSO_clssico.
Abaixo mostrada a evoluo dos valores timos da funo e da varivel x ao longo do
procedimento evolutivo com a forma modificada do algoritmo tendo sido utilizado os seguintes
conjunto de parmetros:t=1; K = 2 ; xMAX = +12 e xmin = -12.Adotando-se uma populao de
10(dez) partculas, um mximo de 20 (vinte) iteraes e partindo de localizaes iniciais aleatrias
(entre 12 e +12) e do repouso.
7.254

9.246

7.5

12 X

n+ 1 , i

f otimo

9.2
n, i

8.817
9

8.129

8.5

10

15

8.81 8.8

20

10

15

20

Figura 6 Evoluo dos Melhores Valores

Figura 7 Evoluo dos Melhores Valores

Globais da Funo Teste

Globais da Varivel

Uma

animao

desta

Univarivel_PSO_modificado.

soluo

pode

ser

reproduzida

clicando-se

no

programa

13
Notem que o desempenho das duas formas do algoritmo idntico, no sendo possvel
afirmar qual das duas formas mais eficiente.
O funcionamento do algoritmo de enxame de partculas (PSO para os ntimos) agora
ilustrado com a maximizao de uma funo de duas variveis, a chamada Funo Alpina que
representada pela equao :
f ( x, y ) =

x y sen ( x ) sen( y )

no domnio : 0 < x <10 e 0 < y < 10.


Esta funo mostrada nas duas figuras a seguir:

Figura 9 A Funo Alpina em Curvas de Nvel


Figura 8 A Funo Alpina

O mximo global desta funo, na regio considerada, em x= y 7,917 onde a funo


assume o valor fMAXIMO 7, 8856.
Abaixo mostrada a evoluo dos valores timos da funo ao longo do
procedimento evolutivo com a forma clssica do algoritmo tendo sido utilizado os seguintes
conjunto de parmetros: inicial=0,9 ; final=0 ; c1=c2 =1; xMAX= yMAX = +10 e xmin = ymin = 0
.Adotando-se uma populao de 20(vinte) partculas, um mximo de 20 (vinte) iteraes e partindo
de localizaes iniciais aleatrias [entre (0,0) e (10,10)] e do repouso.

14
7.8856

xi

Valor timo

Otimo
4
2.89336
2

10

15

20
20

Figura 10 Evoluo dos Melhores Valores Globais da Funo Alpina


Uma

animao

desta

soluo

pode

ser

reproduzida

clicando-se

no

programa

Alpina_PSO_Clssico.
Abaixo mostrada a evoluo dos valores timos da funo ao longo do
procedimento evolutivo com a forma modificada do algoritmo tendo sido utilizado os seguintes
conjunto de parmetros: :t=1; K = 2; xMAX= yMAX = +10 e xmin = ymin = 0 .Adotando-se uma
populao de 20(vinte) partculas, um mximo de 20 (vinte) iteraes e partindo de localizaes
iniciais aleatrias [entre (0,0) e (10,10)] e do repouso.
7.8856

xi

Valor timo

Otimo

6
5.6
0

10

15

20
m

Figura 11 Evoluo dos Melhores Valores Globais da Funo Alpina


Uma

animao

desta

soluo

pode

ser

reproduzida

clicando-se

no

programa

Alpina_PSO_Modificado.
importante novamente enfatizar que os melhores valores dos parmetros/constantes das
duas formas do algoritmo so muito dependentes do problema particular que se est resolvendo e
que uma anlise da sensibilidade da resoluo do problema a valores particulares dos

15
parmetros/constantes s pode ser feita aps a execuo de um grande nmero de simulaes. Desta
maneira, recomendamos fortemente que sejam feitos todos os exerccios da lista sobre o assunto e
que dvidas sejam tiradas por E-mail ou durante as sesses do chat-room.
voltar para ENXAME DE PARTCULAS

1
4. MTODO DO FORMIGUEIRO (ANT COLONY OPTIMIZATION ACO)
4.1. Analogia Comportamental: a busca de alimentos em um formigueiro
4.2. A Traduo Matemtica: o algoritmo bsico ( verso discreta)
4.3. A Programao do Algoritmo
4.4. Exemplo Ilustrativo: O Problema do Caixeiro Viajante (PCV)
4. MTODO DO FORMIGUEIRO (ANT COLONY OPTIMIZATION)
4.1. Analogia Comportamental : a busca de alimento em um formigueiro.

Figura 1 Foto mostrando o aspecto cooperativo do trabalho de formigas ao transportar uma


folha para o formigueiro.
O mtodo do formigueiro (ant colony optimization1 ACO) o mtodo de otimizao que tenta
imitar o comportamento coletivo de formigas quando saem busca de alimentos. As formigas, em
um formigueiro, executam tarefas coletivas e tomam decises que requerem um alto grau de
coordenao tais como: a construo do formigueiro, a alimentao da ninhada, o armazenamento e
busca de alimento e assim por diante.
No experimento esquematizado na Figura 2, as formigas descobrem de forma coletiva qual o
menor caminho que separa o formigueiro de uma fonte de alimento. Nos experimentos conduzidos
com a espcie Linepithaema humile, um alimento separado do formigueiro por uma trilha com

um bom e pioneiro trabalho sobre o assunto o artigo de : Bonabeau, E. , Dorigo, M. & Theraulaz, G. Inspiration

for optimization from social insect behaviour em NATURE , vol 406, pginas 39 a 42 de 6 de julho de 2000

2
dois ramos. O ramo maior r vezes maior que o menor. No final do experimento todas as formigas
escolhem o menor caminho se r for suficientemente elevado (no experimento se adotou r=2 ). Isto
ocorre devido ao fato das formigas, quando em movimento, secretarem no solo uma certa
quantidade de feromnio. Este feromnio, por ser uma substncia biologicamente muito ativa,
funciona como chamariz para outras formigas. No experimento da Figura 2, as primeiras formigas a
retornarem ao formigueiro com o alimento so aquelas que percorreram o caminho mais curto duas
vezes (na ida e na volta). Assim, quando novas formigas se encontrarem nas duas bifurcaes do
caminho daro preferncia ao caminho mais curto por ter uma maior concentrao de feromnio.

Figura 2 Diagrama mostrando as trilhas de feromnio que permitem s


formigas o armazenamento de alimentos com maior eficincia.
Duas formigas deixam o formigueiro em um mesmo instante (diagrama superior), cada uma
delas tomando um caminho diferente e marcando-o com feromnio. A formiga que percorreu o
caminho mais curto retorna ao formigueiro antes da outra (diagrama inferior). Assim, a trilha
mais curta est, neste instante, marcada com o dobro de quantidade de feromnio do que o
caminho mais longo. Este fato faz com que o caminho mais curto atraia uma maior quantidade
de formiga do que o mais longo.

O mesmo experimento foi refeito, tornando disponvel s formigas o caminho mais curto
apenas aps um determinado tempo. Neste caso, as formigas no escolheram o caminho mais curto
devido ao fato do caminho mais longo j estar marcado com feromnio quando o mais curto
disponibilizado. Entretanto, tal comportamento no seria desejvel em algoritmos de otimizao,
quando importante que o caminho mais curto seja sempre o preferencialmente selecionado mesmo
se disponibilizado aps transcorrido um certo tempo. A simulao deste comportamento poderia ser
efetuada atravs da considerao de uma taxa de evaporao do feromnio, traduzindo assim a
maior dificuldade de manuteno do trao de feromnio em trilhas mais longas. Nos experimentos
com a formiga Linepithaema humile, apesar do decaimento do trao de feromnio estar presente,
ocorre a uma taxa to baixa (ou vida mdia to elevada) que no foi possvel verificar tal
comportamento.

3
A primeira verso do algoritmo ACO foi desenvolvida por Dorigo & Gambardella2 para a
resoluo do Problema do Caixeiro Viajante, que um problema de otimizao combinatorial de
busca em um espao de permutao. Este algoritmo fundamentado na distribuio de m formigas
em n cidades e em permitir que cada uma destas formigas percorra um caminho fechado passando
apenas uma vez por cada uma destas n cidades.
As duas caractersticas fundamentais deste algoritmo so:
i-) Seleo da Prxima Cidade: a forma com que cada uma das formigas estando em uma
determinada cidade (cidade i) escolhe a prxima cidade (cidade j), excluindo em sua seleo
todas as cidades j visitadas. Esta seleo feita de uma forma aleatria em forma de roleta
(ver item 3-7-a do curso!), associando-se a cada trilha de ligao com a cidade i a seguinte
funo densidade de probalidade:
se a cidade j j foi visitada
0

ij d
p ij =
ij se a cidade j no foi ainda visitada

p ik

k =1

( )

Onde:
ij : intensidade da trilha de feromnio na trilha que liga a cidade i cidade j 3(uma
grandeza adimensional que expressa o valor relativo entre estas intensidades);
dij : distncia entre a cidade i e a cidade j ( tambm uma grandeza adimensional que
expressa o valor relativo entre estas distncias);
e parmetros positivos que expressam a importncia relativa da intensidade de
feromnio e do tamanho da trilha ij , respectivamente;4
Para saber se a cidade j j foi visitada, cada formiga mantm um registro das cidades

Dorigo, M. & Gambardella, L.M. Ant Colonies for the Tavelling Salesman Problem-Biosystems, Vol. 43, pp 73-

81 (1997).
3

No incio do procedimento adota-se o valor de ij = 0 (>0) para i

Note que se adotando =0 a busca da prxima cidade independe totalmente da marcao de feromnio na trilha. Por

outro lado, adotando-se =0 apenas a intensidade de marcao de feromnio orienta a seleo da prxima cidade. A
recomendao na literatura para adotar os valores de =1 e =5.

4
anteriormente visitadas at o momento (este registro, que atualizado cada vez que uma
nova cidade visitada, se chama de lista tabu).
Aps o clculo de pij para todos os valores de j, assim se procede:
Fatia0 =0; Fatia J =

p ij
j =1

para J = 1, 2, L , (n - 1) e Fatian=1; sorteia-se a seguir um nmero

aleatrio (de distribuio uniforme), a prxima cidade a ser visitada a cidade J , sendo J
o valor do ndice da Fatia tal que : Fatia J 1 < Fatia J .
Para ilustrar este procedimento considera-se o caso de 5 cidades com as seguintes
coordenadas:
Cidade

(0;15)

(20;0)

(20;15)

(20;25)

(25;15)

( cor correspondente
no diagrama)

Localizao
(coordenadas)

O diagrama abaixo mostra a localizao de cada uma das cidades:

10

20

15

Desta foram a matriz que traduz as distncias entre as cidades :


0
25

d = 20
22.361

25

25 15.811

5
10
11.18
0

0
11.18

25

20 22.361

15

15

25

10

15.811 5

25

5
e a matriz que traduz a intensidade da marcao de feromnio em cada trilha (valores hipotticos) :
0

0.06
= 0.35
0.19

0.39

0.06 0.35 0.19 0.39

0.1 0 0.82 0.31


0.33 0.82 0 0.65

0.12 0.31 0.65 0


0

0.1 0.33 0.12

Uma formiga tendo como ponto de partida a primeira cidade ( cidade vermelha),
apresentaria as seguintes densidades de probalidade de escolher a cidade j (adotando-se : = 1 e
= 5):
0
0.031

p = 0.577
0.182

0.211

resultando nas fatias:

0
0

0.031

fatia =
0.607
0.789

O nmero sorteado deu o valor: 0.28, fazendo assim com que a cidade 3 ( cidade verde) seja a
escolhida. A mesma formiga partindo da cidade 3 apresentaria as seguintes densidades de
probalidade de escolher a cidade j:
0
0.001

p= 0
0.076

0.923

resultando nas fatias:

0
0

0.001

fatia =
0.001
0.077

O nmero sorteado deu o valor: 0.682, fazendo assim com que a cidade 5 ( cidade amarela) seja
a escolhida. A mesma formiga partindo da cidade 5 apresentaria as seguintes densidades de
probalidade de escolher a cidade j:
0
0.032

p= 0
0.968

resultando nas fatias:

0
0

0.032

fatia =
0.032
1

O nmero sorteado deu o valor: 0.722, fazendo assim com que a cidade 4 ( cidade laranja) seja
a escolhida. Como, neste ponto, restou apenas uma cidade no visitada pela formiga e sendo a
mesma a cidade 2 ( cidade azul), esta a ltima cidade visitada antes da formiga retornar a seu
ponto de partida. Desta forma o roteiro percorrido pela formiga : 135421, roteiro este
esquematizado no diagrama a seguir:

IV

III

II

ii-) Vaporizao e Reforo da Marcao de Feromnio. A intensidade de marcao de feromnio


em todas as trilhas ligando a cidade i s cidades j passa por dos processos transformadores: (a)
enfraquecimento da intensidade da marcao por vaporizao, este processo traduzido
matematicamente pela simples expresso: iNEW
iOLD
,j
, j , onde um parmetro entre 0
e 1(um) escolhido pelo usurio, e os sobrescrito OLD e NEW representam a intensidade da
marcao antes e depois da vaporizao , respectivamente; (b) reforo da intensidade da
marcao por formigas que percorreram a trilha ij , isto feito da seguinte forma:
0 se a trilha ij no faz parte do roteiro total percorrido pela formiga
Q
se a trilha ij faz parte do roteiro total percorrido pela formiga
L total

ireforo
=
,j

sendo Ltotal o tamanho total do roteiro percorrido pela formiga (at retornar a seu ponto de
partida!) e Q: um parmetro positivo escolhido pelo usurio. Os novos valores das
intensidades de marcao em cada trilha ij ser a composio destes dois fatores, resultando
reforo
iOLD
assim em: iNEW
.
,j
, j + i, j

No

exemplo

ilustrativo

acima

20+5+11.18+25+25=86.18, assim:

adotando
Q

L total

0.9

Q=1,

= 0.012 , resultando no reforo:

0
0 0.012 0.012 0
0.012 0

0 0.012 0

0 0.012
0
= 0.012 0
0 0.012 0
0 0.012

0 0.012 0.012 0
0

resultando, finalmente, no novo valor de :

tem-se:

Ltotal

7
0

0.063
= 0.323
0.172

0.348

0.063 0.323 0.172 0.348

0.092 0 0.735 0.292


0.307 0.735 0 0.601

0.109 0.292 0.601 0


0

0.092 0.307 0.109

H diferentes formas distintas de atualizar os valores dos componentes de ao longo do


caminho percorrido por cada formiga, algumas destas formas so apresentadas no prximo
item em que se detalham aspectos implementacionais do algoritmo.
voltar para MTODO DO FORMIGUEIRO

4.2. A Programao do Algoritmo (verso discreta)


Formalmente o algoritmo de busca do melhor caminho no problema do caixeiro viajante,
usando o mtodo do formigueiro (ant-colony) pode ser resumido pelas etapas:
Etapa Inicial (Iterao zero): Entre com n ( nmero de cidades), m ( nmero de formigas) e N
( nmero de iteraes) ; especifique os valores dos parmetros: , , e Q (explicados no item
anterior).
Especifique as coordenadas de localizao de cada uma das n cidades [ armazenadas em uma
matriz C de n linhas e 2 colunas; sendo as coordenadas da cidade i so (Ci,0, Ci,1)]; calcule a
matriz D, matriz n x n em que:
D i, j =

(Ci,0 C j,0 )2 + (Ci,1 C j,1 )2

para i, j = 1,..., n. Especifique os valores iniciais da

matriz cujo termo geral i,j= j,i a intensidade de marcao de feromnio na trilha que liga a
0 para i = j
cidade i cidade j, no incio do processo iterativo se adota: i, j =
, sendo 0 um
0 para i j
valor no nulo (pequeno!) escolhido pelo usurio.
n n

Calcule o valor: L min = D i, j .


i =1 j =1

Etapa Principal Para iter=1, 2,... N (nmero de iteraes especificado) execute o


procedimento:
(a)-Para k =1, ....m (m : nmero total de formigas)-Etapa de Busca do Melhor Percurso:
busque o melhor caminho fechado para a formiga k (segundo o procedimento descrito
separadamente abaixo!) e armazene os resultados na matriz V, sendo: Vi, k o ndice

8
designativo da cidade visitada pela formiga k em seu isimo trecho de seu percurso fechado
k)
(note que i varia de 1 a n!) e Vn +1, k = L(total
que o tamanho total do percurso fechado

escolhido pela formiga k.


(b)-Faa : (vaporizao do feromnio depositado em todas as trilhas possveis).Etapa
da Vaporizao da Marcao de Feromnio.
(c)-Para k =1, ....m (m : nmero total de formigas). Etapa de Reforo da Marcao de
Feromnio:
Faa o reforo da intensidade da marcao de feromnio em todas as trilhas percorridas pela
Q
onde I =
formiga k segundo o procedimento: para i = 1, 2,..n-1 faa : I, J I, J +
(k )
L total
Vi,k e J = Vi+1,k ; alm de I = V1,k e J = Vn,k (este ltimo par de valores de I e J para assegurar
o fechamentodo percurso!).
(d)-Para k =1, ....m (m : nmero total de formigas) . Etapa de Seleo do Melhor Percurso:
k)
k)
Se L(total
< L min faa ento : L min L(total
e para i de 1 a n faa city i Vi, k ; v para

Etapa (e)
k)
Se L(total
L min mantenha o valor de L min v para Etapa (e).

(e)-Armazenamento dos Melhores Percursos em Cada Iterao.


Armazene na matriz Ri,iter = cityi para i de 1 a n e Melhoriter = Lmin.
Etapa de Sada: Escreva os valores da matriz R e do vetor Melhor.
FIM

9
Este procedimento foi utilizado no desenvolvimento do programa em MATHCAD, mostrado
abaixo:
ACO_Global( N , m) :=

for i 0 .. n 1
for j 0 .. n 1
i , j 0
d distancias
n 1 n 1

trip

i=0 j=0

d,
i j

for iter 0 .. N
for k 0 .. m 1
k
v Rota( , d )

for k 0 .. m 1

Q
v ,
n k

for i 0 .. n 2
Iv,
i k
Jv+ ,
i 1 k
I , J I , J +
J , I I , J
Iv ,
0 k
Jv ,
n 1 k
I , J I , J +
J , I I , J
if v , < trip
n k
trip v ,
n k
for j 0 .. n 1
city v ,
j
j k
for i 0 .. n 1
city
R,
i iter
i
trip
R ,
n iter
R

A construo do melhor percurso para cada formiga k feita de acordo com o procedimento:
(a) Inicializao do Percurso:
Apague todos os registros existentes no Carn em que se anota as cidades percorridas no
percurso.

10
Sorteie aleatoriamente a cidade inicial do percurso e anote o ndice designativo a esta cidade
no topo do Carn, isto Tabu1 rnd(n);
(b) Etapa Principal: para s de 1(um) a n 1, faa:
(b-1) Para i =1 a n , igual0 e pi 0;
para cada valor de i faa
(b-1-1) para j de 1 a s-1 , se i for igual a Tabuj faa igual1 e v para (b-1-2);
se i no for igual a Tabuj e j = s-1 e v para (b-1-2); se i no for igual a Tabuj e j <
s-1 v para (b-1-1) com o valor seguinte de j ( se j <s-1).

(
i, Tabu )
(b-1-2) se igual for igual a 0 faa: p i
(d i, Tabu )
s 1

e volte para (b-1)com o valor

s 1

seguinte de i (se i <n) ; se igual no for igual a 0 volte para (b-1)com o valor
seguinte de i (se i <n) ;
(b-2) Escolha da Prxima Cidade .
n

p
Faa : S p j e a seguir p i i para i = 1 , 2, L , n , a seguir faa : fatia0 0 ;
S
j =1
i

fatian1 e fatia i p j para i = 1, 2, L , n - 1 ; sorteie a seguir um nmero real


j =1

positivo entre 0 e 1 [rnd(1)], a prxima cidade a cidade i* em que ocorre :


fatia i 1 < < fatia i ; escreva o valor desta cidade no carn, isto : Tabus i*.
(b-3) Escolha da ltima Cidade a ser Visitada .
Verifique em seu carn qual a cidade que est faltando entre todas que devem ser
visitadas, sendo esta iltima deve se registrar: Tabun iltima
(c) Etapa Final: clculo do tamanho total do percurso.
(k )
D Tabu 1 , Tabu n +
Calcule: L total

n 1

D Tabu , Tabu

i =1

i +1

Este procedimento foi utilizado no desenvolvimento do programa em MATHCAD, mostrado


abaixo:

11
Rota ( , d ) :=

lista

floor

v lista
0

rnd ( 100 n )

100

N n 1
lista

for s 1 .. n 2
for i 0 .. N
igual 0
p 0
i

for k 0 .. s 1
i lista

if

< 10

igual 1
break

p i , lista
i
s 1
1

i=0
n

i , lista s 1
1

if igual

fatia

for i 0 .. N 1
fatia + fatia + p
i 1
i
i

rnd ( 100 )
100


for i 0 .. N
a fatia +
i 1
crit a
a
if crit < 0
lista

break
v lista
s

v sort ( v )
lista

for i 0 .. N 1
iv

if

lista

> 10

break
n 2

lista

( lista 0 , lista n 1 )

k =0

( lista k , lista k+ 1 )

lista

H outras formas de atualizar (reforar e evaporar!) a intensidade da marcao de feromnio


nas trilhas, uma delas apresentada a seguir:
Atualizao Local e Global: neste procedimento ocorre uma Atualizao Local ao trmino de

12
cada caminho fechado que uma formiga k percorra. A intensidade de feromnio em toda a trilha
ij ento atualizada segundo:

(1 local ) i(,kj) se o trecho ij no faz parte do caminho fechado


(k )
(k)
(1 local ) i, j + local i, j se o trecho ij faz parte do caminho fechado

i(,kj)

onde h duas formas de calcular i(,kj) 5:


(a) Modelo de densidade de formiga (ant-density): i(,kj) = Q local (constante);
(b) Modelo de quantidade de formiga (ant-quantity): i(,kj) =

Q local
d i(,kj)

Aps todas as formigas terem completado suas rotas, h tambm uma atualizao da
intensidade da marcao de feromnio com vaporizao geral e o reforo apenas na melhor
rota (Atualizao Global) segundo:

1 global i, j se o trecho ij no faz parte da melhor rota

i, j
Q global
se o trecho ij faz parte da melhor rota
1 global i, j + global
L min

Onde os parmetros: Qlocal , Qglobal, local e global so especificados pelo usurio.


voltar para MTODO DO FORMIGUEIRO

Dorigo, M., Maniezzo, V. & Colorno, _ Ant System: Optimization by a Colony of Cooperating Agents IEEE

Transactions on Systems, Man, and Cybernetics, Vol. 26, No 1, pp. 29-41 (1996)

13

4.3. Exemplo Ilustrativo O Problema do Caixeiro Viajante (PCV)


Na forma clssica apresentada acima o ACO foi testado para o seguinte PCV, 16 cidades
uniformemente distribudas segundo o diagrama:
40

40

20
Ci , 1

0
10
0

20

10

Ci , 0

40
40

Sendo as coordenadas de cada uma destas cidades armazenadas na matriz:


0
0

0
0

10
10
10

10
C :=
20
20

20
20

30
30
30

30

0
10
20
30
0
10
20
30
0
10
20
30
0
10
20

30

Os seguintes valores dos parmetros do algoritmo foram adotados:


n := 16

m := 8

N := 20

:= 1

:= 5

:= .5

0 := 10

Q := 100

Verificando-se visualmente a convergncia ao percurso timo aps 10 iteraes sendo este percurso
o seguinte: 1091314151612117843215610, o que resulta
em um comprimento total de L timo = 160
Esquematizado na figura abaixo:

14
40
Ci , 1

40

20

C m ,1
k

)
0

10
0
10

20
Ci , 0 , C m , 0
k

40

40

Na figura abaixo, mostrada a variao do melhor comprimento total versus o ndice designativo da
iterao:
Rn, 0
180
Rn, j
160
160
150
5
1

10

15

Kj

20
20

Uma animao deste procedimento mostrada no programa AVI : PCV_ACO_Global.


O mesmo problema resolvido para uma distribuio aleatria das 16 cidades (os
parmetros do algoritmo considerados so os mesmos do exemplo anterior), Esta distribuio
mostrada abaixo:
40

40

20
Ci , 1

0
10
0
10

Cujas coordenadas so:

20
Ci , 0

40
40

15
cidade

22.48

33.17

32.81

26.84

17.59

7.73

16.39

2.99

10

11

16.39

8.05

17.08

10.71

12

13

4.26

12.97

22.32

10.43

28.66

1.63

2.92

31.43

0.16

23.21

24.43

7.63

14

15

16

4.66

28.85.

17.23

24.25

29.78

18.21

33.42

1.23

Verificando-se visualmente a convergncia ao percurso timo aps 8 iteraes sendo este


percurso o seguinte: 916423141111581310561279, o que
resulta em um comprimento total de L timo = 128.384
Esquematizado na figura abaixo:
40

40
Ci , 1

20

C m ,1
k

)
0

10
0
10

20
Ci , 0 , C m , 0
k

40

40

Na figura abaixo, mostrada a variao do melhor comprimento total versus o ndice designativo da
iterao:
R n , 0 135

Rn, j
128.384
130
128
5
1

10

15

20

Kj

20

Uma animao deste procedimento mostrada (com distribuio das cidades diferente da
apresentada acima!) no programa AVI : PCV_Random_ACO_Global.

16
Em relao esta aula os seguintes arquivos esto tambm disponveis para Download:
Nome do Arquivo

Especificao

Aula6.pdf

Texto em pdf da aula virtual sobre o algoritmo do formigueiro.

Lista6.pdf

Enunciados da Lista de Exerccios em pdf relativos aula virtual sobre o


algoritmo do formigueiro

ACO_Lenzi.exe

Programa executvel codificado em DELPHI do algoritmo do


formigueiro aplicado ao problema do caixeiro viajante (PCV) -

Manual_ ACO_Lenzi.pdf

Manual do Usurio em pdf do programa: ACO_Lenzi.exe

PCV_ACO_Global.avi

Animao do PCV com as cidades dispostas geometricamente.

PCV_Random_ACO_Global.avi

Animao do PCV com as cidades dispostas aleatoriamente.

ACO_PCV_primeira verso.mcd

Programa em MATHCAD do PCV com apenas atualizao global do


feromnio 16 cidades dispostas geometricamente.

ACO_PCV_primeira verso
random.mcd
ACO_PCV_segunda verso.mcd

Programa em MATHCAD do PCV com apenas atualizao global do


feromnio 16 cidades dispostas aleatoriamente.
Programa em MATHCAD do PCV com atualizaes local e global do
feromnio 16 cidades dispostas geometricamente.

ACO_PCV_segunda verso
random.mcd

Programa em MATHCAD do PCV com atualizaes local e global do


feromnio 16 cidades dispostas aleatoriamente.

voltar para MTODO DO FORMIGUEIRO

Lista de Exerccios
1.

Maximizar a funo Alpina normalizada no intervalo de 0 a 10.

( ) ( )

f1( x) := x x sin x sin x


0 1
0
1

2.

Minimizar a funo de Rosenbrock no intervalo de -1 a 5:

( ) + (1 x0)2

f2( x) := 100 x x
0
1

(Lista extrada de HIMMELBLAU, D.M. (1989) Optimization of Chemical Process, McGraw-Hill.)

3.

A estimao de parmetros pode ser realizada pela minimizao da funo de


mnimos quadrados,
2

= ( y observado y predito )
n

k =1

onde n o nmero de experimentos. Utilize a correlao


y predito = x1 x2

e os dados experimentais obtidos da tabela abaixo para estimar os parmetros da


correlao pela minimizao da soma dos quadrados dos desvios entre os valores
experimentais e preditos de y.

x1
x2
yexp

2.0
36.0
46.5

6.0
8.0
591

9.0
3.0
1285

2.5
6.25
36.8

4.5
7.84
241

9.5
1.44
1075

8.0
4.0
1024

4.0
7.0
151

3.0
9.0
80

7.0
2.0
485

6.5
5.0
632

4. O risco esperado em uma aplicao econmica definido como sendo:

2
b + b

F
4
2 2

{ risco } = (1 P )c1 [1 F(b )] + Pc 2


b

Onde

F(b ) = e

u2
2 2

du (Funo de Probabilidade Normal)

Utilize os valores das constantes abaixo e encontre o valor de b para o qual o risco
mnimo.

2
c1

= 1.25 105

c2

= 15

= 2000

= 0.25

5.

O custo do leo refinado transportado por navio para o Japo atravs do estreito
de Malacca calculado em dlares por quilolitro. Este custo definido como
uma soma linear dos custos do leo cru, do seguro calculado, do frete para o
leo, da carga e descarga do leo, entre outras. Uma funo para avaliar este
processo foi fornecida por UCHIYAMA (1968)*:
c = cc + ci + c x +

2.09 10 4 t 0.3017 1.064 10 6 at 0.4925


+
360
52.47q (360 )

4.242 10 4 at 0.7952 + 1.183ip(nt + 1.2q )


+
52.47q(360)

0.861

Onde: a

4.25 103 a (nt + 1.2q ) 5.042 103 q 0.1899 0.1049q 0.671


+
+
52.47q (360 )
360
360

= taxa fixa anual, 0.20

cc

= preo do leo cru, ($/kL) 12.50

ci

= custo do seguro, ($/kL) 0.50

cx

= tarifa alfandegria, ($/kL) 0.90

= taxa, 0.10

= nmero de portos, 2

= custo de transporte, ($/m2) 7000

= capacidade da refinaria, (bbl/dia)

= capacidade do tanque, (kL)

Utilizando os valores fornecidos acima, encontre os valores timos das capacidades do


tanque e da refinaria que minimizam o custo do leo. (os valores fornecidos pela
referncia so t = 450 000 kL e q = 185 000 bbl/dia).
6.

O custo de construo de uma coluna de destilao pode ser dado por

C = C P AN + CS HAN + C f + Cd + Cb + C L + C x
Onde C
Cp

= Custo total, $.
= Custo por p quadrado de rea de prato, $/ft2.

3
A

= rea da seo transversal da coluna, ft2.

= Nmero de pratos.

Nmin

= Nmero mnimo de pratos.

Cs

= Custo relacionado ao material, $/ft3.

= Distncia entre os pratos, ft.

Cf

= Custo do bombeamento da alimentao, $.

Cd

= Custo do bombeamento do destilado, $.

Cb

= Custo do bombeamento do resduo, $.

CL

= Custo do bombeamento do refluxo, $.


*T. Uchiyama, Hydrocarbon Process, 47(12): 85 (1968)
= Outros custos fixos, $.

Cx

D
Destilado
L
Refluxo

F
Alimentao

B
Resduo
As variveis do processo esto relacionadas por duas equaes empricas

L
L
1
=

D 1 (N min N ) D min
A = K (L + D )

No entanto, por simplicidade utilizaremos = = 1.


L
L
1
=

D 1 ( N min N ) D min

A = K (L + D )

Para certas condies de operao, os parmetros apresentados anteriormente so


conhecidos e possuem os seguintes valores:
Cp

= 30

Cd

= 3000

Cs

= 10

Cb

= 2000

=2

Cx

= 8000

Cf

= 4000

= 1500

4
D

= 1000

Nmin

=5

(L D)

min

= 0.01 hft2/lb

=1

Levando em considerao que o custo de bombeamento para o refluxo no processo pode


ser calculado pela expresso
C L = 5000 + 0.7 L

encontre o valor mnimo do custo total e o correspondente valor das variveis.

Exemplos Aplicados
1) Particle Swarm aplicado a projeto de trocadores de calor
De acordo com MIZUTANI (2003) e SINNOTT (1996), a transferncia de calor
entre fluidos de processo uma parte essencial da maior parte dos processos qumicos.
Segundo esses autores, o tipo de trocador de calor mais utilizado o trocador cascotubo.
Segundo TABOREK (1982), o mtodo de Bell-Delaware o mtodo que
fornece as correlaes mais apropriadas para o projeto detalhado de trocadores cascotubo disponvel e o mais adequado para aplicaes de engenharia. Detalhes do mtodo
de Bell-Delaware podem ser encontrados, passo a passo, em KAKA et al. (1981) ou
em PERRY (1999).
Definio do Problema

O problema consiste na determinao tima do trocador de calor casco-tubo para


a transferncia de calor entre uma corrente quente e uma corrente fria com as suas
respectivas vazes mssicas e temperaturas iniciais e finais especificadas.
Para tal necessrio conhecer as propriedades fsicas para cada corrente:
viscosidade, densidade, condutividade trmica e capacidade trmica. Dessa maneira,
ser possvel encontrar o melhor trocador de calor e suas especificaes de projeto:
nmero de tubos, nmero de passes nos tubos, dimetros interno e externo nos tubos,
arranjo geomtrico nos tubos, nmero de chicanas e alocao dos fluidos.
O modelo proposto formulado considerando-se os fluidos com suas
propriedades fsicas constantes e em uma nica fase. Um trocador de calor casco-tubo
mostrado de forma esquemtica na Figura 1.

Figura 1 Trocador de Calor Casco-Tubo


O projeto timo de trocadores de calor visto como uma relao de custo e
benefcio entre os custos de rea e bombeamento. Um aumento da turbulncia nos
fluidos, passando nos cascos e tubos, resulta em uma elevao dos valores dos
coeficientes de transferncia de calor, o que, por sua vez, resulta em uma menor rea de
troca de calor e na reduo do custo de investimento. Por outro lado, h um maior custo
de bombeamento dos fluidos.
Basicamente, o modelo consiste na determinao dos detalhes geomtricos da
unidade que viabilizem uma determinada carga trmica com custo anual total mnimo.
Neste clculo necessria a determinao dos coeficientes de transferncia de calor
para cada corrente, bem como a determinao das respectivas perdas de carga.
Desta forma, a formulao do problema contm as seguintes decises: dimetro
externo e interno do casco, nmero de tubos, nmero de passes nos tubos, dimetros
interno e externo nos tubos, arranjo geomtrico nos tubos (triangular ou quadrado) e
nmero de chicanas, todas essas segundo recomendao da norma TEMA (Tubular
Exchanger Manufactures Association). Alm dessas, mais duas variveis de deciso so
necessrias: alocao dos fluidos e comprimento dos tubos.
Essencialmente, o modelo est baseado nas correlaes empricas de BellDelaware descritas em TABOREK (1982) para os clculos no lado do casco, equao
de Sieder-Tate e equao de Blausius para os clculos no lado dos tubos.
O problema de encontrar projeto timo de um trocador de calor se torna um
problema de minimizao de uma funo objetivo, a funo custo anual global, funo
esta que representa a soma dos custos relativos rea do trocador e custos relativos ao
bombeamento dos fluidos.
Minimizar:

Sendo que

C total = C rea + C bomb


C rea

= a1

U Ft MLDT

a2

6
P t m t P c m c
C bomb = a3
+
t
c

1
U=

d ext

d
log

t
ex
t
t
d in + r + 1
d ex + rin d ex +
ex
ht d t
hc
2k
d int
in

Em que Ctotal, Crea e Cbomb so os custos total, de rea e de bombeamento,


respectivamente e so dados em $/ano, Pt e Pc so dadas em Pa, mt e mc so dadas
em kg/s, t c so dadas em kg/m3.
a) Comentrios Gerais sobre a Implementao Computacional

Trs variveis, consideradas independentes, so geradas aleatoriamente no incio


da otimizao. So elas: alocao dos fluidos (1, se o fluido quente passa nos tubos, 2 se
passa no casco), comprimento dos tubos e posio (ou linha) da tabela TEMA, a qual
define automaticamente os valores de dimetro do casco, dimetro do feixe de tubos,
dimetro interno e externo dos tubos, nmero de tubos, nmero de passos nos tubos e
arranjo dos tubos.
Com essas variveis, as propriedades dos fluidos e as temperaturas de entrada e
sada dos fluidos possvel calcular ht, hc, Pt e Pc e com isso obter os valores de
Crea, Cbomb e Ctotal.
b) Exemplo

Este exemplo extrado de Mizutani et al. (2003) consiste em uma corrente quente
e uma corrente fria de fluidos A e B, respectivamente, com suas propriedades fsicas
apresentadas na Tabela 1. Os parmetros a1, a2 e a3 das equaes de custo so,
respectivamente, 123, 0,59 e 1,31. Os resultados do projeto timo, comparados com os
resultados da literatura encontram-se na Tabela 2.Tabela 1 Dados das correntes
Fluido

Tin (K)

Tout
(K)

m
(kg/s)

(kg/ms)

(kg/m3)

Cp
(J/kgK)

k
(W/mK)

P
(kPa)

rd
(W/mK)

368,15

313,75

27,78

3,4e-4

750

2840

0,19

68,95

1,7e-4

298,15

313,15

68,88

8e-4

995

4200

0,59

68,95

1,7e-4

7
Tabela 2 Resultados
Mizutani et al. (2003)

Enxame de Partculas

Custo total ($/year)

5250,00

2532,67

Custo de rea ($/year)

2826,00

2419,94

Custo bombeamento ($/year)

2424,00

112,73

Area (m )

202

155,97

Q (kW)

4339,24

4339,24

Ds (m)

0,687

0,635

Dotl (m)

0,542

0,594

Nt

832

343

Nb

12

ls (m)

0,542

0,475

Ntp

dex (mm)

15,90

19,05

din (mm)

12,60

14,83

L (m)

4,88

6,18

ht (kW/m2C)

6,480

16,607

1,829

3292

Ud (W/m C)

860

1112,16

Uc (W/m2C)

----

1112,64

Pt (kPa)

22,676

3,146

Ps (kPa)

7,494

2,317

rd (m C/W)

-----

3,84e-7

arr

quadrado

quadrado

Alocao do fluido quente

casco

casco

hs (kW/m C)

Observao: O objetivo do problema considerado atingido quando a funo objetivo


atinge um valor menor que 2611,00.

Exemplo Aplicado 2:
Minimizao de Energia Livre utilizando mtodos heursticos de
otimizao.
O conhecimento do equilbrio de fases de grande importncia no projeto e
anlise de uma grande variedade de operaes de processos qumicos, incluindo reatores
e unidades de separao. O equilbrio de fases de um sistema corresponde s condies
em que a Energia Livre do sistema atinge seu mnimo global.

8
Para um sistema multifsico e multicomponente, a energia livre de Gibbs
dada por:
F

G = nij g ij

(1)

g ij = g ijo + R T ln(ij )

(2)

j =1 i =1

onde: F o nmero de fases, C o nmero de componentes, nij o nmero de mols do


componente i na fase j, g ij = ij energia livre de Gibbs parcial molar (potencial
qumico) do componente i na fase j, g ijo a energia livre de Gibbs molar no estado
padro para o componente i na fase j, ij a atividade do componente i na fase j, R a
constante dos gases e T a temperatura.
A funo objetivo expressa pelas Equaes 1 e 2 est sujeita s seguintes
restries:
F

N i = nij

para i =1 .. C

(3)

j =1

nij 0 para i = 1 .. C , j = 1 .. F

(4)

onde Ni o nmero total de mols do componente i.


Adimensionando e rearranjando a equao (1), obtm-se:
F C

o
G nij g ij F C n
j =1 i =1
= ij ln(ij )

j =1 i =1 N t

R T N t

(5)

onde Nt o nmero total de mols do sistema. No caso de se utilizar o mesmo estado de


referncia de um dado componente em todas fases, o lado esquerdo da equao (5)
corresponde funo energia livre de Gibbs adimensional. Assim, pode-se escrever:
F

g = j xij ln(ij )

(6)

j =1 i =1

Sendo:

j =

Nf j
Nt

(7)

onde Nf j o nmero total de mols na fase j.


A funo g na Equao (6) corresponde funo objetivo a ser minimizada,
sujeita s condies expressas pelas Equaes (3) e (4).
Para a fase lquida, a atividade pode ser escrita da seguinte forma:

9
ij = xij ij

(8)

onde xij a frao molar do componente i na fase j e ij o coeficiente de atividade do


componente i na fase j, calculado de acordo com o modelo NRTL proposto por Renon e
Prausnitz (1968):

x
G

q, j q, n q, n

q= 1

xn, j Gi, n i, n

x
G
r, j r, n
xk, j k, i Gk, i C

r
=
1

k= 1

ln(i, j) =

+
C
C

n= 1

xm, j G m, i
xp, j Gp, n

m= 1
p= 1

(9)

onde coeficiente ij o coeficiente de atividade da componente i na fase j,

12 =

g12 g 22
g g11
, 21 = 21
, Gij = exp( ij ij ) , gij um parmetro de interao e
R T
R T

ij um parmetro emprico introduzido para prever o comportamento lquido-lquido.


Exemplo

Encontrar o mnimo global de energia livre de uma mistura formada


inicialmente por propores equimolares de gua e de acetato de n-butila.
Utilizando os mtodos Simulated Annealing, Algoritmo Gentico e Enxame de
Partculas chega-se mesma resposta:
Componente Aliment. Lq. 1
Lq. 2
gua (1)
1.0000 0.001427 0.998572
Acetato
1.0000 0.311757 0.688242
n-butila (2)
Total (mols)
2.0000 0.313184 1.686814

Vous aimerez peut-être aussi