Algorithmus-Optimierung Meisterschaft. - Seite 130

 
Andrey Dik:

Sie können gehen, wohin Sie wollen. Aber wie ich bereits sagte, wird diese Meisterschaft stattfinden. Nach diesen Regeln können Sie sowohl mit mir als auch mit anderen Teilnehmern und ohne mich antreten.

Andere Meisterschaften mögen anders sein, veranstalten Sie Ihre eigenen, und tun Sie, was Sie für richtig halten. Es ist ein freies Land.

Voilà!

Alles Gute, lieber Theoretiker!

 
Реter Konow:

Voilà!

Auf Wiedersehen, verehrter Theoretiker!

Machen Sie sich nicht über mich lustig. Bereiten Sie sich vor und halten Sie sich an die Regeln, anstatt zu versuchen, die Regeln zu ändern, damit sie Ihnen passen... Und plappern Sie nicht einfach drauflos, sondern fangen Sie besser an, die einschlägige Literatur zur Optimierung zu lesen.

Alles Gute, lieber Theoretiker!

 

Grüße.

Ich habe meinen Code aus dem Four-Editor in den Five-Editor übertragen. Nur ein Fehler! Ersetzte TRUE mit einem und alles funktionierte! Angenehm überrascht.

Dies ist mein erster Code auf F. Könnten Sie mir bitte sagen, was ich in meinen Code eingeben muss, um eine Verbindung zur Meisterschaft herzustellen?

//+------------------------------------------------------------------+
//|                                                 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:

Grüße.

Ich habe meinen Code aus dem Four-Editor in den Five-Editor übertragen. Nur ein Fehler! Ersetzte TRUE mit einem und alles funktionierte! Angenehm überrascht.

Dies ist mein erster Code für F. Könnten Sie mir bitte sagen, was ich in meinen Code einfügen muss, um eine Verbindung zur Meisterschaft herzustellen?

Hallo.

Nein, das ist nicht gut.

Sie müssen folgendermaßen vorgehen

Skript -> BiblAO.ex5 -> ff.ex5

Weiter oben im Zweig wurden Beispiele für Codes genannt, bitte sehen Sie sich diese an. Ich habe jetzt keine Zeit, ich werde die Links zu den Beispielen etwas später zeigen.

 

Ausführbares Championship-Skript:

#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 ("---------------------------------");
}
//+------------------------------------------------------------------+
 

Ich werde nun eine FF-Beispielbibliothek (zur Demonstration der Schnittstelle) und ein Beispiel für den Optimierungsalgorithmus eines Teilnehmers (funktionierend, kann überall angewendet werden) vorbereiten.

Bitte beachten Sie: das obige Skript ist bereits autark, um zu verstehen, was von den Teilnehmern verlangt wird, verbinden Sie Ihren Algo durch Schnittstellen und abgeschriebene Funktionen und seien Sie bereit, teilzunehmen. Das Drehbuch wurde vor vielen Seiten....

 

Beispiel für eine FF-Meisterschaft (alles ist gleich, mit Ausnahme des Inhalts der FF-Funktion bzw. der VariableG_paramCount- sie sind den Teilnehmern nicht bekannt, der Schiedsrichter kompiliert):

#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:

Beispiel FF-Meisterschaft (alles wird gleich sein, außer dem Inhalt der FF-Funktion und dementsprechend der VariablenG_paramCount- sie werden den Teilnehmern nicht bekannt sein, der Schiedsrichter wird kompilieren):

Erstaunlich.

Als ich nach diesem Beispiel fragte, haben Sie alles getan, um es nicht zu liefern.

Jetzt bin ich weg, und bitte - Beispiel FF.

Was hat das zu bedeuten?

 
Реter Konow:

Erstaunlich.

Als ich nach diesem Beispiel fragte, haben Sie alles getan, um es nicht zu liefern.

Jetzt bin ich weg, und da haben Sie es - ein FF-Beispiel.

Was meinen Sie damit?

Es ist nur ein Beispiel, das gleiche wie bei dem Textproblem, das habe ich Ihnen schon oft gesagt. Schauen Sie genau hin - die Verbindungsschnittstelle ist genau dieselbe, wie zwei Tropfen Mondschein.

Aber Sie fragen nach dem FF-Meisterschaftscode, den werden Sie natürlich nicht bekommen, niemand wird ihn bekommen, und er ist jetzt nicht im Beispiel enthalten, und ich werde ihn nicht kennen. Das Einzige, was bekannt ist, ist die FF-Verbindungsschnittstelle über die Funktion Import, und das ist es, was im Beispiel gezeigt wird. Ist das klar? Nun, wie viel mehr können wir schon erklären... Ich weiß es nicht.

Diese Codes wurden bereits in der Zweigstelle gezeigt, ich fasse sie nur der Einfachheit halber zusammen.

Verstehen Sie also, und am besten so, dass ich es nicht noch einmal erklären muss, und zwar der gleichen Person....

Wenn Sie endlich alles verstanden haben, schreiben Sie den Algorithmus und ziehen Sie in die Schlacht. Das hätten Sie schon längst tun sollen, denn alle haben ihre Algorithmen fast fertig geschrieben (abgesehen von denen, die sie schon fertig haben).

 
Andrey Dik:

Dies ist nur ein Beispiel, das gleiche wie in dem Textproblem, ich habe es Ihnen schon oft gesagt. Schauen Sie genau hin - die Verbindungsschnittstelle ist genau dieselbe, wie zwei Tropfen Mondschein.

Aber du fragst nach dem FF-Code, natürlich wirst du ihn nicht bekommen, niemand wird ihn bekommen, und er ist jetzt nicht in dem Beispiel, und ich werde ihn nicht kennen. Das Einzige, was bekannt ist, ist die FF-Verbindungsschnittstelle über die Funktion Import, und das ist es, was im Beispiel gezeigt wird. Ist das klar? Nun, wie viel mehr können wir schon erklären... Ich weiß es nicht.

Diese Codes wurden bereits in der Verzweigung gezeigt, ich fasse sie nur der Einfachheit halber zusammen.

Verstehen Sie also, und am besten so, dass ich es nicht noch einmal erklären muss, und zwar der gleichen Person....

Ich brauchte einfach ein solches Beispiel.

Das Problem mit dem Text ist ein anderes als dieses.

Es gab eine Zeichenfolge, und hier - eine analytische Funktion.

Deshalb habe ich nach einem Beispiel gefragt.

Grund der Beschwerde: