Você está na página 1de 32

Algoritmos Genticos

Seminrio de MAC5758 Introduo ao Escalonamento e Aplicaes


Cleber Miranda Barboza cleberc@linux.ime.usp.br http://www.linux.ime.usp.br/~cleberc 1

Introduo

Um Algoritmo Gentico (AG), conceitualmente, segue passos inspirados no processo biolgico de evoluo natural segundo a teoria de Darwin

Algoritmos Genticos seguem a idia de SOBREVIVNCIA DO MAIS FORTE (melhores solues a cada gerao)

Background

Cromossomos

Todo organismo vivo consiste de clulas.

Em cada clula, existe o mesmo conjunto de cromossomos


Cromossomos consistem de genes seqncias de DNA- que servem para determinar as caractersticas de um indivduo

Background (Cont.)

Reproduo

Durante o processo de reproduo ocorre-se a recombinao (ou crossover cruzamento-). Genes dos pais se combinam para formar novos cromossomos.
Os descendentes criados podem sofrer mutaes, ou seja, os elementos do DNA podem ser trocados A adaptao de um organismo pode ser medida pelo sucesso do mesmo em sua vida

Idia bsica

Comear com um conjunto de solues (representado por cromossomos) chamado populao Solues de uma populao so escolhidas e usadas para formar uma nova populao (reproduo)

Espera-se que a nova populao seja melhor que a anterior

Idia bsica (Cont.)

Solues que so escolhidas para formar novas solues (descendentes) so escolhidas de acordo com uma funo de adaptao (funo objetiva - custo) O processo repetido at que uma condio seja satisfeita

Questes importantes

Como criar cromossomos e qual tipo de codificao usar? Como escolher os pais para a realizao do crossover? A gerao de uma populao a partir de duas solues pode causar a perda da melhor soluo. O que fazer?

Esboo do algoritmo

[Incio] Gerao aleatria de uma populao de n cromossomos

[Adaptao] Verificar a funo objetiva f(x) de cada cromossomo x [Populao] Cria-se uma nova populao pela repetio a seguir: 1. [Seleo] Selecione um par de cromossomos da populao de acordo com a adaptao de cada um (os mais bem adaptados tem maior chance de serem escolhidos) 2. [Crossover] Produza dois descendentes (filhos) realizando crossover com os cromossomos dos pais. O ponto para a realizao do crossover deve ser aleatrio. 3. [Mutao] Com uma certa probabilidade, o descendente sofre mutao em cada locus (posio no cromossomo). 4. [Aceitao] Coloque os descendentes em uma nova populao, juntamente com a melhor soluo da gerao velha

Esboo do algoritmo (Cont.)


[Troca] Substitua a populao velha pela nova

[Teste] Se a condio de finalizao satisfeita, pare, e retorne a melhor soluo da populao atual [Adaptao] [Lao] Volte ao passo 1

Codificao

Como realizar a codificao de cromossomos? a primeira pergunta que deve ser feita ao resolver um problema com AG A codificao depender fortemente do problema

10

Codificao binria

a mais comum devido a sua simplicidade Cada cromossomo uma string de bits 0 ou 1

Crom: A = 1 0 1 1 0 0 1 0 1 1 Crom: B = 1 1 1 1 1 1 0 0 0 0

Exemplo de uso: problema da mochila Codificao: Cada bit diz se um elemento est ou no na mochila

11

Codificao por permutao

Mais usado em problemas de ordenao Cada cromossomo uma string de nmeros que representa uma posio numa seqncia Crom A: 1 5 3 2 6 4 7 9 8 Crom B: 8 5 6 7 2 3 1 4 9 Exemplo de uso: problema do caxeiro viajante Codificao: os cromossomos descrevem a ordem em que o caxeiro ir visitar as cidades

12

Codificao por valor

Usado em problemas onde valores mais complicados so necessrios Cada cromossomo uma seqncia de valores

Crom A: 1.2324 5.3243 0.4556 2.3293 2.4545 Crom B: ABDJEIFJDHDIERJFDLDFLFEGT Crom C: (back), (back), (right), (forward), (left)

13

Codificao por valor (Cont.)

Exemplo de uso: dada uma estrutura, encontrar pesos para uma rede neural Codificao: Valores reais num cromossomo representam pesos em uma rede neural

14

Crossover

Aps decidir qual codificao usar, procede-se com a operao crossover A operao deve ser realizada sobre os cromossos dos pais para a criao de descendentes

Crom1: 11010 | 00100110110 Crom2: 11011 | 11000011110 Filho 1: 11010 | 11000011110 Filho 2: 11011 | 00100110110

15

Mutao

O objetivo da mutao evitar que as solues na populao fiquem apenas num mnimo local Filho1 antes : 1101111000011110 Filho2 antes : 1101100100110110 Filho1 depois : 1100111000011110 Filho2 depois : 1101101100110110

16

Problema da grade horria

Escalonar salas, professores e classes em um nmero fixo de perodos de tal maneira que nenhum professor, classe ou sala sejam usados mais de uma vez num mesmo perodo Suposies para resolver o problema

Uma classe consiste de um certo nmero de estudantes As classes so disjuntas, ou seja, no h estudantes em comum

17

Problema da grade horria (Cont.)

Em cada perodo uma matria lecionada a uma classe possvel que uma matria aparea mais de uma vez em um perodo Uma combinao particular de (professor, matria, sala, classe) chamada de tupla A tarefa de realizar a combinao (professor, matria, sala, classe) para formar uma tupla feita parte

18

Problema da grade horria (Cont.)

19

Problema da grade horria (Cont.)

Para medir a qualidade da grade horria (funo objetiva - custo), calcular o nmero de colises em qualquer grade. A grade aceitvel tem custo 0 O custo de cada perodo pode ser dado pela soma dos trs componentes: custo da classe, custo do professor e custo da sala

20

Problema da grade horria (Cont.)

O custo das classes o nmero de vezes em que cada classe aparece num perodo menos 1. Se uma classe no aparece em nenhum perodo seu custo 0 A mesma idia se aplica para os professores e salas Assim, o custo da grade a soma dos custos de cada perodo

21

Problema da grade horria (Cont.)

Como fazer o mapeamento entre a grade e os cromossomos? Representao do problema usando tuplas:

22

Problema da grade horria (Cont.)

Mapeamento das tuplas em perodos (representao de uma grade indivduo):

23

Problema da grade horria (Cont.)

Representao de tuplas usando cromossomos:

24

Problema da grade horria (Cont.)

Reproduo:

25

Problema da grade horria (Cont.)

Mutao:

26

Problema da grade horria (Cont.)

Problema causado pela perda de tuplas:

27

Problema da grade horria (Cont.) - Algoritmo

Enquanto nmero de geraes < limite e no houver indivduo perfeito faa

Para cada filho a ser gerado faa


Escolha dois indivduos aleatrios da populao velha Crie um filho vazio Para cada perodo dos pais faa

Realize os crossover dos perodos correspondentes, produzindo um novo perodo Copie o novo perodo para a posio correspondente do filho

28

Problema da grade horria (Cont.) - Algoritmo


Arrumar a perda e duplicao de tuplas Aplicar mutao selecionando aleatriamente um perodo e uma tupla Medir o custo do indivduo Se custo < mnimo permitido

Matar o filho Colocar o filho na populao nova

Se no

Populao velha = Populao nova

29

Problema da grade horria (Cont.)

Resultados:

30

Problema da grade horria (Cont.)

Paralelizando a reproduo:

31

Referncias

H.Firas. Handwritten Numeral Recognition Using Neural Networks, em: http://ise.stanford.edu/class/ee368a_proj00/project2/node4.html GENETIC ALGORITHMS, em: http://cs.felk.cvut.cz/~xobitko/ga/main.html D.Abramson, J.Abela. A Parallel Genetic Algorithm for Solving the School Timetabling Problem, em: http://citeseer.nj.nec.com/abramson92parallel.html D. Abramson. Constructing School Timetables using Simulated Annealing: Sequential and Parallel Algorithms, em: http://citeseer.nj.nec.com/abramson91constructing.html J.E.Boggess. USING GENETIC ALGORITHMS FOR SCHEDULING ENGINEERING MISSIONS, em: http://citeseer.nj.nec.com/55397.html

32

Você também pode gostar