Вы находитесь на странице: 1из 90

UNIVERSIDADE DE PASSO FUNDO

Christian Samuel Perone

Algoritmo gentico para alocao de carga horria

Passo Fundo
2006
Christian Samuel Perone

ALGORITMO GENTICO PARA ALOCAO DE


CARGA HORRIA

Monografia apresentada ao curso de Cincia da


Computao, do Instituto de Cincias Exatas e
Geocincias, da Universidade de Passo Fundo, como
requisito parcial para obteno do grau de Bacharel em
Cincia da Computao, sob orientao do Msc.
Marcelo Trindade Rebonatto.

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

O presente trabalho apresenta um amplo estudo da Computao Evolucionria, porm


direcionado Algoritmos Genticos, incluindo tambm alguns exemplos de mtodos utilizados
atualmente para a otimizao dos Algoritmos Genticos como a paralelizao. Algumas das
bibliotecas mais usadas para o desenvolvimento de Algoritmos Genticos foram analisadas e
comparadas; suas caractersticas e desempenhos sero ressaltados. O objetivo deste trabalho
consiste em aplicar o conceito de Algoritmos Genticos ao problema de distribuio de carga
horria; sero descritos todos os processos de modelagem e implementao do Algoritmo
Gentico, desde a escolha da representao at o desenvolvimento dos operadores genticos.
LISTA DE FIGURAS

Figura 1 Algoritmo Evolucionrio ............................................................................................. 13


Figura 2 Cruzamento em Eletrnica........................................................................................... 16
Figura 3 Aperfeioando um Filtro Low-Pass ............................................................................. 17
Figura 4 Representao cromossmica das coordenadas no espao 3D .................................... 18
Figura 5 Mximas Globais e Mximas Locais ........................................................................... 23
Figura 6 Problema em mtodos de hillclimbing......................................................................... 25
Figura 7 Fitness ajustado e fitness bruto .................................................................................... 34
Figura 8 Comparao da convergncia para melhor indivduo e aumento do pior indivduo.... 36
Figura 9 Representao dos operadores genticos ..................................................................... 37
Figura 10 Mutao versus Cruzamento ...................................................................................... 38
Figura 11 One-Point Crossover .................................................................................................. 39
Figura 12 Two-Point Crossover ................................................................................................. 40
Figura 13 Uniform Crossover..................................................................................................... 41
Figura 14 Operador de Mutao................................................................................................. 42
Figura 15 Proposies dos problemas n-Peak............................................................................ 43
Figura 16 Resultados do GA em diferentes tamanhos de populaes........................................ 44
Figura 17 - Resultados do GA em diferentes tamanhos de populaes ........................................ 44
Figura 18 Paralelizao Global de um Algoritmo Gentico....................................................... 47
Figura 19 Esquema da paralelizao coarse-grained de um GA com 6 demes. ........................ 48
Figura 20 Esquema de um GA paralelo fine-grained................................................................. 49
Figura 21 Quatro ilhas com 4096 indivduos cada ..................................................................... 53
Figura 22 Arquitetura da Open Beagle....................................................................................... 58
Figura 23 Comparativo GAUL e GALib, de 500 a 5.000 geraes ........................................... 63
Figura 24 - Comparativo GAUL e GALib, de 10.000 a 50.000 geraes..................................... 64
Figura 25 Base de Dados ............................................................................................................ 67
Figura 26 Representao Cromossmica ................................................................................... 69
Figura 26 Timetabling gerado (Nvel 1) ..................................................................................... 76
Figura 27 Timetabling gerado (Nvel 2) ..................................................................................... 77
Figura 28 Timetabling gerado (Nvel 3) ..................................................................................... 77
LISTA DE SIGLAS

EC: Evoltionary Computation


EA: Evolutionary Algorithm
GA: Genetic Algorithm
EP: Evolutionary Programming
ES: Evolutionary Strategies
GP: Genetic Programming
SUS: Stochastic Universal Sampling
OO: Orientao a Objetos
GAUL: Genetic Algorithm Utility Library
GPL: General Public License
LGPL: Lesser General Public License
MIT: Massachusetts Institute of Technology
SUMRIO

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

outros, reproduziram de uma nova forma a mesma funcionalidade de seus antecessores,


apresentando uma melhoria evidente em relao a sua antecessora. (KOZA et al., 2003).
Esforos para a otimizao da velocidade dos Algoritmos Genticos tm sido realizados por
vrios pesquisadores, porm o mtodo mais promissor para o efetivo alcance de melhorias do
algoritmo ainda so as implementaes paralelas, objetivo da presente proposta (CANT-PAZ,
1997, p. 1).
O atual trabalho apresenta um estudo sobre a Computao Evolucionria, mais
especificamente, Algoritmos Genticos. Este trabalho est organizado da seguinte maneira:
Captulo 1 Computao Evolucionria, que proporcionar uma sinopse geral sobre a
Computao Evolucionria bem como seus principais modelos algortmicos; Captulo 2
Algoritmos Genticos, que apresentar com mais detalhes um dos principais modelos da
Computao Evolucionria; Captulo 3 Algoritmos Genticos Paralelos, que far uma anlise
dos mtodos de paralelizao de Algoritmos Genticos bom como as caractersticas de cada um
dos modelos de paralelizao apresentados; Captulo 4 Bibliotecas para a implementao de
Algoritmos Genticos, onde ser apresentado uma comparao entre as bibliotecas mais
utilizadas para o desenvolvimento de GAs; Captulo 5 Definio do problema e implementao,
o qual apresentar de modo formal a definio do problema timetabling alm das especificaes
da implementao e modelagem da base de dados e o Captulo 6 Consideraes Finais, onde
ser exposto idias para trabalhos futuros e as consideraes finais.
10

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

A Computao Evolucionria, freqentemente conhecida como Evolutionary


Computation (EC), foi inspirada em modernas teorias de evoluo, tendo sua essncia baseada na
utilizao de modelos de processos evolucionrios para a resoluo de problemas. Segundo De
Jong et al. (1993, p. 1), existe uma variedade de modelos computacionais evolucionrios que
foram estudados e propostos. Estes modelos so chamados de Algoritmos Evolucionrios ou
Evolutionary Algorithms (EA); a base fundamental destes modelos compartilha uma idia em
comum: a simulao da evoluo de estruturas individuais, chamadas indivduos, atravs de
processos genticos como seleo, reproduo e mutao.
Os processos genticos aplicados sobre as estruturas individuais so geralmente conhecidos
tambm como operadores, resultado do fato de que os mesmos atuam ativamente sobre as
estruturas e dependem do desempenho observado das mesmas em um ambiente. Estas estruturas
individuais, ou seja, indivduos representam uma soluo dentro do domnio de um problema.
Segundo De Jong et al. (1993, p. 2), seu desempenho observado dentro do ambiente comumente
11

chamado de fitness e representa a adaptabilidade do indivduo em relao populao o qual faz


parte.

1.2 Teoria da Evoluo

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.

As seguintes caractersticas so a essncia da teoria de Charles Darwin (WINSTON, 1992


apud FANG, 1994, p. 26):

Cada indivduo tende a passar suas caractersticas para sua prole;


A natureza produz indivduos com diferentes caractersticas;
Os indivduos mais adaptados aqueles com caractersticas mais favorveis tentem a ter
mais proles do que aqueles com caractersticas menos favorveis. Isto dirige a populao
como um todo na busca de caractersticas favorveis;
Em um longo perodo, variaes podem acumular, produzindo novas espcies em que as
caractersticas se tornaram especialmente adaptadas para determinados nichos ecolgicos.
12

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.

1.3 Algoritmos Evolucionrios (Evolutionary Algorithms)

Os modelos de EC, chamados Algoritmos Evolucionrios, mantm internamente uma


populao de indivduos que evoluem conforme as regras de seleo e de outros operadores como
recombinao e mutao. Cada indivduo inserido nesta populao recebe o valor de seu fitness
(desempenho) dentro do ambiente. A seleo, imitando a seleo natural, centra sua ateno nos
indivduos de maior fitness, explorando assim as informaes de desempenho dos indivduos da
populao. Logo em seguida, os operadores de recombinao e mutao atuam sobre os
indivduos. Embora simples do ponto de vista biolgico, estes algoritmos so suficientemente
complexos para prover mecanismos robustos e poderosamente adaptveis para a procura de
solues dentro do domnio de um problema (DE JONG et al, 1993). Embora geralmente o
domnio de um problema seja significativamente grande, ele finito, e este domnio o que
caracteriza e delimita o espao de procura do problema. Por exemplo, em um determinado
problema, na procura de 2 variveis inteiras com tamanho de 10 bits cada uma, o espao de
procura seria de 2(10*2) solues candidatas.

A Figura 1 apresenta um tpico Algoritmo Evolucionrio.


13

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

A populao inicializada e evoluda atravs da repetida aplicao de avaliaes, seleo,


recombinaes e mutaes sobre os indivduos enquanto nenhum critrio de parada for
alcanado, como por exemplo: determinado nmero de geraes. Cada rodada de aplicao dos
operadores referenciada como uma gerao. Conforme se pode notar na Figura 1, todas
operaes so realizadas sobre a populao de indivduos mantida internamente pelo EA. Um
Algoritmo Evolucionrio tradicional, inicializa aleatoriamente a sua populao, embora algumas
vezes seja utilizada alguma heurstica dentro do domnio do problema para auxiliar esta
inicializao (DE JONG et al, 1993).
Na etapa de avaliao dos indivduos da populao calculado o fitness de cada um dos
indivduos. O clculo pode ser uma simples funo aplicada sobre o indivduo ou at mesmo uma
complexa avaliao do mesmo. Segundo Lobo (2004, p. 1), na maioria dos problemas, a maior
parte do tempo de processamento gasto na avaliao das solues do que nos mecanismos
internos do algoritmo.
A seleo atua em duas etapas do algoritmo: a seleo dos pais e a sobrevivncia dos
indivduos. A primeira etapa onde se decidem quais indivduos sero os pais e quantos filhos
estes indivduos tero. Estes filhos sero criados atravs da recombinao, que intercala a
informao dos pais. Logo aps a gerao destes novos indivduos ento aplicado sobre eles o
14

operador de mutao que os perturba sutilmente de modo a garantir a diversidade de novos


indivduos. Na segunda etapa da seleo (sobrevivncia), so escolhidos quais indivduos iro
sobreviver na prxima gerao (DE JONG et al, 1993).
Na Computao Evolucionria, mais precisamente em Algoritmos Evolucionrios,
coexistem diversas variedades de algoritmos, cada um com suas peculiaridades, variando desde o
mecanismo de seleo a representao dos indivduos. A representao varia desde bitstrings1 at
vetores de valores reais, expresses em Lisp e at mesmo redes neurais. De Jong et al. (1993) cita
que as origens dos algoritmos evolucionrios podem ser datadas desde 1950 (ex. Fraser, 1967;
Box, 1957) at os dias atuais. Embora o escopo do presente trabalho seja Algoritmos Genticos,
conhecidos tambm como Genetic Algorithms (GA), sero tambm apresentados alguns detalhes
de outros dois modelos que surgiram nas ltimas dcadas: Evolutionary Programming (EP),
chamado de Programao Evolucionria e Evolution Strategies (ES), conhecido como
Estratgias de Evoluo. Apesar de similares em alto-nvel, cada uma destas variedades
implementa diferentes modelos de Algoritmos Evolucionrios. As diferenas surgem em quase
todos os aspectos do modelo de Algoritmos Evolucionrios, incluindo tipos de representao para
as estruturas individuais, mecanismos de seleo, formas de operadores e medidas de
desempenho (DE JONG et al, 1993).

1.3.1 Programao Evolucionria (Evolutionary Programming)

Segundo Whitley (2002, p. 5), a Programao Evolucionria praticada hoje uma


adaptao do trabalho desenvolvido por Lawrence Fogel, A.J. Owens e M.J. Walsh em 1960.
Naquela poca, a EP foi utilizada para modificar mquinas de estado finito atravs da mutao. A
idia chave por trs da EP a procura da soluo do problema no espao dos fentipos ao invs
da procura no espao dos gentipos (indivduos codificados em bitstrings, listas, etc e que

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

controlam indiretamente o comportamento dos indivduos depois da decodificao). Os


operadores em EP atuavam diretamente sobre as mquinas de estado finito em oposio ao
gentipo com alguma representao especfica e codificada.
Em 1990, David Fogel reintroduziu a Programao Evolucionria como um mtodo
genrico de otimizao de parmetros, porm em todos os aspectos prticos, os modernos
algoritmos de EP so virtualmente idnticos as Estratgias de Evoluo, exceto pelo fato de que,
geralmente, no utilizado o operador de recombinao (WHITLEY, 2002. p. 5).
Uma recente contribuio para os algoritmos de Programao Evolucionria a Genetic
Programming (GP) ou Programao Gentica, que evolui programas de computador atravs da
representao dos programas em cromossomos. Tradicionalmente estes programas esto em
linguagem Lisp, que atravs de suas expresses facilita a atuao dos operadores genticos
(WHITLEY, 2002. p. 5).

1.3.2 Estratgias de Evoluo (Evolution Strategies)

Conforme De Jong et al. (1993), as Estratgias de Evoluo (ES) foram desenvolvidas


independentemente por Rechenberg (1973) com seleo, mutao e uma populao com apenas
um indivduo. Mais tarde Schwefel (1981) introduziu a recombinao e a populao com mais de
um indivduo. Devido o interesse inicial na otimizao de problemas de hidrodinmica, as ES
utilizam tipicamente representaes com vetores de valores reais.
As ES utilizam parmetros de estratgia e provm maior nfase no operador de mutao
do que no de recombinao. Os parmetros de estratgia controlam a mutao para cada
parmetro do cromossomo. Estes parmetros so codificados juntamente com o cromossomo e
evoluem com a populao.
16

1.4 Exemplo de Uso de Computao Evolucionria

Um exemplo da aplicao de Computao Evolucionria a citada por Koza et al (2003, p.


1), no qual utilizada a programao gentica no campo da eletrnica. Segundo o autor, a
programao gentica conseguiu reproduzir 15 invenes j patenteadas, muitas das quais foram
consideradas inovadoras em suas respectivas reas quando anunciadas. Seis destas 15 invenes
foram patenteadas por institutos aps janeiro de 2000. Alguns dos inventos representam novas
criaes produzindo de maneira diferente a mesma funcionalidade de suas criaes anteriores,
enquanto outros apresentaram melhorias.
A Figura 2 mostra um exemplo de recombinao (cruzamento) em eletrnica.

Fonte: Koza et al (2003. p. 63).


Figura 2 Cruzamento em Eletrnica

Atuando em dois circuitos (indivduos) e realizando o intercmbio de seus componentes so


gerados outros dois novos circuitos atravs do cruzamento (KOZA et al, 2003, p.1).
Outro exemplo da aplicao em eletrnica da GP a criao de filtros low-pass, que
permitem a passagem de sinais de baixa freqncia e bloqueiam altas freqncias. A Figura 3
mostra uma breve descrio de como so gerados estes filtros atravs de geraes (KOZA et al,
2003, p.1).
17

Fonte: Koza et al., Aperfeioando Eventos, Scientific American, 2003. p. 64.


Figura 3 Aperfeioando um Filtro Low-Pass

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

Fonte: Santarelli et al. (2005).


Figura 4 Representao cromossmica das coordenadas no espao 3D

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.

1.5 Consideraes Finais

Atualmente existem diversas reas do conhecimento no qual aplicado com sucesso a


Computao Evolucionria. O prximo captulo abordar com mais detalhes a rea delimitada
pelo presente trabalho: Algoritmos Genticos.
19

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.

2.1 Uma Viso Geral

Algoritmos Genticos ou GAs so baseados atualmente em idias sobre teoria da evoluo


pela seleo natural e do conhecimento bsico sobre gentica (FANG, 1994. p. 26). Segundo
Whitley (1994, p. 1), GAs possuem de certa forma, dois significados: uma restrita e outra um
pouco mais ampla. No primeiro caso, o Algoritmo Gentico referencia um modelo introduzido e
investigado por John Holland (1975) e seus estudantes (ex., DeJong, 1975). J em um sentido
lato, um Algoritmo Gentico qualquer modelo baseado em uma populao que utiliza seleo e
operadores de recombinao para gerar novos pontos no espao de procura.
20

Uma breve descrio sobre o conceito de Algoritmos Genticos encontrada em Ross et al


(1994) apud Fang (1994, p. 27) traduo nossa:

[...] Um GA pode ser considerado como um tipo incomum de estratgia de procura. Em


um GA, h um conjunto de solues candidatas para um determinado problema;
tipicamente este conjunto preenchido aleatoriamente com possveis solues, no
necessariamente distintas. Cada candidato comumente (embora no em todos GAs) um
array ordenado de tamanho fixo com valores (chamados alelos) para atributos
(genes). Cada gene considerado atmico e o conjunto de alelos para este gene
representa o conjunto de valores que o gene pode assumir. Desta forma, na construo
de um GA para um problema especfico, a primeira tarefa decidir o modelo de
representao para as possveis solues do problema. [...]

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:

Inicializao: Um conjunto de candidatos aleatoriamente gerado. Por exemplo, se o


problema for a otimizao de uma funo com os parmetros x, y e z, a inicializao geraria
tuplas de (x,y,z) se assim fosse a representao escolhida;
Iterao: O algoritmo ir iterar sobre os passos de avaliao, seleo, reproduo e
sobrevivncia at o critrio de parada ser atingido. Por exemplo, quando no houver melhoras
no fitness da melhor soluo por um determinado perodo de tempo ou evoludas n
geraes;
1. Avaliao: Utilizando uma funo pr-definida de avaliao das solues avalia-se quo
tima uma soluo para o problema em relao populao. Esta medida chamada de
fitness. Todavia, GAs no precisam necessariamente que a funo de avaliao das
solues seja perfeita, ele aceita tambm uma modesta funo que exponha qual dentre as
solues so as melhores, e o quo melhor esta comparada outra;
2. Seleo: Selecionam-se pares de solues candidatas da gerao atual para a reproduo.
Esta etapa pode ser totalmente aleatria ou estocstica, baseada no fitness, ou em outras
palavras, indivduos com melhor fitness tem melhores chances de serem utilizados para
reproduo em uma seleo estocstica baseada em fitness.
21

3. Reproduo: Produz novos indivduos utilizando operadores genticos nos indivduos


selecionados na etapa anterior. Existem dois principais tipos de operadores de reproduo:
o Recombinao: Um novo indivduo gerado utilizando-se o material gentico
dos pais.
o Mutao: Um novo indivduo gerado, alterando-se levemente o material
gentico do ancestral.
4. Sobrevivncia: A populao alterada, tipicamente substituindo-se os membros com
menor fitness pelos novos indivduos gerados.

Algoritmos Genticos diferenciam-se de outros mtodos de procura pelas seguintes


diferenas principais citadas por Goldberg (1989) apud Fang (1994, p. 29):

GAs trabalham com uma codificao do conjunto de parmetros e no com os parmetros em


si.;
GAs procuram uma populao de pontos, no um simples ponto;
GAs utilizam a informao da funo de avaliao ao invs de derivadas ou outro
conhecimento auxiliar;
GAs utilizam regras de transio probabilsticas e no determinsticas;

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

2.1.1 Problemas de Otimizao e Codificaes

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

2.1.2 Espao de Procura

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.

Fonte: Dawson et al. (2000).


Figura 5 Mximas Globais e Mximas Locais

Geralmente so utilizadas funes de teste que utilizam no mnimo 30 bits no tamanho de


representao de seus parmetros, pesquisadores citam que qualquer tamanho menor que este
pode ser enumerado. De fato, a expresso 2L cresce exponencialmente em respeito a L. Considere
um problema com uma codificao de 400 bits. Quo grande o espao de procura associado a
esta codificao? Segundo Winston (1992, p.102) apud Whitley (1994, p. 3), um problema do
tamanho de 2400 uma boa aproximao do tamanho efetivo do espao de procura das
possibilidades de configurao de um tabuleiro de xadrez (levando em conta que o jogo termine
24

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).

2.2 Comparao com Outras Tcnicas

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

2.2.1 Mtodos Gradientes

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.

Fonte: Beasley et al. (1993, part I, p. 6).


Figura 6 Problema em mtodos de hillclimbing

Como se pode notar na Figura 6, a escalada comea em um ponto escolhido aleatoriamente,


representado pelo ponto X na figura. A escalada atinge o ponto B, que um local timo, porm
os pontos A e C no so encontrados (BEASLEY et al., 1993, part I, p. 6).
26

2.2.2 Simulated Annealing

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).

2.3 Etapas do Funcionamento

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

Existem diversas maneiras de se inicializar a populao de um Algoritmo Gentico. Duas


maneiras tradicionalmente utilizadas so: gerao aleatria e gerao aleatria utilizando
heursticas do problema.
O mtodo de gerao da populao inicial mais utilizado o da gerao aleatria, no qual
so gerados indivduos de maneira totalmente aleatria, selecionando obviamente indivduos
27

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

termos de probabilidade da freqncia de mutaes, tamanho da populao e outros demais


parmetros de um GA, porm concluiu que o mecanismo do GA to adaptvel que os
parmetros de configurao do Algoritmo Gentico no so crticos, mas sim a funo de
avaliao e a representao utilizada no GA.
Pensando idealmente, uma funo de avaliao deve ser regular e uniforme, possibilitando
informar desta maneira que cromossomos com fitness razovel tenham em sua vizinhana outros
cromossomos com fitness um pouco melhor. Porm na maioria dos problemas o desenvolvimento
de uma funo de avaliao semelhante a esta no possvel; caso fossem regulares e uniformes,
poder-se-ia utilizar outros mtodos de hillclimbing como Simulated Annealing (BEASLEY et al.,
1993, part I, p. 9).
Em um determinado problema como o de alocao de horrios3, podem surgir solues no
reais como, por exemplo, quando um professor necessitaria dar aulas para turmas diferentes no
mesmo horrio. Esta soluo considerada por motivos bvios uma soluo invlida, porm na
funo de avaliao do problema de timetabling, para que o GA seja efetivo, preciso que a
avaliao desta soluo seja visto em termos de quo boa ela em relao conduo das
solues para um melhor score. preciso saber onde os cromossomos com melhor score esto
para poder dizer que cromossomos prximos a estes tm um score razovel e que cromossomos
distantes no espao de procura tenham scores menores. Porm quando no se sabe onde esto os
cromossomos vlidos, isto no pode ser realizado (BEASLEY et al., 1993, part I, p. 9).
Cramer (1985) apud Beasley et al. (1993, part I, p. 9), cita uma abordagem para tratar este
tipo de problema, quando o objetivo tudo ou nada, melhores resultados podem ser obtidos
quando se definem sub-objetivos e recompensas para eles. No caso do problema de timetabling
poderia ser dada uma recompensa no fitness das solues em que os horrios foram alocados de
maneira vlida.

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.

2.4 Fitness e suas Implicaes

Nas geraes iniciais de um Algoritmo Gentico, os diferentes valores de fitness esto


aleatoriamente distribudos. Durante o decorrer das geraes, alguns valores de fitness tendem a
predominar na populao, fazendo com que ela venha a convergir e conseqentemente o
intervalo de diferena entre os fitness da populao diminuem. Esta reduo da diferena entre os
valores de fitness dos indivduos pode conduzir a uma convergncia prematura da populao ou
uma lenta finalizao (BEASLEY et al., 1993, part I, p. 10).
Segunndo Beasley et al. (1993, part I, p. 10), a convergncia prematura um problema
clssico em Algoritmos Genticos e ocorre quando alguns indivduos com fitness
significativamente maiores (porm no timo) do que a maioria da populao, tendem a
predominar rapidamente na populao, fazendo com que a busca convirja para uma mxima
local. Uma vez que a populao convergiu, eliminada a capacidade de procura de melhores
indivduos, visto que a operao de cruzamento se torna incapaz de gerar novos indivduos e
apenas a mutao consegue explorar o espao de procura de maneira lenta e aleatria.
O teorema de Holland diz que se deve alocar a quantidade de cpias que os indivduos tero
no mating pool em relao ao seu fitness. Porm quando se aloca desta maneira, ocorre a
convergncia prematura devido ao fato de que a populao no infinita, proposio feita por
Holland no desenvolvimento do teorema. Para evitar este tipo de convergncia, necessrio
modificar os mtodos de seleo (BEASLEY et al., 1993, part I, p. 10).
Aps o decorrer de muitas geraes, a populao de um GA tende a convergir, porm pode
no ter ainda encontrado uma mxima global. A mdia do fitness da populao se torna alta e h
uma pequena diferena entre o melhor indivduo e a mdia dos indivduos. Conseqentemente
no h mais informao suficiente para levar a procura a uma mxima global, porm geralmente
as mesmas tcnicas utilizadas para prevenir a convergncia prematura, tambm evitam a
finalizao lenta (BEASLEY et al., 1993, part I, p. 10).
33

2.5 Mtodos de Seleo

Nesta seo sero abordados com mais detalhes, alguns dos principais mtodos utilizados
para seleo de indivduos em Algoritmos Genticos.

2.5.1 Reajuste explcito de fitness (Implicit fitness remapping)

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

fitness proibido. A Figura 7 mostra um exemplo da comparao do score bruto e do valor de


fitness reajustado.

Fonte: Beasley et al. (1993, part I, p. 11).


Figura 7 Fitness ajustado e fitness bruto

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

overcompression ou supercompresso. Se a escala de fitness for compactada de modo com que


a razo do fitness mais alto para a mdia fique em 2:1, ento o resto da populao ter o fitness
agrupado prximo de 1.
Embora prevenida a convergncia prematura, o preo pago por isto utilizando-se este
mtodo o de achatar a funo de fitness, que durante o decorrer das geraes poder afastar a
tendncia gentica da mxima global (BEASLEY et al., 1993, part I, p. 11).
Outro mtodo utilizado para realizar o reajuste de fitness o Fitness Ranking, que promove
uma melhor estabilidade em relao a indivduos com altas diferenas de fitness. Neste mtodo,
os indivduos so ordenados atravs do score bruto, e ento um novo fitness alocado para cada
indivduo de acordo com o seu ranking. Esta alocao pode ser realizada linearmente ou
exponencialmente. Atravs deste mtodo de alocao baseado no ranking do indivduo, o efeito
de 2 ou 3 indivduos com scores altos ser insignificante. O nmero de cpias que ir para o
mating pool ser, por exemplo, sempre o mesmo para o 5 melhor indivduo, no importando a
extrema diferena entre o score dele e da populao. Desta maneira, a supercompresso deixar
de ser um problema (BEASLEY et al., 1993, part I, p.12).
De acordo com Beasley et al. (1993, part I, p. 12), muitos experimentos demonstraram a
superioridade do fitness ranking em relao ao fitness scaling.
Outro mtodo tambm utilizado para seleo o Roulette Wheel, em analogia ao girar de
uma roleta, na qual os setores so representados pelo fitness relativo de cada um dos indivduos.
A roleta girada para cada indivduo selecionado, e a cada rodada, indivduos com maior fitness
tm maiores chances de serem selecionados. Porm esta abordagem no suficientemente
satisfatria, e isto se deve ao fato de que como cada indivduo escolhido separadamente, no h
garantias de que o melhor indivduo ser escolhido (HANCOCK, 1994, p. 5).
Segundo Hancock (1994, p. 5), o mtodo de seleo Roulette Wheel pode ser tornar uma
fonte de rudo visto que o mtodo durante vrios testes fez com que se perdesse os melhores
indivduos da populao e introduziu indivduos de menor fitness. A Figura 8 mostra um
comparativo entre o mtodo Roulette Wheel e o mtodo de Baker, Stochastic Universal Sampling
(SUS).
36

Fonte: Hancock (1994, p 5).


Figura 8 Comparao da convergncia para melhor indivduo e aumento do pior indivduo

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.

2.5.2 Reajuste Implcito de Fitness (Implicit Fitness Remapping)

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.

2.6 Cruzamento e Mutao

Atualmente existem diversas tcnicas utilizadas em cruzamentos e mutaes, nesta seo


sero apresentadas apenas as principais e mais utilizadas pela comunidade.
A Figura 9 mostra uma representao visual em alto nvel das operaes genticas
utilizadas em GAs.

Fonte: Koza et al. (2003. p. 63).


Figura 9 Representao dos operadores genticos
38

A operao de cpia ocorre geralmente quando no se sucedeu o cruzamento, devido ao


fato de que a realizao do cruzamento estocstica, ou quando opta-se por utilizar o elitismo10.
J a extino ocorre quando um membro da antiga populao substitudo por um novo
indivduo gerado tradicionalmente por cruzamento.
A Figura 10 abaixo mostra-nos um comparativo de como o cruzamento e a mutao agem
sobre o espao de procura.

Fonte: Koza et al. (2003. p. 63).


Figura 10 Mutao versus Cruzamento

Sobre a Figura 10, Koza et al., (2003, p. 63) comenta,

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).

Como se pode notar, o operador mais influente na direo de um Algoritmo Gentico o


cruzamento, atualmente existem diversos tipos de cruzamentos, abaixo sero citados apenas os
principais mtodos utilizados em bitstrings: One-Point Crossover, Two-Point Crossover e

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.

2.6.1 One-Point Crossover e Two-Point Crossover

No mtodo de cruzamento One-Point Crossover como citado na seo Reproduo,


escolhido aleatoriamente um ponto na string dos dois cromossomos pais, cortando o indivduo e
formando 2 partes em cada cromossomo. O intercmbio do material gentico dos cromossomos
realizado intercalando-se cada uma dessas partes. A Figura 11 mostra uma representao de
como realizada esta troca de material gentico.

Fonte: Holland (1992, p. 44).


Figura 11 One-Point Crossover

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.

Fonte: IT SOLUTIONS. Genetic Algorithm Crossover, 2006.


Figura 12 Two-Point Crossover

Atualmente existem vrios outros mtodos de crossover, incluindo crossovers de at oito


cortes no cromossomo, porm autores indicam o uso dos dois principais mtodos acima citados
devido ao fato de que com mais pontos de cortes, a procura tende a ficar muito fragmentada e
sem direo.
Vrias pesquisas foram realizadas para comparar a diferena prtica entre os dois mtodos
de crossover acima citados, porm no h um consenso na utilizao de apenas um mtodo.
Segundo Beasley et al. (1993, part II, p. 3), outros autores indicam a utilizao dos mtodos de 1
e 2 cortes. Porm quando a populao convergiu, o mtodo que utiliza mais que um corte tende a
reduzir o desempenho do algoritmo visto que em uma populao j convergida o operador
gentico de crossover fica impossibilitado de agir. Em dois cromossomos similares, a troca de
material gentico tende a resultar em um indivduo semelhante com pouca variao de fitness.
41

2.6.2 Uniform Crossover

O mtodo de cruzamento Uniform Crossover radicalmente diferente dos outros dois


mtodos mais conhecidos: One-Point Crossover e Two-Point Crossover (Beasley et al. 1993,
part II, p. 2). No Uniform Crossover, cada gene da nova prole de indivduos criado copiando-se
o gene correspondente de um dos pais, gene este que selecionado atravs de uma mscara
criada aleatoriamente. A Figura 13 mostra como funciona este tipo de reproduo.

Fonte: Beasley et al. (1993, Part II, p. 2).


Figura 13 Uniform Crossover

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

populao j convergiu e o operador de cruzamento tem sua produtividade reduzida, apenas a


mutao procura por novos indivduos. A Figura 14 ilustra um exemplo de mutao.

Fonte: Walski et al.


Figura 14 Operador de Mutao

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.

2.7 Tamanho da Populao

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:

Fonte: De Jong et al. (1991, p. 7).


Figura 15 Proposies dos problemas n-Peak

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

Fonte: De Jong et al. (1991, p. 9).


Figura 16 Resultados do GA em diferentes tamanhos de populaes

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.

Fonte: De Jong et al. (1991, p. 9).


Figura 17 - Resultados do GA em diferentes tamanhos de populaes
45

Conforme demonstra a Figura 17, apenas no GA que utilizou a populao de tamanho


1000, foi encontrada a mxima global, porm no GA que utilizou populao 20, nenhum dos
mtodos de crossover conseguiu encontrar a mxima global, visto que o GA convergiu logo aps
a 5 gerao e no houve melhoras em termos de melhor soluo.
Como citado no incio da presente seo, no existem modelos absolutos para determinar o
tamanho da populao, porm a maioria dos autores cita que um tamanho de 70 a 10011 para
espaos de procura razoveis o suficiente.

11
Whitley, A Genetic Algorithm Tutorial, 1994, p. 33
46

3 ALGORITMOS GENTICOS PARALELOS

Neste captulo sero apresentados os principais tipos de Algoritmos Genticos Paralelos,


bem como as peculiaridades de cada um dos modelos.

3.1 Introduo

Algoritmos Genticos conseguem geralmente encontrar boas solues em razoveis


espaos de tempo, porm quando so aplicados em problemas maiores e que demandam um
maior processamento, este tempo para encontrar uma soluo razovel aumenta. Como
conseqncia disso, muitos esforos foram realizados para tornar os Algoritmos Genticos cada
vez mais rpidos, e um destes esforos mais promissores a utilizao de implementaes
paralelas (CANT-PAZ, 1997, p. 1).
Segundo Cant-Paz (1997, p. 1), maioria das implementaes de GAs paralelos so
baseados na noo de mltiplas populaes evoluindo separadamente a maior parte do tempo e
trocando alguns indivduos ocasionalmente. Este tipo de implementao conhecido como
coarse-grained12 ou tambm como GA distribudo.
Em um GA, o tempo em que o algoritmo demora a convergir, depende do tamanho da
populao. Visto que no garantida uma soluo tima, a qualidade da soluo depende muito

12
Ou Gro-grosso
47

do tamanho da populao, porm ao aumentar o tamanho da populao, aumenta-se tambm o


custo computacional necessrio para a execuo do GA.
A idia principal em muitos programas paralelos a de dividir a tarefa em unidades e
resolv-las simultaneamente utilizando-se de mltiplos processadores. O mtodo diviso e
conquista pode ser usado de diferentes formas para paralelizar GAs. Alguns destes mtodos
mudam o comportamento do algoritmo enquanto que outros no (CANT-PAZ, 1997, p. 1).
Atualmente existem trs principais mtodos utilizados para paralelizar um GA:
paralelizao global, coarse-grained e fine-grained.
No mtodo de paralelizao global, h apenas uma populao como no GA seqencial,
porm a avaliao dos indivduos e a aplicao dos operadores genticos so paralelizados
explicitamente como mostra a Figura 18.

Fonte: Cant-Paz (1997, p. 3).


Figura 18 Paralelizao Global de um Algoritmo Gentico

Neste modelo de implementao paralela mostrada na Figura 18, o comportamento do


Algoritmo Gentico no muda devido ao fato de que h apenas uma populao e o operador de
seleo atua sobre toda ela. Segundo Cant-Paz (1997, p. 3), este mtodo relativamente fcil de
implementar e um speedup significativo pode ser encontrado caso o custo da comunicao no
ultrapasse o custo computacional dos operadores genticos e da funo de avaliao
paralelizados.
Outro mtodo mais sofisticado utilizado na paralelizao dos Algoritmos Genticos a
paralelizao coarse-grained. Neste caso a populao do GA dividida em mltiplas
48

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.

Fonte: Cant-Paz (1997, p. 4).


Figura 19 Esquema da paralelizao coarse-grained de um GA com 6 demes.

Como se pode notar na figura acima, no modelo coarse-grained mltiplas populaes


evoluem concorrentemente ao mesmo tempo.
Outro modelo utilizado para se paralelizar um GA o modelo fine-grained, no qual se
particiona a populao em um alto nmero de outras pequenas subpopulaes como mostra na
Figura 20 abaixo.

13
ou Island Model segundo o autor.
49

Fonte: Cant-Paz (1997, p. 5).


Figura 20 Esquema de um GA paralelo fine-grained

O caso ideal para o modelo fine-grained a distribuio de apenas um indivduo por


unidade de processamento disponvel.
Segundo Cant-Paz (1997, p. 4), importante ressaltar que enquanto o modelo global no
altera o comportamento do GA, os modelos coarse-grained e fine-grained introduzem novas
caractersticas no funcionamento do Algoritmo Gentico. Por exemplo, no mtodo global, a
seleo realizada sobre a totalidade da populao, porm nos modelos em que coexistem
mltiplas populaes, a seleo local para cada deme.

3.2 Paralelizao Global

Segundo Cant-Paz (1997, p. 6), o mtodo de paralelizao global de GAs utiliza o


princpio de manter apenas uma populao de indivduos. Neste mtodo, a funo de avaliao
e/ou os operadores genticos so executados em paralelo.
A operao que comumente paralelizada neste mtodo a funo de avaliao, visto que
a avaliao de um indivduo independente do resto dos outros indivduos da populao e no h
a necessidade de comunicao nesta etapa do algoritmo. A avaliao dos indivduos realizada
dividindo-se os indivduos da populao entre os processadores disponveis, este valor de
50

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

Este mtodo de implementao de GAs o mais popular e o mais utilizado, as principais


caractersticas dele so a utilizao de poucos demes de tamanho grande e a migrao.
Segundo Cant-Paz (1997, p. 8), o primeiro provvel estudo realizado sobre este mtodo
a dissertao de Grosso (Grosso, 1985 apud Cant-Paz, 1997, p. 8). Grosso simulou a interao
de vrios subcomponentes paralelos de uma populao em evoluo que foi dividida em 5 demes.
Cada deme trocava indivduos com todos outros demes com uma taxa de migrao constante.
Em um experimento controlado, Grosso descobriu que a melhora na mdia do fitness da
populao mais rpida em pequenos demes do que em uma grande e nica populao, o que
confirmou, segundo Cant-Paz (1997, p. 8), um princpio de que mudanas favorveis na
51

composio gentica de um indivduo espalha-se rapidamente para outros indivduos quando os


demes so menores. Grosso observou tambm que quando os demes so isolados, este rpido
avano de fitness estabilizou em um valor menor do que quando utilizado uma populao maior,
ou seja, o fitness do indivduo encontrado aps a convergncia de mltiplos demes isolados foi
pior do que a encontrada em uma simples e nica populao.
Segundo Cant-Paz (1997, p.8), Grosso notou tambm que com baixas taxas de migrao,
os demes mantinham-se independentes na procura por diferentes regies do espao de procura, e
a migrao no teve efeito considervel nos demes em que foram inseridos. Neste caso, a
qualidade das solues encontradas foi semelhante ao caso utilizando demes isolados. Porm em
taxas de migrao intermedirias, as solues encontradas foram idnticas s encontradas em
uma populao maior. Estas observaes indicam que h uma taxa crtica de migrao, no qual
abaixo desta, o desempenho do algoritmo interrompido pelo isolamento dos demes e em uma
taxa maior que a crtica, os demes podem encontrar solues de mesma qualidade de uma
populao nica e maior de um algoritmo seqencial (CANT-PAZ, 1997, p. 8).
Cant-Paz (1997, p. 10) ainda cita trabalhos como o de Tanese (1989), onde foi realizada
uma comparao de desempenho entre um algoritmo GA seqencial e um algoritmo GA paralelo
com e sem comunicao. No experimento, Tanese (1989) apud Cant-Paz (1997, p 10) utilizou
em todos os algoritmos o mesmo tamanho de populao de 256 indivduos e executou-os por 500
geraes. O autor observou que em um GA coarse-grained sem comunicao com r demes e n
indivduos, pode-se encontrar solues com a mesma qualidade que em um algoritmo seqencial
com rn indivduos. Quando a migrao foi utilizada, a mdia do fitness da populao final
aumentou e em alguns casos obteve resultados melhores que o GA seqencial.
Em um GA paralelo coarse-grained a complexidade do algoritmo aumenta, por exemplo, a
migrao controlada por diversos parmetros como a topologia, que define a conexo entre as
subpopulaes; a taxa de migrao que ser abordado mais adiante, onde controlada a
quantidade de indivduos que devem migrar; e o intervalo de migrao que indica de quanto em
quanto tempo deve-se realizar a migrao (CANT-PAZ, 1997, p. 11).
Existem algumas principais razes que fazem esta implementao a mais popular:
52

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.

Este mtodo de paralelizao do GA considerado o mais promissor para melhores ganhos


de desempenho pela comunidade que utiliza GAs paralelos.

3.4 Fine-Grained

No modelo fine-grained o GA dividido em vrios pequenos demes que se comunicam


intensivamente de modo a garantir a disseminao de boas solues entre as populaes. Neste
modelo, assim como no coarse-grained a seleo ocorre somente em cada deme e no
globalmente como no mtodo global (CANT-PAZ, 1997, p. 15).
Kohlmorgen (1996, p. 3) implementou o modelo fine-grained em uma mquina
massivamente paralela MasPar MP1 tendo mais de 16.384 processadores, e com uma GA de
16.384 indivduos. O grid foi dividido em 4 subarrays com 4.096 indivduos cada, de modo a
formar uma vizinhana entre as ilhas14. A estratgia de migrao utilizada variou entre o envio
dos indivduos para 1, 2, 3 ou todas 4 direes, sendo que o intervalo de envio utilizado foi de 15,
30 ou 50 geraes e a taxa de migrao de 10% dos processadores da borda para as ilhas
vizinhas. A Figura 21 mostra as quatro ilhas.

14
Cada ilha tendo 4 ilhas como vizinhas diretas
53

Fonte: Kohlmorgen (1996, p. 4)


Figura 21 Quatro ilhas com 4096 indivduos cada

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

Como j citado em Cant-Paz (1997, p.4), a migrao a troca opcional e tradicionalmente


ocasional de indivduos entre as subpopulaes ou demes.
A maioria das implementaes coarse-grained utiliza a migrao sncrona, ou seja, a
troca de indivduos ocorre em intervalos pr-determinados e constantes, porm o modelo de
migrao assncrona tambm pode ser utilizado. Neste modelo de migrao assncrona, os
indivduos so trocados apenas aps determinados eventos, como por exemplo, depois da
convergncia da populao. A migrao geralmente controlada por parmetros como: intervalo
de migrao, taxa de migrao e quantidade de indivduos que iro migrar (CANT-PAZ, 1997,
12)
Segundo Cant-Paz (1997, p. 12), uma questo importante que deve ser ressaltada a de
quando seria o momento certo para realizar a migrao, pois se ela acontecer logo nas primeiras
geraes, os indivduos possivelmente no tero qualidade suficiente para influenciar a direo da
procura nos nodos.
Atualmente existem diversas topologias de interconexo entre os demes, segundo Cant-
Paz (1997, p. 12), as topologias de interconexo so um fator importante no desempenho dos
GAs paralelos, pois dela depende o quo rpido ou quo lento ser a disseminao dos indivduos
para os nodos. Se a topologia de interconexo for densa, boas solues iro espalhar-se
rapidamente para os demes, por outro lado, se a topologia for esparsa, as solues sero
disseminadas lentamente, o que causar o isolamento dos demes.
A abordagem tradicional na escolha das topologias geralmente a utilizao de topologias
estticas, em que as rotas de interconexo so definidas no incio do GA e mantm-se estticas
at o final. Todavia, topologias dinmicas podem ser tambm utilizadas, nelas, os demes no
ficam limitados apenas com a comunicao entre um conjunto restrito de outros demes, porm
podem realizar o envio de indivduos para demes que satisfazem determinadas proposies.
Geralmente a informao que utilizada par definir qual deme deve receber os indivduos,
baseia-se na diversidade do deme ou em uma medida de distncia genmica entre os indivduos
das populaes (CANT-PAZ, 1997, 13).
Uma abordagem utilizando o broadcast das solues foi utilizada por Marin (1994) apud
Cant-Paz (1997, p. 12), onde na sua proposta, nodos escravos executavam o GA e
55

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).

3.6 Consideraes finais

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

4 BIBLIOTECAS PARA IMPLEMENTAO DE ALGORTIMOS


GENTICOS

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

Boa documentao, exemplos de quase toda funcionalidade, incluindo exemplos de


extenso;
Compatibilidade entre Windows/Linux e Mac (gcc, msvc);
3 algoritmos genticos: Simple GA, Steady State, Incremental17;
mtodos prontos para verificao do critrio de parada: convergncia, quantidade de
geraes;
Elitismo;
Rank, roulette wheel, tournament, stochastic remainder sampling e outros;
Estatsticas: melhor indivduo, pior indivduo, mdia, desvio padro, diversidade;
Representaes: real array, list, trees, 1D, 2D e 3D array, 1D, 2D e 3D binary
string com tamanhos variveis;
Operadores de inicializao prontos: uniform random, allel-based random, zero
initialize e outros;
Operadores de crossover: single point, two point, uniform, node and subtrees single
point e outros;
Operadores de mutao: random flip, random swap, swap subtree, swap node e
outros;
Alguns exemplos implementados utilizando PVM.

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

4.2 Open Beagle Framework

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.

Fonte: Open Beagle (2006)


Figura 22 Arquitetura da Open Beagle

Dentre as caractersticas deste framework, destacam-se:


Algoritmo Gentico clssico, steady-state;
Construda sobre a STL, utilizando os mesmos conceitos de OO presentes na STL;
Smart Pointers;
Trabalha com arquivos XML, desde logs at configuraes;
Opo para populaes separadas em demes;
Histrico das estatsticas;
Representaes como bit-strings, vetores de inteiros, vetores de reais;
Estratgias de Evoluo (ES).

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

A Genetic Algorithm Utility Library (GAUL) uma biblioteca flexvel, desenvolvida em


C por Steward Adcock para o uso em Algoritmos Evolucionrios e sob licena GPL. Ela prov
estruturas e funes para manipular Algoritmos Evolucionrios seqenciais e paralelos. A
biblioteca tambm fornece outros algoritmos estocsticos para a comparao com Algoritmos
Genticos, como, por exemplo: Hill-climbing e Simulated Annealing (ADCOCK, 2006).

A GAUL possui as seguintes caractersticas:

Boa documentao e bons exemplos;


Modelos de evoluo Darwiniano, Lamarckiano e Baldwiniano;
Algoritmo steady-state e o GA clssico;
Modelho ilha de evoluo;
Utilizao de callbacks (ou code hooks) para personalizao;
Funes de alto e baixo nvel para manusear cromossomos, populao e operadores;
Suporta MPI, OpenMP 2.0, pthreads e fork;
Portvel;
Cromossomos podem ser construdos utilizando os tipos primitivos: arrays de
inteiros, arrays de reais, array de caracteres, arrays de boolean e bitstrings
(binrios e outros);
A biblioteca permite a serializao da populao ou entidades separadas;

19
Free Software Foundation
60

Rank, roulette wheel, tournament, stochastic universal sampling e outros;

Mesmo sem possuir uma vasta quantidade de tipos de representaes em comparao a


GALib, podem ser construdos outros modelos de representao utilizando os tipos primitivos
disponibilizados pela biblioteca.
61

4.4 Comparativo entre as bibliotecas estudadas

A Tabela 1 ilustra uma sumarizao das principais caractersticas das bibliotecas estudadas.

Tabela 1 Sumrio das caractersticas das bibliotecas para Algoritmos Genticos


GAUL GALib Open Beagle
Linguagem C C++ C++
Boa, mas direcionada
Documentao Boa e completa Boa e completa
para GP
Exemplos Mais de 30 exemplos Mais de 30 exemplos 7 exemplos
Tipos primitivos, Listas de tipos
Strings (binrias ou
strings binrias, chars, primitivos ou objetos,
gray code), vetores de
Representaes printable chars, rvores, strings
inteiros, vetores de
arrays de binrias (1D, 2D e
reais
cromossomos 3D), arrays
Darwiniano,
Paradigmas
Lamarckiano, Darwiniano Darwiniano
Evolucionrios
Baldwiniano
Modelos de GA Steady-State, GA Steady-State, GA Steady-State, GA
disponveis Clssico, modelo ilha Clssico, modelo ilha Clssico
One-point, partial
One-point, two-point,
match, order, cycle, One-point, Two-Point,
Cruzamento mixing, mean, allele-
two-point, EvenOdd, Uniform
mixing
Uniform
Single-point drift e
Destructive, Swap, Flip, gaussian,
Mutao randomize, multipoint,
Flip mutao adaptativa
allpoint
Random, round-robin, Rank, roulette wheel,
linear rank, best, SUS, tournament, stochastic
Random, roulette
Seleo roulette wheel, three- remainder sampling,
wheel, tournament
way tournament, SUS, deterministic
pairwise tournament sampling
Hill-Climbing, tabu
Outros mtodos search, simulated ES e GP
annealingg e outros
Explorao do
MPI PVM
paralelismo
62

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.

4.5 Anlise das Bibliotecas GALib e GAUL

Foram implementadas duas verses de um Algoritmo Gentico (ver anexo A e B) com as


bibliotecas GALib e GAUL para comparar o desempenho de cada uma durante uma determinada
quantidade de geraes. Apesar da diferena entre os operadores das bibliotecas, tentou-se
equiparar os operadores e propriedades de cada uma das bibliotecas para tentar realizar uma
anlise justa.
Um algoritmo com um cromossomo do tipo array de tamanho 51 foi construdo, este
Algoritmo Gentico visava que este cromossomo atingisse a frase Teste de comparao entre a
biblioteca GAUL e GALib. Para tal, foi utilizada a seguinte funo de fitness descrita atravs da
Equao (1):

n
f (x, y) = ( x [ i ] == y [ i ] ? 1 : 0 ) (1)
i=0

Onde na Equao (1), x o cromossomo e y a string a ser atingida, para n=50, ou


seja, o tamanho da string a ser atingida. Foi utilizado como parmetro de probabilidade de
crossover o valor de 0.9 (90%) e para mutao foi utilizado a taxa de 0.5 (50%). Em ambos
casos, para a seleo foi utilizado o mtodo de seleo chamado Roulette Wheel. Como operador
de crossover utilizado na implementao utilizando a GAUL, foi escolhido o Crossover Char
Singlepoints e para mutao, foi escolhido o Mutate Printable Singlepoint Drift. J para a
implementao utilizando a GALib, foi utilizado o operador de crossover chamado One Point
63

Crossover e para mutao Flip Mutator, conquanto apresentem algumas diferenas de


implementao, os operadores so semelhantes em seu objetivo final.
Para a anlise, foram realizadas vrias rodadas com os Algoritmos Genticos
implementados, utilizando 2 intervalos e quantidades de geraes definidas. No primeiro caso
representado pela Figura 23 onde o eixo das ordenadas representa o tempo em segundos e o eixo
das abscissas representa a quantidade de geraes, foi utilizada para comparao uma quantidade
de geraes relativamente pequena de 500 a 5.000, utilizando como incremento 500 geraes.

Figura 23 Comparativo GAUL e GALib, de 500 a 5.000 geraes

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

Figura 24 - Comparativo GAUL e GALib, de 10.000 a 50.000 geraes

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

5 DEFINIO DO PROBLEMA E IMPLEMENTAO

Neste captulo sero apresentados detalhes sobre o problema de distribuio de carga


horria para os professores, mais conhecido como timetabling, um modelo de implementao
com base em AGs e sua implementao, incluindo uma modelagem de dados para suporte.

5.1 Definio do Problema de Timetabling

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:

Seja E um conjunto finito de v eventos {e1, e2, e3, ..., ev} e


seja T um conjunto finito de s slots de tempo {t1, t2, t3, ..., ts}.

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

Nesta seo ser apresentado o modelo conceitual do Algoritmo Gentico, desde a


representao escolhida do cromossomo, como so geradas as geraes iniciais, como trabalham
as funes de fitness, crossover, mutao e a base de dados.

5.2.1 Base de dados

A base de dados do Algoritmo Gentico foi desenvolvida no banco de dados MySQL, e


contempla as seguintes necessidades:
Armazenar dados dos professores bem como as disponibilidades e as disciplinas os
quais lecionam;
Armazenar os oferecimentos para determinados nveis;
Armazenar os feriados por dias da semana;
Armazenar os horrios dos timeslots e a distribuio de carga horria gerada.
67

A base de dados apresentada na Figura 25, foi desenvolvida levando em considerao a


eficincia necessria para funo de fitness e seguindo tambm uma estrutura apropriada voltada
para as caractersticas e constraints do GA.

Figura 25 Base de Dados

Abaixo segue uma descrio detalhada sobre cada uma das tabelas da Figura 25 e sua
funo:

Professor: a tabela professor armazenar a quantidade de horas mximas que um


professor poder lecionar e um status para indicar se o professor um professor da
rea, ou seja, tem disponibilidade total;
Disciplina: esta tabela armazenar a quantidade de crditos, a necessidade de
laboratrio, se a cadeira pode ou no ser alocada em feriado e um status para indicar
se a cadeira prtica ou terica.
68

ProfessorDisciplina: nesta tabela, os professores sero vinculados s disciplinas e


tero um indicativo de preferncia para tal vnculo. importante observar que nesta
tabela, h um cdigo nico para cada vnculo, e este cdigo que preencher
posteriormente os slots de tempo no Algoritmo Gentico;
Curso: nesta tabela sero armazenados os cursos e a quantidade de laboratrios
disponveis em determinado curso;
Disponibilidade: nesta tabela sero armazenadas as disponibilidades, mais
precisamente as indisponibilidades, visto que um registro nesta tabela representa a
indisponibilidade de determinado professor em determinado slot;
Oferecimento: nesta tabela, sero armazenados os oferecimentos, ou seja, as
disciplinas oferecidas em determinados nveis e turnos.
DiaSemana: nesta tabela sero armazenados os dias da semana bem como a
quantidade de feriados para determinados dias;
TimeSlot: nesta tabela sero armazenados os timeslots referentes aos horrios do
curso;
TimeSlotTurma: nesta tabela sero armazenados os n-melhores indivduos, ou seja
as distribuies de cargas horrias geradas pelo Algoritmo Gentico.

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

A representao cromossmica escolhida para representar os nveis e slots de tempo do


problema foi a representao vetorial como mostra na Figura 26.
69

Figura 26 Representao Cromossmica

Como se pode notar na Figura 26, a representao da distribuio dos horrios


implementada em um vetor de duas dimenses, onde a primeira dimenso do vetor representa os
nveis e a segunda dimenso, os slots de tempo.
A granularidade do intervalo entre um slot de tempo (elemento do vetor) e outro so 2
crditos, por exemplo, o professor/disciplina alocado no slot 0 da manh, representa uma
disciplina no intervalo das 08:00 at 09:40 da manh (com referncia aos atuais horrios do
curso); um professor/disciplina no slot 1 da manh, representar uma disciplina no horrio das
09:55 at 11:35 (tambm referente aos atuais horrios do curso). O turno da manh o nico
intervalo com possibilidade de aulas no sbado, por isso o tamanho distinto de 12 elementos em
relao aos outros turnos de 10 elementos cada.
Para representar uma cadeira de 4 crditos, um slot apenas ser alocado com o cdigo do
professor/disciplina e ento o prximo elemento adjacente a ele ser preenchido com 0,
denotando seu status de utilizado ou disponvel.
70

5.2.3 Gerao inicial

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

A tarefa de dar prioridade as constraints hard e controlar de modo equilibrado as


constraints soft onde se concentra o maior gargalo de desempenho de um GA e onde tambm
se concentra o maior esforo no seu desenvolvimento, visto que ainda no h mtodos
determinsticos para tal tarefa. A abordagem mais conhecida e utilizada atualmente a da
penalizao e bonificao do score dos indivduos baseado em constraints ponderadas.
Foram elaboradas as seguintes constraints hard que faro parte da funo de fitness e que
indiretamente daro a direo no espao de procura para o Algoritmo Gentico.

1. Oferecimento: nesta constraint ser verificado se todos oferecimentos, isto , se


todas as disciplinas oferecidas para determinado nvel esto presentes no
cromossomo gerado. Est constraint deve ser obrigatoriamente hard, pois todas
71

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.

E as seguintes constraints soft foram elaboradas:

1. Professor Preferencial: esta constraint indica se determinado professor


preferencial para lecionar determinada disciplina;
2. Laboratrio: nesta constraint, so verificados se a quantidade de laboratrios
necessria para determinado perodo no excede a quantidade mxima de
laboratrios disponveis no curso;
3. Horas: realiza a verificao se a quantidade de horas distribuda para determinado
professor no excede a quantidade mxima de horas possveis para aquele professor.
4. Feriado: esta constraint verifica se a disciplina pode ou no ser alocada em um
feriado;
5. Cadeiras de 2 crditos: esta constraint realiza um refinamento para que cadeiras de
2 crditos sejam alocadas em slots de tempo adjacentes.

5.2.5 Fitness

A funo de fitness foi modelada baseando-se na abordagem de penalizaes e


bonificaes. Para tal fim, foi criado um acumulador para o score bruto, o qual manuseado no
72

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

1. Professor Preferencial: para cada oferecimento encontrado em seu turno certo, a


verificao se o professor o professor preferencial da disciplina gerar uma
bonificao de 1 multiplicado pelo valor do peso do professor preferencial, que
0.2;
2. Laboratrio: para cada slot de tempo que no exceder a quantidade mxima de
laboratrios do curso, o score ser bonificado com 1 multiplicado pelo peso 0.1;
3. Horas: para cada professor que no excedeu as horas na distribuio, o score ser
recompensado com 1 multiplicado pelo peso 0.1;
4. Feriado: caso alguma cadeira no puder cair em feriado e na distribuio a mesma
for alocada em um dia da semana em que h feriados, o score ser penalizado no
valor da quantidade de feriados multiplicado pelo peso 0.5;
6. Cadeiras de 2 Crditos: para cada dupla de slots onde houver 2 cadeiras de 2
crditos, o indivduo ser recompensado bom o valor de 1 multiplicado pelo peso
0.8;
73

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

Onde, n, vi e ci so respectivamente os ndices para os nveis, vetor de slots de tempo e


constraints. N, Vn e Cn so respectivamente a quantidade de nveis, quantidade de slots de tempo
e a quantidade de constraints. C a funo de cada constraint aplicada sobre cada slot de
tempo V[vi] multiplicado pelo peso W de cada constraint.

5.2.6 Crossover

O operador gentico de crossover foi desenvolvido de maneira distinta das implementaes


clssicas, fato decorrente da representao utilizada para modelar os nveis e slots de tempo.
Para tal modelagem do operador gentico, foi utilizada a tcnica one-point crossover, com
a diferena de que o ponto de corte a partir do qual se ter duas partes distintas do material
gentico realizada de modo a permitir a cpia de nveis em sua totalidade, isto , quando
cruzados, os indivduos faro um intercmbio dos nveis e no de apenas alguns slots de tempo.

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

A implementao foi toda desenvolvida na linguagem C++ utilizando o compilador GNU


G++ v.3.4.4. Segue abaixo uma breve descrio de cada uma das APIs/bibliotecas utilizadas no
desenvolvimento do Algoritmo Gentico:

Wrapper para MySQL++ v.2.1.120 da TangentSoft para realizar a interface com o


banco de dados MySQL;
Banco de dados MySQL 4.121 para o armazenamento dos dados/estruturas de
alimentao do Algoritmo Gentico;
Google Performance Tools, utilizado para gerao de grafos com objetivo de
verificao de leaks de memria e gargalos de desempenho do Algoritmo Gentico;
GALib v.2.4.622, Copyright (c) Massachusetts Institute of Technology and Matthew
Wall. All rights reserved. Biblioteca em C++ para o desenvolvimento do ncleo do
Algoritmo Gentico;
ConfigFile, Copyright Richard J. Wagner. Biblioteca utilizada para leitura dos
arquivos de configurao;
Doxygen23, utilizado para gerao da documentao do cdigo fonte.

Devido aos requisitos de desempenho necessrios para a funo de fitness e demais


operadores genticos como mutao e crossover, o GA trabalha com toda a base de dados
armazenada na memria, de modo a evitar o retardamento de tempo de acesso ao banco.
O cdigo fonte da atual implementao encontra-se hospedado em um repositrio
Subversion no endereo web: http://code.google.com/p/genetictabling; nesta URL est
armazenado todo histrico de verses desde o inicio do desenvolvimento do projeto e tambm
onde ficar armazenado as futuras melhorias do fonte.

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

5.4 Testes e Resultados

Foram realizadas algumas rodadas de testes para a gerao da distribuio de cargas


horrias, para tais testes, os seguintes parmetros foram utilizados para configurar o Algoritmo
Gentico:

Crossover: 0.4 %
Mutao: 0.1 %
Geraes: 200
Tamanho da populao: 1500

Os seguintes oferecimentos de disciplinas foram inseridos na base de dados para alimentar


o Algoritmo Gentico de modo hipottico:

Nvel I Nvel II Nvel III

Introduo a Computao (P1) Algoritmos e Estrutura de Dados I (P) Probabilidade e Estatstica

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

Introduo a Computao (T) Laboratrio de Hardware (G1) Calculo Diferencial e Integral II

Algoritmos (T) Laboratrio de Hardware (G2)

Algoritmos (P1) Calculo Diferencial e Integral I

