LEV - Caderno de Atividades - ieav.cta.br · Palavra chave: Framework, Otimização, Algoritmo...

20
Laboratório de Engenharia Virtual LEV - Caderno de Atividades Relatório de andamento de trabalho CA 2015/002 Implementação de um conjunto de meta-heurísticas populacionais, Algoritmos Evolutivos, no Framework de Otimização do LEV Wakim Saba, Carlos Alberto da Silva Junior, Angelo Passaro, Nancy M. Abe, Roberto Tanaka, Ademar Palavra chave: Framework, Otimização, Algoritmo Evolutivo, Algoritmo Genético, Estratégia Evolutiva, Programação Evolutiva, Programação Genética. 1. Objetivo Implementar um conjunto de funcionalidades de Algoritmos Evolutivos (AE) no framework de otimização do LEV para que três dos principais algoritmos dessa família de meta-heurísticas populacionais possam ser utilizados: Estratégias de Evolução (EE), Programação Evolutiva (EP) e Algoritmo Genético (GA). Verificar os comportamentos dessas funcionalidades utilizando inicialmente uma função analítica simples, de uma variável, e as funções multimodais Schwefel, Rosenbrock, Zakharov, Griewank e Sphere, com duas e quatro variáveis. Os resultados deste trabalho serão entregues até o dia 09 de Dezembro de 2015 para o professor da disciplina TE-282 do IEAv/ITA. 2. Justificativa Uma meta-heurística populacional pode ser vista como um método de melhoria iterativa de uma população de soluções (Talbi 2009). Esse tipo de meta-heurística deve contemplar: a) a geração de uma população inicial; b) ter um laço de repetições que possibilite a cada iteração gerar e selecionar uma nova população; c) estabelecer um critério de parada que define o fim de execução do método. O objetivo do método é a melhor solução dentre todas as soluções geradas em todas as populações. A inicialização da população de soluções é a primeira tarefa realizada por uma meta- heurística populacional. A população inicial é um conjunto de pontos a partir dos quais a meta- heurística inicia a busca no espaço de busca. Uma das formas de inicializar a população se dá pela atribuição de valores aleatórios à cada uma das variáveis de projeto de cada solução. Outra forma possível é o uso de uma população de soluções geradas por um outro método de busca. Essa última forma é conhecida como um tipo possível de hibridização ou hibridação. A geração e a seleção de uma nova população são procedimentos realizados a cada iteração de uma meta-heurística populacional. O procedimento de geração utiliza determinados operadores sobre uma população para produzir uma população intermediária e o procedimento de seleção compõem uma nova população a partir da escolha do conjunto de soluções , onde t é um índice de iteração que define uma geração. A geração e seleção de uma nova população envolvem também tarefas especificas que devem atender às características impostas pelo tipo da meta-heurística populacional em questão. O critério de parada define o fim de execução da meta-heurística e pode ser do tipo estático ou adaptativo. Nos tipos estáticos o fim de execução é conhecido a priori, como por exemplo: a) o número máximo de iterações; a) a quantidade de avaliações da função objetivo; c) o tempo máximo

Transcript of LEV - Caderno de Atividades - ieav.cta.br · Palavra chave: Framework, Otimização, Algoritmo...

Laboratório de Engenharia Virtual

LEV - Caderno de Atividades

Relatório de andamento de trabalho

CA 2015/002 – Implementação de um conjunto de meta-heurísticas populacionais, Algoritmos Evolutivos, no Framework de Otimização do LEV

Wakim Saba, Carlos Alberto da Silva Junior, Angelo Passaro, Nancy M. Abe, Roberto Tanaka, Ademar

Palavra chave: Framework, Otimização, Algoritmo Evolutivo, Algoritmo Genético, Estratégia Evolutiva, Programação Evolutiva, Programação Genética.

1. Objetivo Implementar um conjunto de funcionalidades de Algoritmos Evolutivos (AE) no framework

de otimização do LEV para que três dos principais algoritmos dessa família de meta-heurísticas populacionais possam ser utilizados: Estratégias de Evolução (EE), Programação Evolutiva (EP) e Algoritmo Genético (GA). Verificar os comportamentos dessas funcionalidades utilizando inicialmente uma função analítica simples, de uma variável, e as funções multimodais Schwefel, Rosenbrock, Zakharov, Griewank e Sphere, com duas e quatro variáveis.

Os resultados deste trabalho serão entregues até o dia 09 de Dezembro de 2015 para o professor da disciplina TE-282 do IEAv/ITA .

2. Justificativa Uma meta-heurística populacional pode ser vista como um método de melhoria iterativa de

uma população de soluções (Talbi 2009). Esse tipo de meta-heurística deve contemplar: a) a geração de uma população inicial; b) ter um laço de repetições que possibilite a cada iteração gerar e selecionar uma nova população; c) estabelecer um critério de parada que define o fim de execução do método. O objetivo do método é a melhor solução dentre todas as soluções geradas em todas as populações.

A inicialização da população de soluções é a primeira tarefa realizada por uma meta-heurística populacional. A população inicial é um conjunto de pontos a partir dos quais a meta-heurística inicia a busca no espaço de busca. Uma das formas de inicializar a população se dá pela atribuição de valores aleatórios à cada uma das variáveis de projeto de cada solução. Outra forma possível é o uso de uma população de soluções geradas por um outro método de busca. Essa última forma é conhecida como um tipo possível de hibridização ou hibridação.

A geração e a seleção de uma nova população são procedimentos realizados a cada iteração de uma meta-heurística populacional. O procedimento de geração utiliza determinados operadores sobre uma população ���� para produzir uma população intermediária ����� e o procedimento de seleção compõem uma nova população ������ a partir da escolha do conjunto de soluções ���� ∪�����, onde t é um índice de iteração que define uma geração. A geração e seleção de uma nova população envolvem também tarefas especificas que devem atender às características impostas pelo tipo da meta-heurística populacional em questão.

O critério de parada define o fim de execução da meta-heurística e pode ser do tipo estático ou adaptativo. Nos tipos estáticos o fim de execução é conhecido a priori, como por exemplo: a) o número máximo de iterações; a) a quantidade de avaliações da função objetivo; c) o tempo máximo

2

Caderno de Atividades – Laboratório de Engenharia Virtual

para a execução; entre outros. Diferentemente, nos tipos adaptativos não é possível saber o fim de execução a priori, e esse conjunto de critérios são por exemplo: a) uma quantidade de iterações sem que seja encontrada uma melhor solução; b) até que seja encontrada uma solução com um determinado valor de função objetivo; entre outros.

Na Figura 1, pode ser visto o pseudocódigo de um algoritmo populacional.

Figura 1 – Pseudocódigo de um algoritmo Populacional

A partir do conceito geral de uma meta-heurística populacional, diferentes tipos de meta-heurísticas foram construídas. Dessas, uma quantidade expressiva obtiveram inspiração em comportamentos da vida animal de diferentes espécies da natureza. Cada tipo de meta-heurística populacional utiliza um conjunto de operadores que especializa os procedimentos de geração e seleção de população e critério de parada de acordo com inspiração a partir da qual ela foi construída. Além disso, cada meta-heurística populacional tem uma representação da população de soluções adequados ao seu tipo.

Uma lista contendo diferentes tipos de meta-heurísticas populacionais assim como a nomenclatura dada a população de soluções para cada uma delas pode ser vista na Figura 2:

Figura 2 – Memória de busca de alguns P-Meta-heurísticas

A partir da lista de meta-heurísticas populacionais da Figura 2, foi escolhido neste trabalho, a classe de algoritmos evolutivos para um estudo mais detalhado.

Os algoritmos evolutivos compõem uma classe de meta-heurísticas populacionais inspiradas na teoria da evolução e da genética. Segundo a teoria da evolução a seleção natural beneficia a reprodução dos indivíduos mais bem adaptados ao meio onde vivem. Os indivíduos que mais reproduzem mais propagam o seu código genético em gerações seguintes. Os fundamentos da teoria da evolução e da genética foram traduzidos nos algoritmos evolutivos por meio de um conjunto de operações de geração e seleção de novas populações de indivíduos priorizando os melhores

3

Caderno de Atividades – Laboratório de Engenharia Virtual

indivíduos. O sucesso dos algoritmos evolutivos pode ser observado na resolução de difíceis problemas de otimização (Back, Fogel e Michalewicz 1997).

De um modo mais formal, um Algoritmo Evolutivo é definido pela 8-tupla: � =� , �, �, �, �, �, �, �� (Back 1995) Onde: O espaço de indivíduos é = �� × �� tal que �� � �� denotam conjuntos arbitrários. � ∶ → ℝ denota a função de fitness associando valores reais à indivíduos. � � � denotam o tamanho da população de pais e de filhos respectivamente. �, � ∈ ℕ e � =� é permitido. � = *+,� , … , +,. +,�⁄ ∶ � → �0 ∪ { +,2 ∶ � → �} é o conjunto de operadores

genéticos probabilísticos ω56 . Os operadores são controlados por parâmetros específicos definido em conjuntos ,7 ⊂ ℝ. 9,� ∶ � � ∪ ���� → � é o operador de seleção. : ∶ � → {;<=�, >?@A�} é o critério de parada. � ∶ � → � é a função de transição de geração que é composta dos operadores genéticos e de seleção: � = 9 ∘ +,7� ∘ … ∘ +,7C ∘ +,2

O processo completo de transformação de uma população P é dado por:

��D� = 9,� EF ∪ +,7� G… G+,7C H +,2��� IJ … JK

Dado uma população inicial ��2� ∈ � em um Algoritmo Evolutivo e utilizando uma função

de transformação �, o tempo de execução LM� é dado por:LM� = N7O{ � ∈ ℕ ∕ : Q ��H��2�IR =�STU}. Um indivíduo

VWWX ∈ Y ��H��2�ILM�

�Z2

é chamado de resultado de um AE quando aplicado em uma população P(0), se

[�VWWX� = N7O{[�V́WWX� ∕ V́WWX ∈ Y ��H��2�ILM�

�Z2 }

As definições para os operadores genéticos utilizadas neste trabalho são caracterizadas pela transformação de uma população em outra. Esses operadores são apresentados em um formato de alto nível, podendo ser reduzidos em um conjunto de três operadores de baixo nível.

Para operadores genéticos de baixo nível +, ∶ ] → ^ é chamado:

a) Assexual : ⟺ ∃+́, ∶ → : +,HV�WWWWX, … , V]WWWWXI = Q+́,�V�WWWWX�, … , +́,HV]WWWWXIR ∧ ] = ^

b) Sexual : ⟺ ∃+́, ∶ c → : +,HV�WWWWX, … , V]WWWWXI = d+́,HVe�WWWWWX, Vf�WWWWWXI, … , +́, QVe^WWWWWX, Vf^WWWWWXRg, onde ∀i ∈ {�, … , ^}7i, Ci ∈ {�, … , ]} são escolhidos aleatoriamente.

4

Caderno de Atividades – Laboratório de Engenharia Virtual

c) Misto : ⟺ ∃+́, ∶ ] → : +,HV�WWWWX, … , V]WWWWXI = j+́,HV�WWWWX, … . V]WWWWXI, … , +́,HV�WWWWX, … . V]WWWWXIkllllllllllmlllllllllln^o

O que diferencia os operadores genéticos dos itens a), b) e c) é a quantidade de indivíduos

utilizados para geração de um novo indivíduo. Mutação é um tipo de operador genético assexuado que utiliza apenas um indivíduo, Recombinação é do tipo sexual e utiliza dois indivíduos, enquanto que um operador do tipo Misto utiliza uma quantidade p de indivíduos.

Abaixo pode ser visto o algoritmo Evolutivo na sua forma geral: ; = 0;

Inicializa r�s� ∶= *V�WWWWX�2�, . . . , V�WWWWX�2�0 ∈ �; Avalia r�s� ∶= *��V�WWWWX�2��, . . . , ��V�WWWWX�2��0; Enquanto (:Hr�t�I ≠ �STU� Recombinação: r��t� ∶= v,S Hr�t�I; Mutação: r���t� ∶= w,N Hr��t�I; Avaliação r���t� ∶ x��V′′�WWWWWWWX����, . . . , ��V′′�WWWWWWWX����z ; Seleção: r�t�{� ∶= 9,�Hr���t� ∪ |I; ; ∶= ; + 1; Fim do laço

Figura 3 – Pseudocódigo da forma geral de um algoritmo evolutivo

Ao comparar as figuras Figura 1 e Figura 3 que ilustram as forma gerais de um meta-heurística populacional e de um algoritmo evolutivo é possível observar pontualmente os contrastes. O procedimento de inicialização do algoritmo evolutivo é seguido do procedimento de avaliação da população por meio de uma função de aptidão �. O procedimento de avaliação por aptidão também é executado antes da seleção dos indivíduos no final do laço de repetição. A função de aptidão � tem importância vital no processo de convergência da meta-heurística uma vez que é por meio dela que se torna possível avaliar a qualidade da posição de cada indivíduo no espaço de busca.

A função de geração, ����<?;��rt��, observada na Figura 1, foi substituída por dois operadores, v,S e w,N , utilizados para gerar uma nova população por meio de operações de Mutação e Recombinação de Indivíduos. Utilizando os operadores de mutação e recombinação para gerar novos indivíduos é possível investigar o espaço de busca com características de exploração e intensificação.

O procedimento de seleção escolhe indivíduos a partir da população de indivíduos alterados pelos operadores de recombinação e mutação, r′′�t�, e também da população Q, que nesse caso é a população r�t�. Existem vários tipos de seleção para algoritmos evolutivos e todas devem priorizar os indivíduos que obtiveram melhores avaliações da função de aptidão �.

Os Algoritmos Evolutivos compõe uma classe de meta-heurísticas populacionais que são estruturadas na forma geral do pseudocódigo apresentado na Figura 3. Algumas das principais delas são: Estratégia de Evolução (EE); Programação Evolutiva (PE); Algoritmo Genético (AG) e Programação Genética (PG). De forma geral, as principais diferenças entre os distintos tipos de algoritmos evolutivos são: a estrutura de dados adotada para representar um indivíduo; a estratégia de operadores de mutação e recombinação; e a forma utilizada para realizar o procedimento de seleção.

5

Caderno de Atividades – Laboratório de Engenharia Virtual

2.1 Representação O indivíduo VWWX deve conter um componente de variável de objeto, o vetor �WWX (Back 1995). Ao

vetor �WWX é dado o nome de vetor de variáveis de decisão ou de variáveis de projeto. Em um algoritmo evolutivo o vetor �WWX de um indivíduo é codificado no formato fenótipo e

decodificado para o formato genótipo, Figura 4:

Figura 4 – Genótipo e Fenótipo

Os formatos genótipo e fenótipo delimitam para qual domínio as informações do indivíduo serão utilizadas. Quando as informações do indivíduo são utilizadas para realizar operações genéticas, tais como mutação e recombinação, as informações estão no domínio de uma representação própria de algoritmos evolutivos conhecida por cromossomo e portanto genotípica. Quando se pretende avaliar as qualidades de um indivíduo por meio de uma função de aptidão, suas informações devem estar no domínio da solução e portanto fenotípicas.

Diversos tipos de representações podem ser utilizadas para definir um cromossomo em um algoritmo evolutivo. Algumas já bem conhecidas são: string binária, vetor de valores reais (Real-Coded), permutação, representação de estado finito e estruturas em arvore. Ver (Back, Fogel e Michalewicz 2000). Destas, apenas string binária e Real-Code serão investigadas neste trabalho.

A string binária é constituída por um vetor de bits e que portanto armazena apenas 0s ou 1s. Nesse tipo de representação também é possível o armazenamento do conteúdo de uma variável do tipo real. O armazenamento de um conteúdo real em uma string binária pressupõe uma discretização que obviamente implica em um erro de precisão que deve ser considerando.

A representação do tipo Real-Code é uma estrutura que contém um conjunto de variáveis do tipo real. Cada variável desse conjunto é uma variável de projeto. Essas variáveis tem associado a elas valores de limites mínimos e máximos que em geral são representados pelas letras �7 e �7 respectivamente.

2.2 Mutação e Recombinação Existem diferentes tipos de recombinação e de mutação. Existem alguns operadores para o

tipo de Cromossomo string binária que atualmente estão implementados no framework de otimização do LEV. Neste trabalho é dado uma atenção aos tipos de operadores que utilizam o tipo Real-Coded de cromossomo. O estudo para a implementação desses operadores foram extraídos de (Yoon e Yong-Hyuk 2012).

No AG os operadores de recombinação e de mutação ocorrem a partir de uma taxa de probabilidade de ocorrência previamente configurada, a taxa de recombinação e a taxa de crossover. Nos algoritmos ES e EP a taxa de mutação é variável e tem um mecanismo de ajuste conforme critério relacionado a evolução da população. O operador de Recombinação é raramente utilizado no algoritmo ES e nunca utilizado no algoritmo EP.

A recombinação estudada considera o cruzamento ente dois indivíduos de quatro formas possiveis, Figura 5. Para uma delas o indivíduo resultante do cruzamento entre os indivíduos x e y

6

Caderno de Atividades – Laboratório de Engenharia Virtual

deve estar contido dentro de uma caixa (a), enquanto que em outro caso a posição do indivíduo é limitada por um segmento de reta (c). Os outros dois casos, (b) e (d), são variações dos dois primeiros e utilizam uma variável � para estender o range de busca para fora da caixa e do segmento de reta, Figura 5:

Figura 5 – Range para possíveis indivíduos em um espaço real limitado à duas dimensões

Um operador de mutação aplicado ao cromossomo do tipo Real-Coded também foi estudado neste trabalho. Esse operador altera os valores de todas as variáveis de projeto de um dado indivíduo. Entretanto, as variações de valores de cada variável tende a ser pequena pois trata-se de um operador de mutação Gaussiana estática simples (Yoon e Yong-Hyuk 2012). A geração da distribuição gaussiana assume ��2, �7� de modo que �7 = ��7 − �7�/�2, sendo �7 o limite superior e �7 o limite inferior da variável de projeto i de um indivíduo.

Foi utilizado para isso um gerador de número Gaussiano randômico independente (Júnior, Almeida e Lacerda 2002) da seguinte forma:

Considerando �� e �c números aleatórios dentro do intervalo �2. ��, foram gerados os números aleatórios Gaussianos a partir das expressões: �� = �−c �� �c ��9�c���� e �c = �−c �� �c 9���c����.

Considerando a e b constantes conhecidas da distribuição normal para � ~ ���, �c� então V� + b ~ ��V� + � , �c�c� (MSPC 2007). Considerando a propriedade considerou-se V = ���7 − �7�/�2 e � = �� �T �c. No item a) do Anexo 8.2 é possível ver o pseudocódigo da operação de mutação. O item b)

não foi estudado neste trabalho.

2.3 Seleção O mecanismo de seleção tem função central para algoritmos evolutivos. Seguindo a teoria

de Darwin, os melhores indivíduos, computacionalmente aqueles que obtiveram melhores avaliações da função de aptidão �, tem vantagem no momento de seleção. A partir dessa premissa

7

Caderno de Atividades – Laboratório de Engenharia Virtual

o mecanismo computacional de seleção escolhe o conjunto de indivíduos que farão parte da população de indivíduos da geração seguinte. Entretanto, os piores não são excluídos e portanto devem ter alguma chance de serem escolhidos.

As estratégias de seleção devem ser: roleta, amostragem universa estocástica, torneio ou seleção baseada em rank (Talbi 2009). Neste trabalho manteve-se a estratégia de seleção baseada em loteria e que já se encontrava implementada no framework de otimização do LEV. Entretanto foram realizadas implementações que ampliaram as possibilidades desta estratégia de seleção. Utilizando a seleção atual é possível aplicar o operador de seleção utilizando a população � ou a população �, ou ambas. É possível também participar uma lista Elite de indivíduos.

2.4 Outros detalhes Este trabalho se concentra no estudo de diferentes tipos de representações de indivíduos,

operadores genéticos e estratégias de seleção no contexto de algoritmos Evolutivo. Como ponto de partida deve ser utilizada a implementação de um Algoritmo Genético atualmente inserida no framework de otimização do LEV. O framework se encontra em fase de testes e a implementação dos novos mecanismos devem ser feitas no próprio framework.

Um conjunto de testes devem ser planejados para verificar a qualidade da implementação e estudar o comportamento dos novos mecanismos. Nessa fase tem sido importante validar a implementação de software utilizando funções de teste cujos mínimos são conhecidos. Nos testes devem ser utilizado a função multimodal de uma variável [��� = � 9�� ��� e as funções multimodais Schwefel, Rosenbrock, Zakharov, Griewank e Sphere, com duas e quatro variáveis.

3. Datas Início do trabalho em 29 de Novembro de 2015.

4. Procedimentos, comentários e resultados obtidos Todos os experimentos deste trabalho foram feitos utilizando uma máquina Inspiron 15

Série 5000 do fabricante Dell com processador Intel i7, 64 bits, 2,4 GHz, cache L1 32K, cache L2 256K, cache L3 4096K, memória RAM com 16GB, Sistema Operacional Windows 8, compilador C++ gcc-4.4.3.

A configuração no framework de otimização do LEV é feita utilizando um arquivo de configuração no formato XML. Um exemplo deste arquivo de configuração pode ser visto em 8.3.

Algumas configurações foram as mesmas utilizadas em todos os testes: a) tamanho da população com 40 indivíduos; b) tamanho da lista de melhores contendo 40 indivíduos; c) lista elite contendo 5 indivíduos; d) mecanismos de Mutação e Recombinação sempre ativos; e) taxa de recombinação 0.7; f) taxa de mutação 0.05; g) Seleção do tipo loteria.

Este trabalho não contempla o estudo de um mecanismo de ajuste dinâmico das taxas de mutação e recombinação, portanto seus valores foram definidos previamente.

Os valores das funções utilizados neste trabalho foram obtidos sempre a partir de valores médios gerados a partir de três execuções. Para esses casos utilizou-se a média aritmética.

