You are on page 1of 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)

2
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

3
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

4
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
5
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

6
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?

7
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

8
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

9
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
Se no
Colocar o filho na populao nova
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

You might also like