Vous êtes sur la page 1sur 26

Universidade Federal do Espı́rito

Santo
Centro Tecnológico
Departamento de Engenharia Elétrica

Algoritmo Genético

Mariana Rampinelli Fernandes

Vitória, 20 de dezembro de 2006


Sumário

1 Algortimos Genéticos p. 1

1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 1

1.2 Introdução aos Algoritmos Genéticos . . . . . . . . . . . . . . . . p. 2

1.3 Terminologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 4

1.4 Estrutura de um Algoritmo Genético . . . . . . . . . . . . . . . . p. 5

1.5 Representação e Codificação . . . . . . . . . . . . . . . . . . . . . p. 6

1.5.1 Estudo de Caso: Máximo de uma Função . . . . . . . . . p. 7

1.6 Geração da População Inicial . . . . . . . . . . . . . . . . . . . . p. 7

1.6.1 Estudo de Caso: Escolha da População Inicial . . . . . . . p. 8

1.7 Avaliação do Nı́vel de Aptidão: Função Fitness . . . . . . . . . . p. 9

1.7.1 Estudo de Caso: Função Fitness . . . . . . . . . . . . . . . p. 10

1.8 Métodos de Seleção . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

1.8.1 Seleção por Roleta . . . . . . . . . . . . . . . . . . . . . . p. 11

1.8.2 Seleção por Torneio . . . . . . . . . . . . . . . . . . . . . . p. 12

1.8.3 Seleção por Ordenamento . . . . . . . . . . . . . . . . . . p. 12

1.8.4 Seleção Bi-Classista . . . . . . . . . . . . . . . . . . . . . . p. 12

1.8.5 Seleção Elitista . . . . . . . . . . . . . . . . . . . . . . . . p. 12

1.8.6 Estudo de Caso: Método de Seleção . . . . . . . . . . . . . p. 13

1.9 Operadores Genéticos . . . . . . . . . . . . . . . . . . . . . . . . . p. 14

1.9.1 Operador Cruzamento ou Crossover . . . . . . . . . . . . p. 14

1.9.2 Operador Mutação . . . . . . . . . . . . . . . . . . . . . . p. 15

1.10 Critério de Parada . . . . . . . . . . . . . . . . . . . . . . . . . . p. 16


1.11 Estudo de Caso: Aplicação de Operadores Genéticos . . . . . . . p. 16

1.12 Configuração dos Parâmetros . . . . . . . . . . . . . . . . . . . . p. 19

1.12.1 Tamanho da População . . . . . . . . . . . . . . . . . . . . p. 20

1.12.2 Número de Gerações . . . . . . . . . . . . . . . . . . . . . p. 20

1.12.3 Probabilidade de Crossover . . . . . . . . . . . . . . . . . p. 20

1.12.4 Probabilidade de Mutação . . . . . . . . . . . . . . . . . . p. 21

1.13 Exercı́cio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22

Referências p. 23

iii
1

1 Algortimos Genéticos

1.1 Introdução

A Computação Evolucionária compreende diversos algoritmos inspirados


no princı́pio Darwiniano da evolução das espécies e na genética. São algoritmos
probabilı́sticos que fornecem um mecanismo de busca paralela e adaptativa base-
ado no princı́pio de sobrevivência dos mais aptos e na reprodução. O mecanismo é
obtido a partir de uma população de indivı́duos (possı́veis soluções), representadas
por cromossomos (palavras binárias, vetores, matrizes, etc), cada um associado a
uma aptidão (avaliação da solução do problema), que são submetidos a um pro-
cesso de evolução (seleção, reprodução, cruzamento e mutação) por vários ciclos,
denominados gerações.

Existem diversos problemas para os quais se deseja desenvolver um al-


goritmo eficiente. Muito desses são problemas de otimização, tais como numérica,
combinatorial, outros são de sı́ntese de um objeto, como programa de computador,
circuito eletrônico, por exemplo, e em outros busca-se um modelo que reproduza o
comportamento de determinado fenômeno (machine learning). Para vários desses
problemas geralmente é possı́vel encontrar um algoritmo que ofereça uma solução
ótima ou aproximadamente ótima. Alguns desses algoritmos, no entanto, reque-
rem uma informação complementar como, por exemplo, derivadas, para o caso de
técnicas de gradiente. Muitas vezes, essas informações não são disponı́veis ou são
difı́ceis de se obter.

A Computação Evolucionária dispensa informações complementares e


oferece algoritmos gerais que podem ser aplicados a problemas complexos, com
1.2 Introdução aos Algoritmos Genéticos 2

grande espaço de busca, de difı́cil modelagem ou para os quais não há um algo-
ritmo eficiente disponı́vel. Esses algoritmos são: Algoritmo Genético, Programação
Genética, Programação Evolutiva e Estratégias de Evolução.

O Algoritmo Genético (AG) é uma técnica onde os cromossomos são


palavras binárias ou vetores que codificam possı́veis soluções para um problema.

A Programação Genética (PG) é uma técnica automática de programação


que propicia a evolução de programas de computadores que resolvem, ou resolvem
aproximadamente, um problema. PG é uma expansão dos Algoritmos Genéticos que
foi desenvolvida com o intuito de evoluir um conjunto de programas de computador,
ao invés de uma cadeia de bits.

A Programação Evolutiva (PE) foi originalmente concebida por Lawrence


J. Fogel em 1960 como uma estratégia de otimização estocástica similar aos AGs,
mas que enfatiza o relacionamento comportamental entre os progenitores e suas
descendências, ao invés de tentar emular operadores genéticos especı́ficos observados
na natureza. São similares ao AG, mas não implementam o cruzamento e, ao invés
disso, confiam na aptidão para sobrevivência e mutação.

O campo de Estratégias de Evolução (EEs) foi concebido para solucio-


nar problemas técnicos de otimização (PTOs) e até recentemente era empregado
quase que exclusivamente na Engenharia Civil, como uma alternativa às soluções
convencionais. Normalmente não há uma função analı́tica objetiva fechada para os
PTOs e portanto nenhum método aplicável de otimização além da intuição de enge-
nheiros. Em uma Estratégia de Evolução, cada progenitor produz um descendente
por geração a partir da aplicação de mutações normalmente distribuı́das, na qual
pequenos passos são mais provável que grandes passos, até que o descendente exiba
um desempenho superir ao do seu progenitor e o substitua.

1.2 Introdução aos Algoritmos Genéticos

Os Algoritmos Genéticos foram introduzidos por Holland (1975) e tratam-


se de algoritmos de busca baseados no mecanismo de evolução natural das espécies,
1.2 Introdução aos Algoritmos Genéticos 3

teorizado por Darwin e na teoria da genética de Mendel.

Uma das principais aplicações dos algoritmos genéticos é a utilização em


problemas de otimização combinatória, nos quais existe um conjunto de elementos
e deseja-se encontrar aquele que melhor se adapte a condições previamente espe-
cificadas [1]. Nesse contexto, o AG realiza procedimentos de busca no espaço das
soluções viáveis, utilizando regras probabilı́sticas para combinar soluções a fim de
obter melhorias de qualidade.

Muitos problemas de engenharia podem ser modelados como problemas


de otimização combinatória e sua resolução, obtida através de métodos algébricos,
numéricos ou heurı́sticos, que fazem uma busca no espaço multidimensional das
variáveis do problema. Estes métodos apresentam fraco desempenho quando a na-
tureza do problema envolve não-linearidades, descontinuidades ou espaços de busca
grandes. Nestas situações os Algoritmos Genéticos apresentam utilidade e robustez
[1][2].

Os algoritmos genéticos diferem dos procedimentos de busca tradicionais


principalmente por não trabalharem com apenas um ponto, mas com um conjunto
destes, e por utilizarem a função de otimização isoladamente, sem a necessidade de
derivadas ou outros cálculos auxiliares [1].

Esses algoritmos avaliam um conjunto de soluções e, posteriormente,


combinam mecanismos de valorização das soluções mais adaptadas ao objetivo em
questão, com estruturas de combinação e reprodução. Assim, um novo conjunto de
soluções é criado utilizando-se informações das soluções avaliadas anteriormente. A
Figura 1 ilustra esse processo.

As variações aleatórias são combinadas com a seleção polarizada pelos


valores de adequação (ou nı́veis de fitness) atribuı́dos a cada solução. Desta forma,
o algoritmo genético não é considerado uma busca puramente aleatória, pois ex-
plora eficientemente a informação histórica para encontrar novas soluções capazes
de melhorar a resposta ao critério de desempenho estipulado [3].

A literatura de engenharia de controle apresenta aplicações do algoritmo


genético em uma extensa faixa de configurações. São encontradas aplicações em
1.3 Terminologia 4

controle clássico e moderno, controle ótimo, controle adaptativo, controle robusto e


sistemas de identificação [4].

Figura 1: Ilustração do processo de evolução. Dois elefantes, os progenitores, pos-


suem genes que caracterizam suas cores: azul claro e azul escuro. A partir do
crossover e da mutação, essa caracterı́sticas foi misturada e modificada de modo a
gerar novos elefantes. A partir da avaliação natural, esses novos indivı́duos serão
considerados mais ou menos aptos a sobreviver.

1.3 Terminologia

Como os algoritmos genéticos trabalham analogamente aos mecanismos


biológicos de seleção natural e princı́pios da genética, algumas terminologias dessas
áreas foram adotadas e são freqüentemente encontradas na literatura [1]. Desse
modo, é importante descrever os termos usados em Algoritmo Genético:

1. Cromossomo ou Indivı́duo ⇒ vetores de caracteres (genes) que representam


as variáveis do problema. Cada cromossomo representa uma possı́vel solução
para o problema.

2. Gene ⇒ é a unidade básica do cromossomo, o caractere que descreve uma


determinada variável do problema.

3. Alelo ⇒ determina as possı́veis variações de um gene.

4. População ⇒ conjunto de cromossomos, inserido no espaço de busca do pro-


blema.
1.4 Estrutura de um Algoritmo Genético 5

5. Geração ⇒ número da iteração que o algoritmo genético executa.

6. Operadores Genéticos ⇒ operações que o algoritmo genético realiza sobre os


cromossomos com o objetivo de explorar o espaço de busca.

7. Função Fitness ou de Avaliação ⇒ é a função que se quer otimizar. Representa


as caracterı́sticas do problema e é usada para avaliar o nı́vel de aptidão dos
cromossomos.

8. Nı́vel de Aptidão ⇒ representa quão próximo está determinado cromossomo


da solução requerida pela função de avaliação.

9. Recombinação ou Crossover ⇒ consiste na troca de informações entre dois


cromossomos. Esse evento é aleatório.

10. Mutação ⇒ consiste na troca (evento aleatório) da caracterı́stica de um gene


(variável) em determinado cromossomo.

1.4 Estrutura de um Algoritmo Genético

A configuração básica da rotina de um algoritmo genético pode ser es-


truturada da seguinte forma [1]:

i. Gerar aleatoriamente a população inicial de parâmetros com n soluções para o


problema.

ii. Avaliar o grau de aptidão em relação ao problema de cada solução, classificando-


as de acordo com este critério.

iii. Selecionar as soluções com maior grau de aptidão aplicando-se estratégia de


seleção pré-determinada.

iv. Aplicar os operadores genéticos nas soluções selecionadas gerando uma nova
população.

v. Repetir os passos (ii) a (iv) até que um critério de parada seja satisfeito.

O pseudo-código pode ser analisado também na Figura 2


1.5 Representação e Codificação 6

Figura 2: Pseudo-código para o Algoritmo Genético

1.5 Representação e Codificação

O primeiro passo para iniciar um algoritmos genéticos é a escolha da


representação dos indivı́duos da população. A representação dos indivı́duos no al-
goritmo genético pode ser feita de muitas maneiras, dependo do problema a ser
tratado. Basicamente, existem três principais métodos de codificação:

• Representação por código binário: os valores numéricos reais em base decimal


são transformados para a base binária. Os cromossomos então, são represen-
tados por uma cadeia de bits.

• Representação por código gray: é similar ao código binário, porém com orde-
namento numérico diferente. O código gray se baseia na propriedade de que
quaisquer pontos próximos entre si dentro do espaço do problema diferem-se
somente por um bit,diferentemente do código binário, no qual números sub-
seqüentes podem possuir diferenças de mais de um bit.

• Representação por ponto flutuante: cada cromossomo é codificado como um


vetor de números de pontos flutuantes de mesmo tamanho que o vetor solução.
Cada parâmetro é forçado a se situar dentro de determinada faixa e os opera-
dores genéticos precisam ser projetados de maneira a respeitar esta restrição.

No algoritmo proposto por Holland (1975), denominado como algoritmo


genético clássico ou canônico - um dos mais utilizados e conhecidos - as soluções são
1.6 Geração da População Inicial 7

codificadas em arranjos binários de tamanho fixo [1].

Porém, segundo Michalewicz (1996), a representação binária possui al-


gumas desvantagens quando aplicada em problemas de grande dimensão e quando
aplicada em problemas de grande precisão. Neste último caso, o tamanho da cadeia
de bits necessária para atender a precisão de vários dı́gitos depois do ponto decimal
pode se tornar grande o suficiente para inviabilizar sua utilização.

Assim, a representação binária não é universalmente aceita na litera-


tura [5], alguns pesquisadores indicam que a representação ponto flutuante ou real,
como também é chamada, apresenta melhor desempenho para aplicações que ne-
cessitem de tratamento de valores contı́nuos, pois apresenta mais compatibilidade,
precisão e rapidez de execução. A representação binária deve ser somente utilizada
em aplicações que requeiram o tratamento de valores discretos [5].

1.5.1 Estudo de Caso: Máximo de uma Função

Uma aplicação simples para Algoritmos Genéticos é encontrar o máximo


para uma função, fugindo de possı́veis máximos locais. Desse modo, para ilustrar
esse método, será utilizada a função:

f (x) = −4x2 + 64x − 60

O objetivo desse problema é encontrar o ponto de máximo desta função


sendo x ∈ Z e 1 ≤ x ≤ 15. O gráfico pode ser visto na Figura 3.

De acordo com o problema a ser resolvido, a representação escolhida para


os indivı́duos da população de soluções será binária e cada cromossomo terá 4 genes.
Desse modo, todos os valores, de 1 a 15 poderão ser representados.

1.6 Geração da População Inicial

Um dos grandes problemas de toda computação evolutiva é a escolha


do tamanho da população inicial. Essa não pode ser exageradamente grande, pois
assim terá um espaço de busca muito grande tornando o algoritmo extremamente
1.6 Geração da População Inicial 8

Figura 3: Gráfico da função f (x) = −4x2 + 64x − 60.

lento. Se a população for muito pequena surge o risco de não existir a resposta no
espaço de busca, ou de o algoritmo convergir rapidamente, prejudicando a busca por
uma solução ótima.

A população inicial deve ser gerada de forma a conter cromossomos sufi-


cientemente variados [1], para que o algoritmo tenha facilidade em percorrer todos
os sentidos no espaço de busca. Para se obter esta variabilidade, a geração da
população inicial é normalmente realizada de forma aleatória.

Em algumas ocasiões, nas quais existe algum conhecimento sobre a solução


do problema, é interessante a inclusão de indivı́duos que representem este conhe-
cimento heurı́stico. Porém esta prática deve ser realizada com cuidado, pois pode
impedir o algoritmo de obter soluções melhores que não estejam presentes na po-
pulação inicial.

1.6.1 Estudo de Caso: Escolha da População Inicial

Para o problema de encontrar o valor máximo da função f (x) = −4x2 +


64x − 60, foi formada aleatoriamente uma população com 4 indivı́duos, mostrados
na Figura 4. Como visto na seção anterior, cada indivı́duo, com codificação binária,
é formado por 4 genes.
1.7 Avaliação do Nı́vel de Aptidão: Função Fitness 9

Figura 4: Indivı́duos da populaçã inicial do AG. A coluna 2, Ai , mostra a codificação


em binário e a coluna 3, X, mostra seu valor em número inteiro.

1.7 Avaliação do Nı́vel de Aptidão: Função Fit-


ness

A função de avaliação tem por objetivo avaliar cada cromossomo esta-


belecendo um valor numérico que representa o quão próximo cada um deles está da
solução ideal. A função de avaliação possui como entrada uma cadeia de bits ou um
vetor (o cromossomo) e como saı́da um valor real (o nı́vel de aptidão).

Portanto, a função de avaliação codifica o conhecimento sobre o pro-


blema e permite quantificar cada solução comparativamente. Este é o único critério
utilizado para o direcionamento da busca [6]

Na engenharia de controle, é comum encontrar aplicações que utilizam


uma função de avaliação que aplica um dos seguintes ı́ndices de desempenho de
sistemas de controle em malha fechada, ou composição destes [3]:

• IAE - Integral of Absolute Value of Error (Integral do Módulo do Erro):


Z
|e(t)|dt

• ISE - Integral of Error Squared (Integral do erro quadrático):


Z
e2 (t)dt

• ITAE - Integral Time Absolute Error (Integral do módulo do erro multiplicado


pelo tempo): Z
t|e(t)|dt
1.7 Avaliação do Nı́vel de Aptidão: Função Fitness 10

• ITSE - Integral Time Squared Error (Integral do erro Quadrático Ponderado


pelo Tempo): Z
t.e2 (t)dt

• RPE - Relative Probable Error (Erro de previsão relativo):


R 2
e (t)dt
R
ref 2 (t)dt

Nas quais, e(t) é o erro de regime em malha fechada e ref (t) é a referência
do processo. Estes ı́ndices de desempenho são comumente utilizados para avaliar
controladores.

1.7.1 Estudo de Caso: Função Fitness

A função fitness do algoritmo genético deve avaliar quão próximo do


objetivo está o cromossomo avaliado. Desse modo, para o problema em estudo, a
função fitness pode ser a própria função para a qual se deseja encontrar o ponto em
que ela atinge seu valor máximo. Quanto maior o valor de f (x), mais próximo x
está do valor desejado e ”supostamente”desconhecido.

A Figura 5 mostra a aptidão de cada indivı́duo. Nota-se que o indivı́duo


2 e 4, com x = 5 e x = 11 são os indivı́duos mais aptos nessa geração, com fitness
igual a 160.

Figura 5: Função fitness aplicada à primeira geração.


1.8 Métodos de Seleção 11

1.8 Métodos de Seleção

O processo de seleção ocorre após a aplicação da função de avaliação e


conseqüente determinação do nı́vel de aptidão de cada cromossomo. O processo
de seleção normalmente é baseado no princı́pio da sobrevivência dos melhores in-
divı́duos. Assim, os cromossomos com melhores nı́veis de aptidão possuem uma
maior probabilidade de serem mantidos e selecionados para a etapa de reprodução.
Da mesma forma, os cromossomos com baixos nı́veis de aptidão possuem pouca pro-
babilidade de permanecer e, conseqüentemente, podem ser eliminados da população.

1.8.1 Seleção por Roleta

O algoritmo genético clássico utiliza um esquema de seleção de indivı́duos


chamado seleção por roleta. Neste método cada indivı́duo ocupa, em uma roleta,
uma área proporcional ao seu nı́vel de aptidão. Assim, aos indivı́duos com maior
aptidão é associada uma fatia maior da roleta e aos indivı́duos com menor ap-
tidão, fatias menores. Em seguida faz-se a simulação do giro da roleta n vezes,
selecionando-se aleatoriamente os n indivı́duos que se manterão na etapa seguinte.
Os mais aptos possuem uma probabilidade maior de serem selecionados, podendo,
inclusive, serem selecionados mais de uma vez, enquanto os menos aptos, com uma
probabilidade menor, podem desaparecer logo após as primeiras gerações.

O método de seleção por roleta é o método mais comumente utilizado,


porém, apresenta algumas limitações. Este tipo de seleção leva o algoritmo a di-
minuir a diversidade da população e isto ocasiona, em determinadas situações, a
convergência prematura das soluções [6].

Um outro problema é que, como este tipo de seleção trabalha com proba-
bilidades, é possı́vel que um indivı́duo com alto nı́vel de aptidão não seja selecionado
e uma solução interessante se perca nas primeiras gerações.

Devido a estes problemas, outros métodos de seleção foram desenvolvi-


dos, como seleção por torneio, seleção por ordenamento, seleção bi-classista, técnica
estilista [1].
1.8 Métodos de Seleção 12

1.8.2 Seleção por Torneio

Geram-se grupos aleatórios de indivı́duos. O indivı́duo com o maior nı́vel


de aptidão no grupo é selecionado, enquanto que os demais são descartados. Este
método de seleção apresenta a vantagem de não acarretar a convergência prematura
do algoritmo e dificultar a estagnação do processo.

1.8.3 Seleção por Ordenamento

O método de seleção por ordenamento enumera os indivı́duos de acordo


com os seus respectivos nı́veis de aptidão. Para a determinação da probabilidade de
seleção podem ser utilizados mapeamentos lineares ou exponenciais.

Este método também não acarreta a convergência prematura do algo-


ritmo, porém, apresenta como desvantagem o esforço computacional extra necessário
para efetuar ordenamentos constantes de toda a população.

1.8.4 Seleção Bi-Classista

A seleção bi-classista ordena os indivı́duos da população e seleciona uma


porcentagem pré-determinada de melhores indivı́duos, e uma porcentagem de piores
indivı́duos, objetivando manter a diversidade em todas as gerações.

1.8.5 Seleção Elitista

Esta técnica é utilizada em conjunto com algum método de seleção, nor-


malmente a roleta, com o objetivo de aumentar a velocidade de convergência do
algoritmo e garantir que determinado número de indivı́duos com bom nı́vel de ap-
tidão sejam repassados para a geração seguinte.

A técnica elitista envia diretamente certo número de melhores indivı́duos


da população corrente para a próxima geração, evitando, assim, a possı́vel perda de
boas soluções no processo de seleção. Em muitas implementações costuma-se utilizar
o elitismo de pelo menos o melhor indivı́duo da população.

A desvantagem da utilização da técnica elitista é a possibilidade de forçar


1.8 Métodos de Seleção 13

a busca, devido à reprodução maior deste indivı́duo durante as evoluções, o que pode
gerar a convergência prematura do algoritmo genético.

Alternativamente a este procedimento, existe a solução de manter as


cópias dos melhores indivı́duos obtidos durante as evoluções isolados do corpo prin-
cipal do programa. Neste caso, o elitismo mantém determinado número de cópias de
bons elementos dentro de uma casta isolada do programa principal, que não partici-
pam do processo de seleção e não sofrem alterações dos operadores genéticos. Além
disto, dentro desta casta não existem soluções repetidas.

Assim, a casta elitista, além de ser responsável pela garantia de trans-


missão de bons indivı́duos para a população seguinte, tem a função de preservar o
conjunto de melhores soluções obtidas até o encerramento da rotina.

1.8.6 Estudo de Caso: Método de Seleção

Na criação as gerações seguintes, é necessário que sejam selecionados os


indivı́duos da população atual após o cálculo do nı́vel de aptidão a partir da função
fitness. Para o problema em questão, foi utilizado o método da roleta, no entanto,
sem o uso de elitismo. Sendo assim, existe o risco de uma boa solução ser perdida
entre uma geração e outra.

Os passos a seguir mostram o algoritmo para implementar a roleta:

i. Somar o fitness de toda população Fsun .

ii. Gerar um número randômico n entre 0 e Fsun .

iii. Retornar o primeiro indivı́duo cujo fitness somado ao fitness dos indivı́duos
anteriores, seja maior ou igual a n.

A Figura 6 mostra a probabilidade de cada indivı́duo ser selecionado.

Desse modo, a probabilidade de cada um dos n cromossomos serem es-


colhidos é:

f (xi )
pi = Pn
j=1 f (xj )
1.9 Operadores Genéticos 14

Figura 6: Roleta para população inicial

1.9 Operadores Genéticos

O processo de seleção isoladamente não cria uma nova geração, apenas


seleciona os indivı́duos mais aptos para fazerem parte do grupo que irá construir a
próxima população.

A geração de novos indivı́duos e, conseqüentemente, da nova população,


é feita através da utilização de operadores genéticos. Estes operadores tentam criar
novas e melhores soluções a partir das soluções existentes (selecionadas), encami-
nhando a busca a pontos cada vez mais próximos do critério de desempenho.

A função dos operadores genéticos é modificar os cromossomos, através


de sucessivas gerações, com o objetivo de encontrar o melhor resultado no final
do processo. Os operadores diversificam a população, resguardando e tentando
aprimorar as caracterı́sticas boas dos cromossomos já encontrados.

Os operadores genéticos são controlados por parâmetros que definem a


probabilidade de suas aplicações. Estes parâmetros são configurados no momento
do projeto e seus ajustes influenciam o desempenho do algoritmo. Os operadores
genéticos utilizados pelo algoritmo são recombinação, ou crossover, e mutação [1].

1.9.1 Operador Cruzamento ou Crossover

O crossover cria novos cromossomos através da combinação de dois ou


mais indivı́duos selecionados aleatoriamente. O objetivo desta aplicação é a troca
de informação entre diferentes soluções candidatas [1].

Este operador pode ser utilizado de maneiras distintas, entre as quais, as


1.9 Operadores Genéticos 15

mais comuns são:

• Cruzamento ponto único: um ponto de cruzamento é escolhido e a partir


dele as informações genéticas dos cromossomos aleatórios são trocadas. Um
exemplo de crossover em um único ponto pode ser visto na Figura 9

Figura 7: Progenitores da geração n. Figura 8: Filhos da geração n+1.

• Cruzamento multi-pontos: é uma generalização da idéia de troca de material


genético, na qual muitos pontos de cruzamento podem ser utilizados.

Figura 9: Progenitores da geração n. Figura 10: Filhos da geração n+1.

Não há nenhuma comprovação de que alguma maneira de utilização do


operador de crossover apresente um desempenho superior às demais. Apenas é
possı́vel verificar que cada maneira de se aplicar o operador é particularmente efici-
ente para uma determinada classe de problemas, e para outras, não.

1.9.2 Operador Mutação

O operador de mutação tem como objetivo manter e propiciar a diver-


sidade genética da população [1]. Sua probabilidade de ocorrência é muito baixa,
na ordem de 0, 01%. Este operador implica na alteração aleatória de uma ou mais
caracterı́sticas de um cromossomo escolhido, porporcionando a introdução de novos
elementos na população.

A utilização deste operador visa resgatar material genético perdido e


inserir material não explorado, prevenindo desta maneira a convergência prematura
1.10 Critério de Parada 16

do algoritmo para soluções sub-ótimas [5]. A Figura 11 mostra um exemplo de


mutação.

Figura 11: Exemplo de mutação: em amarelo o gene que sofreu mutação

1.10 Critério de Parada

A finalização ideal do algoritmo genético seria a interrupção do procedi-


mento somente no momento em que a solução global fosse encontrada. Porém, a
maneira de se identificar este ponto global é desconhecida na maioria dos casos [6].

Devido a isto, é necessária a estipulação de um critério de parada que


pode ser feita de diversas formas, como por exemplo, a observação da convergência da
população, que ocorre quando praticamente todos os indivı́duos são cópias idênticas
da mesma seqüência de genes [1], a determinação de um número máximo de gerações,
ou limitação do tempo de processamento, também podem ser utilizados.

1.11 Estudo de Caso: Aplicação de Operadores


Genéticos

Continuando o processo para encontrar o valor de x tal que f (x) =


−4x2 + 64x − 60 seja máxima, é realizado a seleção pelo método da roleta, coforme
mostra a Figura 12. A roleta ilustrada foi construı́da com base nos valores mostrados
pela Figura 6.

Desse modo, foram selecionados os indivı́duos A2 , A4 , A4 e A3 e aplicados


os operadores genéticos, tal como na Figura 13:

Com a Geração 2 criada, é necessário repetir o processo de avaliação. O


resultado é mostrado na Figura 14.
1.11 Estudo de Caso: Aplicação de Operadores Genéticos 17

Figura 12: Ilustração da roleta para população inicial.

Figura 13: Operações Genéticas sobre os indivı́duos selecionados da 1a geração.

Nota-se uma grande melhora da 2a geração em relação à 1a geração, uma


vez que o maior valor para f (x) anteriormente era de 160 e agora é de 192. Desse
modo, a diferença entre os melhores indivı́duos das gerações é de 32. Após a nova
seleção, os indivı́duos A1 , A3 , A2 e A3 são escolhidos para compor a próxima geração,
como mostra a Figura 15.

A nova avaliação de fitness é mostrada na Figura 16. A diferença entre


o melhor indivı́duo dessa geração para a anterior é de apenas 4. Isso indica que o
algoritmo está convergindo.

A aplicação das operações genéticas nos indivı́duos selecionados na 3a


geração pode ser visto na Figura 17.

A avaliação dos indivı́duis criados para a 4a geração é mostrado na Figura


18. Nota-se que não há diferença entre os nı́veis de aptidão entre os melhores elemen-
tos, o que mostra o algoritmo convergindo. Em sistemas maiore, essa convergência
1.11 Estudo de Caso: Aplicação de Operadores Genéticos 18

Figura 14: Fitness e roleta para 2a Geração.

Figura 15: Operações Genéticas sobre os indivı́duos selecionados da 2a geração.

demoraria algumas gerações mais e essa diferença entre gerações (convergência) po-
deria ser um critério de parada. Outro critério de parada que pode ser adotado é
a quantidade de iterações, ou seja, de gerações criadas. Nesse caso, o algoritmo foi
até a 4a geração.

Figura 16: Fitness e roleta para 3a Geração.


1.12 Configuração dos Parâmetros 19

Figura 17: Operações Genéticas sobre os indivı́duos selecionados da 3a geração.

Figura 18: Fitness e roleta para 4a Geração.

1.12 Configuração dos Parâmetros

Existem quatro importantes parâmetros de controle que influenciam o


desempenho do algoritmo genético: tamanho da população, número de gerações,
probabilidade de crossover e probabilidade de mutação [1]. A configuração adequada
destes parâmetros é um dos passos importantes no momento do projeto, pois a
eficiência do algoritmo depente disto.

Essa configuração é determinada heuristicamente. Apesar de diversas


pesquisas na área, não existe uma regra determinı́stica para o projetista estipular
estes parâmetros de maneira a obter uma adequada relação quanto aos tópicos de
diversidade na população e a capacidade de convergência do algoritmo.

Algumas técnicas adaptativas de ajuste de parâmetro vêm sendo suge-


ridas por pesquisadores, mas nenhuma destas abordagens apresentou um melhoria
significativa no desempenho da busca. Na literatura é possı́vel encontrar algumas re-
comendações. Alguns autores indicam que aplicações tı́picas de algoritmos genéticos
1.12 Configuração dos Parâmetros 20