4.1 Procedimentos Foi utilizada a função [��� = � 9�� ��� de modo que a variável x assumisse valores dentro

do intervalo restrito: −� ≤ � ≤ �2. Considerando apenas o intervalo de restrição −� ≤ � ≤ �2, é possível notar que a função multimodal estudada tem um conjunto de mínimos locais, Figura 6:

8

Caderno de Atividades – Laboratório de Engenharia Virtual

Figura 6 - Gráfico da função x * sen(x)

No gráfico da Figura 6, o mínimo global está localizado no canto inferior direito da

imagem onde é possível verificar que o valor f(x) desse mínimo global é aproximadamente -29.8618.

Nos primeiros testes a função objetivo [��� = � 9�� ��� foi resolvida utilizando dois tipos de representações de Cromossomo. Em um dos testes a representação do cromossomo foi do tipo string binária enquanto que nos outros foi do tipo Real-Coded. Nesses casos, o número máximo de iteração foi 100 o que significa 4000 avaliações de função objetivo por testes.

Para o cromossomo do tipo string binária foi utilizado um mecanismo de recombinação que realiza 4 pontos de corte escolhidos aleatoriamente e o mecanismo de mutação foi do tipo Bit Flipping onde apenas um bit pode ser alterado por vez. A implementação de recombinação por pontos de corte já estava implementada no framework de otimização do LEV e apresentava dois problemas que foram corrigidos neste trabalho (Ver Capitulos 5.2 e 5.3).

Para o cromossomo do tipo Real-Coded foram utilizados os mecanismo de recombinação CrossOver Box e CrossOver Line na suas formas simples e estendida e o mecanismo de mutação do tipo Distribuição Gaussiana. CrossOver Box e CrossOver Line, quando estendidas, utilizaram taxa de extensão com o valor 0.50. CrossOver Box e CrossOver Line também foram testados com taxa de extensão utilizando os valores 0.01, 0.02, 0.04, 0.08, 0.16, 0.32 e 0.64.

Também foram realizados testes utilizando as funções multimodais Schwefel, Rosenbrock, Zakharov, Griewank e Sphere, com duas e quatro variáveis.

Na Figura 7 é possível ver a representação gráfica das funções Schwefel, Rosenbrock, Zakharov, Greiwank e Sphere (Surjanovic 2015) com duas variáveis.

9

Caderno de Atividades – Laboratório de Engenharia Virtual

Figura 7 - Funções analiticas Schwefel, Rosenbrock, Zakharov, Griewank e Sphere

A função objetivo sphere com duas variáveis foi resolvida utilizando os tipos de representações de Cromossomo string binária e Real-Coded. As configurações para os mecanismos de recombinação e mutação também foram as mesmas utilizadas para resolver � 9�� ���. Testes adicionais foram realizados utilizando a seguinte quantidade de pontos de corte: 2, 4, 8 e 16. Os testes foram realizados com o mecanismo de seleção configurado para utilizar apenas a população elite e dos filhos e posteriormente foram realizados novos testes utilizando também a população de pais. Nesses casos, o número máximo de iteração foi 1000 o que significa 40000 avaliações de função objetivo por testes.

As 5 funções ilustradas na Figura 7 também foram utilizadas em testes para os mecanismos de recombinação e mutação para os tipos de representação de Cromossomo Real-Coded e string binária . Esse conjunto de funções objetivo foram testadas em dimensões de 2 e de 4 variáveis. Utilizando funções objetivo com 2 variáveis, o número máximo de iteração foi 1000 o que significa 40000 avaliações de função objetivo por testes. Utilizando funções objetivo com 4 variáveis, o número máximo de iteração foi 2000 o que significa 80000 avaliações de função objetivo por testes.

10

Caderno de Atividades – Laboratório de Engenharia Virtual

4.2 Resultados

Figura 8 – Convergência de testes utlilizando a função xsen(x)

Na Figura 1 é possível ver a linha de convergência dos resultados de 5 testes utilizando a função objetivo [��� = � 9�� ���. O teste Real_Box utilizada o mecanismo de recombinação (a) da Figura 5 enquanto que o teste Real_Line utilizada o mecanismo de recombinação (c). O teste Real_Box_Extended_0.50 utilizada o mecanismo de recombinação (b) da Figura 5 enquanto que o teste Real_Line_Extended_0.50 utilizada o mecanismo de recombinação (d), e ambos utilizam a taxa de extensão � com valor 0.50. No teste StringBinaria_CutPoint_BitFlipping foi utilizado representação de cromossomo string binária, com recombinação utilizando 4 por pontos de corte.

A partir dos resultados é possível ver que dois testes ficaram presos em ótimos locais. Os testes Real_Box e Real_Line ficaram presos em ótimos locais com valores de função objetivo em aproximadamente -23.5638 e -27.3449 respectivamente. Curiosamente a convergência, para esses dois casos, ocorreu assim que a população ficou composta de indivíduos ligeiramente diferentes. Esse é um comportamento esperado quando as distancias entre os indivíduos é cada vez menor, o que limita o espaço da caixa e o comprimento da linha, itens (a) e (b) da Figura 5, e analise do pseudocódigo a) e c) do método de recombinação utilizados, Anexo 8.1.

Os outros três testes que atingiram a região do ótimo global, foram StringBinaria_CutPoint_BitFlipping , Real_Box_Extended_0.50 e Real_Line_Extended_0.50 com os valores de função objetiva em aproximadamente -29.8606, -29.8612 e -29.8619 respectivamente. Apesar de todos terem atingido a região do ótimo global, Real_Line_Extended_0.50 teve uma convergência mais lenta, contudo teve um refinamento melhor do que os demais testes.

Os valores de extensão 0.50 utilizados nos mecanismo de recombinação para cromossomos do tipo Real-Coded são sugeridos por (Yoon e Yong-Hyuk 2012). Alguns testes adicionais, utilizando [��� = � 9�� ���, foram realizados a fim de variar esse parâmetro utilizando os valores 0.01, 0.02, 0.04, 0.08, 0.16, 0.32 e 0.64. A partir dos resultados obtidos, Capitulo 8.5, pode-se perceber que os melhores resultados estão entre as configurações 0.16 e 0.64.

11

Caderno de Atividades – Laboratório de Engenharia Virtual

Figura 9 – Caminho de convergência de uma das execuções do teste Real_Line_Extended_0.50

Na Figura 1 é possível ver o caminho dos resultados obtidos pelo método de busca para uma das execuções do teste Real_Line_Extended_0.50. Na primeira iteração o algoritmo evolutivo encontrou um indivíduo com o valor de x igual á 17.7213 e valor de função objetivo igual à -16.014 em uma região de ótimo local. Na segunda iteração ainda na mesma região foi encontrada uma solução melhor com valor de x em aproximadamente 17.1217 e função objetivo em aproximadamente -16.911. Neste exemplo a região do ótimo global foi atingida na terceira iteração com um valor de função objetivo em aproximadamente -21.9154. A partir daí o método refinou os valores e o melhor indivíduo foi encontrado na iteração 69 com valor de x em aproximadamente 29.8778 e valore de função objetivo em aproximadamente -29.8619.

As mesmas parametrizações utilizadas para testar a função objetivo [��� = � 9�� ���, foram utilizadas para testar a função objetivo sphere.

Figura 10 – Convergência de testes utlilizando a função sphere com 2 variáveis

Os resultados dos testes realizados utilizando a função objetivo sphere foram ilustrados na Figura 10. Desses, dois deles apresentam uma convergência prematura enquanto outros três tiveram resultados de convergência interessante. Os testes com as configurações Real_Box e Real_Line apresentaram os piores resultados e seu valores de função objetivo foram aproximadamente 0.0135326 e 0.0206715 respectivamente. As melhores convergências foram obtidas a partir dos testes StringBinaria_CutPoint_BitFlipping , Real_Line_Extended_0.50 e

12

Caderno de Atividades – Laboratório de Engenharia Virtual

Real_Box_Extended_0.50, sendo que o último deles chegou no valor de função objetivo por volta de 6.77402e-45, contra 1.13687e-17 e 6.66647e-20 dos dois primeiros respectivamente.

Os dois testes que utilizam o mecanismo de extensão tanto para linha quanto para caixa obtiveram o melhor resultado. Apesar de ambos utilizarem o mesmo mecanismo de mutação baseado em números aleatórios a partir de uma distribuição gaussiana, Real_Box_Extended_0.50 obteve resultados muito melhores.

Os resultados de testes ilustrados na Figura 11 foram obtidos a partir das mesmas configurações do algoritmo evolutivo dos testes anteriores, exceto o mecanismo de seleção. Anteriormente, o mecanismo de seleção havia sido configurado para utilizar apenas a população elite e dos filhos e agora também é utilizada a população de pais.

É possível ver que os testes Real_Box e Real_Line continuam apresentando os piores resultados e que o melhor resultado não é mais obtido pelo teste Real_Box_Extended_0.50. A inclusão da população de pais na seleção de indivíduos impôs um ritmo mais lento de convergência em todos os testes. Com isso para o teste Real_Box_Extended_0.50 que havia atingido valor de função objetiva de aproximadamente 6.77402e-45 no teste anterior, e agora chegou apenas em 6.62624e-17.

O teste StringBinaria_CutPoint_BitFlipping obteve o melhor resultado entre os 5 testes com o mesmo valor de função objetivo, 1.13687e-17. No teste anterior esse valor foi atingido na iteração 314 e no testes atual foi na iteração 417. Apesar da lentidão na convergência é curioso observar que os valores de convergência foram os mesmos para todas as execuções realizadas utilizando a representação de cromossomo do tipo string binária .

Foram realizados testes para investigar o mecanismo de recombinação utilizado em cromossomo do tipo string binária variando o número de pontos de corte. Os resultados feitos a partir de testes que utilizaram 2, 4, 8 e 16 pontos de corte não apresentam variações expressivas, Anexo 8.4. O valor de função objetivo de aproximadamente 1.13687e-17 encontrado em todos os testes é o menor valor possível dada a limitação imposta pela discretização de 31-bits, Capitulo 5.8.

Figura 11 – Convergência de testes utlilizando a função sphere com 2 variáveis

Nas Figuras Figura 12 e Figura 13 foram ilustrados os resultados dos testes utilizando cromossomo do tipo Real-Coded, o mecanismo de seleção considera apenas a população elite e dos filhos. Foram utilizadas as funções multimodais Schwefel, Rosenbrock, Zakharov, Griewank e Sphere.

13

Caderno de Atividades – Laboratório de Engenharia Virtual

Figura 12 – Convergência do valor da função objetivo para funções de teste com 2 variáveis

Os resultados ilustrados na Figura 12 foram extraídos a partir de funções de teste com duas variáveis. Para esses testes apenas nos testes da função Schewfel que a região do ótimo global não foi atingida. Em todas as execuções utilizando as funções Rosenbrock, Zakharov, Griewank e Sphere a região do ótimo global foi atingida.

Figura 13 – Convergência do valor da função objetivo para funções de teste com 4 variáveis

Os resultados ilustrados na Figura 13 foram extraídos a partir de funções de teste com quatro variáveis. O Algoritmo Evolutivo não convergiu para a região do ótimo global para o testes que foi

14

Caderno de Atividades – Laboratório de Engenharia Virtual

utilizada a função shwefel com dimensão 4. Entretanto, das três execuções realizadas duas delas chegaram na região do ótimo global.

5. Discussão e problemas encontrados

5.1 Decisão de implementação Neste trabalho foi realizado inicialmente um estudo para diferentes tipos de Algoritmos

Evolutivos. Ocorre que que o contraste esses tipos de meta-heurísticas se justifica apenas pela diferença dos operadores genéticos, da forma genotípica de representação e da estratégia utilizada no processo de seleção. Assim, optou-se por investir no estudo de cada um desse elementos separadamente. O resultado do estudo seguindo essa abordagem possibilitou a implementação de apenas um Algoritmo Evolutivo que contempla as funcionalidades de muitas de suas variações. Essas funcionalidades podem ser consideradas ou desconsideradas de forma parametrizada o que possibilita simular as meta-heurísticas AG, EE e EA.

5.2 Problemas framework - Recombinação de string binaria Na fase de teste foi encontrado um problema no operador de recombinação que utiliza

representação de string binaria . Essa funcionalidade já estava implementada no antigo algoritmo genético do framework. O problema ocorria no momento de geração de índices aleatórios que compõem a lista de pontos de corte utilizados para realizar o cruzamento entre dois indivíduos. Ocorre que quando eram gerados dois pontos de corte aleatórios de mesmo valor um desses índices ficava redundante. Nesses casos, a quantidade de pontos de corte da lista ficava inferior ao esperado. Para corrigir isso, foi implementado um mecanismo que identifica essa situação e gera novos índices de forma pseudoaleatória.

5.3 Problemas framework - codificação/decodificação da string binária Outro problema também estava relacionado com a ordenação da string binaria. A função

Individual::GetBinaryString() organiza os bits mais significativos à esquerda e a função Cromossome::CrossOver() considerava os bits mais significativos a direita. Isso foi corrigido.

5.4 Decisão de projeto – Redução de escopo e estudo futuro Depois de estudo realizado para entender como funciona o mecanismo de seleção uma

dúvida persistiu até a fase de implementação. Ocorre que: a) O mecanismo de seleção da iteração t é utilizado para criar uma população P(t+1) de

indivíduos que sobrevivem para uma próxima iteração. b) P(t+1) é utilizada pelo mecanismo de recombinação da iteração (t+1). c) Indivíduos mais bem adaptados, tem vantagem sobre os demais, e podem cruzar mais

vezes. Considerando que o mecanismo de seleção o mecanismo de recombinação de b) utiliza a

população selecionada em a) não deveria existir razão para realizar novamente uma seleção de escolha de indivíduos para recombinação. Considerando c), é permitido que a população P(t+1) tenha indivíduos repetidos. A duplicidade de indivíduos na população P(t+1) é um ponto a ser esclarecido.

O entendimento desses assuntos apontam para a necessidade de um estudo mais apurado para entender o mecanismo de seleção tanto para a escolha a partir das listas de pais, filhos e elite quanto utilizado como critério de Recombinação de indivíduos.

A dúvida entre a possibilidade de duplicidade ou não de indivíduos na população P(t+1) tem consequências relevantes do ponto de vista de implementação. Por conta dessa falta de

15

Caderno de Atividades – Laboratório de Engenharia Virtual

entendimento, optou-se por utilizar o mecanismo de seleção baseado em loteria que está implementado no framework atualmente.

5.5 Framework - Melhoria I (mutação x tipo de cromossomo) Este trabalho explora dois tipos de mutação, um baseado na alteração de um bit do

cromossomo que foi denominado BitFlipping e outra baseado na geração de números aleatórios a partir de uma distribuição gaussiana. A implementação atual de mutação BitFlipping pode ser utilizada apenas em cromossomos com representação do tipo string binária . Analogamente a operação de mutação que utiliza distribuição gaussiana só pode ser utilizada em cromossomos com representação do tipo Real-Coded.

Apesar deste trabalho não ter coberto todas essas possibilidades, parece interessante que em trabalhos futuros possa ser explorado o comportamento de operadores de mutação do tipo BitFlipping atuando em cromossomos com representação do tipo Real-Coded e operadores de mutação baseados em distribuição gaussiana atuando em cromossomos com representação do tipo string binária .

5.6 Framework – Melhoria II (quantidade de avaliações) Atualmente o framework de otimização do LEV registra alguns indicadores em arquivos de

saída no formato de texto. Os indicadores contribuem para que o pesquisador realize uma serie de análises a respeito do problema estudado ou do próprio framework. Alguns dos indicadores extraídos atualmente são: tempo de processamento total, tempo de processamento por iteração de uma meta-heurística, melhores valores de função objetivo por iteração, etc. Foi aproveitada a ocasião deste trabalho para realizar a implementação de um novo indicador, a contagem da quantidade de funções objetivo avaliadas por iteração.

5.7 Decisão de implementação – Correção de problemas encontrados em artigo

Nos testes iniciais da operação de recombinação utilizando caixa estendida, item (b) da Figura 18, foi observado um problema sério de convergência. Foi identificado um aspecto curioso na terceira expressão dentro do laço de repetição, onde é feita a atribuição da variável de projeto i utilizando a geração de um variável aleatória. A expressão sugerida em (Yoon e Yong-Hyuk 2012, 67) sempre considera todo o espaço de busca delimitados pelos valores de máximo e mínimo à cada variável de projeto. Foi realizada uma substituição da expressão para: .7 = V SVO��N SUV� OTN�US 7O �UN, U��;

Depois da alteração os resultados melhoraram expressivamente.

5.8 Framework – Melhoria III (limites da string binári a) Na fase de análise de resultados deste trabalho foi identificada uma limitação para os valores

de função objetivo quando foi utilizada a representação genotípica string binaria . Nesses testes foi estabelecido que as variáveis de projeto fossem limitadas à −�. �c ≤ �7 ≤ �. �c, e imposto à string binaria uma discretização de 31 bits.

Com essa configuração o valor mínimo associado à �7 foi -2.38419e-009 o que limita o valor da função objetivo à 1.13687e-017. Utilizando a discretização de 31-bits a precisão é aproximadamente -4.76838e-009. É necessário portanto avaliar a necessidade de aumentar a quantidade de bits para a representação de cromossomos do tipo string binaria que hoje está limitada em 31 bits.

16

Caderno de Atividades – Laboratório de Engenharia Virtual

6. Conclusões Neste trabalho foi realizado o estudo de um método de melhoria iterativa de uma população

de soluções (Talbi 2009) que pode ser observado na resolução de difíceis problemas de otimização (Back, Fogel e Michalewicz 1997), a meta-heurística populacional conhecida por Algoritmo Evolutivo. Foi utilizado um modo mais formal para a definição desse metodo (Back 1995).

Algumas características importantes dessa desse tipo de meta-heurística foram analisadas. Entre elas foram estudados dois tipos de representações para definir um cromossomo, string binária , Real-Coded (Back, Fogel e Michalewicz 2000) e operadores genéticos compatíveis com o genótipo Real-Coded (Yoon e Yong-Hyuk 2012). Também foi estudado o comportamento da estratégia de seleção baseada em loteria para uma população �, de pais, e/ou uma população �, de filhos, considerando uma lista Elite de indivíduos.

A implementação do Algoritmo Evolutivo foi realizada na estrutura de classes do framework de otimização do LEV. Com isso foi possível utilizar um conjunto de funções de teste já implementadas no próprio framework, além de aproveitar os recursos para a obtenção dos resultados por meio de arquivos em um padrão esperado. Essas funções de teste tem características multimodais e foram utilizadas nas dimensões de uma, duas e quatro variáveis. As funções de teste utilizadas foram: [��� = � 9�� ���, e as funções multimodais Schwefel, Rosenbrock, Zakharov, Griewank e Sphere (Surjanovic 2015).

Na fase de testes foi possível perceber uma limitação de dois mecanismo de recombinação que geram indivíduos restritos ao espaço de uma caixa(a) ou limitados à posição de um segmento de reta(c), Figura 5. Nos testes, identificados com Real_Box e Real_Line, Figuras Figura 8, Figura 10 e Figura 11, foram observadas convergências prematuras limitando seus resultados à regiões de ótimos locais. Uma evidência interessante para esses casos foi que a população apresentava indivíduos muito semelhantes nos momentos que precedem a convergência. Esse é um comportamento esperado quando as distancias entre os indivíduos é cada vez menor, o que limita o espaço da caixa e o comprimento da linha, itens (a) e (b) da Figura 5, e analise do pseudocódigo a) e c) do método de recombinação utilizados, Anexo 8.1.

Foram realizados testes para investigar o mecanismo de recombinação utilizado em cromossomo do tipo string binária variando o número de pontos de corte em 2, 4, 8 e 16, Anexo 8.4. Nesses testes foi utilizada a função objetivo sphere com variáveis de projeto limitadas à −�. �c ≤ �7 ≤ �. �c, e definido o uso de uma string binaria com discretização de 31 bits. O valor de função objetivo de aproximadamente 1.13687e-17 encontrado em todos os testes é o menor valor possível dada a limitação imposta pela discretização de 31-bits, Capitulo 5.8.

De todos os testes realizados para cromossomo do tipo Real-Coded aqueles que utilizaram o mecanismo de recombinação baseado em caixa estendida (b) e linha estendida (d), Figura 5, obtiveram os melhores resultados. De todos os testes realizados com esses operadores, intitulados Real_Line_Extended_0.50 e Real_Box_Extended_0.50, apenas nos testes da função Schewfel que a região do ótimo global não foi atingida. O tipo de configuração Real_Line_Extended_0.50 foi testado para a função � 9�� ��� e sphere enquanto que o tipo de configuração Real_Box_Extended_0.50 foi testada para as funções � 9�� ���, Schewfel, Rosenbrock, Zakharov, Griewank e Sphere.

Foi identificado uma diminuição de performance para todos os tipos de configurações de testes quando o mecanismo de seleção foi configurado para utilizar a população elite, dos filhos e de pais, Figura 11. A melhor performance ocorreu quando o mecanismo de seleção foi configurado para utilizar apenas as populações elite e de filhos.

Algumas sugestões para trabalhos futuros podem ser: a) O estudo para a inclusão de um mecanismo de ajuste dinâmico das taxas de mutação e recombinação no framework de otimização do LEV; b) Novos tipos de representações de cromossomos, e operadores de mutação e de recombinação para Algoritmos Evolutivos. c) uma análise no comportamento do Algoritmo

17

Caderno de Atividades – Laboratório de Engenharia Virtual

Evolutivo considerando o mecanismo de recombinação desabilitado e o mecanismo de mutação habilitado com alta taxa de ocorrência;

7. Referências

Back, Thomas. Evolutionary Algorithms in Theory and Practice : Evolution Strategies, Evolutionary Programming, Genetic Algorithms. New York: Oxford University Press, 1995.

Back, Thomas, D B Fogel, e Z Michalewicz. Evolutionary Computation 1: Basic Algorithms and Operators. CRC Press, 2000.

—. Handbook of Evolutionary Computation. Taylor & Francis, 1997. Júnior, Álvaro Rodrigues Pereira, Maria Freitas Almeida, e Wilian Soares Lacerda. “GERAÇÃO

DE NÚMEROS ALEATÓRIOS.” Sinergia, 2002: 154-161. MSPC. MSPC - Informações Técnicas. 01 de 12 de 2007.

http://www.mspc.eng.br/matm/prob_est240.shtml. Surjanovic, S. & Bingham, D. Virtual Library of Simulation Experiments: Test Functions and

Datasets. 4 de Novembro de 2015. http://www.sfu.ca/~ssurjano (acesso em 4 de Novembro de 2015).

Talbi, El-Ghazali. Metaheuristics: From Design to Implementation. New Jersey: John Wiley & Sons, 2009.

Yoon, Yourim, e Kim Yong-Hyuk. “The Roles of Crossover and Mutation in Real-Coded Genetic.” Em The Roles of Crossover and Mutation in Real-Coded Genetic, Bio-Inspired Computational Algorithms and Their Applications, por Dr. Shangce Gao, 65-69. Rijeka: InTech Europe, 2012.

18

Caderno de Atividades – Laboratório de Engenharia Virtual

8. Anexo

8.1 Tipos de Recombinação

Figura 14 – Quatro tipos de recombinação para Cromossomos do tipo Real-Coded

19

Caderno de Atividades – Laboratório de Engenharia Virtual

8.2 Mutação para Cromossomo Real-Coded

Figura 15 – Dois tipos de mutação para Cromossomos do tipo Real-Coded

8.3 Arquivo de configuração utilizado Arquivo de configuração utilizado para o Algoritmos Evolutivos no Framework de Otimização

do LEV:

Figura 16 – Arquivo de configuração do Algoritmo Evolutivo no framework do LEV

20

Caderno de Atividades – Laboratório de Engenharia Virtual

8.4 Recombinação para Cromossomo - String Binária Foram realizados alguns testes para verificar a o comportamento do mecanismo de

recombinação utilizando a representação de string binaria de Cromossomo.

Figura 17 – Convergência de testes utlilizando a função sphere com 2 variáveis

8.5 Recombinação para Cromossomo - Real Foram realizados alguns testes para verificar a o comportamento do mecanismo de

recombinação baseado nos limites Box e Line utilizando a representação de Cromossomo do tipo Real. Os resultados abaixo:

Figura 18 – Convergências de xsen(x) para Cromossomos do tipo Real-Coded