Discussão do artigo "Métodos de otimização da biblioteca Alglib (Parte II)" - página 4

 
Maxim Dmitrievsky #:

Estive olhando as figuras de teste aqui. As imagens correspondem.

Ainda não entendi o truque com as multidimensionais, preciso descobrir isso.

Este é o primeiro artigo da série. O pensamento não para, o conjunto de funções de teste foi alterado na direção da complicação e da contraposição a falsos sucessos de métodos e falsos positivos que são inicializados com zero. É por isso que você deve dar uma olhada em artigos recentes, como este, por exemplo.

Há sempre fontes atualizadas no github.

Teste de métodos de gradiente:

https://www.mql5.com/ru/forum/475597/page2#comment_55006029

GitHub - JQSakaJoo/Population-optimization-algorithms-MQL5: Population optimization algorithms
GitHub - JQSakaJoo/Population-optimization-algorithms-MQL5: Population optimization algorithms
  • JQSakaJoo
  • github.com
https://t.me/+vazsAAcney4zYmZi A list of implemented optimization algorithms (M - is a modified improved version, joo - is an algorithm of my development):
[Excluído]  
Andrey Dik #:

Este é o primeiro artigo da série. O pensamento não está parado, o conjunto de funções de teste foi alterado para torná-lo mais complicado e para neutralizar falsos sucessos de métodos que são inicializados com zero e, em geral, para neutralizar falsos positivos. É por isso que você deve dar uma olhada em artigos recentes, como este, por exemplo.

As fontes estão sempre atualizadas.

Estou vendo. Se houver tempo e desejo, farei o multidimensional.

No tridimensional já mostrei imagens que, mesmo com gradiente, ficam presas em localidades. Se você dividir o espaço de pesquisa em lotes, ele será corrigido. Essa é a maneira de trabalhar com solucionadores de gradiente e não há outra maneira.

[Excluído]  
Adicionada a função LBFGS de megacidade multivariada

Resultado para 1000 medições. Tempo desperdiçado do servidor - 9 minutos.

Parece não haver erros, feitos de acordo com os moldes do artigo.


[Excluído]  
Andrey Dik #:

Este é o primeiro artigo da série. O Thought não está parado, o conjunto de testes de funções foi alterado para torná-lo mais complexo e para combater os falsos sucessos dos métodos e os falsos positivos que são inicializados com zero. É por isso que você deve dar uma olhada nos artigos recentes, como este, por exemplo.

Há sempre fontes atualizadas no github.

Teste de métodos de gradiente:

https://www.mql5.com/ru/forum/475597/page2#comment_55006029

Há esse f-ya no includnik, ele é usado?

É o mesmo f-ya, como determinar os limites corretos? Entendi que uma parte dele é usada.

Se eu não tiver reduzido os limites, o cálculo (encontrar o máximo) será mais complicado?

//------------------------------------------------------------------------------
class C_Megacity : public C_Function
{
  public: //===================================================================
  C_Megacity ()
  {
    fuName = "Megacity";

    // limites da função
    xMinRange = -10.0; xMaxRange = -2;
    yMinRange = -10.5; yMaxRange = 10;

    //coordenadas máximas
    globalMaxFunValue = 1.0; //12.0
    xGlobalMax        = -3.1357545740179393;
    yGlobalMax        = 2.006136371058429;

    //coordenadas mínimas
    globalMinFunValue = 0.0; //-1
    xGlobalMin        = -9.5;
    yGlobalMin        = -7.5;
  }

  double Core (double x, double y)
  {
    double a = MathSin (MathSqrt (MathAbs (x - 1.13) + MathAbs (y - 2.0)));
    double b = MathCos (MathSqrt (MathAbs (MathSin (x))) + MathSqrt (MathAbs (MathSin (y - 2.0))));
    double f = a + b;

    double res = floor (MathPow (f, 4)) -
                 floor (2 * exp (-(pow (x + 9.5, 2) + pow (y + 7.5, 2)) / 0.4));

    return Scale (res, -1.0, 12.0, 0.0, 1.0);
  }
};
[Excluído]  
globalMaxFunValue = 1.0; //12.0

Para o caso de 25 dimensões encontrado. Não sei onde estão os erros.


 
Maxim Dmitrievsky #:

Se eu não reduzisse os limites, o cálculo (encontrar o máximo) seria mais difícil?

Não, não é mais complicado. Em sua função, quantos arranha-céus estão acima de 50% da função mínima e máxima? Quantos na minha? Em qual superfície é mais fácil ficar acima de 50% da altura se você espalhar os pontos aleatoriamente? - Seu. Portanto, para enfatizar novamente, os limites estão definidos incorretamente.

Aqui é dito sobre isso: https://www.mql5.com/pt/articles/13923#tag3

Obtive esse resultado com seu código:

Alguns resultados não tão divertidos, mas você persistentemente publica os melhores resultados de diferentes tentativas. Execute 20 tentativas (20 pressionamentos no botão play) ou escreva um loop que simule várias tentativas e, em seguida, calcule o resultado médio, como você faz nos artigos.

O que leva à pergunta: por que 100.000, por que não 1.000.000.000.000.000?


Não precisa ser tímido, coloque um bilhão, mas por algum motivo você não mostra o número de chamadas para a função de destino, quantas chamadas foram feitas? Nos testes de classificação, são permitidas apenas 10.000 chamadas à função de destino e, no caso de métodos de gradiente (em que o algoritmo pode tentar fazer muito mais chamadas à FF), há um corte no código; se o limite for excedido, o valor mínimo do destino será fornecido (os métodos estão procurando um mínimo, portanto, o valor é invertido):

// Aumento do contador de início de função e controle de restrições----------------
  numberLaunches++;
  if (numberLaunches >= maxNumbLaunchesAllowed)
  {
    fi.Set (0, DBL_MAX);
    CAlglib::MinNLCRequestTermination (state);
    return;
  }

Tudo isso foi descrito anteriormente nos artigos.

Популяционные алгоритмы оптимизации: Алгоритмы эволюционных стратегий (Evolution Strategies, (μ,λ)-ES и (μ+λ)-ES)
Популяционные алгоритмы оптимизации: Алгоритмы эволюционных стратегий (Evolution Strategies, (μ,λ)-ES и (μ+λ)-ES)
  • www.mql5.com
В этой статье будет рассмотрена группа алгоритмов оптимизации, известных как "Эволюционные стратегии" (Evolution Strategies или ES). Они являются одними из самых первых популяционных алгоритмов, использующих принципы эволюции для поиска оптимальных решений. Будут представлены изменения, внесенные в классические варианты ES, а также пересмотрена тестовая функция и методика стенда для алгоритмов.
[Excluído]  
Já foi perguntado como obter a mesma superfície. Isso não está no includnik. Quando a dimensionalidade do problema aumenta, o número de iterações aumenta, o que é natural. A comparação deve ser feita em termos de tempo de execução até a convergência para o mesmo máximo, se a tarefa for obter uma solução mágica para todos os casos da vida.
 
Maxim Dmitrievsky mágica para todos os casos.

A classe tem os métodos GetMinRangeX (), GetMaxRangeX (), GetMinRangeY (), GetMaxRangeY (), com a ajuda dos quais você pode consultar os limites (bem, e simplesmente no código das funções de teste correspondentes você pode ver os limites).

Na prática, sempre há um limite para o número máximo permitido de acessos ao alvo; nos testes, adotamos um limite de 10.000 acessos.

Se não houver limite em termos de recursos computacionais ou de tempo, é melhor não usar algoritmos de otimização e fazer uma enumeração completa simples, mas isso nunca acontece na vida real. O teste e a comparação de métodos são realizados em um limite de 10.000 ocorrências para o alvo. O objetivo da comparação de algoritmos é ver quais algoritmos obtêm o resultado melhor e com menos acesso ao alvo. Assim, quanto mais vezes um algoritmo precisar acessar o alvo para obter resultados comparáveis, mais fraco será o algoritmo no tipo de tarefa correspondente.

Infelizmente, pontos muito sutis, todos descritos em detalhes nos artigos sobre métodos de otimização, escapam de você.

[Excluído]  
Existe algum critério específico para avaliar a qualidade da otimização?) Se o algoritmo precisar de mais iterações, isso é ruim?

Comparar a velocidade de encontrar o ótimo com uma pesquisa completa é uma comparação normal.
 
Maxim Dmitrievsky #:
Comparar a velocidade de encontrar o melhor com uma pesquisa de força bruta completa é uma comparação normal.

Há situações em que a busca completa não encontrará o ponto ideal, porque os nós da grade de busca não se encontram nele.