Problema Da Caixa Preta Doc Final
-
Upload
dimas-leme -
Category
Documents
-
view
62 -
download
4
Transcript of Problema Da Caixa Preta Doc Final
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Problema da caixa preta
Disciplina: Computação evolucionaria
Professor: Bruno Henrique Groenner Barbosa
Aluno: Elson Claudio Correa Moraes
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
1. Introdução
1.1 Algoritmos Genéticos
Um algoritmo genético (AG) é uma técnica de busca utilizada na ciência da
computação para achar soluções aproximadas em problemas de otimização e busca,
fundamentado principalmente pelo americano John Henry Holland. Algoritmos
genéticos são uma classe particular de algoritmos evolutivos que usam técnicas
inspiradas pela biologia evolutiva como hereditariedade, mutação, seleção
natural e recombinação.
Algoritmos genéticos são implementados como uma simulação de computador em que
uma população de representações abstratas de solução é selecionada em busca de
soluções melhores. A evolução geralmente se inicia a partir de um conjunto de
soluções criado aleatoriamente e é realizada por meio de gerações. A cada geração, a
adaptação de cada solução na população é avaliada, alguns indivíduos são
selecionados para a próxima geração, e recombinados ou mutados para formar uma
nova população. A nova população então é utilizada como entrada para a
próxima iteração do algoritmo.
1.2 O problema da caixa preta
O problema consistem em encontrar a melhor configuração para um conjunto de 9 (a)
botões que estão disponíveis em uma caixa, sendo que cada botão pode assumir 16
posições distintas(b)
Para representar a posição de cada botão no algoritmo, cada posição do botão é
representando com um conjunto de 4 bits (c) e cada individuo (cromossomo) é
representado pela disposição destes 9 botões, portanto 36 bits.
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Representação para cada posição dos botões da caixa preta (c)
2. Codificação
O trabalho pratico foi desenvolvido utilizando a ferramenta Matlab 8.0.0.783 (R2012b)
32 bits. O trabalho foi organizado em funções e um corpo principal para a chamada
das funções chamado BlackBox.m.
2.1 Populações iniciais e avaliação dos indivíduos
A população inicial foi gerada no próprio main(BlackBox.m) em seguida é chamada a
função avalia.m para geração da avaliação de cada individuo de acordo com a função
abaixo:
sinalDeSaida = 9+(teta(2)*teta(5))-(teta(23)*teta(14))+... (teta(24)*teta(4))-(teta(21)*teta(10))+(teta(36)*teta(15))-... (teta(11)*teta(26))+(teta(16)*teta(17))+(teta(3)*teta(33))+... (teta(28)*teta(19))+(teta(12)*teta(34))-(teta(31)*teta(32))-... (teta(22)*teta(25))+(teta(35)*teta(27))-(teta(29)*teta(7))+... (teta(8)*teta(13))-(teta(6)*teta(9))+(teta(18)*teta(20))-... (teta(1)*teta(30))+(teta(23)*teta(4))+(teta(21)*teta(15))+... (teta(26)*teta(16))+(teta(31)*teta(12))+(teta(25)*teta(19))+... (teta(7)*teta(8))+(teta(9)*teta(18))+(teta(1)*teta(33));
Sendo teta a posição do bit dentro do indivíduo (36 bits)
2.2 Seleções dos indivíduos
Os métodos de seleção dos indivíduos para cruzamento foram implementadas nas
funções roleta.m e sel_torneio.m.
a- Seleção por roleta viciada cada indivíduo da população é representado na
roleta de forma proporcionalmente ao seu valor de aptidão.
b- Seleção por torneio: Em cada sorteio, dois indivíduos são escolhidos
aleatoriamente, e o melhor deles é selecionado para a próxima geração
2.3 Operadores genéticos
Após a seleção dos individuos os mesmos vão cruzar entre si, gerando assim novos
individuos. Foram adotados dois meios de cruzamento: Uniforme e ponto de corte,
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
respectivamente implementados pelas funções cruzamento_uniforme e
cruzamento_corte.m.
a- Cruzamento uniforme - Dois indivíduos (pais) são selecionados aleatoriamente
e os indivíduos filhos são gerados com base em uma máscara de bit.
b- Ponto de Corte: São selecionados dois indivíduos (pais) que dão origem a dois
novos indivíduos (filhos). Um ponto de corte é escolhido aleatoriamente nos
pais e as partes separadas por esse ponto são trocadas.
2.4 Mutação
A mutação é muito importante para prevenir a convergência para um maximo local. Na
figura abaixo o objetivo da mutação é a de evitar que o algoritmo admita que o ponto C
é uma Maximo global, realizando a mutação teremos maiores chances de encontrar o
real maximo global (Ponto A).
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
A mutação é feia pelas funções mutação_escolha_bit.m e mutação_bit_bit.m.
a) Escolha aleatória do bit: Em cada indivíduo, um bit é escolhido aleatoriamente
e o seu valor é invertido. Esse operador é aplicado em todos os indivíduos da
população e a mutação ocorre de acordo com a taxa de mutação definida.
b) Mutação bit a bit: A mutação ocorre bit a bit segundo uma probabilidade (taxa
de mutação). A mutação bit a bit é aplicada em todos os indivíduos da
população.
2.5 Elitismo
O elitismo ocorre na função comelitismo.m e tem como objetivo preservar os melhores
indivíduos da geração, de forma que o melhor indivíduo de uma geração sempre é
passado para a geração seguinte.
2.6 Apresentação dos Resultados
A apresentação dos resultados obtidos pelo Algoritmo Genético é feita no script
principal BlackBox.m. A cada N* execuções são apresentados o número de
sucessos, o maior valor de fitness, o menor valor de fitness, a média, o desvio
padrão, e o boxplot dos valores de fitness. É apresentado também o
histograma dos melhores indivíduos.
*Valor de N a ser definido no programa
3 Testes e analise dos resultados
3.1 Primeiro teste: Para o primeiro teste, o algoritmo foi executado com a seguinte
configuração de parâmetros e foi utilizado o cruzamento com um ponto de corte e o
cruzamento uniforme:
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
a) Sem elitismo.
b) Seleção por roleta.
c) Mutação bit a bit.
d) Probabilidade de cruzamento: 0,8.
e) Probabilidade de mutação: 0,025.
f) Número de indivíduos da população: 30.
g) Número de gerações: 50.
Utilizando ponto de corte temos:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 23
Menor Fitness (Pior caso): 18
Valor médio de Fitness: 21,14
Desvio-padrão dos valores de Fitness: 1.37
Fig.1 Box-Plot utilizando ponto de corte
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.2 Histograma utilizando ponto de corte
Utilizando cruzamento uniforme temos:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 23
Menor Fitness (Pior caso): 15
Valor médio de Fitness: 20,34
Desvio-padrão dos valores de Fitness: 2.48
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.3 Box-Plot utilizando cruzamento uniforme
Fig.4 Histograma utilizando cruzamento uniforme
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
3.2. Segundo Teste: Avaliação do Efeito do Tipo de Seleção.
Para o segundo teste foi utilizado a seguinte configuração de parâmetros, variando-se
apenas o tipo de seleção:
a) Sem elitismo.
b) Cruzamento Uniforme.
c) Mutação bit a bit.
d) Probabilidade de cruzamento: 0,8.
e) Probabilidade de mutação: 0,025.
f) Número de indivíduos da população: 30.
g) Número de gerações: 50.
Utilizando seleção por roleta temos:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 26
Menor Fitness (Pior caso): 16
Valor médio de Fitness: 23,70
Desvio-padrão dos valores de Fitness: 2,48
Fig.5 Box-Plot utilizando seleção roleta
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.6 Histograma utilizando seleção roleta
Utilizando seleção por torneio temos:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 16
Menor Fitness (Pior caso): 11
Valor médio de Fitness: 11,30
Desvio-padrão dos valores de Fitness: 1,01
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.7 Box-Plot utilizando seleção torneio
Fig.8 Histograma utilizando seleção torneio
3.3. Terceiro Teste: Avaliação do Efeito do Tipo de Mutação
Para avaliar o efeito do tipo de mutação, o algoritmo foi executado utilizando a
configuração abaixo:
a) Sem elitismo.
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
b) Cruzamento Uniforme.
c) Seleção por Roleta.
d) Probabilidade de cruzamento: 0,8.
e) Probabilidade de mutação: 0,025.
f) Número de indivíduos da população: 30.
g) Número de gerações: 50.
Utilizando mutação bit a bit temos:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 21
Menor Fitness (Pior caso): 16
Valor médio de Fitness: 19.16
Desvio-padrão dos valores de Fitness: 1.16
Fig.9 Box-Plot utilizando mutação bit a bit
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.10 Histograma utilizando mutação bit a bit
Utilizando mutação aleatória de bit temos:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 23
Menor Fitness (Pior caso): 16
Valor médio de Fitness: 21.20
Desvio-padrão dos valores de Fitness: 2,02
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.11 Box-Plot utilizando mutação aleatória de bit
Fig.12 Histograma utilizando mutação aleatória de bit
3.4. Quarto Teste: Avaliação do Efeito da Probabilidade de Cruzamento
Foram realizados três testes, variando o valor dessa probabilidade e mantendo fixos
todos os outros parâmetros. Foram utilizados os valores de parâmetros a seguir e
os valores utilizados para a taxa de cruzamento foram 0,2, 0,5 e 0,8:
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
a) Sem elitismo.
b) Cruzamento Uniforme
c) Seleção por Roleta
d) Mutação por escolha aleatória do bit
e) Probabilidade de mutação: 0,025.
f) Número de indivíduos da população: 30.
g) Número de gerações: 50.
Utilizando a taxa de cruzamento igual a 0,8 o resultado foi:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 24
Menor Fitness (Pior caso): 15
Valor médio de Fitness: 21,08
Desvio-padrão dos valores de Fitness: 2.73
Fig.13 Box-Plot utilizando taxa de cruzamento 0,8
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.14 Histograma utilizando taxa de cruzamento 0,8
Utilizando a taxa de cruzamento igual a 0,5 o resultado foi:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 25
Menor Fitness (Pior caso): 15
Valor médio de Fitness: 20.17
Desvio-padrão dos valores de Fitness: 1.9125
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.15 Box-Plot utilizando taxa de cruzamento 0,5
Fig.16 Histograma utilizando taxa de cruzamento 0,5
Utilizando a taxa de cruzamento igual a 0,2 o resultado foi:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 21
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Menor Fitness (Pior caso): 15
Valor médio de Fitness: 18,90
Desvio-padrão dos valores de Fitness: 1,85
Fig.17 Box-Plot utilizando taxa de cruzamento 0,2
Fig.18 Histograma utilizando taxa de cruzamento 0,2
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
3.5. Quinto Teste: Avaliação do Efeito da Probabilidade de Mutação
Para analisar o efeito da probabilidade de mutação foi fixado os parâmetros variando-
se apenas as taxas de mutações. Foram realizados quatro testes, os valores para a
taxa de mutação foram: 0,05, 0,1, 0,25 e 0,75, respectivamente.
Foi assumido os seguintes parâmetros:
a) Sem elitismo.
b) Cruzamento uniforme
c) Seleção por Roleta
d) Mutação por escolha aleatória do bit
e) Probabilidade de cruzamento: 0.8
f) Número de indivíduos da população: 30.
g) Número de gerações: 50.
Utilizando a taxa de mutação igual a 0,05 o resultado foi:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 21
Menor Fitness (Pior caso): 16
Valor médio de Fitness: 18,48
Desvio-padrão dos valores de Fitness: 1,21
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.19 Box-Plot utilizando taxa de mutação 0,05
Fig.20 Histograma utilizando taxa de mutação 0,05
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Utilizando a taxa de mutação igual a 0,1 o resultado foi:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 21
Menor Fitness (Pior caso): 15
Valor médio de Fitness: 19,16
Desvio-padrão dos valores de Fitness: 1,43
Fig.21 Box-Plot utilizando taxa de mutação 0,1
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.22 Histograma utilizando taxa de mutação 0,1
Utilizando a taxa de mutação igual a 0,25 o resultado foi:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 23
Menor Fitness (Pior caso): 17
Valor médio de Fitness: 20,72
Desvio-padrão dos valores de Fitness: 1,81
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.23 Box-Plot utilizando taxa de mutação 0,25
Fig.24 Histograma utilizando taxa de mutação 0,25
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Utilizando a taxa de mutação igual a 0,75 o resultado foi:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 23
Menor Fitness (Pior caso): 17
Valor médio de Fitness: 21,34
Desvio-padrão dos valores de Fitness: 1.86
Fig.25 Box-Plot utilizando taxa de mutação 0,75
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.26 Histograma utilizando taxa de mutação 0,75
3.6. Sexto Teste: Avaliação do Efeito do Elitismo
Para avaliar os efeitos causados pelo processo de elitismo, foi utilizada a
configuração abaixo e o algoritmo foi testado com e sem a aplicação do
elitismo.
a) Cruzamento Uniforme
b) Seleção por Roleta
c) Mutação por escolha aleatória do bit
d) Probabilidade de cruzamento: 0.8
e) Probabilidade de mutação: 0.75
f) Número de indivíduos da população: 30.
g) Número de gerações: 50.
Sem a utilização de elitismo:
Número de Sucessos: 0
Maior Fitness (Melhor caso): 21
Menor Fitness (Pior caso): 16
Valor médio de Fitness: 19,58
Desvio-padrão dos valores de Fitness: 1.18
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.27 Box-Plot sem elitismo
Fig.28 Histograma sem elitismo
Utilizando elitismo temos:
Número de Sucessos: 12
Maior Fitness (Melhor caso): 27
Menor Fitness (Pior caso): 16
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Valor médio de Fitness: 23,78
Desvio-padrão dos valores de Fitness: 3,39
Fig.29 Box-Plot com elitismo
Fig.30 Histograma com elitismo
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
3.7 Avaliação final
Após a realização dos testes acima vemos que a melhor parametrização do algoritmo
é:
a) Cruzamento Uniforme
b) Seleção por Roleta
c) Mutação por escolha aleatória do bit
d) Probabilidade de cruzamento: 0.8
e) Probabilidade de mutação: 0.05
f) Com elitismo
Concluímos que ao aumentar o numero de indivíduos aumentamos a chances de obter
um individuo ótimo, alem disso a chance de se obter um individuo ótimo sob
exponencialmente ao se aumentar o numero de gerações e indivíduos conforme
mostrado na tabela 5 e na figura 31.
Fig.31 Histograma com 800 gerações e 240 indivíduos
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
TESTE NELISTISM
O SELEÇÃO CRUZAMENTO MUTAÇÃO TC TM N° INDN°
GERAÇÃO
TESTE 11 NÃO ROLETA
PONTO DE CORTE BIT A BIT 0,8 0,025 30 50
2 NÃO ROLETA UNIFORME BIT A BIT 0,8 0,025 30 50
TESTE 23 NÃO ROLETA UNIFORME BIT A BIT 0,8 0,025 30 504 NÃO TORNEIO UNIFORME BIT A BIT 0,8 0,025 30 50
TESTE 3
5 NÃO ROLETA UNIFORME BIT A BIT 0,8 0,025 30 50
6 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,8 0,025 30 50
TESTE 4
7 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,8 0,025 30 50
8 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,5 0,025 30 50
9 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,2 0,025 30 50
TESTE 5
10 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,8 0,05 30 50
11 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,8 0,1 30 50
12 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,8 0,25 30 50
13 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,8 0,75 30 50
TESTE 6
14 NÃO ROLETA UNIFORMEALEARTÓRI
O 0,8 0,75 30 50
15 SIM ROLETA UNIFORMEALEARTÓRI
O 0,8 0,75 30 50
Tabela 2: Parâmetros utilizados
TESTE NN° DE
SUCESSOMAIOR FITNESS
MENOR FITNESS FITNESS MÉDIO DESVIO PADRÃO
TESTE 11 0 23 18 21,14 1,372 0 23 15 20,34 2,48
TESTE 23 0 26 16 23,7 2,584 0 16 11 11,3 1,01
TESTE 35 0 21 16 19,16 1,166 0 23 16 21,2 2,02
TESTE 4
7 0 24 15 21,08 2,738 0 22 16 19,5 1,479 0 21 15 18,9 1,85
TESTE 5 10 0 21 16 18,48 1,21
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
11 0 21 15 19,16 1,4312 0 23 17 20,72 1,8113 0 23 17 21,34 1,86
TESTE 614 0 21 16 19,58 1,1815 12 27 16 23,78 3,39
Tabela 3: Resultados
TESTE ELISTISMO SELEÇÃO CRUZAMENTO MUTAÇÃO TC TMN°
INDN°
GERAÇÃOTESTE 1 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 60 50TESTE 2 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 120 50TESTE 3 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 240 50TESTE 4 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 30 100TESTE 5 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 30 200TESTE 6 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 30 400TESTE 7 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 30 800TESTE 8 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 60 200TESTE 9 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 120 400
TESTE 10 SIM ROLETA UNIFORME ALEARTÓRIO 0,8 0,75 240 800
Tabela 4: Parâmetros com variações n° de indivíduos e n° de gerações
TESTEN° DE
SUCESSOMAIOR FITNESS
MENOR FITNESS FITNESS MÉDIO DESVIO PADRÃO
TESTE 1 0 24 16 21,46 2,177TESTE 2 12 27 16 24,5 2,28TESTE 3 16 27 18 23,76 2,83TESTE 4 0 26 16 24,8 2,45TESTE 5 0 23 16 22,5 1,54TESTE 6 0 25 17 24,87 0,71TESTE 7 0 23 16 22,87 0,79TESTE 8 0 26 17 25,46 1,52TESTE 9 357 27 18 26,63 1,29
TESTE 10 769 27 17 26,83 0,99
Tabela 5: Resultados com variações n° de indivíduos e n° de gerações
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.32 Dados função anova1
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.33 Box-Plot com a função anova1
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Fig.34 Box-Plot com a função anova1
pop_size num_ger numero de loops N valor medio fitness desvio padrao fitness60 75 125 25,89 0,9
120 75 125 26,73 0,4604120 250 125 26,8 0,4154600 250 125 27 0
Menor fitness Maior fitness Numero de sucesso
23 27 37
25 27 93
25 27 102
27 27 125
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Tabela 6: Dados utilizados na função anova1
3.8 Código fonte do programa
Main – BlackBox.m
%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================clear allclose allclc % =====================================================================% Configuracoes iniciais pcross = 0.8; % porcentagem de cruzamento taxaMutacao = 0.05; % porcentagem de mutaçãopopsize = 60; % numero de individuosN = 125; % Rodar N vezes;num_ger= 75;% numero de geraçõesnbits=4; % numero de bits em cada cromossomotam_ind=36; tipo_selecao = 0; % 0 - roleta; 1 - torneioelitismo=1;% 0 sem elitismo 1 com elitismotipo_mutacao = 0; % 0 - escolha aleatoria de bit; 1 - bit a bittipo_cruzamento = 1; % 0 - um ponto de corte; 1 - uniforme for rodar = 1:N pop=round(rand(popsize,tam_ind)); % random da população de 1s e 0s for i=1:popsize vetorAvaliacao(i) = avalia(pop(i,1:tam_ind)); % somatorio das avaliações end for k=1:num_ger for i=1:popsize vetorAvaliacao(i) = avalia(pop(i,1:tam_ind));
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
% somatorio das avaliações end if tipo_selecao == 0 % roleta selecionados = roleta(vetorAvaliacao,popsize); else % torneio selecionados = sel_torneio(vetorAvaliacao); end % Cruzamento if tipo_cruzamento == 0 % um ponto de corte filhos = cruzamento_corte(pop,selecionados,pcross); end if tipo_cruzamento == 1% uniforme mascara = round(rand(popsize/2,tam_ind)); filhos = cruzamento_uniforme(pop,selecionados,tam_ind,popsize,mascara,pcross); end if tipo_mutacao == 0 %0 - escolha aleatoria mutacao_escolha_bit(filhos,taxaMutacao,popsize); else % 1 - bit a bit mutacao_bit_bit (filhos,taxaMutacao,popsize,tam_ind); end if elitismo == 1 filhos = comelistismo(popsize,pop,filhos,vetorAvaliacao); end Melhor_Ind(rodar) = max(vetorAvaliacao); pop = filhos; endend
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
Valor_medio_fitness=mean(Melhor_Ind)desvio_pad_fitness=std(Melhor_Ind)ll=sort(Melhor_Ind);Menor_Fitness=(ll(1))Maior_Fitness=(ll(N))pp=0;for hh=1:N if Melhor_Ind(hh)==27 pp=pp+1; else pp=pp; endendNum_Sucesso=PP
% Criar Estatisticas% Melhor Avaliação no Teste% Pior Avaliacao no Teste% Media Avaliacao no Teste% Desvio Padrão da Avaliacao% Box-Plot
% Num_Sucesso=pp % boxplot(Melhor_Ind) % hist(Melhor_Ind)
% Funcao ANOVA
%teste0=Melhor_Ind1';%teste1=Melhor_Ind2';%teste2=Melhor_Ind3';%teste3=Melhor_Ind4';
%zz=[teste0 teste1 teste2 teste3];% [p,table,st]=anova1(zz);% [c,m,nms]=multcompare(st);
Função Avalia.m%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================% função avaliar individuofunction sinalDeSaida = avalia( teta )
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
sinalDeSaida = 9+(teta(2)*teta(5))-(teta(23)*teta(14))+... (teta(24)*teta(4))-(teta(21)*teta(10))+(teta(36)*teta(15))-... (teta(11)*teta(26))+(teta(16)*teta(17))+(teta(3)*teta(33))+... (teta(28)*teta(19))+(teta(12)*teta(34))-(teta(31)*teta(32))-... (teta(22)*teta(25))+(teta(35)*teta(27))-(teta(29)*teta(7))+... (teta(8)*teta(13))-(teta(6)*teta(9))+(teta(18)*teta(20))-... (teta(1)*teta(30))+(teta(23)*teta(4))+(teta(21)*teta(15))+... (teta(26)*teta(16))+(teta(31)*teta(12))+(teta(25)*teta(19))+... (teta(7)*teta(8))+(teta(9)*teta(18))+(teta(1)*teta(33));
Função cruzamento_corte.m
%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================%função cruzamento com 1 ponto de cortefunction filhos = cruzamento_corte(pop,selecionados,pcross) for i = 1:length(selecionados)/2 if rand<pcross pcorte = ceil(rand*34 + 0.1); filhos(2*i-1,:) = [pop(selecionados(2*i-1),1:pcorte) pop(selecionados(2*i),pcorte+1:end)]; filhos(2*i,:) = [pop(selecionados(2*i),1:pcorte) pop(selecionados(2*i-1),pcorte+1:end)]; else filhos(2*i-1,:) = pop(selecionados(2*i-1),:); filhos(2*i,:) = pop(selecionados(2*i),:); end end
Função cruzamento_uniforme.m%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================%função cruzamento uniformefunction filhos = cruzamento_uniforme(pop,selecionados,tam_ind,popsize,mascara,pcross) %Cruzamento Uniforme
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
for i=1:popsize/2 % fazer so a metade tam_pop/2, use a mesma mascara para criar dois filhos for j=1:tam_ind if mascara(i,j)==0 && rand<pcross filhos(2*i-1,j) = [pop(selecionados(2*i-1),j)]; filhos(2*i,j)= [pop(selecionados(2*i),j)]; else filhos(2*i,j) = pop(selecionados(2*i-1),j); filhos(2*i-1,j)= [pop(selecionados(2*i),j)]; end end end end
Função roleta.m%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================%função roleta viciadafunction selecionados = roleta( vetorAvaliacao,popsize )soma = sum(vetorAvaliacao); for k = 1:popsize s = rand*soma; i = 1; aux = vetorAvaliacao(1); while aux<s i = i + 1; aux = aux + vetorAvaliacao(i); end
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
selecionados(k) = i; end end
Função mutação_escolha_bit.m%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================%Função para para mutar individuo escolha aleatoria de bit function filhos = mutacao_escolha_bit(filhos,taxaMutacao,popsize) for i=1:popsize for j=ceil(rand*34 + 0.1) if rand<taxaMutacao if filhos(i,j)==0 filhos(i,j)=1; else filhos(i,j)=0; end end end end end
Função mutação_bit_bit.m
%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================%Função para para mutar individuo bit a bit function filhos = mutacao_bit_bit(filhos,taxaMutacao,popsize,tam_ind) for i=1:popsize for j=1:tam_ind if rand<taxaMutacao if filhos(i,j)==0 filhos(i,j)=1; else filhos(i,j)=0; end
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas
end end end end
Função sel_torneio.m
%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================% Funcao Torneio function selecionados = sel_torneio(vetorAvaliacao) for i = 1:length(vetorAvaliacao) d=ceil(rand*29 + 0.1); if vetorAvaliacao(i)<vetorAvaliacao(d) selecionados(i) = vetorAvaliacao(d); else selecionados(i) = vetorAvaliacao(i); end end
Função comelitismo.m
%===================================================================% DISCIPLINA DE COMPUTAÇÃO EVOLUCIONÁRIA - TRABALHO DA CAIXA PRETA% PROFESSOR:Bruno Henrique Groenner Barbosa% ALUNO:Elson Claudio Correa Moraes%===================================================================% Funcao Torneio function selecionados = sel_torneio(vetorAvaliacao) for i = 1:length(vetorAvaliacao) d=ceil(rand*29 + 0.1); if vetorAvaliacao(i)<vetorAvaliacao(d) selecionados(i) = vetorAvaliacao(d); else selecionados(i) = vetorAvaliacao(i);