Algorithmus-Optimierung Meisterschaft.

 

Die Algorithmus-Optimierungsmeisterschaft ist als Wettbewerb für Suchende und Neugierige konzipiert, für die Stillstand Rückschritt bedeutet.

Die Meisterschaft ist eine großartige Gelegenheit, Ihre Algorithmen unter harten Wettbewerbsbedingungen zu testen, die härter und anspruchsvoller sind als die des täglichen Lebens. Es ist eine Chance, sich zu vergewissern, dass Ihr Algorithmus nicht mehr besser sein kann, was Vertrauen in die Lösung der vor uns liegenden Herausforderungen des Lebens bedeutet, oder sich zu vergewissern, dass Ihr Algorithmus weiter verfeinert und verbessert werden muss oder kann.

Regeln:

1. Optimierungsalgorithmen, die auf beliebigen Prinzipien und Theorien der Suche beruhen, sind zur Meisterschaft zugelassen, und zwar absolut alle.

2. Jeder Teilnehmer konnte nur einen Algorithmus im Quellcode oder in kompilierter Form der *.ex5-Bibliothek darstellen.

3. Am Ende der Meisterschaft werden die Teilnehmer nach folgenden Kriterien eingestuft: Geschwindigkeit des Algorithmus, Anzahl der Durchläufe der Fitnessfunktion, Genauigkeit der Lösungsfindung.

Bedingungen:

1. Der Veranstalter behält sich das Recht vor, die Teilnahme von Personen ohne Angabe von Gründen abzulehnen.

2. der Organisator hat das Recht, an der Meisterschaft teilzunehmen.

3. Der Veranstalter lehnt die Preise zugunsten der Teilnehmer ab, wenn die Preisgelder von potenziellen Sponsoren zum Zeitpunkt der Bekanntgabe der Preise nicht verfügbar sind.

Organisator der Meisterschaft der Optimierungsalgorithmen: Joo.

Seien Sie mutig, machen Sie mit und gewinnen Sie. Es kann gut sein, dass Ihr Algorithmus in Zukunft im MT-internen Optimierer verwendet wird, warum nicht?

 

Die Anmeldung ist ab sofort möglich.

Alle, die teilnehmen möchten, melden sich bitte hier an. Am 20. Juni 2016 werden die Codes von ausführbaren Beispielskripten mit Schnittstellen für die Verbindung von Algorithmen vorgestellt. In weiteren 3 Wochen, am 11. Juli 2016, beginnt die eigentliche Meisterschaft.

 
Generell. Bitte diskutieren Sie nur über das Thema "Optimierungsalgorithmen". Ein Schritt nach rechts, ein Schritt nach links - Erschießungskommando :)
 
Andrey Dik:

Die Anmeldung ist ab sofort möglich.

Alle, die teilnehmen möchten, melden sich bitte hier an. Am 20. Juni 2016 werden die Codes der ausführbaren Beispielskripte mit Schnittstellen für Verbindungsalgorithmen vorgestellt. Und in 3 Wochen beginnt die eigentliche Meisterschaft.

Und im Allgemeinen gibt es Ideen, oder alle sind dabei, darüber nachzudenken. Wenn überhaupt, kann ich meine Gedanken teilen.
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Andrey Dik, 2016.06.10 17:24

Andrej Dik
Tag Konow
Igor Wolodin
Dmitri Fedosejew
Sergej Chalyschew
Ghenadie Tumco
Igor Wolodin

 
Sollen wir es für eine Weile aufschieben? Schreiben Sie einen Artikel. Legen Sie eine Klassenvorlage in die Codebasis. Ich denke, ich habe eine sehr gute Vorlage:)
 
Sind sieben Personen genug für eine Meisterschaft? (Aus der Sicht von MQ)
 
Dmitry Fedoseev:
Und im Allgemeinen gibt es Ideen, oder alles ist im Prozess des Nachdenkens. Wenn überhaupt, kann ich meine Gedanken teilen.

Natürlich gibt es Ideen.

Ein Artikel ist sehr gut. In welche Richtung wollen Sie den Artikel schreiben?

Es besteht die Möglichkeit, die Meisterschaft zu verschieben, wenn ein echter Bedarf dafür besteht. Aber bis dahin ist noch viel Zeit, denn die Meisterschaft beginnt am 11. Juli 2016.

 
Andrey Dik:

