05#–#Algoritmos#Genéticos# 5 # Algoritmos*Genéticos* # # “Alguns#chamam#de#evolução,#outros#chamam#de#Deus.”# (William#Herbet#Carruth,#Each%in%His%Own%Tongue)# # 5.1# INTRODUÇÃO# Da#mesma#forma#que#a#natureza#evolui#criaturas#que#são#mais#capacitadas#para#ajustarUse#ao#ambiente#deU las,#pela#seleção#de#características#que#funcionam,#métodos#de#busca#local#promovem#pequenas#alterações#em# soluções#potenciais#para#um#problema#até#que#uma#solução#ótima#seja#identificada.# Algoritmos# genéticos# são# uma# forma# de# busca# local# que# usa# métodos# baseados# em# evolução# para# fazer# pequenas#alterações#em#uma#população#de#cromossomos,#na#tentativa#de#identificar#uma#solução#ótima.# # 5.2# REPRESENTAÇÕES# A#mais#simples#representação#para#algoritmos#genéticos#é#aquela#que#foi#usada#por#John#Holland:#uma#caU deia#de#bits#é#conhecida#como#um#cromossomo#e#cada#bits#é#conhecido#como#um#gene#.#Esses#dois#termos#são# apropriados# diretamente# da# genética# e# ilustram# a# proximidade# com# que# algoritmos# genéticos# espelham# proU cessos#biológicos.# #Discutiremos#algoritmos#genéticos#usando#esta#representação,#mas#vale#lembrar#que#muitas#outras#repreU sentações#são#possíveis#e,#para#problemas#específicos,#representações#diferentes#serão#mais#apropriadas.## A#população#consiste#em#um#conjunto#de#cromossomos.#Cada#um#dos#quais,#composto#de#genes.#Um#croU mossomo#é#geralmente#tomado#para#representar#um#“indivíduo”#completo#dentro#da#população#—#em#outras# palavras,# uma# representação# completa# de# uma# solução# ou# uma# classificação.# Também# é# possível# combinar# cromossomos#para#formar#criaturas,#o#que#espelha#mais#proximamente#a#genética#real,#já#que#cada#indivíduo# no#mundo#real#tem#diversos#cromossomos.## Cada# gene# no# cromossomo# representa# alguma# faceta# da# composição# genética# daquele# individuo.# Por# exemplo,#os#genes#poderiam#ser#inteiramente#independentes#e#representar#a#presença#ou#não#de#certas#partes# de#corpo#em#um#animal.#Mais#comumente,#os#genes#são#combinados#de#uma#forma#menos#transparente.#Por# exemplo,#veremos#como#algoritmos#genéticos#podem#ser#usados#pata#resolver#problemas#de#matemática,#onde# os#bits#de#um#cromossomo#são#geralmente#tratados#como#os#bits#de#um#número#binário#que#represente#uma# solução#para#o#problema.## # 5.3#O#ALGORITMO# # O# processo# de# execução# de# um# algoritmo# genéticos# ocorre# como# a# seguir.# Observe# que# este# processo# é# bem#independente#da#representação#que#estiver#sendo#usada.# 1.#Gere#uma#população#aleatória#de#cromossomos#(esta#será#a#primeira#geração).# 2.#Se#o#critério#de#terminação#for#satisfeito,#pare.#Caso#contrário#siga#para#a#etapa#3.## 3.#Determine#a#aptidão#de#cada#cromossomo.## 4.#Aplique#cruzamento#e#mutação#a#cromossomos#selecionados,#a#partir#da#geração#atual,#para#gerar#uma# nova#população#de#cromossomos:##a#próxima#geração.## 5.#Retorne#à#etapa#2.## O#tamanho#da#população#deve#ser#determinado#antecipadamente.#Geralmente,#o#tamanho#de#uma#popuU lação#permanece#constante#de#ou#geração#para#outra.#Em#algumas#situações,#pode#ser#útil#ter#uma#população# que#mude#de#tamanho.## O#tamanho#de#cada#cromossomo#deve#permanecer#o#mesmo#para#que#o#cruzamento#seja#aplicado.#É#posU sível#executar#um#algoritmo#genético,#com#tamanhos#variáveis#de#cromossomo,#mas#não#é#comum.## Inteligência#Artificial#–#Lucilia#Ribeiro# 1 05#–#Algoritmos#Genéticos# Tipicamente,#os#cromossomos#mais#aptos#são#selecionados#a#cada#geração#para#se#unirem#um#ao#outro#e# cada#par#de#cromossomos#pode#produzir#duas#proles.#Então,#o#conjunto#resultante#de#cromossomos#da#prole# substituirá#a#geração#anterior.## Também#é#possível#permitir#que#pais#especialmente#aptos#produzam#relativamente#mais#proles#e#que#cerU tos#membros#de#uma#geração#sobrevivam#para#a#próxima#geração.#Assumiremos#que#cada#par#de#pais#produza# duas#proles#e#que#essas#proles#substituam#os#pais.## # 5.4# APTIDÃO# Com#algoritmos#genéticos#mais#tradicionais,#é#necessária#uma#métrica#pela#qual#a#aptidão#de#um#cromosU somo#possa#ser#determinada#objetivamente.#Por#exemplo,#ao#usar#algoritmos#genéticos#para#classificar#númeU ros,#uma#medida#de#aptidão#adequada#seria#determinada#executando#o#algoritmo#e#contando#quantos#númeU ros#ele#posiciona#no#local#correto.#Uma#medida#mais#sofisticada#de#aptidão#poderia#ser#obtida#calculando#quanU to#cada#número#localizado#incorretamente#está#distante#de#seu#local#correto.## Karl#Sims#desenvolveu#"criaturas"#que#foram#geradas#de#acordo#com#suas#habilidades#para#realizar#tarefas# simples,#tais#como#andar,#pular,#nadar#(Sims,#1994.#).#Sims#usou#uma#representação#e#um#conjunto#de#regras# que#determinavam#como#as#diferentes#partes#de#corpo#de#suas#criaturas#interagiam#umas#com#as#outras#e#com# o#ambiente#delas.#Neste#caso,#então,#a#medida#de#aptidão#era#baseada#no#quanto#sua#forma#física#(fenótipo),# representada#pela#informação#genética#(genótipo),#atendia#a#certos#critérios.## # 5.5# CRUZAMENTO# O#operador#de#cruzamento#é#aplicado#a#dois#cromossomos#de#mesmo#comprimento,#como#a#seguir:## 1.#Selecione#um#ponto#aleatório#para#o#cruzamento.## 2.#Separe#cada#cromossomo#em#duas#partes,#dividindoUo#no#ponto#de#cruzamento.## 3.#Recombine#os#cromossomos#separados,#combinando#a#parte#inicial#de#um#com#a#parte#final#do#outro#e# viceUversa,#para#produzir#dois#novos#cromossomos.## Por#exemplo,#leve#em#consideração#os#dois#cromossomos#a#seguir:## 110100110001001# 010101000111101# PodeUse#escolher#como#ponto#de#cruzamento#o#espaço#entre#o#sexto#e#o#sétimo#genes:## 110100#|#110001001## 010101#|#000111101## Agora,#as#partes#do#cromossomo#são#recombinadas,#como#se#segue:## 110100#|#110001001#=>#110100000111101## 010101#|#000111101#=>#010101110001001## Este#processo#é#baseado#no#modo#como#as#cadeias#de#DNA#recombinam#umas#com#as#outras#na#reproduU ção#humana#para#combinar#características#de#cada#pai#em#um#filho.## Cruzamento#de#ponto#único#é#a#forma#mais#comumente#usada,#mas#também#é#possível#ter#duas#ou#mais# posições#de#cruzamento.## Em#um#cruzamento#de#dois#pontos,#dois#pontos#são#escolhidos#para#dividir#os#cromossomos#em#duas#seU ções,# com# as# seções# externas# se# juntando# para# transformar# o# cromossomo# em# um# anel.# As# duas# seções# são# trocadas,#como#mostrado#a#seguir:# Inteligência#Artificial#–#Lucilia#Ribeiro# 2 05#–#Algoritmos#Genéticos# # Outra#forma#de#cruzamento#é#cruzamento#uniforme.#Aqui#uma#probabilidade,#p,#é#usada#para#determinar# se#um#dado#bit#do#pai#a#do#ou#se#será#do#pai#2.#Em#outras#palavras,#um#filho#pode#receber#quaisquer#bits#aleaU tórios#de#cada#um#de#seus#pais.#Por#exemplo,#vamos#assumir#que#tenhamos#os#seguintes#dois#pais:### Pai#1:#10001101## Pai#2:#00110110## A#prole#destes#dois#cromossomos#pode#ser#determinada#como#mostrado:# # O#primeiro#bit#do#primeiro#filho#é#escolhido#como#sendo#a#partir#do#pai#1#com#probabilidade#p#e#a#partir#do# pai#2#com#probabilidade#1#—#p.#Se#um#bit#do#pai#1#for#escolhido#para#o#filho#1,#então#o#bit#correspondente#do# pai#2#será#escolhido#para#o#filho#2#e#viceUversa.#Cruzamento#uniforme#também#é#usado#frequentemente#para# produzir#apenas#uma#prole#a#partir#de#cada#par#de#pais,#diferentemente#do#cruzamento#tradicional,#de#um#ou# dois#pontos,#que#geralmente#produz#duas#proles#a#partir#de#cada#par#de#pais.# Cruzamento# uniforme# mistura# substancialmente# os# genes# de# cada# banco# de# genes# e# em# alguns# casos# é# possível#que#se#tenha#um#valor#muito#alto#(ou#muito#baixo)#de#p#para#garantir#que#a#maioria#dos#genes#venha# de#um#pai#ou#de#outro.## Em#alguns#casos,#clonagem#pode#ser#aplicada#e,#então,#cruzamento#não#é#aplicado#de#forma#alguma#e#é# produzida#uma#nova#prole#que#será#idêntica#a#seu#único#pai.#O#sistema#de#biomorfos#de#Dawkins#pode#ser#conU siderado#como#um#algoritmo#genético#que#sofreu#clonagem#e#mutação#onde#a#aptidão#é#determinada#subjetiU vamente.## # 5.6# MUTAÇÃO# Você#pode#reconhecer#algoritmos#genéticos#como#sendo#bastante#semelhantes#aos#métodos#de#subida#de# colina.#Subida#de#colina#envolve#gerar#uma#possível#solução#para#um#problema#e#se#deslocar#em#direção#a#uma# solução#melhor#que#a#atual,#até#chegar#a#uma##solução#a#partir#da#qual#não#se#consiga#outra#melhor.#Subida#de# colina# não# apresenta# bom# desempenho# diante# de# problemas# que# possuam# máximos# locais.# O# operador# de# mutação#foi#introduzido#para#fazer#com#que#os#algoritmos#genéticos#evitem#este#problema.## Mutação#é#um#operador#unário#(i.e.,#é#aplicado#a#apenas#um#argumento#—#um#único#gene)#que#é#geralU mente#aplicado#com#uma#probabilidade#baixa,#tal#como#0,01#ou#0,001.#Mutação#envolve#simplesmente#a#reverU são#do#valor#de#um#bit#em#um#cromossomo.#Por#exemplo,#com#uma#taxa#de#mutação#de#0,01,#seria#esperado# que#um#gene#em#um#cromossomo#com#100#genes#fosse#revertido.#Aqui,#vemos#mutação#aplicada#a#uma#das# proles,#extraída#do#nosso#exemplo#anterior:## 010101110001001## # # 010101110101001## Inteligência#Artificial#–#Lucilia#Ribeiro# 3 05#–#Algoritmos#Genéticos# # 5.7# CRITÉRIO#DE#TERMINAÇÃO# Há#tipicamente#dois#meios#pelos#quais#uma#execução#de#um#algoritmo#genético#é#terminada.#Geralmente,# impõeUse#um#limite#ao#número#de#gerações#depois#do#qual#cada#execução#é#considerada#terminada.## Em# alguns# problemas,# a# execução# pode# parar# quando# uma# solução# particular# tiver# sido# alcançada# ou# quando#o#nível#mais#alto#de#aptidão#na#população#tiver#alcançado#um#valor#específico.#Por#exemplo,#veremos## como#um#algoritmo#genético#pode#ser#usado#para#solucionar#uma#função#matemática.#Neste#caso,#está#claro# que#a#execução#poderá#ser#interrompida#quando#a#solução#correta#tiver#sido#alcançada,#o#que#poderá#ser#facilU mente#testado.## Esta#é#uma#distinção#importante.#Em#muitos#casos,#algoritmos#genéticos#são#usados#para#solucionar#proU blemas#que#tenham#uma#solução#objetiva#e,#neste#caso,#o#algoritmo#poderá#parar#quando#encontrar#tal#soluU ção.#Em#outros#casos,#eles#são#usados#para#propósitos#mais#abstratos,#tal#como#gerar#imagens#interessantes.# Nestes#casos,#julgamento#humano#deve#ser#usado#para#determinar#quando#parar.## # 5.8# OTIMIZAÇÃO#DE#UMA#FUNÇÃO#MATEMÁTICA# Veremos# como# um# algoritmo# genético# pode# ser# usado# para# encontrar# um# valor# máximo# de# uma# função# matemática.#Tentaremos#maximizar#a#seguinte#função:## f(x)#=#sen(x)## Com#x#na#faixa#de#1#a#15,#sendo#x#em#radianos.# Cada#cromossomo#representa#um#valor#possível#de#bits.## A#figura#abaixo#mostra#o#gráfico#descontínuo#para#esta#função.## # # Usaremos,#como#tamanho#de#população,#quatro#cromossomos.#O#primeiro#passo#é#gerar#uma#população# aleatória,#que#será#a#nossa#primeira#geração.## c1#=#1001## c2#=#0011## c3#=#1010## c4#=#0101## Para#calcular#a#aptidão#de#um#cromossomo,#precisamos#primeiramente#convertêUlo#em#um#inteiro#decimal# e,#então,#calcular#f(x)#para#esse#inteiro.## Atribuiremos#aptidão#como#um#valor#numérico#entre#0#e#100,#onde#0#será#o#menos#apto#e#100#será#o#mais# apto.#f(x)#gera#números#reais#entre#U1#e#1.#Atribuiremos#uma#aptidão#de#100#para#f(x)#=#1#e#uma#aptidão#de#0# para#f(x)#=#U1.#Uma#aptidão#de#50#será#atribuída#para#f(x)#=#0.#Assim,#a#aptidão#de#x,#f(x)#é#definida#do#seguinte# modo:## f'(x)#=#50#(fx)#+#1)#=#50(sen#(x)#+#1)## Inteligência#Artificial#–#Lucilia#Ribeiro# 4 05#–#Algoritmos#Genéticos# A#taxa#de#aptidão#de#um#cromossomo#é#a#aptidão#de#um#cromossomo#como#uma#porcentagem#da#aptidão# total#da#população.#Mais#adiante,#veremos#porque#este#é#um#cálculo#útil.# A#tabela#a#seguir#mostra#os#cálculos#que#são#empregados#para#chegar#aos#valores#de#aptidão#para#a#nossa# primeira#geração.## # Cromossomos# c1# c2# c3# c4# Genes# 1001# 0011# 1010# 0101# Valor#Inteiro# 9# 3# 10# 5# f(x)# 0,41# 0,14# U0,54# U0,96# Aptidão#de#f’(x)# Taxa#de#Aptidão# 70,61# 46,3%# 57,06# 37,4%# 22,80# 14,9%# 2,05# 1,34%# # Agora,#precisamos#executar#uma#única#etapa#do#nosso#algoritmo#genético#para#produzir#a#próxima#geraU ção.# A# primeira# etapa# de# selecionar# quais# cromossomos# reproduzirão.# Seleção* por* roleta* russa# envolve# usar# taxa#de#aptidão#para#selecionar#aletoriamente#cromossomos#para#reproduzir.#Isto#é#feito#do#seguinte#modo:# A#faixa#de#números#reais#de#0#a#100#é#dividida#entre#os#cromossomos#proporcionalmente#à#aptidão#de#cada# um.#Assim,#na#nossa#primeira#geração,#c1#terá#46,3%#da#faixa(i.e.,#de#0#a#46,3),#c2#terá#37,4%#da#faixa(i.e.,#de# 46,3#a#83,7)#e#assim#em#diante.# Agora,#um#número#aleatório#é#gerado#entre#O#e#100.#Este#número#estava#dentro#da#faixa#de#um#dos#croU mossomos#e#este#cromossomo#será#selecionado#para#reprodução.#O#próximo#número#aleatório#será#usado#para# selecionar#o#parceiro#deste#cromossomo.#Assim,#cromossomos#mais#aptos#tenderão#a#produzir#mais#proles#do# que#os#cromossomos#menos#aptos.## Entretanto,#é#importante#que#este#método#não#impeça#por#completo#que#cromossomos#menos#aptos#reU produzam,#porque#isto#ajudará#a#assegurar#que#populações#não#estagnem,#por#serem#constantemente#geradas# a#partir#dos#mesmos#pais.## Porém,# no# nosso# exemplo,# o# cromossomo# c4# terá# pouquíssimas# chances# de# se# reproduzir,# já# que# isto# só# aconteceria#se#o#numero#aleatório#encontrasse#na#estreita#faixa#entre#98,6#e#100.## Precisaremos#gerar#quatro#números#aleatórios#para#achar#quatro#pais#que#produzirão#a#próxima#geração.# Nosso#primeiro#número#aleatório#é#56,7,#o#que#significa#que#c2#foi#escolhido#como#o#primeiro#pai.#Em#seguida,# 38,2#é#escolhido,#então#seu#par#será#c1.## Agora#precisamos#combinar#c1#e#c2#para#produzir#duas#novas#proles.#Primeiro,#precisamos#selecionar#aleaU toriamente#um#ponto#de#cruzamento.#Escolheremos#o#ponto#entre#o#segundo#e#o#terceiro#bits#(genes):## 10#|#01## 00#|#11## Cruzamento#é#então#aplicado#para#produzir#a#prole,#c5#e#c6:# c5#=#1011## c6#=#0001## De#maneira#semelhante,#c1#e#c3#serão#escolhidos#para#produzir#as#proles#c7#e#c8,#usando#um#ponto#de#cruU zamento#entre#o#terceiro#e#o#quarto## c7#=#1000## c8#=#1011## A#População#c1#a#c4#será#agora#substituída#pela#segunda#geração,#c5#a#c8.#c4#não#teve#chance#de#se#reproU duzir#e#seus#genes#serão#perdidos.#c1,#que#era#o#cromossomo#mais#apto#na#primeira#geração,#foi#capaz#de#reU produzir#duas#vezes,#passando#adiante#seus#genes#altamente#aptos#para#todos#os#membros#da#próxima#geraU ção.## Os#valores#de#aptidão#para#a#segunda#geração#são#mostrados#na#tabela#a#seguir:# # Inteligência#Artificial#–#Lucilia#Ribeiro# 5 05#–#Algoritmos#Genéticos# Cromossomos# c5# c6# c7# c8# Genes# 1011# 0001# 1000# 1011# Valor#Inteiro# 11# 1# 8# 11# f(x)# U1# 0,84# 0,99# U1# Aptidão#de#f’(x)# Taxa#de#Aptidão# 0# 0%# 92,07# 48,1%# 99,47# 51,9%# 0# 0%# # Esta#geração#produziu#dois#cromossomos#extremamente#aptos#e#dois#cromossomos#bastante#inaptos.#Na# verdade,# um# dos# cromossomos,c7,# é# a# solução# ótima.# Neste# ponto,# o# critério# de# terminação# provavelmente# determinaria#que#a#execução#parasse.#Caso#contrário,#o#algoritmo#continuará#a#executar,#mas#não#encontrará# qualquer#solução#melhor.#Foi#necessária#apenas#uma#etapa#para#que#se#chegasse#à#solução#ótima,#a#partir#de# uma#configuração#aleatória.## Evidentemente,#este#foi#um#exemplo#muito#simplista.#Problemas#reais#são,#provavelmente,#bem#mais#difíU ceis#de#solucionar.#Eles#também,#provavelmente,#envolverão#tamanhos#de#população#bem#maiores#(tipicamenU te,#são#usados#tamanhos#de#população#que#variam#entre#100#e#500)#e#cromossomos#tendem#a#possuir#um#núU mero#bem#maior#de#bits.# #Em# muitos# casos,# algoritmos# genéticos# produzem# rapidamente# soluções# ótimas# ou# quase# ótimas# para# problemas# combinatoriais# que,# de# outra# forma,# seriam# impossíveis# de# se# resolver.# Isto# levanta# uma# questão# interessante.#Por#que#algoritmos#genéticos#funcionam?#Abordaremos#agora#esta#questão.# # 5.9# POR#QUE#ALGORITMOS#GENÉTICOS#FUNCIONAM## Algoritmos#genéticos#são#um#método#de#busca#local,#de#certo#modo#semelhante#a#métodos#de#simulação# de#têmpera#e#subida#de#colina.# #É# possível# explicar# algoritmos# genéticos# por# comparação# natural:# pequenas# alterações# que# ocorrem# em# uma# base# seletiva,# combinadas# com# reprodução,# tenderão# a# aprimorar# a# aptidão# da# população# ao# longo# do# tempo.# Este# argumento# não# é# muito# convincente# e# John# Holland# (1975)# criou# o# conceito# de# esquemas# para# oferecer#uma#explicação#mais#rigorosa#para#algoritmos#genéticos.## # 5.9.1# ESQUEMAS# Cadeias#de#números#são#usadas#para#representar#padrões#de#entrada#em#sistemas#classificadores.#Nesses# padrões#é#usado#para#representar#"qualquer#valor"#ou#"não#importa”,#tal#que#a#seguinte#cadeia:# 1011*001*0## casa#com#as#quatro#cadeias#seguintes:## 1011000100## 1011000110## 1011100100## 1011100110## (Os#bits#que#casaram#com#*#foram#indicados#em#negrito).# Um#esquema#é#uma#cadeia#de#bits#que#representa#cromossomo,#usando#*#para#representar#"qualquer#vaU lor".#DizUse#um#esquema#casará#com#um#cromossomo,#se#a#cadeia#de#bits#que#representa#o#cromossomo#casar# com#o#esquema#do#modo#mostrado#anteriormente.#Por#exemplo,#o#seguinte#esquema:##*#11#*#casará#com#os# quatro#cromossomos#que#se#seguem:# 0110## 0111## 1110## 1111## Inteligência#Artificial#–#Lucilia#Ribeiro# 6 05#–#Algoritmos#Genéticos# n Observe#que#um#esquema#com#n#*’s#casará#com#um#total#de#2 #cromossomos.## r Cada#cromossomo#de#r#bits#casará#com#2 #diferentes#esquemas.#Por#exemplo,#o#seguinte#cromossomo:## 101## Casará#com#os#oito#esquemas#seguintes:## 101## 10*## 1*1## 1**## *01# *#0#*# **1# ***## m Como#esquemas#são#compostos#de#três#valores#diferentes#(0,#1#e#*)#há#3 #esquemas#diferentes#de#comU primento#m.#Por#exemplo,#há#nove#possíveis#esquemas#de#apenas#dois#bits.## 00# 01# 0*# 10# *0# 11# *1# 1*# **# O#comprimento*de*definição#de#um#esquema#é#definido#como#a#distância#entre#o#primeiro#e#o#último#bits# definidos#(bits#que#não#sejam#*).#Por#exemplo,#o#comprimento#de#definição#de#cada#um#dos#esquemas#seguir#é# 4:# **0111*# 1*0*1**# 11111## 1***1## ***********10**1***************## Observe#que#um#comprimento#de#definição#de#um#esquema#não#depende#do#número#de#bits#que#ele#teU nha,#salvo#se#o#comprimento#de#definição#dele#seja#menor#ou#igual#ao#seu#comprimento.## A#ordem*de*um*esquema#é#determinada#pelo#número#de#bits#definidos#(i.e.,#o#número#de#bits#que#não#seU jam#*)#no#esquema.#Assim,#todos#os#esquemas,#a#seguir,#tem#ordem#de#4:## **10*11*## 1*0*1**1## 1111## 1***1***1***1## 1***********10**1***************## A#ordem#de#um#esquema#nos#diz#quão#específico#ele#é.#Um#esquema#com#uma#ordem#maior#será#mais#esU pecífico#do#que#um#com#uma#ordem#menor.## # # Inteligência#Artificial#–#Lucilia#Ribeiro# # 7