Championnat d'optimisation des algorithmes. - page 130

 
Andrey Dik:

Tu peux aller où tu veux. Mais ce championnat aura lieu comme je l'ai dit précédemment. Selon ces règles, vous pouvez concourir avec moi, avec d'autres concurrents et sans moi.

Les autres championnats peuvent être différents, organisez le vôtre et faites comme bon vous semble. C'est un pays libre.

Voilà !

Bonne continuation, cher théoricien !

 
Реter Konow:

Voilà !

Adieu, théoricien respecté !

Ne te moque pas de moi. Préparez-vous et participez aux compétitions en respectant les règles, au lieu d'essayer de changer les règles à votre convenance... Et ne vous contentez pas de bavarder, commencez plutôt à lire la littérature pertinente sur l'optimisation.

Bonne continuation, cher théoricien !

 

Salutations.

J'ai transféré mon code de l'éditeur quatre à l'éditeur cinq. Une seule erreur ! J'ai remplacé le VRAI par un autre et tout a fonctionné ! Agréablement surpris.

C'est mon premier code sur F. Pouvez-vous me dire ce que je dois mettre dans mon code pour me connecter au championnat ?

//+------------------------------------------------------------------+
//|                                                 Yuri skript.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//----------Блок глобальных переменных кода-----
Глобальные переменные кода не должны совпадать с 
именами глобальных переменных интерфейса?
//----------------------------------------------

//---------- Блок ввода начальных значений------
input double xmin=0;//min диапазона поиска
input double xmax=100;//max диапазона поиска
input double Xnz=10;// начальные значения X[]
input int N=3;     // число параметров
input double e=0.01; // погрешность поиска
Будет ли известен диапазон поиска, число параметров ?
//----------------------------------------------
void OnStart()
  {
OC();
}
//--------------ОСНОВНАЯ ФУНКЦИЯ---------------
void OC()
{
//---------
// ЗДЕСЬ РАСПОЛОЖЕН АЛГОРИТМ ПОИСКА.ИМЕЕТСЯ НЕСКОЛЬКО ПОДФУНКЦИЙ.
// ФУНКЦИЯ ФОРМИРУЕТ МАССИВ ЗНАЧЕНИЙ X[x1,x2...xn]. 
// ФУНКЦИЯ РАСЧЕТА F() ВЫСЧИТЫВАЕТ И ВОЗВРАЩАЕТ ЗНАЧЕНИЕ ЗАДАННОЙ ФУНКЦИИ И ДАЛЕЕ ПО АЛГОРИТМУ
F();
//----------
}
//------ФУНКЦИЯ РАСЧЕТА ЗАДАННОЙ ФУНКЦИИ НАПРИМЕР F=(exp(X[1]+X[2]+X[3]))/(X[1]*X[2]*X[2]*X[3]*X[3]*X[3]);
double F()
{
if(X[1]==0||X[2]==0||X[3]==0){zn=0;return(F);}
F=(exp(X[1]+X[2]+X[3]))/(X[1]*X[2]*X[2]*X[3]*X[3]*X[3]);
return (F);
}
 
Yuri Evseenkov:

Salutations.

J'ai transféré mon code de l'éditeur quatre à l'éditeur cinq. Une seule erreur ! J'ai remplacé le VRAI par un autre et tout a fonctionné ! Agréablement surpris.

C'est mon premier code sur F. Pouvez-vous me dire ce que je dois insérer dans mon code pour me connecter au championnat ?

Salut.

Non, ce n'est pas bon.

Vous devez le faire comme ceci

Script -> BiblAO.ex5 -> ff.ex5

Plus tôt dans la branche, il y avait des exemples de codes, veuillez y jeter un coup d'œil. Pas le temps maintenant, je montrerai des liens vers des exemples un peu plus tard.

 

Script exécutable du championnat :

#property script_show_inputs
#property strict

//+------------------------------------------------------------------+
// алгоритм оптимизации участника
#import "ao.ex5"
// инициализация АО
void   InitAO (int paramCount, int maxFFruns);
// запуск АО 
void   StartAlgo (); 
// получить максимальное значение ФФ       
double GetMaxFF (); 
#import
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
// тестовая фитнес функция чемпионата, не известна участникам
#import "ff.ex5"
// запросить количество параметров ФФ 
int    GetParamCount (); 
// запуск ФФ, получеие значения соответствующее параметроам ФФ
double FF (double &array []); 
// произведённое количество запусков ФФ
int    GetCountRunsFF (); 
#import
//+------------------------------------------------------------------+

//--- input parameters
input int MaxFFruns_P = 1000; 


//+------------------------------------------------------------------+
void OnStart () 
{ 
  // узнаем, сколько параметров нужно оптимизировать
  int    paramCount = GetParamCount (); 

  ulong  startTime = GetMicrosecondCount (); 
  
  //------------------------------------------------------------------
  InitAO (paramCount, MaxFFruns_P);
  StartAlgo ();
  //------------------------------------------------------------------
  
  startTime = GetMicrosecondCount () - startTime; 
  
  Print ("Макс: " + DoubleToString (GetMaxFF (), 16)); 
  Print ("Запусков ФФ: " + (string)GetCountRunsFF ()); 
  Print ("Время: " + (string)startTime + " мкс; " + DoubleToString ((double)startTime / 1000000.0, 8) + " c"); 
  Print ("---------------------------------");
}
//+------------------------------------------------------------------+
 

Je vais maintenant préparer un exemple de bibliothèque FF (pour démontrer l'interface) et un exemple d'algorithme d'optimisation d'un participant (fonctionnel, peut être appliqué partout).

Attention : le script ci-dessus est déjà autonome pour comprendre ce qui est demandé aux participants, connectez votre algo par des interfaces et des fonctions dépréciées et soyez prêt à participer. Le script a été donné il y a plusieurs pages.....

 

Exemple d'un championnat FF (tout sera identique, sauf le contenu de la fonction FF et respectivement de la variableG_paramCount- ils ne seront pas connus des concurrents, l'arbitre compilera) :

#property library
#property strict

int G_countRuns  = 0; 
int G_paramCount = 3; 

//+------------------------------------------------------------------+
int GetParamCount () export
{ 
  return (G_paramCount);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void GetParamProperties (double &min, double &max, double &step) export
{ 
  min  = 0.1; 
  max  = 10.0; 
  step = 0.1;
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
int GetCountRunsFF () export
{ 
  return (G_countRuns);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
double FF (double &param []) export
{ 
  G_countRuns++; 
  
  int sizeArray = ArraySize (param); 
  if(sizeArray != G_paramCount) 
    return (-DBL_MAX); 
  
  double x1 = param [0];
  double x2 = param [1];
  double x3 = param [2];

  double ffVolue = (-exp(x1+x2+x3))/(x1*x2*x2*x3*x3*x3);
  
  return (ffVolue);
}
//+------------------------------------------------------------------+
 
Andrey Dik:

Exemple de championnat FF (tout sera identique, sauf le contenu de la fonction FF et donc la variableG_paramCount- ils ne seront pas connus des concurrents, l'arbitre compilera) :

Incroyable.

Quand j'ai demandé cet exemple, vous avez tout fait pour ne pas le fournir.

Maintenant je suis parti, et s'il vous plaît - exemple FF.

Qu'est-ce que cela signifie ?

 
Реter Konow:

Incroyable.

Quand j'ai demandé cet exemple, vous avez tout fait pour ne pas le fournir.

Maintenant, je suis parti, et voilà - un exemple de FF.

Qu'est-ce que vous entendez par là ?

Ce n'est qu'un exemple, le même que dans le problème du texte, je vous l'ai dit plusieurs fois. Regardez bien : l'interface de connexion est exactement la même, comme deux gouttes de vin blanc.

Mais vous demandez le code du championnat de France, bien sûr vous ne l'aurez pas, personne ne l'aura, et il n'est pas dans l'exemple maintenant, et je ne le saurai pas. La seule chose connue est l'interface de connexion FF via la fonction import, et c'est ce qui est montré dans l'exemple. C'est clair ? Eh bien, combien de fois pouvons-nous encore expliquer... Je ne sais pas.

Ces codes ont déjà été présentés dans la branche, je ne fais que les regrouper pour plus de commodité.

Comprenez donc, et de préférence pour ne pas avoir à l'expliquer à nouveau, et à la même personne.....

Si vous avez finalement tout compris, allez-y, écrivez l'algorithme et partez au combat. Vous auriez dû le faire il y a longtemps, tout le monde a presque fini d'écrire ses algorithmes (sans compter ceux qui les ont déjà prêts).

 
Andrey Dik:

Ce n'est qu'un exemple, le même que dans le problème du texte, je vous l'ai dit plusieurs fois. Regardez bien : l'interface de connexion est exactement la même, comme deux gouttes de vin blanc.

Mais vous demandez le code FF, bien sûr vous ne l'aurez pas, personne ne l'aura, et il n'est pas dans l'exemple maintenant, et je ne le saurai pas. La seule chose connue est l'interface de connexion FF via la fonction import, et c'est ce qui est montré dans l'exemple. C'est clair ? Eh bien, combien de fois pouvons-nous encore expliquer... Je ne sais pas.

Ces codes ont déjà été présentés dans la branche, je ne fais que les regrouper pour plus de commodité.

Comprenez donc, et de préférence pour ne pas avoir à le réexpliquer, et à la même personne....

J'avais juste besoin d'un tel exemple.

Celui du problème avec le texte est différent de celui-ci.

Il y avait une chaîne, et ici - une fonction analytique.

C'est pourquoi j'ai demandé un exemple.

Raison: