Вы находитесь на странице: 1из 41

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Problema da caixa preta

Disciplina: Computao evolucionaria Professor: Bruno Henrique Groenner Barbosa Aluno: Elson Claudio Correa Moraes

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


1. Introduo 1.1 Algoritmos Genticos Um algoritmo gentico (AG) uma tcnica de busca utilizada na cincia da

computao para achar solues aproximadas em problemas de otimizao e busca, fundamentado principalmente pelo americano John Henry Holland. Algoritmos genticos so uma classe particular de algoritmos evolutivos que usam tcnicas inspiradas pela biologia evolutiva como hereditariedade, mutao, seleo natural e recombinao. Algoritmos genticos so implementados como uma simulao de computador em que uma populao de representaes abstratas de soluo selecionada em busca de solues melhores. A evoluo geralmente se inicia a partir de um conjunto de solues criado aleatoriamente e realizada por meio de geraes. A cada gerao, a adaptao de cada soluo na populao avaliada, alguns indivduos so selecionados para a prxima gerao, e recombinados ou mutados para formar uma nova populao. A nova populao ento utilizada como entrada para a prxima iterao do algoritmo.

1.2 O problema da caixa preta O problema consistem em encontrar a melhor configurao para um conjunto de 9 (a) botes que esto disponveis em uma caixa, sendo que cada boto pode assumir 16 posies distintas(b) Para representar a posio de cada boto no algoritmo, cada posio do boto representando com um conjunto de 4 bits (c) e cada individuo (cromossomo) representado pela disposio destes 9 botes, portanto 36 bits.

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Representao para cada posio dos botes da caixa preta (c) 2. Codificao O trabalho pratico foi desenvolvido utilizando a ferramenta Matlab 8.0.0.783 (R2012b) 32 bits. O trabalho foi organizado em funes e um corpo principal para a chamada das funes chamado BlackBox.m. 2.1 Populaes iniciais e avaliao dos indivduos A populao inicial foi gerada no prprio main(BlackBox.m) em seguida chamada a funo avalia.m para gerao da avaliao de cada individuo de acordo com a funo 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 posio do bit dentro do indivduo (36 bits) 2.2 Selees dos indivduos Os mtodos de seleo dos indivduos para cruzamento foram implementadas nas funes roleta.m e sel_torneio.m. a- Seleo por roleta viciada cada indivduo da populao representado na roleta de forma proporcionalmente ao seu valor de aptido. b- Seleo por torneio: Em cada sorteio, dois indivduos so escolhidos aleatoriamente, e o melhor deles selecionado para a prxima gerao 2.3 Operadores genticos Aps a seleo dos individuos os mesmos vo 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 ps-graduao em engenharia de sistemas


respectivamente implementados pelas funes cruzamento_uniforme e

cruzamento_corte.m. a- Cruzamento uniforme - Dois indivduos (pais) so selecionados aleatoriamente e os indivduos filhos so gerados com base em uma mscara de bit.

b- Ponto de Corte: So selecionados dois indivduos (pais) que do origem a dois novos indivduos (filhos). Um ponto de corte escolhido aleatoriamente nos pais e as partes separadas por esse ponto so trocadas.

2.4 Mutao A mutao muito importante para prevenir a convergncia para um maximo local. Na figura abaixo o objetivo da mutao a de evitar que o algoritmo admita que o ponto C uma Maximo global, realizando a mutao teremos maiores chances de encontrar o real maximo global (Ponto A).

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

A mutao feia pelas funes mutao_escolha_bit.m e mutao_bit_bit.m. a) Escolha aleatria do bit: Em cada indivduo, um bit escolhido aleatoriamente e o seu valor invertido. Esse operador aplicado em todos os indivduos da populao e a mutao ocorre de acordo com a taxa de mutao definida. b) Mutao bit a bit: A mutao ocorre bit a bit segundo uma probabilidade (taxa de mutao). A mutao bit a bit aplicada em todos os indivduos da populao.

