• Nenhum resultado encontrado

CA 2016/005 Versão 001 Novas funções de teste implementadas no Framework de otimização do LEV, versão

N/A
N/A
Protected

Academic year: 2021

Share "CA 2016/005 Versão 001 Novas funções de teste implementadas no Framework de otimização do LEV, versão"

Copied!
15
0
0

Texto

(1)

CA 2016/005 – Versão 001 – Novas funções de teste implementadas no

Framework de otimização do LEV, versão 2016-03-11

Carlos Alberto da Silva Junior, Wakim Boulos Saba e Angelo Passaro Palavra chave: Framework de otimização, funções de teste.

1 - Objetivo

Ampliar a rol de funções de testes que estão disponíveis para utilização no framework do LEV. Com isso, um número maior de funções estará em funcionamento, podendo ser utilizadas nos mais diversos testes. Serão feitos testes, comparando os resultados obtidos com o framework e com o Excel, para a validação das classes implementadas.

2 - Justificativa

Novas funções são necessárias para ampliar os testes para avaliar o algoritmo STO. Sendo assim, novas funções foram introduzidas no framework de otimização do LEV, possibilitando uma maior agilidade na obtenção dos resultados.

3 - Datas

Março de 2016.

4 - Procedimentos, comentários e resultados obtidos

Para avaliar algoritmos de otimização são utilizadas funções, denominadas de funções de testes ou funções de avaliação, com extremos conhecidos e comportamento bem estabelecido. Um conjunto dessas funções podem ser obtidas na literatura [1]. Aqui, nesse caderno de atividade, são apresentadas algumas dessas funções que foram implementadas na classe directmodel do framework de otimização do LEV, na versão 2016-03-11 do framework. São apresentas as equações de cada uma das funções, o seu gráfico, dimensão, domínio de estudo e uma referência. Também foram efetuadas as correções de implementação nas funções de testes apontadas em [7].

Os resultados obtidos com o framework, para as novas classes, são comparados com resultados obtidos pelo Excel para uma validação da mesma. É apresentada uma discussão dos resultados obtidos e, em anexo, encontram-se todos os resultados obtidos e os cálculos gerais.

Para validação da classe implementada serão geradas pelo framework de otimização do LEV, uma população inicial de 100 estrelas, pelo método Black Hole (BH), com três dimensões diferentes (02, 10 𝑒 30), para cada uma das funções de testes implementadas, quando a função for 𝑛-dimensional.

Com as soluções geradas, foi feito o cálculo de valor da função objetivo, para a mesma função de teste, pelo software Excel. Com isso, o erro absoluto e o erro relativo entre os valores obtidos pelas funções objetivos serão calculados, bem como os desvios padrões. Se o erro relativo for baixo, as funções de teste poderão ser utilizadas normalmente a partir de então.

Para implementar uma nova função de teste no framework, foi necessário seguir os seguintes passos:

1. Criar a classe “nomedaclasse” em directmodel (.cpp e .h). 2. No arquivo directmodel.cpp foi necessário incluir o

#include “nomedaclasse.h”;

3. Ainda no arquivo directmodel.cpp foi necessário incluir na lista do switch o nome da função, como a seguir

(2)

return new Nomedaclasse();

4. No arquivo commondefines.h foi necessário incluir o nome da classe em três funções diferentes:

 Na função enum BenchmarckFunctionType, onde é acrescentado o nome

NOMEDACLASSE,

 Na função inlineBenchmarckFunctionType, onde é acrescentado o comando

else if (std::string(pcValue) == std::string("NOMEDACLASSE")) return NOMEDACLASSE;

 Também é preciso incluir o nome da classe no switch da função

inline const char* BENCHMARKFUNCTIONTYPE2STRING(BenchmarckFunctionType eValue), como a seguir:

caseNOMEDACLASSE:

return “NOMEDACLASSE”;

5. Por fim, foi necessário acrescentar a classe o projeto ssk.

Feito isso, foi necessário acrescentar o nome da função (dado pelo NOMEDACLASSE) na lista das funções de teste do XML de configuração. A lista das novas funções implementadas/corrigidas e testadas no framework são:

Nome Seção

Alpine 𝑁° 2 4.1

AMGM 4.2

Dixon & Price 4.3

Salomon 4.4 Schwefel 𝑁° 2.22 4.5 Trid 4.6 Beale 4.7 Michalewicz 4.8 Schaffer 1 4.9 Schaffer 2 4.10 Schaffer 3 4.11 Schaffer 4 4.12 Schaffer 5 4.13 Schaffer 6 4.14 Six-Hump Camel 4.15 Zakharov 4.16 Rana 4.17

Cada uma dessas funções é apresentada a seguir. 4.1 – A função de Alpine 𝑵° 𝟐

A função de Alpine 𝑁° 2 é uma função 𝑛-dimensional, multimodal, cujo gráfico em duas dimensões é dado por

Gráfico gerado pelo programa Grapher 9 (32bits)

(3)

𝑓(𝑿) = 𝑓(𝑥1, 𝑥2, … , 𝑥𝑛) = ∏ √𝑥𝑖 ∗ sin(𝑥𝑖) 𝑛

𝑖=1

com domínio de estudo no intervalo [0.0, 10.0]𝑛. Nestas condições, para cada dimensão o valor de mínimo global é dado em 𝑿∗ = (7.917, 7.917, … ,7.917).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 8.63𝐸 − 06 1.06E − 05 1.37E − 06 2.03E − 06

10 2.36𝐸 − 02 1.35𝐸 − 02 7.74𝐸 − 07 4.44𝐸 − 07

30 4.47𝐸 + 07 1.78𝐸 + 03 1.58𝐸 − 06 6.29𝐸 − 11

O erro relativo médio, obtidos para as três dimensões, são mínimos e com um valor residual de desvio padrão. Portanto, a implementação da função Alpine 𝑁° 2 está apresentando resultados coerentes e confiáveis. Uma referência para a função Alpine 𝑁° 2 é apresentada no trabalho [9]. 4.2 – A função AMGM

A função AMGM (Arithmetic Mean - Geometric Mean) é uma função 𝑛-dimensional e possui infinitas soluções globais (todo ponto da forma 𝑥1 = 𝑥2 = ⋯ = 𝑥𝑛 é uma solução do

problema). Sua representação gráfica bidimensional é apresentada a seguir.

Gráfico gerado pelo programa Grapher 9 (32bits)

A função AMGM é dada pela expressão

𝑓(𝑿) = 𝑓(𝑥1, 𝑥2, … , 𝑥𝑛) = (1 𝑛(∑ 𝑥𝑖 𝑛 𝑖=1 ) − √∏ 𝑥𝑖 𝑛 𝑖=1 𝑛 ) 2

e no domínio [0.0, 10.0]𝑛 a função possui valor mínimo global de 𝑓(𝒙∗) = 0, sendo 𝒙∗ qualquer

ponto da forma

(4)

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.17𝐸 − 06 7.45E − 06 8.65E − 06 1.34E − 05

10 2.02𝐸 − 06 1.92𝐸 − 01 1.66𝐸 − 06 1.19𝐸 − 06

30 1.85𝐸 − 06 1.57𝐸 − 06 1.18𝐸 − 06 1.01𝐸 − 06

O erro relativo médio, para as três dimensões em estudo, foi baixo, com um baixo valor de desvio padrão. Portanto, a implementação da função AMGM está apresentando resultados coerentes e confiáveis. Uma referência para essa função é [2].

4.3 – A função Dixon & Price

A função Dixon & Price é uma função 𝑛-dimensional, multimodal, cujo gráfico em duas dimensões é dado por

Gráfico gerado pelo programa Grapher 9 (32bits)

A função Dixon & Price é dada pela expressão

𝑓(𝑿) = 𝑓(𝑥1, 𝑥2, … , 𝑥𝑛) = (𝑥1− 1)2+ ∑ 𝑖(2𝑥𝑖2 − 𝑥𝑖−1)2 𝑛

𝑖=2

e no domínio [−10.0, 10.0]𝑛 a função possui um único mínimo global de valor 𝑓(𝒙∗) = 0, sendo 𝒙∗ = (𝑥1, 𝑥2, … , 𝑥𝑛), 𝑠𝑒𝑛𝑑𝑜 𝑥𝑖 = 𝑓 (2

2𝑖 − 2 2𝑖 ) , ∀ 𝑖.

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.15𝐸 − 02 3.30E − 02 2.50E − 06 2.58E − 06

10 4.03𝐸 − 01 2.92𝐸 − 01 1.03𝐸 − 06 7.12𝐸 − 07

30 2.70𝐸 + 00 1.79𝐸 + 00 7.97𝐸 − 07 5.82𝐸 − 07

Para as três dimensões, o erro relativo médio apresentado é baixo, com um baixo valor de desvio padrão. Portanto, a implementação da função Dixon & Price está apresentando resultados coerentes e confiáveis. O trabalho original onde é apresentada a função Dixon & Price é apresentada em [3].

(5)

4.4 – A função Salomon

A função Salomon é uma função 𝑛-dimensional, multimodal, cujo gráfico em duas dimensões é dado por

Gráfico gerado pelo programa Grapher 9 (32bits)

A função Salomon é dada pela expressão

𝑓(𝑿) = 𝑓(𝑥1, 𝑥2, … , 𝑥𝑛) = 1 − cos (2 ∗ 𝜋 ∗ √∑ 𝑥𝑖2 𝑛 𝑖=1 ) + 0.1 ∗ √∑ 𝑥𝑖2 𝑛 𝑖=2

e no domínio [−100.0, 100.0]𝑛 a função possui um único valor mínimo global de 𝑓(𝟎) = 0, sendo

𝟎 = (0, 0, … , 0).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 1.02𝐸 − 04 8.31E − 05 1.37E − 05 1.46E − 05

10 9.69𝐸 − 05 7.89𝐸 − 05 5.04𝐸 − 06 4.09𝐸 − 06

30 9.77𝐸 − 05 8.13𝐸 − 05 3.04𝐸 − 06 2.57𝐸 − 06

O erro relativo médio apresentado foi baixo, com um baixo valor de desvio padrão, para os três casos em estudo. Portanto, a implementação da função Salomon está apresentando resultados coerentes e confiáveis. Uma citação para a função Salomon é apresentada em [4].

4.5 – A função Schwefel 𝟐. 𝟐𝟐

A função Schwefel 2.22 é uma função 𝑛-dimensional, monomodal, cujo gráfico em duas dimensões é dado por

(6)

A função Schwefel 2.22 é dada pela expressão 𝑓(𝑿) = 𝑓(𝑥1, 𝑥2, … , 𝑥𝑛) = ∑|𝑥𝑖| 𝑛 𝑖=1 + ∏|𝑥𝑖| 𝑛 𝑖=1 ,

e no domínio [−100.0, 100.0]𝑛 a função possui um único valor mínimo global de 𝑓(𝟎) = 0, sendo

𝟎 = (0, 0, … , 0).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.42𝐸 − 03 2.30E − 03 1.19E − 06 1.14E − 06

10 1.12𝐸 + 11 2.88𝐸 + 11 2.28𝐸 − 06 1.74𝐸 − 06

30 1.10𝐸 + 44 4.11𝐸 + 44 4.21𝐸 − 06 2.90𝐸 − 06

O erro relativo médio apresentado foi baixo, com um baixo valor de desvio padrão, para os três casos em estudo. Portanto, a implementação da função Schwefel 2.22 está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [5].

Aqui é importante ressaltar que houve problema de conflito com o nome da função

Schwefel, após a implementação da função Schwefel 2.22. Ao incluir a função Schwefel 2.22 como função de teste, o resultado retornado pelo framework era o calculado pela função Schwefel, o que causou estranheza. Depois de várias tentativas de encontrar o problema, o mesmo só foi solucionado quando alterado o nome da classe das funções. Dessa forma, a função Schwefel passou a ser chamada de Schwefel N 2.26 e a função Schwefel 2.22 passou a ser chamada de Schwefel N 2.22.

Foi feito um teste para verificar os resultados obtidos para a função de Schwefel N 2.26, depois da renomeação da casse. Tanto o erro absoluto médio, quando o erro relativo médio foram similares (mesma ordem de grandeza) aos obtidos na Validação apresentada no CA 2016/004 [7], como apresentado na Tabela 01.

Tabela 01: Dados comparativos para a função de Schwefel, antes de depois de mudança de nome na classe Resultados obtidos antes da mudança do nome na classe da função Schwefel

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.16𝐸 − 03 1.84E − 03 2.89E − 06 2.73E − 06

10 2.52𝐸 − 03 1.54𝐸 − 03 6.01𝐸 − 07 3.66𝐸 − 07

30 2.63𝐸 − 02 1.48𝐸 − 02 2.09𝐸 − 06 1.18𝐸 − 06 Resultados obtidos depois da mudança do nome na classe da função Schwefel 𝑵 𝟐. 𝟐𝟐

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.03𝐸 − 03 1.69E − 03 2.50E − 06 1.91E − 06

10 4.60𝐸 − 03 3.97𝐸 − 03 1.15𝐸 − 06 1.10𝐸 − 06

30 2.53𝐸 − 02 1.68𝐸 − 02 2.00𝐸 − 06 1.31𝐸 − 06

Logo, não houve mudança nos resultados obtidos pelo framework com a alteração do nome da classe da função schwefel para schwefel_n2_22. Uma referência para a função é dada em [5].

(7)

4.6 – A função Trid

A função de Trid é uma função 𝑛-dimensional, monomodal, cujo gráfico em duas dimensões é dado por

Gráfico gerado pelo programa Grapher 9 (32bits)

A função Trid é dada pela expressão

𝑓(𝑿) = 𝑓(𝑥1, 𝑥2, … , 𝑥𝑛) = ∑(𝑥𝑖 − 1)2 𝑛 𝑖=1 − ∑ 𝑥𝑖𝑥𝑖−1 𝑛 𝑖=2 .

O domínio em estudo da função é da forma [−𝑛2, 𝑛2]𝑛 e, com isso, o valor mínimo da função é da forma

𝑓(𝒙∗) = −𝑛(𝑛 + 4)(𝑛 − 1)

6 , 𝑠𝑒𝑛𝑑𝑜 𝑥𝑖 = 𝑖(𝑛 + 1 − 𝑖), ∀𝑖. Por exemplo, para 𝑛 = 6, tem-se que 𝑓(𝒙∗) = −50, sendo

𝒙∗= (6, 10, 12, 12, 10, 6). Já para 𝑛 = 10, tem-se que 𝑓(𝒙∗) = −210, sendo

𝒙∗ = (10, 18, 24, 28, 30, 30, 28, 24, 18, 10).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.08𝐸 − 05 2.46E − 05 1.12E − 06 6.97E − 06

10 2.98𝐸 − 02 1.88𝐸 − 02 1.05𝐸 − 06 7.57𝐸 − 07

30 5.81𝐸 + 00 9.20𝐸 + 00 6.31𝐸 − 07 8.37𝐸 − 07

O erro relativo médio apresentado foi baixo, com um baixo valor de desvio padrão, para os três casos em estudo. Portanto, a implementação da função Trid está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [6]. O trabalho onde a função foi definida ainda não foi localizado, e por isso, será preciso acrescentar o mesmo no futuro ao caderno de atividade.

(8)

4.7 – A função Beale

A função de Beale foi descrita no CA 2016/004 [7]. Naquele caderno de atividade foi apresentado um erro na implementação da mesma. As variáveis foram declaradas não por seu valor, mas pela quantidade. Depois da correção, os resultados obtidos pelo framework, comparados com os obtidos pelos Excel, apresentaram as seguintes informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 4.71𝐸 − 02 1.11E − 01 6.55E − 06 9.12E − 06

Pode-se observar que o erro relativo médio apresentado agora foi baixo, e também com um baixo valor de desvio padrão. Portanto, a implementação da função Beale está apresentando resultados coerentes e confiáveis.

4.8 – A função de Michalewicz

A função de Michalewicz foi descrita no CA 2016/004 [7]. Naquele caderno de atividade foi apresentado um erro na implementação da mesma. As variáveis foram declaradas não por seu valor, mas pela quantidade. Depois da correção, os resultados obtidos pelo framework, comparados com os obtidos pelos Excel, apresentaram as seguintes informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.76𝐸 − 06 5.14E − 06 1.10E − 04 2.30E − 04

10 3.43𝐸 − 05 3.35E − 05 4.80E − 05 7.79E − 05

30 1.88𝐸 − 04 1.60E − 04 6.01E − 05 4.91E − 05

Pode-se observar que o erro relativo médio apresentado agora foi baixo, e também com um baixo valor de desvio padrão. Portanto, a implementação da função Michalewicz está apresentando resultados coerentes e confiáveis.

4.9 – A função de Schaffer 𝟏

Conforme citado no CA 2016/004 [7], existem algumas variantes da função de Schaffer. Por isso, algumas dessas variantes serão implementadas a seguir. A nomenclatura sobre as variantes apresenta uma certa divergência, mas elas serão numeradas numa sequência de 1 a 6. A função de

Schaffer 1 é uma função bidimensional, multimodal, cujo gráfico é dado por:

(9)

A função Schaffer 1 é dada pela expressão 𝑓(𝑥, 𝑦) = 0.5 + 𝑠𝑖𝑛

2(√𝑥2 + 𝑦2) − 0.5

1 + 0.001 ∗ (𝑥2+ 𝑦2)2.

O domínio de estudo da função é [−100, 100]2 e, com isso, o valor mínimo da função é o valor 𝑓(𝒙∗) = 0, para 𝒙= (0, 0).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.45𝐸 − 07 1.39E − 07 4.92E − 07 2.81E − 07

Os erros médios obtidos para essa função foram baixos, e também com baixo valor de desvio padrão. Portanto, a implementação da função Schaffer 1 está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [1].

4.10 – A função de Schaffer 𝟐

A função de Schaffer 2 foi descrita no CA 2016/004 [7]. Naquele caderno de atividade foi apresentado um erro na sua implementação. A equação da função estava escrita incorretamente. Depois da correção, os resultados obtidos pelo framework, comparados com os obtidos pelos Excel, apresentaram as seguintes informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 4.58𝐸 − 07 6.96E − 07 9.19E − 07 1.40E − 06

Pode-se observar que o valor do erro relativo médio apresentado agora foi baixo, e com um baixo valor de desvio padrão. Portanto, a implementação da função Schaffer 𝑁° 2 está apresentando resultados coerentes e confiáveis.

Da mesma forma que ocorrido com a classe da função Schwefel, devido a implementação das novas variações da função de Schaffer, os arquivos schaffer_n2.cpp e schaffer_n2.h foram renomeadas para schaffer_n_2.cpp e schaffer_n_2.h. Os novos testes apresentaram os seguintes erros:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 6.37𝐸 − 07 2.41E − 06 1.28E − 06 4.72E − 06

Pode-se observar que os erros obtidos depois da renomeação da classe da função Schaffer 2 se mantiveram nas mesmas ordens de grandeza dos erros obtidos anteriormente. Portanto, não houve alteração dos resultados obtidos para a função de Schaffer 2, depois da renomeação da classe. 4.11 – A função de Schaffer 𝟑

A terceira variante da função de Schaffer, denominada de de Schaffer 3, também é uma função bidimensional, multimodal, cujo gráfico é dado por:

(10)

Gráfico gerado pelo programa Grapher 9 (32bits)

A função Schaffer 3 é dada pela expressão 𝑓(𝑥, 𝑦) = 0.5 +𝑠𝑖𝑛

2(cos|𝑥2− 𝑦2|) − 0.5

1 + 0.001 ∗ (𝑥2+ 𝑦2)2 .

O domínio de estudo da função é [−100.0, 100.0]2 e, com isso, o valor mínimo da função é o valor 𝑓(𝒙∗) = 0.00156685, para 𝒙∗ = (0, 1.253115).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 5.28𝐸 − 07 1.22E − 06 1.07E − 06 2.47E − 06

Os erros médios obtidos para essa função foram baixos, e também com baixos valores de desvio padrão. Portanto, a implementação da função Schaffer 3 está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [1].

4.12 – A função de Schaffer 𝟒

A quarta variante da função de Schaffer, denominada de de Schaffer 4, é a mesma citada (e não implementada) no CA 2016/004 [7], ou seja, é a função de Schaffer 2 com o argumento do seno elevado ao quadrado. Dessa forma, tem-se função bidimensional, multimodal, cujo gráfico é dado por:

(11)

A função Schaffer 4 é dada pela expressão 𝑓(𝑥, 𝑦) = 0.5 +𝑠𝑖𝑛

2((𝑥2− 𝑦2)2) − 0.5

1 + 0.001 ∗ (𝑥2+ 𝑦2)2.

O domínio de estudo da função é [−100.0, 100.0]2 e, com isso, o valor mínimo da função é o valor 𝑓(𝒙∗) = 0.0, para 𝒙∗= (0, 0).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 8.70𝐸 − 05 2.42E − 04 1.71E − 04 4.76E − 04

Os erros médios obtidos, para essa função, não foram tão baixos quanto os obtidos para outras funções. Contudo, o problema pode estar com o cálculo da função Seno pelo Excel. Para números muitos grades (maiores do que 1𝐸 + 09) a função Seno apresenta erro no software Excel. Logo, como os valores dos argumentos obtidos para as soluções geradas no domínio de estudo na função Schaffer 4 são altos, a imprecisão do cálculo da função Seno de ser a responsável por essa margem maior de erros médios. Portanto, a implementação da função Schaffer 4 está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [1].

4.13 – A função de Schaffer 𝟓

A quinta variante da função de Schaffer, denominada de de Schaffer 5, também é uma função bidimensional, multimodal, cujo gráfico é dado por:

Gráfico gerado pelo programa Grapher 9 (32bits)

A função Schaffer 5 é dada pela expressão 𝑓(𝑥, 𝑦) = 0.5 +𝑐𝑜𝑠

2(sen(𝑥2 − 𝑦2)) − 0.5

1 + 0.001 ∗ (𝑥2+ 𝑦2)2 .

O domínio de estudo da função é [−100, 100]2 e, com isso, o valor mínimo da função é o valor 𝑓(𝒙∗) = 0.292579, para 𝒙∗ = (0, 1.253115).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 3.94𝐸 − 07 9.50E − 07 7.90E − 07 1.90E − 06

(12)

Os erros médios obtidos para essa função foram baixos, e também com baixos valores de desvio padrão. Portanto, a implementação da função Schaffer 5 está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [1].

4.14 – A função de Schaffer 𝟔 (função de Schaffer Generalizada)

A última variante da função de Schaffer implementada, denominada de de Schaffer 6, é uma função 𝑛-dimensional, multimodal, cujo gráfico bidimensional é dado por:

Gráfico gerado pelo programa Grapher 9 (32bits)

A função Schaffer 6 implementada é dada pela expressão 𝑓(𝑥, 𝑦) = ∑ (0.5 + sen 2(√𝑥 𝑖2 + 𝑥𝑖+12) − 0.5 (1 + 0.001 ∗ (𝑥𝑖2+ 𝑥𝑖+12))2 ) 𝑛−1 𝑖=1 .

O domínio de estudo da função é [−100.0, 100.0]𝑛 e, com isso, o valor mínimo da função é o valor 𝑓(𝒙∗) = 0.0, para 𝒙∗= (0, 0, … , 0).

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 9.67𝐸 − 07 2.13E − 06 2.22E − 06 6.30E − 06

10 6.39𝐸 − 06 6.59E − 06 1.42E − 06 1.48E − 06

30 2.77𝐸 − 05 1.82E − 05 1.91E − 06 1.26E − 06

Os erros médios obtidos para essa função foram baixos, da mesma forma que os valores de desvio padrão. Portanto, a implementação da função Schaffer 6 está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [1].

4.15 – A função de Six-Hump Camel

A função de Six-Hump Camel foi descrita no CA 2016/004 [7]. Naquele caderno de atividade foi apresentado um erro na implementação da mesma. A equação da função estava escrita de forma incorreta. Depois da correção, os resultados obtidos pelo framework, comparados com os obtidos pelos Excel, apresentaram as seguintes informações:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 2.85𝐸 − 03 4.30E − 07 4.38E − 06 4.76E − 06

(13)

Pode-se observar que o erro relativo médio apresentado agora foi baixo, e com um baixo valor de desvio padrão. Portanto, a implementação da função Six-Hump Camel está apresentando resultados coerentes e confiáveis.

4.16 – A função de Zakharov

A função de Zakharov foi descrita no CA 2016/004 [7]. Naquele caderno de atividade foi apresentado um erro na implementação da mesma. A equação da função estava escrita de forma incorreta. Depois da correção, os resultados obtidos pelo framework, comparados com os obtidos pelos Excel, apresentaram as seguintes informações sobre os erros médios:

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 4.51𝐸 − 03 1.25E − 02 2.39E − 06 1.99E − 06

10 7.83𝐸 + 01 1.38E + 02 2.11E − 06 2.47E − 06

30 2.94𝐸 + 05 5.77E + 05 1.82E − 06 3.16E − 06

Pode-se observar que o erro relativo médio apresentado agora foi baixo, e com um baixo valor de desvio padrão. Portanto, a implementação da função Zakharov está apresentando resultados coerentes e confiáveis.

4.17 – A função de Rana

A função de Rana é uma função 𝑛-dimensional, multimodal, cujo gráfico bidimensional é dado por:

Gráfico gerado pelo programa Grapher 9 (32bits)

A função de Rana é dada pela expressão

𝑓(𝑥, 𝑦) = ∑[(𝑥𝑖+1+ 1)] cos(𝑡1) 𝑠𝑒𝑛(𝑡2) + 𝑛−1

𝑖=1

𝑥𝑖cos(𝑡2) 𝑠𝑒𝑛(𝑡1),

com 𝑡1 = √|𝑥𝑖+1− 𝑥𝑖 + 1| e 𝑡2 = √|𝑥𝑖+1+ 𝑥𝑖 + 1|. O domínio de estudo da função é [−500.0, 500.0]𝑛. Um estudo dos mínimos da função ainda não foram encontrados. Porém, existem

indícios que para duas dimensões o valor mínimo global da função é 𝑓(𝒙∗) = −511.73, para 𝒙∗ = (−488.6326, 512). Quando um estudo for encontrado, o mesmo será anexado ao referido caderno.

Dos resultados obtidos pelo framework, comparados com os obtidos pelos Excel, segue as principais informações sobre os erros médios:

(14)

Variáveis Erro Absoluto

Médio Desvio Padrão

Erro Relativo

Médio Desvio Padrão 02 3.39𝐸 − 03 4.03E − 03 1.62E − 05 1.35E − 04

10 1.13𝐸 − 02 1.14E − 02 1.34E − 04 1.27E − 03

30 3.06𝐸 − 02 2.56E − 02 6.20E − 07 1.45E − 03

Os erros médios obtidos para essa função foram baixos, da mesma forma que os valores de desvio padrão. Portanto, a implementação da função Rana está apresentando resultados coerentes e confiáveis. Uma citação para a função é apresentada em [8].

5 – Discussão e problemas encontrados

Várias novas funções de teste foram implementadas no framework de otimização. Além disso, foram corrigidos os erros na implementação das funções de testes apontados no CA 2016/004 [7], dentre elas destacam-se:

Foi corrigido o erro de implementação da função de Beale, erro esse apresentado no CA 2016/004 [7].

Foi corrigido o erro de implementação da função de Michalewicz, erro esse apresentado no CA 2016/004 [7].

Foi corrigido o erro de implementação da função de Schaffer 𝑁° 2, erro esse apresentado no CA 2016/004 [7].

Foi corrigido o erro de implementação da função de Six-Hump Camel, erro esse apresentado no CA 2016/004 [7].

Foi corrigido o erro de implementação da função de Zakharov, erro esse apresentado no CA 2016/004 [7].

As funções implementadas formam:

Alpine 𝑁° 2

AMGM

Dixon & Price Salomon Schwefel 𝑁° 2.22 Trid Schaffer 1 Schaffer 3 Schaffer 4 Schaffer 5 Schaffer 6 Rana

A implementação de uma nova função ficou simplificada, pois agora é necessário apenas acrescentar uma nova classe no directmodel do framework. Também é necessário acrescentar o nome das classes em dois arquivos do projeto, como descrito no início desse CA. O maior tempo gasto numa implementação está relacionado com a validação da função implementada e, principalmente, na pesquisa sobre a função, visto que encontrar a referência na qual a função está definida, com o estudo de suas raízes, pode não ser uma tarefa simples. Novas funções foram implementadas e testadas, ampliando as possibilidades de estudo com o framework de otimização.

(15)

6 – Conclusões

Um conjunto de doze novas funções foi implementado no framework de otimização do LEV. A implementação com o novo paradigma de implementação de funções de teste ficou simples, possibilitando uma implementação rápida. O maior tempo gasto foi relacionado com a pesquisa de referências sobre cada uma das funções implementadas, visto que informações sobre dimensões, raízes e mesmo das suas equações divergem nos papers da literatura. Alguns dos trabalhos onde as funções foram propostos não foram encontrados, mas as equações aqui propostas podem ser observadas nos trabalhos citados.

Referências

[1] M. Jamil and Xin-She Yang, “A Literature Survey of Benchmark Functions For Global Optimization Problems”, CoRR, 1308.4008, 2013.

[2] J. Michael Steele. 2004. “The Cauchy-Schwarz Master Class: An Introduction to the Art of Mathematical

Inequalities”. Cambridge University Press, New York, NY, USA.

[3] L. C. W. Dixon, R. C. Price, “The Truncated Newton Method for Sparse Unconstrained Optimisation Using

Automatic Differentiation”, Journal of Optimization Theory and Applications, vol. 60, no. 2, pp. 261-275, 1989.

[4] R. Salomon, “Re-evaluating Genetic Algorithm Performance Under Corodinate Rotation of Benchmark Functions:

A Survey of Some Theoretical and Practical Aspects of Genetic Algorithms”, BioSystems, vol. 39, no. 3, pp. 263-278,

1996.

[5] H. P. Schwefel, “Numerical Optimization for Computer Models”, John Wiley Sons, 1981.

[6] L. Özdamar and M. Demirhan, “Experiments with new stochastic global optimization search techniques”, Computers & Operations Research, Volume 27, Issue 9, August 2000, Pages 841-865, ISSN 0305-0548.

[7] CA 2016/004 - Validação das funções de teste no Framework de Otimização do LEV - Versão 2016-03-02.

[8] D. Whitley and S. Rana and J. Dzubera and K. E. Mathias, “Evaluating evolutionary algorithms”, Artificial Intelligence, Volume 85, Issues 1–2, August 1996, Pages 245-276, ISSN 0004-3702.

[9] M. Clerc, “The swarm and the queen: towards a deterministic and adaptive particle swarm

optimization,” Evolutionary Computation, 1999. CEC 99. Proceedings of the 1999 Congress on, Washington, DC,

Referências

Documentos relacionados

As principais informações sobre os erros absolutos e relativos, obtidos pelo framework e pelo Excel, são apresentadas na tabela a seguir.. Portanto, existe a necessidade

Pois o aluno surdo ao entrar numa escola regular, se depara com muitas dificuldades que não favorece a aquisição da sua Língua, a maioria das vezes chega sem

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Bom, eu penso que no contexto do livro ele traz muito do que é viver essa vida no sertão, e ele traz isso com muitos detalhes, que tanto as pessoas se juntam ao grupo para

O objetivo geral desta tese é analisar se o referencial de inclusão produtiva que orienta as políticas públicas para a agricultura familiar converge com as ideais e

Elaborou-se então, com o software Microsoft Excel, uma folha de cálculo em que partindo dos dados da matriz dos tempos de deslocação e dos dados relativos ao ano de

Algum tempo hesitei se devia abrir estas memórias pelo princípio ou pelo fim, isto é, se poria em primeiro lugar o meu nascimento ou a minha morte. Suposto o uso vulgar seja

Partindo deste princípio, e com experiência à frente dos proces- sos formativos na área de Informações e Registros em Saúde, o Labo- ratório de Educação Profissional