Campeonato de Otimização de Algoritmos. - página 4

 
Dmitry Fedoseev:
Vejam o método universal exposto acima. E se uma chamada única através de um intermediário, isso exigiria uma adaptação muito séria da função de busca, isso é exatamente o que ninguém fará.
Não exagere. Existe uma solução. Pense em como você pode se livrar da chamada interna do FF a partir de sua biblioteca de algoritmos.
 
Andrey Dik:
Não exagere. Existe uma solução. Pense em como você pode se livrar da chamada interna do FF a partir de sua biblioteca de algoritmos.
Você nem deveria pensar nisso, não há razão para desperdiçar esforços com isso.
 
Dmitry Fedoseev:

...

Não há outras opções. A menos que se possa passar um ponteiro para uma função, se possível (mas até agora ninguém sugeriu onde procurar na ajuda). O membro deve ter a capacidade plena de chamar uma função ff.

Foi mencionado aqui com um exemplo:Nova versão da plataforma MetaTrader 5 construída 1325: Comércio com hedging e testes por carrapatos reais >>>

Exemplo:

MQL5: Para facilitar a organização de modelos de eventos, foi adicionado o suporte a indicadores de funções.

Para declarar um ponteiro para uma função, defina o tipo "ponteiro para funcionar", por exemplo:

typedef int (*TFunc)(int,int);

TFunc é agora um tipo e você pode declarar uma variável ponteiro de função:

TFunc func_ptr;

Você pode armazenar o endereço de uma função na variável func_ptr para que você possa chamá-la mais tarde:

int sub(int x,int y) { return(x-y); }
int add(int x,int y) { return(x+y); }
int neg(int x)       { return(~x);  }

func_ptr=sub;
Print(func_ptr(10,5));

func_ptr=add;
Print(func_ptr(10,5));

func_ptr=neg;           // ошибка: neg не имеет тип  int (int,int)
Print(func_ptr(10));    // ошибка: должно быть два параметра

Os ponteiros para as funções podem ser armazenados e passados como parâmetro. Não é possível obter um ponteiro para um método não-estático de uma classe.

 

Aqui está meu método da classe, por exemplo:

      void Evolution(){ 
         

         for(int c=0;c<GenerationsCount;c++){
         
            f0(); // расчет значений фф для каждого индивида
            f1();         
            f2();
            f3();
            f4();
            
         }
         
         f5();
         f6();

      }

Bem, como podemos fazer isso? E o mais importante, por que pensar sobre isso quando na realidade nunca é necessário. O campeonato de algoritmos de otimização se torna o campeonato de adaptação da função para trabalhar através do gio.

Uma função pode contar quantas vezes ela foi chamada. Se um concorrente faz uma importação, o número pode ser escrito no arquivo e zerado antes que ele seja executado.

É melhor usar uma classe, então a quantidade estará apenas disponível. A trapaça é descartada aqui.

 
Dmitry Fedoseev:
Você não deve nem pensar nisso, não há razão para desperdiçar esforços com isso.

OK. Não há problemas. Depois há duas opções para que o campeonato opere os algoritmos:

1. Com a chamada FF de dentro do algoritmo (afinal de contas, o algoritmo não saberá o que é FF dentro de uma bíblia fechada com FF)

2. sem chamar o FF de dentro do algoritmo, simplesmente passando o resultado para o algoritmo.

Suponho que estas duas opções possam cobrir todas as variações possíveis no uso de algoritmos de otimização. Precisamos encontrar os participantes, nem todos têm um alto nível de conhecimento de programação (não sou um profissional, por exemplo, levei vários meses para ver o algoritmo em partes para universalidade))))

 

Obrigado.

Não é mais fácil do que com a classe. Eu diria até que é mais fácil com uma aula.

 
Andrey Dik:

OK. Não há problema. Depois, há duas opções para operar os algoritmos para o campeonato:

1. Com a chamada FF de dentro do algoritmo (afinal de contas, o algoritmo não saberá o que é FF dentro de uma bíblia fechada com FF)

2. sem chamar o FF de dentro do algoritmo, simplesmente passando o resultado para o algoritmo.

Suponho que estas duas opções possam cobrir todas as variações possíveis no uso de algoritmos de otimização. Precisamos encontrar os participantes, nem todos têm um alto nível de conhecimento de programação (não sou um profissional, por exemplo, levei vários meses para ver o algoritmo em partes para universalidade))))

Se você tiver tempo extra, é bem-vindo. Somente em. 2 não será solicitado.
 
Dmitry Fedoseev:
Se você tiver tempo extra, é bem-vindo. Somente em. 2 não será solicitado.
Bem, isso não nos cabe julgar. Você tem a opção 1 e eu tenho a opção 2. E quem sabe o que os outros participantes farão. E qual é a hora? - Escrevi o roteiro de exemplo acima em 5 minutos, chegaremos às 2 variantes estabelecidas, suponho eu.
 
Andrey Dik:
Bem, não estamos autorizados a julgar isso. Você tem a opção 1 e eu tenho a opção 2. E quem sabe como os outros participantes irão se sair. E qual é a hora? - exemplo de um roteiro escrito acima em 5 minutos, então chegaremos às 2 opções estabelecidas, suponho eu.
Não consegue sequer pensar em nada para adivinhar como poderia a opção 2? Não é natural.
 
Dmitry Fedoseev:
Não consigo nem pensar em nada que faça um palpite de como a Variante 2 poderia acontecer? Não é natural.

Um exemplo simples. O algoritmo de otimização está pendurado em algum lugar em um gráfico. O Expert Advisor é otimizado no testador incorporado através de uma busca completa. Assim, você pode usar seu próprio algoritmo de otimização em vez do algoritmo normal.

Outro exemplo. O Expert Advisor trabalha no gráfico e comercializa. Ele salva os resultados comerciais após algum tempo para o algoritmo (pode estar dentro ou fora do Expert Advisor) junto com seus parâmetros e recebe novos parâmetros de volta e então continua a negociação (no seu caso, precisaríamos executar uma execução histórica, enquanto no meu caso podemos usar a otimização "ao vivo").

E assim por diante. Ou seja, nestes exemplos, o algoritmo é completamente independente da tarefa.

Eu deliberadamente apliquei estes exemplos ao comércio. Somos comerciantes.

Razão: