Universidade Federal do ABC
Bacharelado em Ciência e Tecnologia
Inteligência Artificial Prof. Jerônimo Pellegrini
André Filipe de Moraes Batista
DIURNO
2008.2
LISTA DE EXERCÍCIO
Situação Problema
Você está organizando uma série de palestras e mini-cursos Há um grande número de
candidatos com propostas de palestras e mini-cursos. Você já fez uma consulta ao
público e sabe quantos estão interessados em cada palestra e mini-curso. Além disso,
cada convidado cobra um preço fixo pelo trabalho (palestra ou curso). Agora é
necessário escolher quais professores você confirmará para o evento, levando em conta
que:
O custo total deve ficar dentro do orçamento do evento;
Para deixar o máximo de pessoas contentes, você deve mantê-las em atividade
tanto quanto possível, maximizando a quantidade de pessoas por hora em sala;
Só há uma semana disponível, das 9:00 às 18:00 (com uma hora de almoço) para
alocar os eventos;
Modele este problema para ser resolvido por um algoritmo genético, mostrando como
codificá-lo:
Primeiro, usando representação binária;
Depois, tentando usar alguma codificação específica para o problema. Descreva
aqui os operadores de mutação e recombinação, e diga que estratégia você usaria
para a população (e justifique).
Resolução
Vamos considerar alguns fatos para a resolução deste problema:
Existe apenas uma (1) sala;
Existem oito cursos, e estes tem que ser distribuídos em uma semana
(segunda à sexta), em horários de 1 hora cada
O sistema já possui de algum modo uma espécie de tabela contendo o
valor do curso, e da quantidade dos interessados em cada curso;
1
Universidade Federal do ABC
Bacharelado em Ciência e Tecnologia
Inteligência Artificial Prof. Jerônimo Pellegrini
André Filipe de Moraes Batista
DIURNO
2008.2
Uma possível codificação binária para um indivíduo seria da forma
001001100
Onde os três primeiros dígitos (vermelho) representam um determinado
curso, os três dígitos intermediários (laranja) representam um horário da
semana, e os três últimos dígitos o dia da semana.
Como nesta modelagem existem oito cursos. Estes serão representados
pela faixa de valores que vai de 000 até 111. Os horários dos cursos serão
representados pela faixa que vai de 000 (09:00), 001 (10:00)... 011(13:00)1 ....
110(16:00). Para representar os dias da semana (segunda à sexta) temos a
faixa 000 até 100.
Podemos usar esta mesma codificação para desenvolver a segunda parte do
problema. Neste caso, os operadores de mutação e recombinação (cross-over)
podem ser desenvolvidos da seguinte maneira:
Cross-Over - Para cada indivíduo selecionado na função de aptidão
(fitness, que será explicada ao fim deste documento) , o mecanismo de
recombinação funcionará da seguinte maneira:
o Suponha que temos dois indivíduos selecionados, quais sejam:
011101100 pai
001001010 mãe
o O cross-over ocorrerá trocando o grupo de informações, de acordo com a
seguinte regra: O individuo filho de uma recombinação será formado pela
seguinte estrutura: Receberá os genes que indicam o curso de seu pai, os
genes que indicam o dia da semana da sua mãe, e os genes que indicam o
horário serão herdados com uma probabilidade de 50%, ou seja, às vezes do
pai, outras da mãe.
1
Observe que o horário do meio dia não é utilizado. Das 12h00 até 13h00 temos o almoço.
2
Universidade Federal do ABC
Bacharelado em Ciência e Tecnologia
Inteligência Artificial Prof. Jerônimo Pellegrini
André Filipe de Moraes Batista
DIURNO
2008.2
Um exemplo gráfico,
011101100 pai
50%
001XXX010
50%
001001010 mãe
É possível gerar outro indivíduo com o que “sobra” dos genes do pai e da
mãe, aumentando a diversidade da população. Juntamente para aumentar a
diversidade de uma população e evitar que esta se torne estagnada em
máximos locais, podemos usar o operador genético de mutação, que terá o
seguinte mecanismo de funcionamento:
Os indivíduos gerados pela recombinação terão 1% de chance de realizar uma
mutação. Esta mutação ocorrerá de forma aleatória em algum dos genes de um
grupo, ou seja, em um determinado momento um bit dos três genes que indicam uma
característica (curso, horário ou dia da semana) sofrerá mutação, tendo seu valor
invertido. Exemplo:
Considere o indivíduo:
011101100
após uma mutação no 2º bit do grupo de bits (genes) que indicam
o dia da semana, este ficará com a seguinte estrutura: 011101110.
Aproveitando este exemplo, é possível esclarecer outro ponto desta
proposta. Observe que após uma mutação, um indivíduo ficou com a seguinte
estrutura: 011101110, isto indica que o mesmo representa o curso três, que
será oferecido no horário das 15:00hrs e no dia da semana 110! Mas este dia
não existe, pois sexta-feira é representada como 100. Logo, por 110 ser maior
que 100 este indivíduo é inválido para nossa solução. Para isto, entra a função
fitness, que além de outras coisas (tais como o melhor custo, melhor alocação
de número de interessados etc.) irá avaliar se este indivíduo atende ao cenário
do problema. Neste exemplo, como o indivíduo não corresponde ao que
queremos o mesmo é eliminado da população.
3
Universidade Federal do ABC
Bacharelado em Ciência e Tecnologia
Inteligência Artificial Prof. Jerônimo Pellegrini
André Filipe de Moraes Batista
DIURNO
2008.2
A estratégia de população utilizada nesta modelagem, consiste em
que o algoritmo genético não irá retornar apenas um indivíduo, e sim uma
população de indivíduos, que serão otimizados durante o algoritmo para
atender a todos os requisitos do sistema da melhor forma possível. Para tanto,
a função fitness irá qualificar um grupo de n (por exemplo, 10) melhores
indivíduos a cada iteração.
4
Download

LISTA DE EXERCÍCIO Situação Problema Resolução Vamos