Problema Da Caixa Preta Doc Final

46
UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas Problema da caixa preta

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

UNIVERSIDADE FEDERAL DE LAVRAS DEPARTAMENTO DE ENGENHARIA Programa de pós-graduação em engenharia de sistemas

end end