Академический Документы
Профессиональный Документы
Культура Документы
Passo Fundo
2006
Christian Samuel Perone
Passo Fundo
2006
com profunda gratido que me sinto honrado por
todas as pessoas que direta ou indiretamente ajudaram-
me no decorrer do desenvolvimento deste trabalho, de
tal modo, que jamais esquecerei.
RESUMO
Introduo .............................................................................................................................. 8
1 Computao Evolucionria............................................................................................ 10
1.1 Introduo.............................................................................................................. 10
1.2 Teoria da Evoluo................................................................................................ 11
1.3 Algoritmos Evolucionrios (Evolutionary Algorithms) ........................................ 12
1.3.1 Programao Evolucionria (Evolutionary Programming) ........................... 14
1.3.2 Estratgias de Evoluo (Evolution Strategies)............................................. 15
1.4 Exemplo de Uso de Computao Evolucionria ................................................... 16
1.5 Consideraes Finais ............................................................................................. 18
2 Algoritmos Genticos .................................................................................................... 19
2.1 Uma Viso Geral ................................................................................................... 19
2.1.1 Problemas de Otimizao e Codificaes ..................................................... 22
2.1.2 Espao de Procura ......................................................................................... 23
2.2 Comparao com Outras Tcnicas ........................................................................ 24
2.2.1 Mtodos Gradientes....................................................................................... 25
2.2.2 Simulated Annealing ..................................................................................... 26
2.3 Etapas do Funcionamento...................................................................................... 26
2.3.1 Inicializao................................................................................................... 26
2.3.2 Avaliao ....................................................................................................... 27
2.3.3 Seleo........................................................................................................... 29
2.3.4 Reproduo.................................................................................................... 30
2.3.5 Sobrevivncia ................................................................................................ 31
2.4 Fitness e suas Implicaes..................................................................................... 32
2.5 Mtodos de Seleo ............................................................................................... 33
2.5.1 Reajuste explcito de fitness (Implicit fitness remapping) ............................ 33
2.5.2 Reajuste Implcito de Fitness (Implicit Fitness Remapping) ........................ 36
2.6 Cruzamento e Mutao.......................................................................................... 37
2.6.1 One-Point Crossover e Two-Point Crossover............................................... 39
2.6.2 Uniform Crossover ........................................................................................ 41
2.6.3 Mutao ......................................................................................................... 41
2.7 Tamanho da Populao.......................................................................................... 42
3 Algoritmos Genticos Paralelos .................................................................................... 46
3.1 Introduo.............................................................................................................. 46
3.2 Paralelizao Global .............................................................................................. 49
3.3 Coarse-Grained ..................................................................................................... 50
3.4 Fine-Grained ......................................................................................................... 52
3.5 Migrao................................................................................................................ 54
3.6 Consideraes finais .............................................................................................. 55
4 Bibliotecas para implementao de Algortimos Genticos........................................... 56
4.1 GALib.................................................................................................................... 56
4.2 Open Beagle Framework ....................................................................................... 58
4.3 GAUL .................................................................................................................... 59
4.4 Comparativo entre as bibliotecas estudadas .......................................................... 61
4.5 Anlise das Bibliotecas GALib e GAUL .............................................................. 62
5 Definio do problema e implementao ...................................................................... 65
5.1 Definio do Problema de Timetabling ................................................................. 65
5.2 Modelo................................................................................................................... 66
5.2.1 Base de dados ................................................................................................ 66
5.2.2 Cromossomo.................................................................................................. 68
5.2.3 Gerao inicial............................................................................................... 70
5.2.4 Constraints..................................................................................................... 70
5.2.5 Fitness............................................................................................................ 71
5.2.6 Crossover ....................................................................................................... 73
5.2.7 Mutao ......................................................................................................... 73
5.3 Implementao....................................................................................................... 74
5.4 Testes e Resultados................................................................................................ 75
5.4.1 Timetabling gerado........................................................................................ 76
6 Consideraes Finais ..................................................................................................... 78
Anexos ................................................................................................................................. 79
Referncias........................................................................................................................... 84
8
INTRODUO
De acordo com Koza et al. (2003, p.1), a evoluo biolgica natural um processo
altamente criativo, o qual conseguiu alcanar a estrutura inimaginvel e to complexa dos
organismos vistos hoje na natureza. A natureza evolutiva consegue obter estes resultados atravs
de processos simples como mutaes, recombinaes e seleo natural. A recriao destes
processos em computadores ou dispositivos capazes de simular abstratamente a estrutura natural
chamada de Computao Evolucionria (Evolutionary Computing).
Segundo Rela (2004), Algoritmos Evolucionrios so tcnicas de computao inspiradas na
teoria da seleo natural de Charles Darwin. A idia principal destas tcnicas a de manter uma
populao de solues candidatas (indivduos) do problema, e tambm, a criao de uma funo
para a avaliao dos indivduos melhor adaptados. Esta funo utilizada para mensurar a
aptido (fitness) de cada indivduo da populao.
Segundo Koza et al. (2003), essas populaes partem com uma populao inicial de
indivduos gerados aleatoriamente, maioria destes indivduos ter obviamente uma aptido baixa,
apenas alguns indivduos se destacaro. A partir de uma seleo estocstica destes indivduos,
simulando a seleo natural, que ser aplicada uma srie de processos genticos como mutao
e recombinao (cruzamento ou crossover).
A Computao Evolucionria teve tanto sucesso que no ano de 2003, no campo da
eletrnica, a programao gentica conseguiu reproduzir 15 invenes anteriormente patenteadas,
e muitas dessas invenes foram aclamadas como inovadoras, 6 dessas foram patenteadas por
grandes institutos de pesquisa aps janeiro de 2000. Maioria destes inventos obteve
coincidentemente exatas especificaes dos inventos anteriormente patenteados, conquanto que
9
1 COMPUTAO EVOLUCIONRIA
Neste captulo ser apresentada uma breve introduo Computao Evolucionria e suas
origens assim como sobre Algoritmos Evolucionrios e seus principais modelos.
1.1 Introduo
No incio de Evolutionary Genetics (SMITH, 1989 apud FANG, 1994, p. 26, traduo
nossa), Smith descreve da seguinte maneira a teoria de Charles Darwin:
[...] na Origem das Espcies, Darwin afirmou que todos os organismos existentes so os
descendentes modificados de um ou alguns simples ancestrais que surgiram na terra. [...]
Ele tambm argumentou que a fora principal dirigindo estas mudanas evolucionrias
a seleo natural. [...] Darwin, ento argumentou que os organismos de fato multiplicam,
variam e tem hereditariedade, e em conseqncia disso, populaes de organismos
evoluem. Os organismos com caractersticas mais favorveis a sobrevivncia e
reproduo no s tem mais proles, mas tambm passam estas caractersticas para estas
proles. O resultado ser a mudana das caractersticas presentes na populao. [...] A
teoria da seleo natural no s prev as mudanas evolucionrias: ela tambm diz algo
sobre o tipo de mudana. Particularmente, ela prev que organismos iro adquirir
caractersticas que as tornaro melhores para sobreviver e reproduzir no ambiente em
que elas vivem.
De acordo com Fang (1994, p. 27), os pais que se adaptam melhor tm mais chances de
serem selecionados para gerarem novos filhos sendo que os descendentes destes pais herdam suas
caractersticas genticas. Podem-se identificar estas caractersticas genticas por genes, ou seja,
a unidade de herana o gene. Genes de uma nova gerao que se adaptarem melhor sero mais
favorveis reproduo. Este ciclo evolucionrio continua de gerao a gerao, provocando
com que os cromossomos menos adaptados tendam a desaparecer do ambiente, deixando lugar
para os cromossomos mais adaptados. O resultado deste processo de sobrevivncia do melhor
faz com que a populao v gradualmente adaptando-se ao ambiente.
Procedimento EA; {
t = 0;
inicializao da populao P(t);
avaliao P(t);
enquanto (critrio de parada = falso) {
t = t + 1;
seleo dos pais P(t);
recombinao P(t);
mutao P(t);
avaliao P(t);
sobrevivncia P(t);
}
}
Fonte: Adaptado de De Jong et al. 2003 [ECLM, p. 2]
Figura 1 Algoritmo Evolucionrio
1
Bitstring o modelo de representao mais utilizado em Algoritmos Genticos. Strings ou qualquer outro
mtodo de representao freqentemente referenciado como Genotype ou Gentipo (HOLLAND, 1975 apud
WHITLEY, 1994, p. 4) ou alternativamente como Chromosome ou Cromossomo dentro do algoritmo
(SCHAFFER, 1987 apud WHITLEY, 1994, p. 4).
15
Como se pode notar no exemplo hipottico da Figura 3, o circuito da ltima gerao possui
material gentico que aparece na primeira gerao, neste caso representado por componentes
eletrnicos.
Segundo Koza et al (2003, p. 1), a GP conseguiu ainda classificar seqncias proticas,
projetos de antenas, algoritmos matemticos e controladores multiuso. O autor ainda otimista
em prever que a programao gentica ser usada regularmente no futuro como uma mquina
geradora de invenes.
Outro exemplo da aplicao da Computao Evolucionria, mais precisamente Algoritmos
Genticos, est na otimizao de estruturas para antenas militares utilizando a representao de
coordenadas no plano cartesiano em cromossomos, como mostrado na Figura 4
(SANTARELLI, p. 5, 2005).
18
Como se pode ver na Figura 4, a forma de uma antena representada com pontos (x, y, z)
no espao tridimensional, e no qual distncia entre um ponto e outro representa segmentos da
mesma antena. Um cromossomo representa uma soluo inteira, ou seja, uma antena em sua
totalidade.
Entre outras aplicaes de Algoritmos Genticos encontram-se aplicaes na rea de
processamento de imagens. Conforme Beasley et al. (1993, part I, p.13), na utilizao de Raios X
mdicos ou em imagens de satlites, h uma necessidade de alinhar duas imagens obtidas em
diferentes tempos de uma mesma regio. O GA trabalha comparando uma amostra aleatria de
pontos das duas imagens e procura por um conjunto de equaes que transformem uma das
imagens de modo a adequar-se a outra.
2 ALGORITMOS GENTICOS
Este captulo apresentar uma descrio sobre Algoritmos Genticos, expondo melhor cada
um de seus operadores genticos, processos internos e demais conceitos envolvidos em todo
projeto de um GA.
De acordo com Fang (1994, p. 28), aps escolher o modelo de representao para o
problema o qual o GA ir tratar, um Algoritmo Gentico procede da seguinte maneira:
Alm destas caractersticas citadas acima, outra grande e importante caracterstica o que
Holland (1975) apud Fang (1994, p. 29) chamou de intrinsic parallelism ou paralelismo
intrnseco. A idia de paralelismo intrnseco baseada no princpio de que o Algoritmo
Gentico trata de vrias solues em paralelo, ou seja, vrios pontos no espao de procura so
analisados ao mesmo tempo e concorrem entre si em uma populao.
22
Segundo Whitley (1994, p. 2), tradicionalmente existem dois principais componentes dos
Algoritmos Genticos que dependem do problema: a codificao das solues e a funo de
avaliao.
Uma analogia amplamente utilizada pela comunidade que utiliza Algoritmos Genticos
de que o GA trata o problema como uma caixa preta, em que possui comandos de entrada, ou
seja, parmetros de entrada, e apenas uma sada gerada pela funo de avaliao. O objetivo do
GA maximizar ou minimizar esta sada. Em termos matemticos, o GA procura maximizar ou
minimizar alguma funo F(X1, X2, ..., Xn) de modo a encontrar valores timos ou prximos de
um timo para Xn (WHITLEY, 1994, p. 2).
A primeira afirmao que se faz de que as variveis representando parmetros podem ser
representadas por bit strings. Ou seja, isto significa que as variveis so discretizadas. Por
exemplo, em variveis com 10 bits por parmetro, obtm-se uma gama de 1024 valores discretos.
Se os parmetros so contnuos, ento a discretizao no um problema, tendo em vista
que a discretizao providencie uma resoluo que torne possvel ajustar a sada com um nvel de
preciso determinado. Se algum parmetro assume um conjunto exato e finito de valores, ento a
codificao se torna mais difcil. Se existem 1200 valores discretos que um parmetro pode
assumir, precisar-se-ia de no mnimo 11 bits para cobrir este intervalo, porm 11 bits
providenciam 2048 valores discretos, resultando em 848 bits desnecessrios, o que poderia
desencadear em um uma avaliao errnea, ou a representao de determinado valor para algum
parmetro poderia ser representada mais de uma vez. Resolver estes problemas de codificao
habitualmente considerado como parte do design da funo de avaliao (WHITLEY, 1994, p. 3).
Uma funo de avaliao deve ser relativamente rpida. Segundo Whitley (1994, p. 3), isto
verdade para qualquer outro mtodo de otimizao, mas particularmente especial em
Algoritmos Genticos. Por exemplo, se uma funo de avaliao demora 10 min para avaliar uma
soluo, ento ela levar aproximadamente 91 dias para realizar uma rodada de 200 geraes de
uma populao de 70 indivduos, levando em conta apenas o tempo gasto na avaliao das
solues candidatas.
23
Supondo que a representao utilizada para determinado problema seja uma codificao
utilizando um bit string de tamanho L, o tamanho do espao de procura do problema ser 2L,
formando um hipercubo. Segundo Whitley (1994, p. 3), o Algoritmo Gentico faz amostragens
nos bordas deste hipercubo.
Funes de avaliao podem ser unimodais ou multimodais; funes unimodais apresentam
apenas um ponto mximo, enquanto funes multimodais apresentam vrios picos timos.
Quando tem-se apenas um ponto mximo em relao a solues vizinhas, este chamado de
ponto timo global ou ainda mxima global, porm quando se tem vrios picos, estes so
chamados de timos locais ou mximas locais (BEASLEY et al., 1993, Part I, p. 6). A Figura 5
mostra um exemplo de mximas locais e globais.
em 100 movimentos). O autor Winston (1992, p.102) apud Whitley (1994, p. 3) cita ainda que
este valor para um espao de procura ridiculamente grande.
O fato que um mtodo de procura aleatrio ou por enumerao de um grande espao de
procura no prtico do ponto de vista da resoluo de um problema. De outro modo, qualquer
outra forma de procura alm da procura aleatria impem alguma direo em termos de como
procurar por solues melhores e onde procurar. Algoritmos Genticos introduzem uma direo
em termos de quais pontos no espao de procura devem ser avaliados (WHITLEY, 1994, p. 3).
Ainda assim, algoritmos Genticos so classificados como mtodos fracos pela
comunidade de Inteligncia Artificial, devido ao fato de que os GAs ignoram heursticas sobre o
problema que est sendo resolvido. Embora classificados como mtodos fracos, os GAs so
altamente robustos e gerais. Se existe um bom mtodo de otimizao para determinado problema,
ento Algoritmos Genticos podem no ser a melhor ferramenta de otimizao para este
problema, embora alguns pesquisadores trabalhem com algoritmos hbridos que combinam
mtodos existentes com GAs (WHITLEY, 1994, p. 3).
De acordo com Beasley et al. (1993, part I, p.4), outras tcnicas para uso em problemas de
otimizao foram propostas, e semelhantes ao GA, todas elas assumem que o problema
definido por uma funo de avaliao que deve ser maximizada ou minimizada.
Algumas destas tcnicas so genricas, outras ainda so aplicadas em apenas alguns
domnios limitados, como por exemplo, a Programao Dinmica2, que aplicvel somente em
problemas especficos. Nesta seo, sero apresentados alguns dos principais mtodos utilizados
para resolver problemas de otimizao (BEASLEY et al., 1993, part I, p. 4).
2
Conhecida como Dynamic Programming (BELLMAN apud BEASLEY et al., 1993, p. 4).
25
De acordo com Beasley et al. (1993, part I, p.6), vrios mtodos foram criados para
solucionar problemas que possuem funes contnuas. Estes mtodos geralmente utilizam
informaes sobre o gradiente da funo para guiar a direo da procura. Porm, caso seja
aplicada sobre uma funo descontnua (a derivada da funo no puder ser computada) estes
mtodos freqentemente falham.
Mtodos como estes so geralmente chamados de hillclimbing e funcionam bem para
funes unimodais. Porm em funes multimodais eles sofrem um problema que ocorre quando
o primeiro pico da funo de avaliao encontrado. Este pico, que pode no ser o maior, ser
escalado, e uma vez realizado esta escalada, nenhum progresso futuro pode ser realizado
(BEASLEY et al., 1993, Part I, p. 6).
A Figura 6 mostra um exemplo do problema nos mtodos hillclimbing.
Esta tcnica foi inventada por Kirkpatrick em 1982 e essencialmente uma verso
modificada de hillclimbing. Iniciando de um ponto aleatrio no espao de procura, um
movimento realizado aleatoriamente. Se este movimento leva a um ponto mais alto, ele
aceito. Se ao contrrio, este movimento levar a um ponto mais baixo, ele aceito com a
probabilidade p(t), onde t o tempo. A funo p(t) comea prximo a 1 e ento reduz
gradativamente at zero, em analogia ao resfriamento de um slido (BEASLEY et al., 1993, part
I, p. 6).
De acordo com Beasley et al. (1993, part I, p. 7), inicialmente todos os movimentos so
aceitos, porm como a temperatura reduz, a probabilidade de aceitar um movimento negativo
reduzida.
O Simulated Annealing, assim como a procura aleatria, trabalha com apenas uma soluo
candidata por vez, e no armazena nenhuma informao dos movimentos anteriores para guiar a
escolha de novos movimentos (BEASLEY et al., 1993, part I, p. 6).
Nesta seo ser apresentado cada um dos processos de um Algoritmo Gentico assim
como os sub-processos envolvidos em cada uma das etapas.
2.3.1 Inicializao
dentro do espao de procura delimitado pela representao utilizada para os indivduos (FANG,
1994, p. 28).
No mtodo de gerao aleatria que utiliza heursticas, os indivduos so tambm gerados
de modo aleatrio, porm considerando certo conhecimento do problema. Um exemplo que
dentro do domnio de um problema, existem melhores e piores solues. Quando do
conhecimento do desenvolvedor qual regio do espao contm as piores solues, ele pode
considerar isto no desenvolvimento da funo de inicializao de modo que no gere indivduos
dentro de determinado local do espao de procura no qual sabe-se que no haver boas solues.
2.3.2 Avaliao
nesta etapa, na qual Lobo (2004, p. 1) cita que o tempo gasto nos operadores do
Algoritmo Gentico desprezvel comparado ao tempo gasto na avaliao dos indivduos. na
etapa de avaliao que geralmente despendida a maior parte do tempo de processamento, ou
seja, nesta etapa onde se tem freqentemente o maior custo computacional.
Conforme Whitley (1994, p.1), na etapa de avaliao, cada indivduo analisado e logo
aps, atribudo a ele o seu fitness. A noo de avaliao e fitness so usadas alternativamente,
porm importante distinguir a diferena entre as duas. A funo de avaliao ou mais conhecida
como funo objetivo pela comunidade que utiliza GAs, prov o valor quantitativo do
indivduo em considerao a um determinado conjunto de parmetros, ou seja, um score bruto
do indivduo. Por sua vez, a funo de fitness atribui a cada indivduo uma medida de
desempenho em relao a oportunidades reprodutivas.
O valor de um indivduo gerado pela funo objetivo independente da avaliao de
qualquer outro indivduo da populao, porm o fitness do indivduo sempre definido em
relao a outros membros da populao (WHITLEY, 1994, p.1). Tradicionalmente em um GA, o
fitness a medida escolhida para a seleo dos indivduos.
Segundo Beasley et al. (1993, part I, p. 9), muitos pesquisadores focaram sua ateno na
otimizao dos processos internos dos Algoritmos Genticos, no entanto freqentemente
descobre-se que apenas pequenas mudanas podem ser realizadas para otimizar o ncleo do GA.
Grefenstette (1986) apud Beasley et al. (1993, part I, p. 9) procurou por parmetros ideais, em
28
3
Conhecido como timetabling
29
2.3.3 Seleo
Segundo Fang (1994, p. 32), a funo da seleo a de retornar os pais dos novos
indivduos de maneira estocstica. Geralmente a chance de um cromossomo ser selecionado est
diretamente relacionada a seu fitness.
Tradicionalmente na seleo dos pais, os indivduos so copiados para o chamado mating
pool, que possui tamanho igual ao tamanho da populao. O mating pool pode ser considerado
como uma populao intermediria entre a antiga e a nova gerao que ser gerada. Indivduos
com melhor fitness tm melhores chances de serem copiados para o mating pool ou at mesmo
copiados repetidas vezes. Depois de gerado o mating pool, pares de indivduos so selecionados
para realizarem cruzamento, esta seleo repetida at exaurir os indivduos do mating pool
(BEASLEY et al., 1993, part I, p. 10).
Segundo Miller et al. (1996, p. 4), um esquema de seleo um processo simples em que
os melhores indivduos so favorecidos para fazerem parte do mating pool. Conforme o autor, a
seleo dos indivduos possui certa presso, mais conhecida como selection pressure. A
presso na seleo dos indivduos significa o grau com que os melhores indivduos so
favorecidos. Quanto mais alta for esta presso, mais os indivduos com melhor fitness sero
selecionados para fazer parte do mating pool; a convergncia de um GA depende muito pela
magnitude desta presso, altos ndices de presso resultam em altas taxas de convergncia.
Todavia, se a presso da seleo for baixa demais, a convergncia ser lenta, e o GA levar
tempo desnecessrio para encontrar um ponto timo (MILLER et al., 1996, p. 5).
De acordo com Beasley et al. (1993, part I, p. 10), o comportamento do GA depende muito
de como os indivduos so escolhidos para fazerem parte do mating pool. Existem dois tipos de
mtodos que podem ser utilizados para realizar esta tarefa: explicit fitness remapping e implicit
fitness remapping4. .No reajuste explcito de fitness, o algoritmo seleciona todos os indivduos,
realiza o mapeamento do fitness em uma nova escala e utiliza este novo mapeamento como o
nmero de cpias do indivduo que ir para o mating pool. J no mtodo de reajuste implcito, o
GA funciona sem a etapa intermediria da computao de novos fitness. Estes mtodos sero
abordados com mais detalhes na seo Mtodos de seleo.
4
Ou traduo nossa: reajuste explcito de fitness e reajuste implcito de fitness, respectivamente.
30
2.3.4 Reproduo
Conforme Beasley et al. (1993, part I, p. 3), durante a fase de reproduo do GA,
indivduos so selecionados da populao e ento recombinados de maneira a produzir uma nova
prole que ser a nova gerao. Os pais destes novos indivduos so selecionados na etapa de
seleo.
Tendo selecionado dois pais, um GA tradicional aplica sobre eles o operador gentico
chamado crossover5 e aps aplica tambm o operador de mutao.
Existem vrios tipos de reproduo, sendo o mais simples conhecido como single point
crossover ou one-point crossover. Neste caso, o operador de cruzamento trabalha geralmente
sobre dois indivduos (pais) da seguinte maneira: escolhido um ponto aleatrio no bitstring
(caso seja usado essa forma de representao dos indivduos) de cada um dos indivduos
produzindo assim dois segmentos head e dois segmentos tail. Tendo cortado os bitstrings, so
ento trocados os tails para formar dois novos indivduos completos. Cada um dos novos
indivduos formados ter uma parte do material gentico dos dois pais (BEASLEY et al., 1993,
part I, p. 3).
O operador de cruzamento raramente aplicado em todos os pares de indivduos do mating
pool. O que ocorre geralmente uma escolha aleatria, onde a chance deste operador ser aplicado
sobre os indivduos tradicionalmente entre 0.6 e 1.0. Se o operador de cruzamento no for
aplicado, ento a nova prole produzida ser simplesmente a cpia dos pais (BEASLEY et al.,
1993, part I, p. 3).
Segundo Beasley et al. (1993, part I, p.3), a mutao aplicada individualmente sobre cada
filho gerado aps a etapa de cruzamento. O operador de mutao altera o bitstring do
cromossomo, com uma pequena probabilidade, geralmente 0.001.
Dentre as tcnicas citadas, a mais importante o cruzamento, o qual pode explorar de
forma rpida o espao de procura. Todavia a mutao assegura que nenhum ponto do espao de
procura ter uma probabilidade zero de ser examinada utilizando-se de uma pequena procura
aleatria (BEASLEY et al., 1993, part I, p. 3). Cada um destes operadores ser detalhado com
maior profundidade na seo Cruzamento e mutao.
5
Ou cruzamento
31
2.3.5 Sobrevivncia
Tradicionalmente nesta etapa definida a maneira como os novos indivduos gerados sero
recolocados na antiga populao. Beasley et al. (1993, part I, p. 12) utiliza o termo generation
gap para definir a proporo de indivduos da populao que sero substitudos em cada gerao.
Muitas pesquisas em GAs utilizaram o valor 1 para o generation gap (toda populao ser
substituda em cada gerao). Este valor foi sustentado por pesquisas de Grefenstette (1986) apud
Beasley et al. (1993, part I, p. 12), porm trabalhos6 recentes tm favorecido o uso da substituio
steady-state7, uma abordagem que trabalha no outro extremo: em cada gerao apenas alguns
poucos (geralmente dois) indivduos sero substitudos. Estas duas abordagens citadas so
conhecidas respectivamente como Algoritmos Geracionais e Algoritmos Incrementais.
Segundo Beasley et al. (1993, part I, p. 12), o mtodo de substituio chamado steady-state
um modelo mais prximo ao que realmente acontece na natureza. Em espcies de vida longa,
incluindo mamferos, os ancestrais e sua prole de descendentes vivem de modo concorrente ao
mesmo tempo. Isto permite com que os pais cuidem e ensinem seus descendentes, porm tambm
causa a competio entre eles.
Na substituio steady-state, o algoritmo no ter que considerar to s a seleo de dois
indivduos para serem pais, mas tambm ter que selecionar outros dois indivduos da populao
para serem substitudos pelos novos. Beasley et al. (1993, part I, p. 13) cita vrias possibilidades
para estas selees, as quais so:
seleo dos pais de acordo com seu fitness e seleo aleatria dos indivduos que sero
substitudos;
seleo dos pais de modo aleatrio e seleo dos indivduos a serem substitudos pelo fitness
inverso;
seleo dos pais e dos indivduos que sero substitudos respectivamente pelo fitness e fitness
inverso;
6
O autor cita os trabalhos: Whitley (1987), Whitley (1989), Syswerda (1989), Davis (1989) e Davis (1991).
7
Tambm chamada de estado fixo
32
No exemplo citado pelo autor, o algoritmo de Whitley (1989) apud Beasley et al. (1993,
part I, p. 13) realiza a seleo dos pais em relao ao seu fitness e seleciona os dois piores
membros da populao para serem substitudos.
Nesta seo sero abordados com mais detalhes, alguns dos principais mtodos utilizados
para seleo de indivduos em Algoritmos Genticos.
Conforme Beasley et al. (1993, part I, p. 11), para manter o mating pool do mesmo
tamanho da populao original, a mdia do nmero de cpias aloca para cada indivduo que iro
para o mating pool deve ser 1 (um). Se o fitness de cada indivduo for reajustado dividindo-se o
fitness pela mdia do fitness da populao ento este valor ser alcanado. Porm no aspecto
prtico, o fitness reajustado de cada indivduo ser geralmente um nmero no inteiro. Visto que
apenas um nmero inteiro de cpias de cada indivduo pode ser adicionado ao mating pool,
preciso converter os valores para inteiro de modo que no seja introduzida uma influncia em
certos indivduos. O mtodo mais utilizado para tal fim, segundo Beasley et al. (1993, part I, p.
11), conhecido como stochastic remainder sampling without replacement. Um mtodo melhor
ainda foi proposto por Baker (1987) apud Beasley et al. (1993, part I, p. 11), e chamado de
stochastic universal sampling.
importante no confundir os mtodos de amostragem citados acima com os mtodos de
seleo dos pais. Mtodos de seleo dos pais podem ter vantagens em diferentes aplicaes,
porm um bom mtodo de amostragem bom para todas as aplicaes e para todos os mtodos
de seleo (BEASLEY et al., 1993, part I, p. 11). De modo a evitar problemas como a
convergncia prematura ou a lenta finalizao preciso reajustar o fitness bruto da populao.
Para tal reajuste, os mtodos mais utilizados so: fitness scaling e fitness ranking.
Segundo Beasley et al. (1993, part I, p. 11), o fitness scaling o mtodo mais comumente
empregado. Neste mtodo alocado para cada indivduo o nmero de cpias que ir apresentar
no mating pool, respeitando um nmero mximo escolhido que geralmente 2 (dois). Isto
alcanado subtraindo-se um nmero adequado do score bruto e dividindo-se pela mdia dos
valores de fitness ajustados. Neste mtodo, a gerao de scores brutos negativos pela funo de
34
Como se pode notar na Figura 7, a mdia do fitness bruto 5.4 e o valor mximo do fitness
bruto 6.5. Isto nos d um resultado de 1.2 para o nmero mximo de cpias que um indivduo
ter no mating pool, este valor obtido dividindo-se o valor de fitness bruto mximo pela mdia.
Para a aplicao do fitness scaling8, subtrado de todos fitness brutos o valor 4.3; este valor
adquirido pela frmula: 2 * mdia mxima. Desta maneira, um histograma de valores fitness
ajustados gerado com a mdia de 1.1 e mxima de 2.2, logo o valor mximo de cpias que um
indivduo poder ter no mating pool agora 2.0, valor obtido dividindo-se o fitness ajustado
mximo pela mdia dos valores fitness tambm ajustados (BEASLEY et al., 1993, part I, p. 11).
Segundo Beasley et al. (1993, part I, p. 11), o mtodo de fitness scaling compacta a
variao do fitness fazendo com que o GA venha a convergir lentamente, aumentando assim a
explorao do espao de procura. Todavia, a presena de apenas um indivduo com score
significativamente alto9 (comparado a outros scores da populao) pode gerar a chamada
8
Beasley et al. (1993, part I, p. 11) cita tambm que seria mais apropriado chamar este mtodo de fitness
shifting, devido ao fato de que ele realmente desloca o intervalo do resultado da funo de fitness.
9
Geralmente um fitness dez vezes maior que qualquer outro da populao (BEASLEY et al., 1993, part I, p.
11).
35
Como se pode notar na Figura 8, em (a), o mtodo Roulette Wheel teve maiores perdas de
indivduos melhores adaptados. Isso pode ser comprovado pois Number in population na figura
representa o fitness. Na figura 8 em (b), nota-se um nmero maior de piores indivduos no
mtodo da roleta em comparao com SUS.
Segundo Beasley et al., (1993, part I, p. 12), mtodos de reajuste implcito de fitness
preenchem o mating pool sem precisar de uma etapa intermediria para reajuste. A tcnica
chamada Tournament selection a mais comumente utilizada; atualmente existem diversas
variaes da mesma, porm nesta presente seo ser apresentada a forma mais simples do
mtodo de Tournament selection.
Neste mtodo de seleo, pares de indivduos so selecionados aleatoriamente da
populao, destes, o que tiver melhor score ser copiado para o mating pool. Este processo
repetido at completar o mating pool. A utilizao de torneios maiores tambm pode ser usada,
onde o melhor de n indivduos selecionado aleatoriamente ser copiado para o mating pool
(BEASLEY et al., 1993, part I, p. 12).
Conforme Beasley et al. (1993, part I, p. 12), a utilizao de torneios maiores faz com que
aumente a presso da seleo, visto que indivduos com fitness abaixo da mdia tero menos
37
chance de ganhar o torneio, enquanto indivduos acima da mdia sero favorecidos. Uma
generalizao ainda pode ser utilizada neste mtodo utilizando-se uma constante probabilstica.
Neste caso, os melhores indivduos ganham o torneio com uma probabilidade p, onde 0.5 < p < 1.
Utilizando valores baixos para p tem o efeito de baixar a presso da seleo e vice-versa.
Ajustando-se esta constante possvel controlar a presso da seleo.
Uma comparao foi realizada por Goldberg et al. (1991) apud Beasley et al. (1993, part I,
p. 12) onde foram analisados quatro diferentes esquemas de seleo, dentre eles: fitness ranking,
tournament selection. A concluso desta comparao foi que atravs do ajuste correto dos
parmetros de cada mtodo de seleo puderam-se obter resultados semelhantes, desta maneira
no se pode afirmar que h um mtodo absolutamente melhor que outro para ser usado de forma
genrica.
A evoluo atua como uma busca no espao de todos os organismos possveis, aqui
representados pelo plano. O cruzamento vasculha esse espao de forma criativa,
combinando ocasionalmente boas caractersticas no relacionadas umas com as outras,
saltando para uma nova regio do espao de organismos habitada por indivduos mais
bem adaptados (setas vermelhas). A mutao (setas verdes) tende a encontrar o melhor
organismo presente nas imediaes. (2003, p. 63).
10
Termo o qual define que o melhor indivduo de uma gerao ser incondicionalmente copiado para a nova
gerao.
39
Uniform Crossover, visto que estes operadores so tambm amplamente utilizados em outras
maneiras de representaes como rvores de expresses em Lisp.
Como se pode ver na Figura 11, os dois novos filhos herdam material gentico dos dois
pais, todavia nem sempre o corte realizado nos indivduos encontra-se exatamente na metade da
bitstrig como na Figura 11, pois est escolha aleatria.
40
Segundo Beasley et al. (1993, part II, p. 1-2), outra tcnica tambm utilizada a chamada
Two-Point Crossover, na qual ao contrrio do One-Point Crossover, ele utiliza 2 pontos de corte
na string. A Figura 12 mostra uma representao de como esta troca pode ser realizada.
Conforme se pode ver na Figura 13, quando h o bit 1 na mscara, o gene copiado do
primeiro pai, porm quando h um bit 0 na mscara, ento ser copiado o gene do segundo pai
(BEASLEY et al., 1993, part II, p. 2).
2.6.3 Mutao
Conforme Beasley et al. (1993, part II, p. 6), o operador de mutao tradicionalmente
visto com um operador de fundo, pois responsvel por introduzir valores de genes perdidos
durante a evoluo e tambm prover uma pequena procura aleatria no espao de procura.
Durante a evoluo, o operador de cruzamento tende a encontrar solues melhores de
maneira mais veloz se comparado ao operador de mutao, porm no final da evoluo, quando a
42
Como se pode notar na Figura 14, o operador uma simples inverso de alguns bits. O
operador de mutao funciona apenas invertendo um ou mais determinados bits em uma string
com uma freqncia tradicionalmente baixa.
Segundo Harik et al. (1997, p. 1), a escolha do tamanho da populao para um determinado
domnio de problema em um Algoritmo Gentico uma tarefa difcil, pois o problema consiste
em encontrar um tamanho de populao grande o suficiente para realizar a explorao do espao
de procura sem gastar os recursos computacionais processando indivduos desnecessrios.
Se a populao for muito pequena, ser pouco provvel que o GA encontre solues
razoveis. Para encontrar boas solues deve-se aumentar o mximo possvel o tamanho da
populao, porm levando em conta o balano entre o tamanho da populao e os recursos
computacionais (HARIK et al., 1997, p. 1).
Atualmente no existe um modelo absoluto que defina um mtodo para encontrar o
tamanho da populao, porm algumas pesquisas realizadas apresentam alguns valores que se
podem tomar como base na deciso da escolha do tamanho da populao. Como uma dentre
43
vrias pesquisas realizadas para se examinar o efeito do tamanho das populaes, pode-se citar os
experimentos realizados por De Jong et al. (1991, p. 7).
Para testar as relaes entre a complexidade do espao de procura e o tamanho da
populao, De Jong et al. (1991, p. 7) utilizou um conjunto de problemas propostos por Spears
(1990). Os problemas utilizados so conhecidos como n-Peak, onde existe apenas uma mxima
global, porm com n-1 mximas locais, onde o GA pode vir a convergir prematuramente.
Os problemas n-Peak so propostos da seguinte maneira:
Desta maneira, o problema consiste em encontrar um valor para cada uma das variveis X
de modo que o resultado da expresso seja verdadeiro. Nos problemas n-Peak, pode-se aumentar
facilmente a complexidade aumentando n. (DE JONG et al., 1991, p.7).
A Figura 16 demonstra alguns resultados utilizando Uniform Crossover e Two-Point
Crossover para diferentes tamanhos de populao em um problema 1-Peak.
44
Como se pode notar na Figura 16, em ambos os casos, o GA conseguiu atingir a mxima
global em um problema sem mximas locais. Porm quando aumenta-se a complexidade do
problema, o tamanho da populao tende a influenciar na qualidade da melhor soluo
encontrada. A Figura 17 mostra os resultados do mesmo GA, porm, utilizando agora o problema
3-Peak.
11
Whitley, A Genetic Algorithm Tutorial, 1994, p. 33
46
3.1 Introduo
12
Ou Gro-grosso
47
subpopulaes mais conhecidas como demes que evoluem isoladamente e trocam indivduos
ocasionalmente. Segundo Cant-Paz (1997, p.4), esta troca de indivduos entre os demes
chamada de migrao e controlada por diversos parmetros. Este mtodo de implementao
paralela introduz modificaes no comportamento do GA e possu algumas novas caractersticas
quando comparado a um simples GA. Ele comumente conhecido como Modelo Ilha13, devido
ao fato de que a evoluo ocorre individualmente em cada deme, o que significa uma melhor
aproximao da realidade, pois a natureza tambm evolu em paralelo e em alguns casos ocorre o
isolamento gentico. A Figura 19 mostra uma representao do modelo coarse-grained.
13
ou Island Model segundo o autor.
49
indivduos para cada unidade pode ser constante, ou devido a tradicional utilizao de sistemas
multiusurios, pode-se utilizar um algoritmo de distribuio dinmico. A comunicao neste
modelo ocorrer somente quando as unidades de processamento receberem este conjunto de
indivduos e tambm quando enviarem o retorno do fitness de cada um deles (CANT-PAZ,
1997, p. 6).
As operaes de cruzamento e mutao tambm podem ser paralelizados da mesma
maneira que a avaliao, dividindo as tarefas entre as unidades de processamento disponveis.
Porm as operaes de cruzamento e mutao so to simples e de to pouco custo
computacional que difcil conseguir um melhor desempenho, visto que o tempo gasto para o
envio das tarefas e recebimento dos indivduos ultrapassa o algoritmo serial.
Segundo Cant-Paz (1997, p. 8), se o algoritmo pra e espera a recepo dos fitness antes
de ir para uma nova gerao, ento este mtodo dito sncrono e tem as mesmas caractersticas
que um GA comum, porm tambm possvel a implementao de um algoritmo assncrono, no
entanto estes so menos utilizados e o GA j no pode funcionar de maneira convencional.
Resumindo, a paralelizao global fcil de implementar e pode ser um mtodo eficiente
para a paralelizao desde que a funo de avaliao requeira um razovel custo computacional.
Outra vantagem deste mtodo que ele no altera o comportamento do GA, podendo assim
aplicar diretamente quase todas as teorias para GAs tradicionais (CANT-PAZ, 1997, p. 6).
3.3 Coarse-Grained
GAs Coarse-grained parecem ser uma simples extenso do GA seqencial, visto que
trabalha como vrios GAs seqenciais operando em mltiplos nodos que
ocasionalmente trocam indivduos;
Computadores para a implementao deste mtodo esto facilmente disponveis e pode
ser implementado utilizando uma rede de computadores com softwares como MPI ou
PVM.
3.4 Fine-Grained
14
Cada ilha tendo 4 ilhas como vizinhas diretas
53
Obviamente, esta implementao do modelo ilha fine-grained tem vrias vantagens sobre a
implementao tradicional coarse-grained, que leva a um speedup maior. A seleo continua
sendo local em cada deme, porm Kohlmorgen (1996, p. 5) cita que este problema se torna cada
vez menor quando aumenta-se a quantidade de ilhas15.
Os resultados encontrados por Kohlmorgen (1996, p. 12) mostraram uma clara vantagem
do mtodo de seleo elitista (melhor) sobre o mtodo roulette wheel, visto que devido a grande
quantidade de populaes que j provm uma boa diversidade de indivduos, o mtodo roulette
wheel perdeu sua principal vantagem. A taxa de convergncia baixou conforme se aumentou a
quantidade de ilhas. O GAs com quantidade de ilhas entre 64 e 254 foram os que apresentaram
melhores resultados, provavelmente devido a diversificao de indivduos.
Com este modelo de implementao paralela pode-se alcanar um speedup at mesmo
melhor que no modelo coarse-grained, porm o que dificulta a sua utilizao a disponibilidade
de mquinas massivamente paralelas.
15
E reduzindo obviamente o tamanho da populao de cada uma das ilhas.
54
3.5 Migrao
periodicamente enviavam seus melhores indivduos para o processo mestre que escolhia os
melhores dentre todos estes indivduos recebidos e realizava um broadcast apenas dos melhores
selecionados. Segundo Cant-Paz (1997, p. 12), resultados experimentais mostraram que um
speedup prximo ao linear pde ser obtido com uma pequena quantidade de nodos (prximo a 6).
Enquanto muitas melhorias foram realizadas em Algoritmos Genticos ao longo dos anos
por vrios pesquisadores desde a primeira concepo terica de Holland, a maioria das
otimizaes no trouxe melhorias significativas em termos de desempenho. Porm, atualmente,
com a evoluo de arquiteturas paralelas e conceitos de paralelismo, foi possvel aplicar estes
conhecimentos em GAs de modo a melhorar o desempenho na busca das solues em um GA.
Os mtodos de paralelismo citados na seo Algoritmos Genticos Paralelos, so
atualmente os mais utilizados, visto que cada um, com suas caractersticas, restringem a aplicao
do mtodo a determinados paradigmas de paralelismo. O modelo fine-grained, por exemplo, na
prtica, para que se possa obter o maior proveito de desempenho deste modelo, se faz necessrio
uma arquitetura com caractersticas tpicas de mquinas massivamente paralelas, o que o torna
um modelo nem tanto utilizado.
A implementao do GA utilizando o modelo de paralelismo coarse-grained, tem uma
grande vantagem sobre o modelo fine-grained, pois ele pode ser utilizado em clusters comuns e
possu tradicionalmente pouca comunicao. Estas caractersticas fazem deste modelo, a escolha
tradicional no momento da paralelizao.
56
Atualmente existem diversas bibliotecas open source e sob licena GPL disponveis para
auxiliar na implementao de Algoritmos Genticos, algumas com poucos recursos para fins
especficos e outras com uma vasta coleo de algoritmos que variam desde comparadores de
similaridade entre cromossomos at ajustes de fitness como Stochastic Universal Sampling.
Dentre as mais citadas pela comunidade que utiliza Algoritmos Genticos, destacam-se a
GALib, Open Beagle, GAUL, JAGA, GECO, GALOPPS e PyGene (LINUX.COM, 2006).
As trs bibliotecas mais citadas em trabalhos cientficos (GAUL, GALib, Open Beagle)
foram escolhidas pelo autor para realizar um estudo mais aprofundado.
4.1 GALib
A GALib foi desenvolvida na linguagem C++ por Matthew Wall16 em 1996 e possu um
design orientado a objetos (OO), que permite uma flexibilidade para estend-la, utilizando-se de
operadores j prontos como base ou at mesmo o prprio Algoritmo Gentico (WALL, 2006).
Dentre as principais caractersticas da biblioteca, encontram-se:
16
Matthew Wall, Mechanical Engineering Departament, M.I.T.
57
A GALib possui um design OO simples em C++ que facilita a extenso para a criao de
novas representaes e at mesmo novos algoritmos. A biblioteca foi utilizada na tese de
doutorado do autor para a otimizao da utilizao de recursos em problemas industriais (WALL,
1996).
17
O incremental GA uma variao do steady-state, onde cada gerao consiste em apenas 2 ou 3
descendentes.
58
A biblioteca Open Beagle, desenvolvida por Christian Gagn e Julie Beaulieu, distribuda
sob licena LGPL18, foi desenvolvida em C++, porm no contm apenas o suporte para
Algoritmos Genticos como a GALib. Ela foi desenvolvida focando ser um framework genrico
para computao evolucionria, possuindo suporte para Programao Gentica e Algoritmos
Evolucionrios (OPEN BEAGLE, 2006). A Figura 22 mostra como a arquitetura do framework.
18
GNU Lesser General Public License (LGPL)
59
Apesar da biblioteca ser bem organizada, portvel, e aceita atualmente pela FSF19, a Open
Beagle extremamente genrica, o que muitas vezes retarda demais o desenvolvimento de
aplicaes, por ser muito abstrata. Foi constatado que sua documentao e implementao,
durante o desenvolvimento do presente trabalho, esto direcionados para a Programao
Gentica.
4.3 GAUL
19
Free Software Foundation
60
A Tabela 1 ilustra uma sumarizao das principais caractersticas das bibliotecas estudadas.
Por ser voltada para GP, a biblioteca Open Beagle foi descartada como opo de
implementao para a utilizao no trabalho atual de paralelizao de Algoritmos Genticos. As
bibliotecas GALib e GAUL sero comparadas e analisadas na seo Anlise das Bibliotecas
GALib e GAUL, onde sero realizados alguns testes observando-se o desempenho e as
caractersticas intrnsecas de cada uma das bibliotecas.
n
f (x, y) = ( x [ i ] == y [ i ] ? 1 : 0 ) (1)
i=0
No segundo caso, representado pela Figura 24 onde o eixo das ordenadas representa o
tempo em segundos e o eixo das abscissas representa a quantidade de geraes, foi utilizada uma
quantidade maior de geraes, de 10.000 a 50.000 com incremento de 10.000 geraes.
64
Como se pode notar nas Figuras 24 e 25, a biblioteca GAUL apresentou um baixo
desempenho quando comparada a biblioteca GALib, pois como se podem ver nos comparativos,
quanto maior a quantidade de geraes, mais a biblioteca afasta seu desempenho da GALib, que
se mostrou estvel.
Baseado nas comparaes de caractersticas e nas anlises de desempenho entre as
bibliotecas, foi escolhida a GALib como biblioteca a ser utilizada na implementao do presente
trabalho, visto que comporta todas necessidades exigidas pela futura representao do
cromossomo e modelagem do GA.
65
Segundo Fang (1994, p.45), o mais simples problema de timetabling pode ser visto como
um problema onde devem ser alocados v eventos em s slots de tempo. Formalmente ele
prope tal definio para o problema de timetabling:
Onde definimos uma alocao como sendo um par (a,b), de modo que a E e b T, com
a simples interpretao que o evento a ocorre no slot de tempo b. Timetabling ento, um
problema de determinao de v alocaes de modo a formar uma boa distribuio de carga
horria.
O problema de alocao das cargas horrias de professores vem acompanhado de algumas
restries, as chamadas constraints. Um exemplo de restrio, quando em alguma situao,
66
for alocado um mesmo professor para dar aula ao mesmo tempo em nveis diferentes, este tipo de
constraint chamado de clash, e o mais comum entre os problemas de distribuio de cargas
horrias (FANG, 2004, p. 49), porm existem outras, como por exemplo, a disponibilidade de um
professor num determinado slot.
As constraints podem ser separadas em dois tipos principais: Hard e Soft, segundo Fang
(2004, p. 49), as constraints do tipo hard so restries que no devem ser violadas, so
constraints crticas e que afetaro de modo significativo a qualidade da distribuio da carga
horria; j as restries do tipo soft so restries mais sutis que devem ser preferencialmente
seguidas porm podem ser violadas caso haja a necessidade.
5.2 Modelo
Abaixo segue uma descrio detalhada sobre cada uma das tabelas da Figura 25 e sua
funo:
A sistemtica para gerao da distribuio de carga horria para mais de um curso funciona
da seguinte maneira: primeiro o algoritmo gerar a distribuio para determinado curso, logo
aps um script sql ser rodado no banco para gerar novas disponibilidades baseadas nas
distribuies geradas, a partir dessa gerao de novas disponibilidades, o GA poder continuar
com a gerao de outro curso normalmente.
5.2.2 Cromossomo
Para gerar a populao da gerao inicial, foi criado um inicializador para cada nvel do
timetabling. Este inicializador trabalha de maneira estocstica de modo a garantir uma boa
distribuio aleatria no momento de alocar professores/disciplinas em slots de tempo.
O mecanismo de alocao estocstica simples: primeiro cria-se uma lista de posies
disponveis do vetor de determinado nvel, logo aps escolhido aleatoriamente uma dessas
posies e o cdigo professor/disciplina ento alocado para tal posio; sempre respeitando a
disposio das disciplinas de dois e quatro crditos, pois as disciplinas de dois crditos no
podem ser alocadas imediatamente aps uma disciplina de quatro crditos, e nem uma disciplina
de quatro crditos pode ser alocada imediatamente aps uma disciplina de dois crditos.
A gerao inicial pode conter indivduos idnticos, ou seja, indivduos com a mesma
distribuio, porm durante a evoluo ocorrer a disperso caso estes indivduos obtiverem um
fitness baixo.
5.2.4 Constraints
disciplinas oferecidas para tal nvel devem estar presentes no cromossomo, caso
contrrio, ser uma distribuio de carga horria incompleta;
2. Disponibilidade: a disponibilidade indica quando (quais timeslots) os professores
esto disponveis para lecionar. Esta constraint deve ser hard uma vez que se trata
de uma restrio inviolvel, visto que o cromossomo deve adaptar-se aos horrios
dos professores;
3. Clash: esta constraint indica a situao de quando foi gerada uma distribuio em
que um professor est dando aula em nveis diferentes ao mesmo tempo. Esta
constraint tratada tambm como hard, visto que viola obviamente uma lei fsica.
5.2.5 Fitness
tratamento de cada uma das constraints. Abaixo segue uma descrio detalhada de como gerado
o score a partir de cada uma das constraints.
Hard Constraints
1. Oferecimento: para tratar esta constraint, o algoritmo bonifica o score com o valor
de 1 multiplicado pelo peso da constraint que 3.5 quando encontra um
oferecimento no seu turno correto;
2. Disponibilidade: nesta constraint, se o professor estiver com sua disponibilidade
livre para este turno e dia da semana, um bnus adicionado ao score, de 1
multiplicado pelo peso da constraint, que 2.0;
3. Clash: o score ser bonificado com o valor de 1 multiplicado pelo peso 1.5 para
cada slot que no apresentar choque de horrio com outro slot em outro nvel.
Soft Constraints
Desta maneira, uma aproximao da funo de fitness pode ser formulada como mostrado
na Equao(2):
N Vn , Cn
score = C [ ci ]( V [ vi ]) * W [ ci ] (2)
n=0 vi = 0 , ci = 0
5.2.6 Crossover
5.2.7 Mutao
A mutao foi desenvolvida visando obter uma boa distribuio estocstica dentro de cada
nvel do cromossomo. A mutao dos genes acontece em duas etapas: a mutao do
professor/disciplina e o swap das disciplinas. Na mutao do professor/disciplina, o algoritmo de
mutao procura a disponibilidade de algum outro professor para a mesma disciplina e muta-o
para este outro professor/disciplina; na segunda etapa da mutao, o algoritmo realiza a troca da
posio do professor/disciplina para outro slot disponvel.
74
5.3 Implementao
20
http://tangentsoft.net/mysql++, acesso em 10/11/2006
21
http://mysql.org, acesso em 01/12/2006
22
http://lancet.mit.edu/galib-2.4, acesso em 01/12/2006
23
http://www.stack.nl/~dimitri/doxygen, acesso em 01/12/2006
75
Crossover: 0.4 %
Mutao: 0.1 %
Geraes: 200
Tamanho da populao: 1500
Lgica para Computao Algoritmos e Estrutura de Dados I (T) Algoritmos e Estrutura de Dados II
Arquitetura e Organizao de
Fsica Aplicada a Informtica (T) Aritmtica Computacional Computadores I
Fsica Aplicada a Informtica (P1) Circuitos Digitais para Computao Matemtica Discreta
Matemtica Discreta
Nvel I
Nvel II
Nvel III
Como se pode notar nas Figuras 26, 27 e 28, o melhor indivduo obteve uma boa
distribuio de cargas horrias e um alto fitness em relao as suas constraints. Conquanto gerado
com dados hipotticos e distintos das geraes de distribuio de cargas horrias atualmente
utilizados, o GA se encontra apto para resolver casos mais complexos com constraints e nveis
adicionais, porm com o requisito de um maior tempo de evoluo.
78
6 CONSIDERAES FINAIS
ANEXOS
Arquivo gaulcomp.h
#if !defined(__GAULCOMP_H)
#define __GAULCOMP_H
#include <stdio.h>
#include <stdlib.h>
#include <gaul.h>
#endif
Arquivo gaulcomp.c
#include "gaulcomp.h"
entity->fitness=0.0;
80
int main(void)
{
population *pop=NULL;
int i;
char *best_individual;
random_seed(666);
pop=ga_genesis_char(
POPSIZE, /* pop size */
1, /* num_chromo */
strlen(text), /* len_chromo */
NULL, /* generation hook */
NULL, /* iteration */
NULL, /* data_destructor */
NULL, /* data_ref_inc */
score, /* score function */
ga_seed_printable_random, /* seed */
NULL, /* adaptation */
ga_select_one_roulette, /* one */
ga_select_two_roulette, /* two */
ga_mutate_printable_singlepoint_drift, /*
mutation */
ga_crossover_char_singlepoints, /*
crossover */
NULL, /* replace */
NULL /* user data */);
ga_population_set_parameters(
pop,
GA_SCHEME_DARWIN, /* class type */
GA_ELITISM_PARENTS_DIE, /* elitism type */
CROSSOVER, /* Crossover probability */
MUTATION, /* Mutation probability */
0.0); /* Migration */
ga_evolution(pop, GENERATIONS);
ga_extinction(pop);
return 0;
}
82
Arquivo galibcomp.h
#if !defined(__GALIBCOMP_H)
#define __GALIBCOMP_H
#include <iostream>
#include <ga/ga.h>
#endif
Arquivo galibcomp.cpp
#include "galibcomp.h"
using std::cout;
using std::cin;
using std::endl;
int main(void)
{
unsigned int seed = 666;
GASimpleGA ga(genome);
ga.populationSize(POPSIZE);
ga.nGenerations(GENERATIONS);
ga.pMutation(MUTATION);
ga.pCrossover(CROSSOVER);
GARouletteWheelSelector roulette;
ga.selector(roulette);
ga.initialize(seed);
ga.evolve();
83
printf("\n Best:");
GA1DArrayAlleleGenome<int> &best = (GA1DArrayAlleleGenome<int> &)
ga.statistics().bestIndividual();
for(int i=0; i<best.length(); i++)
{
printf("%c", best.gene(i));
}
printf("\nScore: %.3f\n", best.score());
return 0;
}
}
return fitness;
}
84
REFERNCIAS
BAKER, J. E. Reducing bias and inefficiency in the selection algorithm. In: SECOND
INTERNATIONAL CONFERENCE ON GENETIC ALGORITHMS, 1987. Proceedings.
Lawrence Erlbaum Associates, 1987. p. 14-21.
BEASLEY, David; BULL, David R.; MARTIN, Ralph R. An Overview of Genetic Algorithms -
Part I. University Computing Journal, 1993.
____; BULL, David R.; MARTIN, Ralph R. An Overview of Genetic Algorithms - Part II.
University Computing Journal, 1993.
CANT-PAZ, Erick. A Survey of Parallel Genetic Algorithms. IlliGAL Technical Report 97003.
1997.
CRAMER, N.L. A representation for the adaptative generation of simple sequential programs. In:
FIRST INTERNATIONAL CONFERENCE ON GENETIC ALGORITHMS, 1985. Proceedings.
Lawrence Erlbaum Associates, 1985. p. 183-187.
DAWSON, Jeremy; KERN, Keith; LEUNG, Julie. Genetic Algorithms and Evolution Strategies,
2000.
85
DE JONG, Kenneth A.; SPEARS, William M. An Analysis of the Interacting Roles of Population
Size and Crossover in Genetic Algorithms, 1991.
____, David E.; DEB. K.; A comparative analysis of selection schemes used in genetic
algorithms. In: Foundations of Genetic Algorithms, p. 69-93. Morgan Kaufmann, 1991.
HARIK, George; CANT-PAZ, Erick; GOLDBERG, David E.; MILLER, Brad L. The
Gamblers Ruin Problem, Genetic Algorithms, and the Sizing of Populations. In: THE IEEE
CONFERENCE ON EVOLUTIONARY COMPUTATION, WORLD CONGRESS ON
COMPUTATIONAL INTELLIGENCE, 1997. Proceedings. p. 7-12.
HOLLAND, John H. Adaptation in Natural and Artificial Systems. University of Michigan Press,
1975.
KOZA, John R.; KEANE, Martin A.; STREETER, Matthew J. Aperfeioando Inventos.
Scientific American, Brasil, Ano 1 n 10, p. 60-67, Maro, 2003.
LINUX.COM. GNU/Linux AI & Alife HOWTO: Evolutionary Computing. Disponvel em: <
http://howtos.linux.com/howtos/AI-Alife-HOWTO-4.shtml>. Acesso em: 20 agosto 2006.
LOBO, Fernando G.; LIMA, Claudio F.; MARTIRES, Hugo. An Architecture for Massive
Parallelization of the Compact Genetic Algorithm. In: GECCO GENETIC AND
EVOLUTIONARY COMPUTATION CONFERENCE, 2004, Seattle, USA. Proceedings.
Seattle: Springer, 2004. p. 412-413.
86
MILLER, Brad L; GOLDBERG, David E. Genetic Algorithms, Selecion Schemes, and the
Varying Effects of Noise, 1996.
ROSS, Peter; CORNE, Dave; FANG, Hsiao-Lan; Timetabling by Genetic Algorithms: Issues and
approaches. Technical Report. 1994.
____; YU, Tian-Li; GOLDBERG, David E.; ALTSHULER, Edward; ODONNELL, Teresa;
SOUTHALL, Hugh; MAILLOUX, Robert. Military Antenna Design Using Simple And
Competent Genetic Algorithms. IlliGAL Report No. 2005013. Abril, 2005.
SMITH, John Maynard. Evolutionary Genetics. Oxford University Press, New York, 1989.
WALSKI, Thomas M.; CHASE, Donald V.; SAVIC, Dragan A.; GRAYMAN, Walter;
BACKWITH, Stephen; KOELLE, Edmundo. Advanced Water Distribution Modeling and
Management. Disponvel em <http://www.haestad.com/library/books/awdm/>. Acesso em: 03
jun. 2006.
WHITLEY, Darrel. The GENITOR algorithm and selecion pressure: why rank-based allocation
of reproductive trials is best. In: THIRD INTERNATIONAL CONFERENCE ON GENETIC
ALGORITHMS, 1989. Proceedings. Morgan Kaufmann, 1989. p. 116-121.
____. Using reproductive evaluation to improve genetic search and heuristic discovery. In:
SECOND INTERNATIONAL CONFERENCE ON GENETIC ALGORITHMS, 1987.
Proceedings. Lawrence Erlbaum Associates, 1987. p. 108-115.