Matemtica Discreta

Iniciao a Pesquisa Cientifica


76

5.4.1 Timetabling gerado

O Algoritmo Gentico, aps sua 40 gerao e o decorrer de 38 segundos, obteve sua


convergncia e gerou as distribuies de cargas horrias para os professores mostradas nas
Figuras 26, 27 e 28. O hardware utilizado para rodar o GA foi um computador com processador
de 700 Mhz e 256 MB de RAM.

Nvel I

Figura 26 Timetabling gerado (Nvel 1)


77

Nvel II

Figura 27 Timetabling gerado (Nvel 2)

Nvel III

Figura 28 Timetabling gerado (Nvel 3)

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

Atualmente, os Algoritmos Genticos esto sendo utilizados em um amplo grupo de


problemas, porm mais especificamente em problemas onde ainda no se tem uma soluo
determinstica razovel, que o caso do problema de timetabling. A presente monografia
apresentou o modelo conceitual e implementao de um prottipo funcional para a soluo do
problema de distribuio de cargas horrias com enfoque nas necessidades do curso de Cincia
da Computao da Universidade de Passo Fundo, porm no restrito ao mesmo. Para provveis
trabalhos futuros, ser implementada uma interface para as manutenes da base de dados, bem
como das configuraes e parmetros do Algoritmo Gentico e um melhor controle e verificao
do status da evoluo do GA; a incluso de novas constraints e o refinamento da funo de
fitness podero tambm melhorar o desempenho e o resultado dos indivduos gerados.
79

ANEXOS

ANEXO A Algoritmo Gentico desenvolvido com a GAUL para comparaes

Arquivo gaulcomp.h
#if !defined(__GAULCOMP_H)
#define __GAULCOMP_H

#define MUTATION 0.5


#define CROSSOVER 0.9
#define POPSIZE 250
#define GENERATIONS 20000

#include <stdio.h>
#include <stdlib.h>
#include <gaul.h>

#endif

Arquivo gaulcomp.c
#include "gaulcomp.h"

static char *text="Teste de comparacao entre a biblioteca GAUL e GALib";

boolean score(population *pop, entity *entity)


{
int i;
char *chromo;

entity->fitness=0.0;
80

chromo = (char *)entity->chromosome[0];


for(i=0; i<pop->len_chromosomes; i++)
{
if(chromo[i]==text[i]) entity->fitness+=1.0;
}
return TRUE;
}

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);

printf("Fitness: %.3f\n", ga_get_entity_from_rank(pop, 0)->fitness);


best_individual = (char *)ga_get_entity_from_rank(pop, 0)-
chromosome[0];
for(i=0; i<pop->len_chromosomes; i++)
printf("%c", best_individual[i]);
printf("\n");
81

ga_extinction(pop);

return 0;
}
82

ANEXO B Algoritmo Gentico desenvolvido com a GALib para comparaes

Arquivo galibcomp.h
#if !defined(__GALIBCOMP_H)
#define __GALIBCOMP_H

#define MUTATION 0.5


#define CROSSOVER 0.9
#define POPSIZE 250
#define GENERATIONS 20000

#include <iostream>
#include <ga/ga.h>

#endif

Arquivo galibcomp.cpp
#include "galibcomp.h"

using std::cout;
using std::cin;
using std::endl;

float score(GAGenome &);

static char *text="Teste de comparacao entre a biblioteca GAUL e GALib";

int main(void)
{
unsigned int seed = 666;

// ' ' to '~' is the range of printable chars of GAUL


GAAlleleSet<int> alleles;
for(int i=' '; i<='~'; i++) alleles.add(i);

cout << strlen(text) << endl;


GA1DArrayAlleleGenome<int> genome(strlen(text), alleles, score);
genome.initializer(GA1DArrayAlleleGenome<int>::UniformInitializer);
genome.mutator(GA1DArrayAlleleGenome<int>::FlipMutator);
genome.crossover(GA1DArrayAlleleGenome<int>::OnePointCrossover);

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;
}

float score(GAGenome &gen)


{
float fitness=0.0;
GA1DArrayAlleleGenome<int> &genome = (GA1DArrayAlleleGenome<int> &) gen;

for(int i=0; i<genome.length(); i++)


{
if(genome.gene(i)==text[i]) fitness+=1.0;

}
return fitness;
}
84

REFERNCIAS

ADCOCK, Stewart. GAUL: Genetic Algorithm Utility Library. Disponvel em:


<http://gaul.sourceforge.net/>. Acesso em 29 agosto 2006.

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.

BELLMAN, R. Dynamic Programming. Princeton University Press, 1957.

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.

DAVIS L. Van Nostrand Reinhold: Handbook of Genetic Algorithms, 1991.

____, L. Adapting operator probabilities in genetic algorithms. In: THIRD INTERNATIONAL


CONFERENCE ON GENETIC ALGORITHMS, 1989. Proceedings. Morgan Kaufmann, 1989.
p. 61-69.

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.

FANG, Hsiao-Lan. Genetic Algorithms in Timetabling and Scheduling.1994. Tese (Ph.D.) -


University of Edinburgh, Scotland.

GOLDBERG, David E. Genetic Algorithms in Search, Optimization & Machine Learning.


Addison Wesley, 1989.

____, 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.

GREFENSTETTE, J.J. Optimization of control parameters of genetic algorithms. IEEE Trans


SMC, 16:122-128, 1986.

GROSSO, P. B. Computer simulations of genetic adaptation: Parallel subcomponent interaction


in a multilocus model. 1985. Dissertao no publicada, The University of Michigan.

HANCOCK, P. J. B. An empirical comparison of selection methods in evolutionary algorithms.


In: Evolutionary Computing, AISB Workshop, 1994. p. 80-94.

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.

____, John. Genetic Algorithms. Scientific American, p. 44, Julho, 1992.

IT SOLUTIONS. Genetic Algorithm Crossover. Disponvel em: <http://www2.sys-


con.com/ITSG/virtualcd/Java/archives/0601/lacy/fig3.jpg> Acesso em: 03 jun. 2006.

KOHLMORGEN, Udo; SCHMECK, Hartmut; HAASE, Knut. Experiences with Fine-Grained


Parallel Genetic Algorithms, 1996.

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

MARIN, F. J.; TRELLES-SALAZAR, O.; SANDOVAL, F. Genetic Algorithms on LAN-


message passing architectures using PVM: Application to the routing problem, 1994.

MILLER, Brad L; GOLDBERG, David E. Genetic Algorithms, Selecion Schemes, and the
Varying Effects of Noise, 1996.

OPEN BEAGLE. Documentation. Disponvel em:


<http://beagle.sourceforge.net/wiki/index.php/Documentation:Manual>. Acesso em: 20 agosto
2006.

RELA, LEO. Evolutionary computing in search-based software engineering. 2004. Masters


thesis Lappeenranta University of Technology, Departament of Information Technology,
Finland.

ROSS, Peter; CORNE, Dave; FANG, Hsiao-Lan; Timetabling by Genetic Algorithms: Issues and
approaches. Technical Report. 1994.

SANTARELLI, Scott; 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.

____; 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.

SCHAFFER, J.D. Some Effects of Selection Procedures on Hyperplane Sampling by Genetic


Algorithms. In: Genetic Algorithms and Simulated Annealing, 1987.

SMITH, John Maynard. Evolutionary Genetics. Oxford University Press, New York, 1989.

SPEARS, William M.; DE JONG, Kenneth A. et al. An Overview of Evolutionary Computation.


In: ECML - EUROPEAN CONFERENCE ON MACHINE LEARNING, 1993, Vienna, Austria.
Proceedings. Vienna: Springer, 1993. p. 442-459.

SYSWERDA, G. Uniform crossover in genetic algorithms. In: THIRD INTERNATIONAL


CONFERENCE ON GENETIC ALGORITHMS, 1989. Proceedings. Morgan Kaufmann, 1989.
p.2-9.

TANESE, R. Distributed genetic algorithms. In: THIRD INTERNATIONAL CONFERENCE


ON GENETIC ALGORITHMS, 1989. Proceedings. San Mateo, CA: Morgan Kaufmann (p. 434-
439).

WALL, Matthew. A Genetic Algorithm for Resource-Constrained Scheduling. 1996. Tese


(Doutorado em Engenharia Mecnica) Massachusetts Institute of Technology, 1996.

____. GALib: Matthews C++ Genetic Algorithms Library. Disponvel em:


<http://lancet.mit.edu/galib-2.4/>. Acesso em: 29 agosto 2006.
87

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.

____. STATISTICS AND COMPUTING JOURNAL. A Genetic Algorithm Tutorial, 1994.


Volume 4, p. 65-85.

____. Van Nostrand's Scientific Encyclopedia : Genetic Algorithms and Evolutionary


Computing, 2002.

WINSTON, Patrick. Artificial Intelligence, 3rd edition. London: Longman, 1985.

Вам также может понравиться