2.5 Elitismo O elitismo ocorre na funo comelitismo.m e tem como objetivo preservar os melhores indivduos da gerao, de forma que o melhor indivduo de uma gerao sempre passado para a gerao seguinte.

2.6 Apresentao dos Resultados A apresentao dos resultados obtidos pelo Algoritmo Gentico feita no script principal padro, e BlackBox.m. A cada N* execues so apresentados o nmero de o boxplot dos valores de fitness. apresentado tambm o sucessos, o maior valor de fitness, o menor valor de fitness, a mdia, o desvio histograma dos melhores indivduos. *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 configurao de parmetros e foi utilizado o cruzamento com um ponto de corte e o cruzamento uniforme:

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


a) Sem elitismo. b) Seleo por roleta. c) Mutao bit a bit. d) Probabilidade de cruzamento: 0,8. e) Probabilidade de mutao: 0,025. f) Nmero de indivduos da populao: 30. g) Nmero de geraes: 50. Utilizando ponto de corte temos: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 23 Menor Fitness (Pior caso): 18 Valor mdio de Fitness: 21,14 Desvio-padro dos valores de Fitness: 1.37

Fig.1 Box-Plot utilizando ponto de corte

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.2 Histograma utilizando ponto de corte

Utilizando cruzamento uniforme temos: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 23 Menor Fitness (Pior caso): 15 Valor mdio de Fitness: 20,34 Desvio-padro dos valores de Fitness: 2.48

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao 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 ps-graduao em engenharia de sistemas


3.2. Segundo Teste: Avaliao do Efeito do Tipo de Seleo. Para o segundo teste foi utilizado a seguinte configurao de parmetros, variando-se apenas o tipo de seleo: a) Sem elitismo. b) Cruzamento Uniforme. c) Mutao bit a bit. d) Probabilidade de cruzamento: 0,8. e) Probabilidade de mutao: 0,025. f) Nmero de indivduos da populao: 30. g) Nmero de geraes: 50. Utilizando seleo por roleta temos: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 26 Menor Fitness (Pior caso): 16 Valor mdio de Fitness: 23,70 Desvio-padro dos valores de Fitness: 2,48

Fig.5 Box-Plot utilizando seleo roleta

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.6 Histograma utilizando seleo roleta

Utilizando seleo por torneio temos: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 16 Menor Fitness (Pior caso): 11 Valor mdio de Fitness: 11,30 Desvio-padro dos valores de Fitness: 1,01

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.7 Box-Plot utilizando seleo torneio

Fig.8 Histograma utilizando seleo torneio

3.3. Terceiro Teste: Avaliao do Efeito do Tipo de Mutao Para avaliar o efeito do tipo de mutao, o algoritmo foi executado utilizando a configurao abaixo: a) Sem elitismo.

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


b) Cruzamento Uniforme. c) Seleo por Roleta. d) Probabilidade de cruzamento: 0,8. e) Probabilidade de mutao: 0,025. f) Nmero de indivduos da populao: 30. g) Nmero de geraes: 50.

Utilizando mutao bit a bit temos: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 21 Menor Fitness (Pior caso): 16 Valor mdio de Fitness: 19.16 Desvio-padro dos valores de Fitness: 1.16

Fig.9 Box-Plot utilizando mutao bit a bit

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.10 Histograma utilizando mutao bit a bit

Utilizando mutao aleatria de bit temos: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 23 Menor Fitness (Pior caso): 16 Valor mdio de Fitness: 21.20 Desvio-padro dos valores de Fitness: 2,02

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.11 Box-Plot utilizando mutao aleatria de bit

Fig.12 Histograma utilizando mutao aleatria de bit

3.4. Quarto Teste: Avaliao do Efeito da Probabilidade de Cruzamento Foram realizados trs testes, variando o valor dessa probabilidade e mantendo fixos todos os outros parmetros. Foram utilizados os valores de parmetros 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 ps-graduao em engenharia de sistemas


a) Sem elitismo. b) Cruzamento Uniforme c) Seleo por Roleta d) Mutao por escolha aleatria do bit e) Probabilidade de mutao: 0,025. f) Nmero de indivduos da populao: 30. g) Nmero de geraes: 50.

Utilizando a taxa de cruzamento igual a 0,8 o resultado foi: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 24 Menor Fitness (Pior caso): 15 Valor mdio de Fitness: 21,08 Desvio-padro 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 ps-graduao 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: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 25 Menor Fitness (Pior caso): 15 Valor mdio de Fitness: 20.17 Desvio-padro dos valores de Fitness: 1.9125

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao 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: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 21

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


Menor Fitness (Pior caso): 15 Valor mdio de Fitness: 18,90 Desvio-padro 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 ps-graduao em engenharia de sistemas


3.5. Quinto Teste: Avaliao do Efeito da Probabilidade de Mutao Para analisar o efeito da probabilidade de mutao foi fixado os parmetros variandose apenas as taxas de mutaes. Foram realizados quatro testes, os valores para a taxa de mutao foram: 0,05, 0,1, 0,25 e 0,75, respectivamente. Foi assumido os seguintes parmetros: a) Sem elitismo. b) Cruzamento uniforme c) Seleo por Roleta d) Mutao por escolha aleatria do bit e) Probabilidade de cruzamento: 0.8 f) Nmero de indivduos da populao: 30. g) Nmero de geraes: 50.

Utilizando a taxa de mutao igual a 0,05 o resultado foi: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 21 Menor Fitness (Pior caso): 16 Valor mdio de Fitness: 18,48 Desvio-padro dos valores de Fitness: 1,21

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.19 Box-Plot utilizando taxa de mutao 0,05

Fig.20 Histograma utilizando taxa de mutao 0,05

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


Utilizando a taxa de mutao igual a 0,1 o resultado foi: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 21 Menor Fitness (Pior caso): 15 Valor mdio de Fitness: 19,16 Desvio-padro dos valores de Fitness: 1,43

Fig.21 Box-Plot utilizando taxa de mutao 0,1

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.22 Histograma utilizando taxa de mutao 0,1

Utilizando a taxa de mutao igual a 0,25 o resultado foi: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 23 Menor Fitness (Pior caso): 17 Valor mdio de Fitness: 20,72 Desvio-padro dos valores de Fitness: 1,81

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.23 Box-Plot utilizando taxa de mutao 0,25

Fig.24 Histograma utilizando taxa de mutao 0,25

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


Utilizando a taxa de mutao igual a 0,75 o resultado foi: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 23 Menor Fitness (Pior caso): 17 Valor mdio de Fitness: 21,34 Desvio-padro dos valores de Fitness: 1.86

Fig.25 Box-Plot utilizando taxa de mutao 0,75

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.26 Histograma utilizando taxa de mutao 0,75 3.6. Sexto Teste: Avaliao do Efeito do Elitismo Para avaliar os efeitos causados pelo processo de elitismo, foi utilizada a configurao abaixo e o algoritmo foi testado com e sem a aplicao do elitismo. a) Cruzamento Uniforme b) Seleo por Roleta c) Mutao por escolha aleatria do bit d) Probabilidade de cruzamento: 0.8 e) Probabilidade de mutao: 0.75 f) Nmero de indivduos da populao: 30. g) Nmero de geraes: 50. Sem a utilizao de elitismo: Nmero de Sucessos: 0 Maior Fitness (Melhor caso): 21 Menor Fitness (Pior caso): 16 Valor mdio de Fitness: 19,58 Desvio-padro dos valores de Fitness: 1.18

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.27 Box-Plot sem elitismo

Fig.28 Histograma sem elitismo Utilizando elitismo temos: Nmero de Sucessos: 12 Maior Fitness (Melhor caso): 27 Menor Fitness (Pior caso): 16

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


Valor mdio de Fitness: 23,78 Desvio-padro 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 ps-graduao em engenharia de sistemas


3.7 Avaliao final Aps a realizao dos testes acima vemos que a melhor parametrizao do algoritmo : a) Cruzamento Uniforme b) Seleo por Roleta c) Mutao por escolha aleatria do bit d) Probabilidade de cruzamento: 0.8 e) Probabilidade de mutao: 0.05 f) Com elitismo Conclumos que ao aumentar o numero de indivduos 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 geraes e indivduos conforme mostrado na tabela 5 e na figura 31.

Fig.31 Histograma com 800 geraes e 240 indivduos

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

TESTE

N ELISTISMO SELEO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 NO NO NO NO NO NO NO NO NO NO NO NO NO NO SIM ROLETA ROLETA ROLETA TORNEIO ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA

TESTE 1 TESTE 2 TESTE 3

TESTE 4

TESTE 5 TESTE 6

CRUZAMENTO PONTO DE CORTE UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME

MUTAO BIT A BIT BIT A BIT BIT A BIT BIT A BIT BIT A BIT ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO

TC 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,5 0,2 0,8 0,8 0,8 0,8 0,8 0,8

TM 0,025 0,025 0,025 0,025 0,025 0,025 0,025 0,025 0,025 0,05 0,1 0,25 0,75 0,75 0,75

N IND 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30

N GERAO 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50

Tabela 2: Parmetros utilizados

TESTE TESTE 1 TESTE 2 TESTE 3

TESTE 4

TESTE 5 TESTE 6

N 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

N DE SUCESSO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12

MAIOR FITNESS 23 23 26 16 21 23 24 22 21 21 21 23 23 21 27

MENOR FITNESS 18 15 16 11 16 16 15 16 15 16 15 17 17 16 16

FITNESS MDIO DESVIO PADRO 21,14 1,37 20,34 2,48 23,7 2,58 11,3 1,01 19,16 1,16 21,2 2,02 21,08 2,73 19,5 1,47 18,9 1,85 18,48 1,21 19,16 1,43 20,72 1,81 21,34 1,86 19,58 1,18 23,78 3,39

Tabela 3: Resultados

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

TESTE ELISTISMO TESTE 1 SIM TESTE 2 SIM TESTE 3 SIM TESTE 4 SIM TESTE 5 SIM TESTE 6 SIM TESTE 7 SIM TESTE 8 SIM TESTE 9 SIM TESTE 10 SIM

SELEO ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA ROLETA

CRUZAMENTO UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME UNIFORME

MUTAO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO ALEARTRIO

TC 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8 0,8

TM 0,75 0,75 0,75 0,75 0,75 0,75 0,75 0,75 0,75 0,75

N IND 60 120 240 30 30 30 30 60 120 240

N GERAO 50 50 50 100 200 400 800 200 400 800

Tabela 4: Parmetros com variaes n de indivduos e n de geraes

TESTE TESTE 1 TESTE 2 TESTE 3 TESTE 4 TESTE 5 TESTE 6 TESTE 7 TESTE 8 TESTE 9 TESTE 10

N DE SUCESSO 0 12 16 0 0 0 0 0 357 769

MAIOR FITNESS 24 27 27 26 23 25 23 26 27 27

MENOR FITNESS 16 16 18 16 16 17 16 17 18 17

FITNESS MDIO DESVIO PADRO 21,46 2,177 24,5 2,28 23,76 2,83 24,8 2,45 22,5 1,54 24,87 0,71 22,87 0,79 25,46 1,52 26,63 1,29 26,83 0,99

Tabela 5: Resultados com variaes n de indivduos e n de geraes

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.32 Dados funo anova1

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.33 Box-Plot com a funo anova1

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

Fig.34 Box-Plot com a funo anova1

pop_size num_ger numero de loops N valor medio fitness 60 75 125 25,89 120 75 125 26,73 120 250 125 26,8 600 250 125 27 Menor fitness Maior fitness Numero de sucesso 23 27 37 25 27 93 25 27 102 27 27 125

desvio padrao fitness 0,9 0,4604 0,4154 0

Tabela 6: Dados utilizados na funo anova1

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


3.8 Cdigo fonte do programa Main BlackBox.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - TRABALHO DA CAIXA PRETA % PROFESSOR:Bruno Henrique Groenner Barbosa % ALUNO:Elson Claudio Correa Moraes %=================================================================== clear all close all clc % ===================================================================== % Configuracoes iniciais pcross = 0.8; % porcentagem de cruzamento taxaMutacao = 0.05; % porcentagem de mutao popsize = 60; % numero de individuos N = 125; % Rodar N vezes; num_ger= 75;% numero de geraes nbits=4; % numero de bits em cada cromossomo tam_ind=36; tipo_selecao = 0; % 0 - roleta; 1 - torneio elitismo=1;% 0 sem elitismo 1 com elitismo tipo_mutacao = 0; % 0 - escolha aleatoria de bit; 1 - bit a bit tipo_cruzamento = 1; % 0 - um ponto de corte; 1 - uniforme

for rodar = 1:N pop=round(rand(popsize,tam_ind)); % random da populao de 1s e 0s for i=1:popsize vetorAvaliacao(i) = avalia(pop(i,1:tam_ind)); % somatorio das avaliaes

end

for k=1:num_ger for i=1:popsize vetorAvaliacao(i) = avalia(pop(i,1:tam_ind)); % somatorio das avaliaes

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

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;

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

end end 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; end end Num_Sucesso=PP % % % % % % Criar Estatisticas Melhor Avaliao no Teste Pior Avaliacao no Teste Media Avaliacao no Teste Desvio Padro 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);


Funo Avalia.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - TRABALHO DA CAIXA PRETA % PROFESSOR:Bruno Henrique Groenner Barbosa

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


% ALUNO:Elson Claudio Correa Moraes %=================================================================== % funo avaliar individuo function sinalDeSaida = avalia( teta )

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));

Funo cruzamento_corte.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - TRABALHO DA CAIXA PRETA % PROFESSOR:Bruno Henrique Groenner Barbosa % ALUNO:Elson Claudio Correa Moraes %=================================================================== %funo cruzamento com 1 ponto de corte function 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

Funo cruzamento_uniforme.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - TRABALHO DA CAIXA PRETA % PROFESSOR:Bruno Henrique Groenner Barbosa % ALUNO:Elson Claudio Correa Moraes %=================================================================== %funo cruzamento uniforme function filhos = cruzamento_uniforme(pop,selecionados,tam_ind,popsize,mascara,pcross)

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas

%Cruzamento Uniforme

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

Funo roleta.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - TRABALHO DA CAIXA PRETA % PROFESSOR:Bruno Henrique Groenner Barbosa % ALUNO:Elson Claudio Correa Moraes %=================================================================== %funo roleta viciada function selecionados = roleta( vetorAvaliacao,popsize ) soma = sum(vetorAvaliacao); for k = 1:popsize s = rand*soma;

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


i = 1; aux = vetorAvaliacao(1); while aux<s i = i + 1; aux = aux + vetorAvaliacao(i); end selecionados(k) = i; end end

Funo mutao_escolha_bit.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - TRABALHO DA CAIXA PRETA % PROFESSOR:Bruno Henrique Groenner Barbosa % ALUNO:Elson Claudio Correa Moraes %=================================================================== %Funo 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

Funo mutao_bit_bit.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - TRABALHO DA CAIXA PRETA % PROFESSOR:Bruno Henrique Groenner Barbosa % ALUNO:Elson Claudio Correa Moraes %===================================================================

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


%Funo 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 end end end

end

Funo sel_torneio.m
%=================================================================== % DISCIPLINA DE COMPUTAO EVOLUCIONRIA - 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

Funo comelitismo.m
%===================================================================

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de ps-graduao em engenharia de sistemas


% DISCIPLINA DE COMPUTAO EVOLUCIONRIA - 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

Вам также может понравиться