• Nenhum resultado encontrado

4.8 Discuss˜ao dos Resultados

5.5.2 O Algoritmo Gen´etico Multi-Objetivo

De modo diverso dos m´etodos cl´assicos citados anteriormente, os quais s˜ao capazes de gerar como solu¸c˜ao um ´unico ponto no interior do espa¸co de decis˜ao, o emprego de algo- ritmos gen´eticos apresenta-se como uma alternativa importante na medida em que estes s˜ao capazes de trabalhar com uma popula¸c˜ao de vetores de vari´aveis de decis˜ao, o que indica que podem entregar como resultado, ap´os sua otimiza¸c˜ao (minimiza¸c˜ao ou max- imiza¸c˜ao), um determinado n´umero de solu¸c˜oes, todas elas pertencendo ao conjunto de Pareto-´otimo.

3

Pode-se observar que este m´etodo de resolu¸c˜ao equivale `aquele de pondera¸c˜ao das fun¸c˜oes objetivo, as quais s˜ao aqui as derivadas das fun¸c˜oes originais.

Hist´orico

A primeira apari¸c˜ao na literatura da tentativa de resolu¸c˜ao de um problema atrav´es de uma simula¸c˜ao gen´etica foi por Rosenberg, em 1967 (Srinivas & Deb, 1994). Seu trabalho consiste na busca gen´etica visando a simula¸c˜ao da gen´etica e da qu´ımica de uma popula¸c˜ao de organismos unicelulares possuindo m´ultiplas propriedades (fun¸c˜oes objetivo). Entretanto, Rosenberg n˜ao chegou a implementar seu m´etodo.

Assim, o primeiro algoritmo idealizado e implementado surgiu com Schaffer (1984). Este algoritmo, intitulado Vector Evaluated Genetic Algorithm (VEGA), entretanto, apre- senta como grave problema sua tendˆencia a algumas solu¸c˜oes do conjunto Pareto-´otimo. Com o objetivo de suplantar esta tendˆencia de VEGA, foi sugerido por Goldberg (1989) um procedimento denominado classifica¸c˜ao por n˜ao-domina¸c˜ao (nondominated sorting), o qual se baseia em dois pontos principais. Em primeiro lugar, o procedimento emprega um m´etodo de sele¸c˜ao por ranking que enfatiza bons pontos (solu¸c˜oes) e, al´em disso, usa um m´etodo de nicho com o objetivo de manter subpopula¸c˜oes est´aveis de bons pontos. A partir da sugest˜ao de Goldberg, dois importantes m´etodos foram idealizados e implementados, a saber, o Multi Objective Genetic Algorithm (MOGA) e o Nondominated Sorting Genetic Algorithm (NSGA).

Apresentado por Fonseca e Fleming em 1993 (Coello, 2000), MOGA possui uma imple- menta¸c˜ao cujo procedimento de classifica¸c˜ao ´e similar ao NSGA (apresentada detalhada- mente mais adiante), por´em com algumas diferen¸cas que s˜ao importantes. A primeira delas ´e que a classifica¸c˜ao opera-se em blocos (indiv´ıduos com o mesmo ranking), o que, por ocasi˜ao da cria¸c˜ao de uma nova gera¸c˜ao (sele¸c˜ao), pode apresentar grande press˜ao de sele¸c˜ao o que, por sua vez, tem grande probabilidade de causar convergˆencia prematura. Em seguida, ao contr´ario de, como NSGA, efetuar o compartilhamento nos valores dos parˆametros, MOGA o faz nos valores das fun¸c˜oes objetivo, o que, ainda que mantendo a diversidade nos valores das fun¸c˜oes, n˜ao necessariamente a mant´em no conjunto dos parˆametros, o que pode ser importante para a escolha da solu¸c˜ao definitiva. Finalmente, o algoritmo ´e insens´ıvel a problemas onde diferentes pontos do conjunto de Pareto-´otimo correspondem a valores idˆenticos de uma mesma fun¸c˜ao objetivo, o que indica que o algoritmo, nestes casos, pode ser incapaz de gerar m´ultiplas solu¸c˜oes.

Visando superar alguns dos problemas de MOGA citados acima, Srinivas & Deb (1994) desenvolveram NSGA. Este algoritmo, al´em das caracter´ısticas j´a citadas acima, apre- senta, tamb´em, a vantagem de evitar a convergˆencia para um pequeno conjuntos de solu¸c˜oes (ou mesmo uma ´unica solu¸c˜ao), o que pode ser muito relevante quanto se tra- balha com um n´umero elevado de fun¸c˜oes objetivo. Posteriormente, os mesmos autores (Deb et al., 2002) apresentaram o algoritmo NSGAII, o qual possui caracter´ısticas de elitismo ausentes no primeiro.

Para um tutorial completo em algoritmos gen´eticos multi-objetivo os trabalhos de Zitzler et al. (2004), Sbalzarini et al. (2000) e Dias & Vasconcelos (2002) podem ser consultados. No que tange a elabora¸c˜ao de fun¸c˜oes de teste existem os trabalhos de Lu & Yen (2003) e de Kalyanmoy (1998). Estudos de caso podem se encontrados em Zizler & Thiele (1999) e uma outra pespectiva sobre otimiza¸c˜ao multi-objetivo com algoritmos

gen´eticos em Zizler et al. (2002).

Na medida em que NSGA ´e o algoritmo no qual est´a baseada a implementa¸c˜ao deste componente da teoria (o elitismo presente em NSGAII n˜ao justificaria em termos de resultados as novas dificuldades de implementa¸c˜ao), ele ser´a descrito detalhadamente na pr´oxima se¸c˜ao.

Implementa¸c˜ao do Algoritmo NSGA

Como foi dito antes, Srinivas & Deb (1994) idealizaram o NSGA visando a supress˜ao de al- guns dos problemas apresentados pelo MOGA. De modo diverso aos algoritmos gen´eticos mono-objetivo, nos quais o processo de sele¸c˜ao ´e efetuado atrav´es de um valor de aptid˜ao (fitness) caracter´ıstico de cada poss´ıvel solu¸c˜ao, os algoritmos gen´eticos multi-objetivo em- pregam um processo no qual um conjunto de solu¸c˜oes recebem um mesmo valor, chamado dummy fitness. Este conjunto de solu¸c˜oes ´e o conjunto de Pareto-´otimo para uma dada popula¸c˜ao de pontos. Entretanto, na medida em que ´e necess´ario que toda a popula¸c˜ao receba um valor de aptid˜ao, faz-se necess´ario um outro procedimento, denominado ranking por fronts. Neste procedimento, todos os pontos da popula¸c˜ao s˜ao previamente classifi- cados por fronts sendo que a cada front corresponder´a um valor de dummy fitness. Este pode ser descrito assim:

1. Considerar a popula¸c˜ao completa e achar os pontos n˜ao-dominados. 2. Atribuir a estes pontos um valor dummy fitness.

3. Retirar da popula¸c˜ao os pontos n˜ao-dominados encontrados anteriormente. 4. Se a popula¸c˜ao foi inteiramente classificada terminar.

5. Sen˜ao, voltar para o passo 1.

Nos casos de minimiza¸c˜ao os valores de dummy fitness s˜ao decrescentes e naqueles de maximiza¸c˜ao, crescentes. Uma poss´ıvel forma para calcular estes valores pode ser:

fi =½ 1/r para minimiza¸c˜ao r para maximiza¸c˜ao onde i ´e o i-´esimo elemento do front f e r o rank deste ´ultimo.

Al´em do ranking por fronts, o qual enfatiza os pontos ´otimos, o NSGA tamb´em utiliza estrat´egias de compartilhamento ou nichos, as quais, por sua vez, estabilizam subpopu- la¸c˜oes de pontos “bons”. Isto minimiza a possibilidade de convergˆencia prematura e o surgimento de um “super-indiv´ıduo”, o que poderia gerar popula¸c˜oes compostas unica- mente de c´opias de si mesmo. O algoritmo completo de NSGA est´a a seguir:

1. Considerando a integralidade da popula¸c˜ao de poss´ıveis solu¸c˜oes, encontrar os pon- tos n˜ao-dominados.

2. Atribuir o mesmo valor de dummy fitness a todos os i indiv´ıduos n˜ao-dominados do front 1 (em geral, este valor ´e igual a 1).

3. O pr´oximo passo ´e o compartilhamento do valor de dummy fitness dos indiv´ıduos, visando manter a diversidade. Isto ´e feito dividindo-o por uma quantidade propror- cional ao n´umero de indiv´ıduos em seu entorno, segundo um determinado raio, o que leva o nome de nicho e ´e quantificado como:

mi = M −1

X j=0

Sh(d(i, j))

onde i e M s˜ao, respectivamente, o i-´esimo indiv´ıduo e o n´umero de indiv´ıduos do front corrente e Sh(d) ´e a fun¸c˜ao de compartilhamento. A fun¸c˜ao de compartil- hamento Sh(d), a qual ´e uma fun¸c˜ao linear decrescente e definida como:

Sh(d(i, j)) =        Sh(0) = 1 Sh(d(i, j)) =   

1 −σd(i,j)share se d(i, j) < σshare 0 se d(i, j) ≥ σshare

onde:

• σshare´e a m´axima distˆancia fenot´ıpica permitida entre dois indiv´ıduos para que sejam pertencentes a um mesmo nicho.

• d(i, j) ´e a Distˆancia Euclidiana Normalizada e que ´e dada por:

d(i, j) = v u u t np−1 X k=0 ( x i k− x j k max(k) − min(k)) 2

onde np ´e o n´umero de parˆametros (vari´aveis de decis˜ao) definindo os cromos- somos i e j; xi

k e x j

k s˜ao, respectivamente, os valores reais dos parˆametros k dos cromossomos i e j, e os valores m´aximo e m´ınimo do k-´esimo parˆametro do conjunto de indiv´ıduos (popula¸c˜ao):

max(k) = max i=0,...,M −1(x i k) e min(k) = min i=0,...,M −1(x i k)

sendo M o n´umero de indiv´ıduos pertencendo ao front atual. O uso da distˆancia normalizada ´e de interesse pois permite que σshare∈ [0, 1].

4. Na medida em que todo o processo ´e altamente dependente do valor de σshare, ´e de interesse o emprego de um processo adaptativo em fun¸c˜ao do front atual. O m´etodo utilizado est´a a seguir:

(a) Considerando cada parˆametro de cada cromossomo, calcular seus valores m´aximo (max) e m´ınimo (min).

(b) Sabendo-se que nf ront ´e o n´umero de cromossomos do front atual, calcular: σshare =

max − min nf ront× max

O σshare assim encontrado deve ser o utilizado no front atual.

5. Ap´os o processamento do nicho para cada indiv´ıduo do front atual ´e atribu´ıdo um novo valor de dummy fitness, a saber, fi/mi.

6. Neste est´agio os pontos n˜ao-dominados que formam o front atual s˜ao temporaria- mente separados da popula¸c˜ao. Nesta, um novo front com solu¸c˜oes n˜ao-dominadas ´e calculado e o processo ´e repetido at´e que toda a popula¸c˜ao tenha sido classificada. 7. Ap´os toda a popula¸c˜ao ter sido processada e a cada indiv´ıduo ter sido atribu´ıdo um valor de dummy fitness os operadores de sele¸c˜ao, cruzamento e muta¸c˜ao s˜ao aplicados da maneira usual, como se tratasse de uma algoritmo gen´etico mono- objetivo.

Um fluxograma do funcionamento do NSGA pode ser visto na figura 5.5.

Como j´a dito antes, excetuando-se o processo de classifica¸c˜ao da popula¸c˜ao em fronts, o NSGA opera de modo semelhante ao algoritmo gen´etico simples. Entretanto, com o objetivo de melhorar a diversidade gen´etica e, conseq¨uentemente, incrementar o n´umero de decis˜oes pertencentes ao conjunto de Pareto-´otimo, foi implementada uma varia¸c˜ao dinˆamica das taxas dos operadores de cruzamento e de muta¸c˜ao (Vasconcelos, 2003). Al´em de manter a diversidade gen´etica da popula¸c˜ao em um n´ıvel adequado, este procedimento tamb´em tem por objetivo evitar uma poss´ıvel convergˆencia prematura. Dentre as duas possibilidades existentes, que s˜ao a adapta¸c˜ao dinˆamica por indiv´ıduo e aquela baseada no comportamento m´edio da popula¸c˜ao, optou-se pela segunda, j´a que o contexto geral ´e aquele da otimiza¸c˜ao de um problema multi-objetivo.

O m´etodo baseia-se na chamada medida de diversidade gen´etica, a partir da qual as probabilidades dos operadores de cruzamento e de muta¸c˜ao variam de acordo com os valores de desempenho m´edio e m´aximo encontrados numa popula¸c˜ao:

mdg=

(fmax− fmin) fmax

Quando mdg << 1 tem-se pouca diversidade gen´etica e quando mdg ∼= 1 tem-se, ao contr´ario, muita diversidade gen´etica. Em outras palavras, isto significa que, ao longo do processo, quer-se variar as probabilidades dos operadores de cruzamento e muta¸c˜ao de tal forma que o valor m´edio de desempenho seja convergente ao valor m´aximo de desempenho (para cada gera¸c˜ao).O procedimento completo ´e descrito no pseudo-c´odigo abaixo:

pm = pmmin pc = pcmax Sen˜ao se mdg ≤ Vinf pm = pmmax pc = pcmin Sen˜ao

pm = interpola(mdg, Vinf, Vsup, pmmin, pmmax) pc = interpola(mdg, Vinf, Vsup, pcmin, pcmax)

onde pm ´e a probabilidade do operador de muta¸c˜ao e pmmin e pmmax, respectivamente, seus valores m´ınimo e m´aximo, pc ´e a probabilidade do operador de cruzamento e pcmin e pcmax, respectivamente, seus valores m´ınimo e m´aximo, mdg ´e a medida de diversidade gen´etica da faixa escolhida e interpola() uma fun¸c˜ao de interpola¸c˜ao linear.

Na figura 5.6 pode ser observado o comportamento do processo descrito acima. Nesta

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5

Adaptação Dinâmica Dentro de Faixa

mdg

Taxas de cruzamento e mutação

Região de boa diversidade genética pmmax

pmmin pcmax

pcmin

Pouca diversidade Muita diversidade

Probabilidade de Mutação Probabilidade de Cruzamento

Figura 5.6: Adapta¸c˜ao Dinˆamica Pela M´edia da Popula¸c˜ao Dentro da Faixa [Vmin, Vmax]. figura optou-se por valores meramente ilustrativos como delimitadores de faixa e das probabilidades de muta¸c˜ao e de cruzamento com o objetivo de facilitar a visualiza¸c˜ao do

m´etodo atrav´es da mesma. Na pr´atica, principalmente no caso das probabilidades dos o- peradores, outros valores devem ser empregados. Antes de ilustrar o comportamento deste algoritmo atrav´es de um exemplo, resta ainda uma palavra acerca do m´etodo empregado para determinar a precis˜ao de c´alculo.

Considerando que cada elemento da popula¸c˜ao ´e uma cadeia de bits representando uma ou mais vari´aveis, a precis˜ao de c´alculo realizada com as vari´aveis representadas por esta cadeia ´e diretamente proporcional ao seu comprimento. Supondo x um vetor de vari´aveis de decis˜ao e considerando li e [xmini , xmaxi ] como representando, respectivamente, o comprimento da cadeia de bits e a faixa de varia¸c˜ao da i-´esima vari´avel, a distˆancia entre dois pontos da malha desta vari´avel pode ser calculada como:

∆xi = xmax

i − xmini 2li− 1

Com base nesta equa¸c˜ao ´e poss´ıvel calcular-se, dada uma precis˜ao, o comprimento de uma cadeia necess´aria para alcan¸car-se uma determinada precis˜ao. Desta forma, tem-se:

li = ceil(log2( xmax

i − xmini ∆xi

+ 1))

onde ceil() retorna o pr´oximo inteiro maior ou igual ao seu argumento. Assim, caso seja desejada uma precis˜ao igual a p casas decimais, basta fazer ∆xi = 10−(p+1) e calcular o comprimento da cadeia de bits necess´ario para alcan¸car-se tal precis˜ao. Se, por exemplo, p = 6 e xi varia no intervalo [0, 1], ser´a necess´aria um cadeia de 24 bits para alcan¸car-se a precis˜ao desejada nesta vari´avel.

A seguir, como exemplo de aplica¸c˜ao, ´e mostrado o emprego do NSGA na resolu¸c˜ao do problema com duas fun¸c˜oes objetivo mostrado na sub-se¸c˜ao 5.5.1, p´agina 64. Para o processo de otimiza¸c˜ao o algoritmo foi inicializado com os parˆametros abaixo:

• N´umero de indiv´ıduos (popula¸c˜ao): 500

• Faixa de varia¸c˜ao da vari´avel independente: [−6, 6] • Tamanho do cromossomo: 22 (precis˜ao de 10−5) • N´umero de gera¸c˜oes: 10

• Adapta¸c˜ao dinˆamica:

– Probabilidade m´ınima do operador de muta¸c˜ao: 0.001 – Probabilidade m´axima do operador de muta¸c˜ao: 0.05 – Probabilidade m´ınima do operador de cruzamento: 0.1 – Probabilidade m´axima do operador de cruzamento: 0.9 – Valor inferior da faixa: 0.1

Ap´os dez gera¸c˜oes todos os indiv´ıduos da popula¸c˜ao convergiram para o front de Pareto, resultado que pode ser visto na figuras 5.7 e 5.8. Na primeira pode ser visto a concordˆancia deste resultado com a resolu¸c˜ao anal´ıtica mostrada na sub-se¸c˜ao 5.5.1 e na qual se observa que o valor da vari´avel independente x fica restrita ao intervalo [0, 2]. Na outra figura pode-se ver o front de Pareto e tamb´em a grande diversidade de resultados poss´ıveis, o que mostra, por sua vez, a eficiˆencia do m´etodo de nicho (compartilhamento) empregado.

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.5 1 1.5 2 2.5 3 3.5 4

As duas funções objetivo f1(x) e f2(x)

x

f1(x) e f2(x)

f1(x) = x2

f2(x) = (x−2)2

Figura 5.7: Universo de decis˜ao para as fun¸c˜oes f1 e f2.