Natürlich wissen Sie das.

Spucken Sie es aus. Wir werden sie verurteilen.

Der Artikel ist sehr gut. Aber Sie können nicht länger warten. Die Menschen haben in der Regel ein kurzes Gedächtnis und vergessen schnell, wo alles beginnt....

class CFF{
   public:
   virtual double fun(double & x[]){return(0);}
   virtual string type(){return("");}
   virtual double value(){return(0);}
   virtual string note(){return("");}
};

class CFF1:public CFF{
   public:
   double fun(double & x[]){
      int c=ArraySize(x);
      double s=0;
      for(int i=0;i<c;i++){
         s+=MathPow(x[i],2);
      }
      return(s);   
   }
   virtual string type(){
      return("min");
   }
   virtual double value(){
      return(0);
   }
   virtual string note(){
      return("");
   }   
};

class CFF2:public CFF{
   public:
   double fun(double & x[]){
      int c=ArraySize(x);
      double s=0;
      double p=0;
      for(int i=0;i<c;i++){
         s+=MathAbs(x[i]);
         p*=MathAbs(x[i]);
      }
      return(s+p); 
   }
   virtual string type(){
      return("min");
   }
   virtual double value(){
      return(0);
   }
   virtual string note(){
      return("");
   }   
};

Es folgt eine Konstruktion zur Auswahl einer zu untersuchenden Funktion (ff). Eine Basisklasse mit virtuellen Methoden und Unterklassen mit unterschiedlichen Funktionen.

Ich erkläre es so:

CFF * ff=new CFF1();

Oder so, je nachdem, welche Funktion benötigt wird:

CFF * ff=new CFF2();

In der Optimierungsfunktion haben wir einen Parameter vom Typ CFF, um einen Zeiger auf die Klasse mit den ausgewählten ff zu übergeben.

***

Methoden der Basisklasse:

   virtual double fun(double & x[]){return(0);}
   virtual string type(){return("");}   

fun - Funktion selbst, Parameter werden in einem Array vom Typ double übergeben.

type - Funktionstyp: min oder max - was in der Funktion minimum oder maximum zu suchen ist.

Der Rest wird nicht benötigt, ich habe sie für mich selbst gemacht... Zur Erinnerung: Wert - Wert am Extremum, Notiz - eine Beschreibung. Sie werden für die Meisterschaft nicht benötigt, vor allem nicht für den Wert.

***

Jetzt habe ich keine Funktion, sondern eine Klasse und darin eine Methode zum Setzen der ff:

   
      void SetFF(CFF * aff){
         this.ff=aff;
      }  
Dann verwende ich this.ff.fun(...) überall;
 

Für die Meisterschaft muss die Klasse in einer Bibliothek untergebracht werden. Erstellen Sie eine Funktion in der Bibliothek, die von außen aufgerufen wird. Diese Funktion wird alles tun: eine Instanz der Klasse erstellen, alle Parameter setzen, die an die Funktion übergeben werden, usw.

Der Funktionsname ist für alle einheitlich. Jeder hat seine eigenen Bibliotheksdateinamen.

Der Checker verfügt über ein Skript. Der Checker ändert den Namen der importierten Bibliothek, kompiliert und führt sie aus.

Das war's:

CFF * ff=new CFF1();

Im Skript des Checkers.

 
Dmitry Fedoseev:

Für die Meisterschaft muss die Klasse in einer Bibliothek untergebracht werden. Erstellen Sie eine Funktion in der Bibliothek, die von außen aufgerufen wird. Diese Funktion wird alles tun: eine Instanz der Klasse erstellen, alle Parameter setzen, die an die Funktion übergeben werden, usw.

Der Funktionsname ist für alle einheitlich. Jeder hat seine eigenen Bibliotheksdateinamen.

Der Checker verfügt über ein Skript. Der Checker ändert den Namen der importierten Bibliothek, kompiliert und führt sie aus.

Glauben Sie, dass wir bei der Lösung der uns gestellten Aufgabe ohne OOP auskommen können? Ich bin es gewohnt, alles mit meiner eigenen Methode zu lösen. (Nun, ich mag OOP nicht.) :)
Grund der Beschwerde: