Professional Documents
Culture Documents
10-12-2010
Algoritmos Genéticos
Planeamento da Produção
1
Jorge Sousa – 1070252 & João Miranda-1070234
Algoritmos Genéticos
Planeamento da Produção
Introdução
2
Jorge Sousa – 1070252 & João Miranda-1070234
Existem três tipos de representação possíveis para os cromossomas: binária, inteira ou real. A
essa representação se dá o nome de alfabeto do AG. De acordo com a classe de problema que
se deseje resolver pode-se usar qualquer um dos três tipos.
Para se obter a solução óptima ou o mais próximo possível são utilizados três operadores,
sendo eles a mutação, o cruzamento e a selecção.
Na mutação é alterada parte do cromossoma, o que permite que se consiga alcançar outros
espaços de busca. A taxa de mutação nunca deve ser muito elevada de modo a evitar a criação
de novos indivíduos de maneira quase aleatória.
IMAGEM DA MUTAÇÃO
O operador cruzamento representa a reprodução sexual dos cromossomas, assim é possível
criar novos cromossomas que são combinações de outros dois indivíduos. É possível realizar
o cruzamento dos cromossomas de diferentes maneiras. Pode ser feito com um ponto de
cruzamento:
IMAGEM DO CRUZAMENTO 1 PT
Pode ainda ser feito em dois ou mais pontos. A seguinte imagem ilustra o cruzamento feito
em dois pontos:
3
Jorge Sousa – 1070252 & João Miranda-1070234
Formulação do Problema
O problema proposto consistia em planear a produção de uma fábrica que produzia cinco
produtos diferentes de maneira que fosse atingido o maior lucro possível.
Na seguinte tabela serão apresentados os custos dos produtos assim como as cotas de
mercados de cada um
4
Jorge Sousa – 1070252 & João Miranda-1070234
Resultados
Utilizamos dois métodos para a resolução deste problema: uma resolução analítica e a
utilização de um algoritmo genético para maximizar os lucros.
Resolução Analítica:
Esta resolução utiliza a ferramenta solve do Mircrosoft Excel. Para tal este trabalho foi
dividido em fases que passamos em seguida a relatar.
1. Formulação da função objectivo (Fitness function): É sobre esta função que correrá o
processo para a maximização do lucro. Nela entrevêem todas as parcelas que geram
lucro à empresa.
A função objectiva foi constituída relacionando o lucro do produto com a cota de
mercado de cada produto, assim a função objectivo será formulada da seguinte forma:
5
Jorge Sousa – 1070252 & João Miranda-1070234
Lucro=P1×C1+P2×C2+P3×C3+P4×C4+P5×C5-100000
2. Formulação das restrições impostas pelas cotas de mercado: Cada produto poderá ter
restrições quanto à sua produção como por exemplo o produto 5, que tem sempre o
mesmo volume de vendas todos os meses pelo que se impõe um limite máximo à sua
produção.
Produto Quantidade
P1 1000
P2 0
P3 200
P4 0
P5 120
O montante máximo que empresa pode obter com estas condições é de: 18000€
Na tabela em cima apresentada pode-se visualizar que existem dois produtos que não
seriam fabricados, nomeadamente o produto 2 e 4. Não faria sentido a empresa possuir
cinco produtos diferentes e apenas fabricar três, mas visto que o principal objectivo
6
Jorge Sousa – 1070252 & João Miranda-1070234
deste planeamento é maximizar o lucro e que nada se sabe acerca da cota de mercado
destes dois produtos, consideramos este resultado aceitável.
Para resolver o problema através dos algoritmos genéticos utilizamos a Optimization Toolbox
do Matlab.
7
Jorge Sousa – 1070252 & João Miranda-1070234
Como é possível observar no ficheiro onde consta a função objectivo, a mesma tem o sinal
simétrico da função objectiva utilizada no solver do Excel, isto deve-se ao facto de, na
Optimization Toolbox, apenas ser possível minimizar. Deste modo é possível maximizar a
função.
Após termos definido o nosso problema com a função objectivo e com as suas respectivas
restrições temos que configurar todos os operadores, de modo a conseguirmos alcançar o
valor mais próximo do máximo possível. Para tal seleccionamos o tipo de população Double
Vector, definimos o tamanho da população de cem indivíduos e escolhemos o método de
8
Jorge Sousa – 1070252 & João Miranda-1070234
criação da população Feasible Population, pois esta função cria uma população inicial que
respeita a restrições das variáveis.
O método de selecção utilizado foi o torneio, tal como o nome da função indica é realizado
um torneio entre oito indivíduos, sendo que o indivíduo vencedor será escolhido para ser pai.
Para a reprodução têm que ser seleccionados dois parâmetros, o elitismo e a taxa de
cruzamento. O valor de elitismo seleccionado foi de 8%, pois esta taxa deve ser baixa e a taxa
de cruzamento cerca de 85%, que contrariamente à taxa de elitismo deve ser alta.
9
Jorge Sousa – 1070252 & João Miranda-1070234
Para a mutação foi seleccionado o método Adaptive Feasible, que gera aleatoriamente
direcções que se adaptam de acordo com a última geração bem sucedida ou mal sucedida.
Após a introdução destes dados corremos o algoritmo de modo a verificar o resultado que
seria obtido.
Como é possível verificar na anterior imagem, contrariamente ao que estávamos à espera que
se sucedesse, os valores obtidos estavam muito longe dos valores óptimos. Após várias
10
Jorge Sousa – 1070252 & João Miranda-1070234
tentativas conseguimos apurar que, para que os resultados fossem próximos do óptimo, era
necessário criar uma população inicial e alterar o Initial Range.
Após alcançarmos estes valores, tentamos, através da alteração dos valores e dos métodos
seleccionados, alcançar resultados melhores mas não conseguimos alcançar um valor que
fosse tão próximo do óptimo como o que já tínhamos obtido, exceptuando quando utilizamos
um algoritmo híbrido.
11
Jorge Sousa – 1070252 & João Miranda-1070234
Com a utilização do algoritmo híbrido foi possível alcançar os valores óptimos, como é
possível observar na próxima figura.
12