utilizam população entre 30 e 200 indivı́duos, probabilidade de crossover entre 50%


e 100% e probabilidade de mutação entre 0,1% e 5%.

1.12.1 Tamanho da População

O tamanho da população é um parâmetro que deve ser definido conside-


rando dois aspectos importantes [6]:

• Cobertura do espaço de busca da solução do problema.

• Tempo computacional.

O tamanho da população determina o número de cromossomo da po-


pulação, afetando diretamente o desempenho global e eficiência dos AGs. Com uma
população pequena, o desempenho pode cair, pois a cobertura do espaço de busca
do problema é pequena. Uma grande população, geralmente, fornece uma cobertura
representativa do domı́nio do problema, além de prevenir convergências prematuras
para soluções locais ao invés de globais. No entanto, para se trabalhar com gran-
des populações, são necesários maiores recursos computacionais ou que o algoritmo
trabalhe por um perı́odo de tempo muito maior.

1.12.2 Número de Gerações

O número de gerações é um parâmetro que controla a evolução dos in-


divı́duos, uma vez que determina o número de iterações do algoritmo.

1.12.3 Probabilidade de Crossover

Esse parâmetro indica com qual taxa o operador crossover atua sobre os
indivı́duos selecionados na população. O aumento desse valor acelera a entrada de
novos indivı́duos.

Valores baixos de probabilidade de crossover podem ocasionar a con-


vergência muito lenta do algoritmo e valores muito altos podem acarretar a retirada
muito rápida de indivı́duos com boa aptidão, gerando perdas de boas soluções.
1.12 Configuração dos Parâmetros 21

1.12.4 Probabilidade de Mutação

Determina a probabilidade em que uma mutação ocorrerá. A mutação


é utilizada para dar nova informação à população e também para prevenir que a
população se sature com cromossomos semelhantes. Uma baixa taxa de mutação
previne que uma dada posição fique estagnada em um valor, além de possibilitar
que se chegue em qualquer ponto do espaço de busca. Com uma taxa muito alta, a
busca torna-se essencialmente aleatória, além de aumentar muito o risco de perder
uma boa solução. A melhor taxa de mutação depende da aplicação do AG, mas
alguns autores apontam como 0,1% e 5%.
1.13 Exercı́cio 22

1.13 Exercı́cio

Implemente um algoritmo genético para sintonizar um PID para uma


planta de segunda ordem a sua escolha. Siga algumas recomendações para facilitar
sua implementação:

• Os indivı́duos podem ser codificados em números inteiros. Desse modo, cada


um deve ser um vetor de 3 genes, sendo cada gene representando o Kp , Ki e
Kp .

• Escolha o tamanho da sua população inicial. Depois, compare os resultado do


AG variando o tamanho da população.

• O valor dos genes de cada indivı́duo deve ser aleatório. No entanto, antes de
iniciar o seu AG, tente sintonizar seu PID de modo convencional para limitar
o seu espaço de busca.

• A função fitness deve ser baseada em alguma das função de erro mostrada na
seção 1.7.

• Use elitismo para garantir que seu AG não piore de uma geração para outra.

Com o resultado encontrado pelo AG, você pode dizer se essa confi-
guração para o PID é melhor ou pior da encontrada pelo método tradicional? Por
quê?
23

Referências

[1] GOLDGERB, D. E. Genetic algorithms in Search, Optimization and Machine


Learning. Ann Arbor: [s.n.], 1989.

[2] LOPES, H. S. Algoritmos genéticos em projetos de engenharia: Aplicações e


perspectivas futuras. Anais do IV Simpósio Brasileiro de Automação Inteligente,
São Paulo, 1999.

[3] SAITO, M. M. C. K. Sistemas Inteligentes em Controle e Automação de Pro-


cessos. Rio de Janeiro, RJ: Ciência Moderna, 2004.

[4] TRACHT, Q. W. . P. S. R. An overview of genetic algorithms applied to con-


trol engineering problems. Proceedings of the Second International Conference on
Machine Learning and Cybernetics, Xian, 2003.

[5] COELHO, L. S. C. A. A. R. Algoritmos evolutivos em identificação e controle


de processos: uma visão integrada e perspectivas. SBA Controle e Automação,
Xian, v. 01, n. 01, 1999.

[6] FABRO, J. A. Uma abordagem neuro-nebulosa para controle preditivo de proces-


sos multiestágios. Tese (Doutorado) — Centro Federal de Educação Tecnologia
do Paraná, Cefet-PR, Curitiba, 2003.

Vous aimerez peut-être aussi