Championnat d'optimisation des algorithmes.

Andrey Dik  

Le championnat d'optimisation des algorithmes est conçu comme une compétition pour les personnes qui cherchent, qui sont curieuses, pour qui rester immobile signifie reculer.

Le Championnat est une excellente occasion de tester vos algorithmes dans des conditions de compétition difficiles, qui sont plus dures et plus exigeantes que celles rencontrées dans la vie quotidienne. C'est l'occasion de s'assurer que votre algorithme ne peut pas s'améliorer, ce qui est synonyme de confiance dans la résolution des défis de la vie à venir, ou de s'assurer que votre algorithme doit ou peut être encore affiné et amélioré.

Règles :

1. Les algorithmes d'optimisation basés sur tous les principes et théories de recherche sont admis au championnat, absolument tous.

2. Chaque participant ne pouvait représenter qu'un seul algorithme en code source ou sous forme compilée de la bibliothèque *.ex5.

3. A la fin du championnat, les participants seront classés selon les critères suivants : vitesse de l'algorithme, nombre d'exécutions de la fonction fitness, précision de la recherche de solutions.

Conditions :

1. l'organisateur se réserve le droit de refuser la participation de toute personne sans en expliquer les raisons.

2. l'organisateur a le droit de participer au championnat.

3. l'organisateur refusera les prix en faveur des participants en cas de disponibilité du fonds de prix auprès de sponsors potentiels au moment de l'annonce des prix.

Organisateur du Championnat des Algorithmes d'Optimisation : Joo.

Soyez courageux, participez et gagnez. Il se pourrait bien que votre algorithme soit utilisé à l'avenir dans l'optimiseur interne de MT, pourquoi pas ?

Vladimir Karputov  
En général. Veuillez discuter uniquement du sujet "Algorithmes d'optimisation". Un pas à droite, un pas à gauche - peloton d'exécution :)
Dmitry Fedoseev  
Andrey Dik:

Les inscriptions sont désormais ouvertes.

Tous ceux qui souhaitent participer, veuillez vous inscrire ici. Le 20 juin 2016, les codes d'exemples de scripts exécutables avec des interfaces pour connecter des algorithmes seront présentés. Et dans 3 semaines, le championnat lui-même commencera.

Et en général, il y a des idées, ou tous sont en train d'y réfléchir. Si quoi que ce soit, je peux partager mes pensées.
Dmitry Fedoseev  
Devrions-nous le remettre à plus tard ? Rédiger un article. Mettre un modèle de classe dans le codebase. Je pense que j'ai un très bon modèle :)
Реter Konow  
Sept personnes suffisent-elles pour un championnat ? (Du point de vue de MQ)
Andrey Dik  
Dmitry Fedoseev:
Et en général, il y a des idées, ou tout est en train d'être pensé. Si quoi que ce soit, je peux partager mes pensées.

Bien sûr, il y a des idées.

Un article est très bien. Dans quelle direction voulez-vous écrire l'article?

Il est possible de reporter le championnat, si le besoin s'en fait réellement sentir. Mais il reste encore beaucoup de temps avant que cela ne commence, le championnat débute le 11 juillet 2016.

Dmitry Fedoseev  
Andrey Dik:

Bien sûr que oui.

Crache le morceau. Nous allons condamner.

L'article est très bon. Mais vous ne pouvez pas attendre plus longtemps. Les gens ont généralement la mémoire courte et oublient rapidement où tout commence.....

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

Voici une construction permettant de sélectionner une fonction à étudier (ff). Une classe de base avec des méthodes virtuelles et des classes enfants avec des fonctions différentes.

Je le déclare ainsi :

CFF * ff=new CFF1();

Ou comme ceci, selon la fonction dont on a besoin :

CFF * ff=new CFF2();

Dans la fonction d'optimisation, nous avons un paramètre de type CFF pour passer un pointeur à la classe avec le ff sélectionné.

***

Méthodes de la classe de base :

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

fun - fonction elle-même, les paramètres sont passés dans un tableau de type double.

type - type de fonction : min ou max - ce qu'il faut rechercher dans la fonction minimum ou maximum.

Le reste n'est pas nécessaire, je les faisais pour moi... Pour la mémoire : valeur - valeur à l'extrême, note - une certaine description. Ils ne sont pas nécessaires pour le championnat, surtout en termes de valeur.

***

Maintenant, je n'ai pas une fonction, mais une classe et dans celle-ci une méthode pour définir le ff :

   
      void SetFF(CFF * aff){
         this.ff=aff;
      }  
Ensuite, j'utilise this.ff.fun(...) partout ;
Dmitry Fedoseev  

La classe devra être placée dans une bibliothèque pour le championnat. Créez une fonction dans la bibliothèque, qui sera appelée de l'extérieur, cette fonction fera tout : créer une instance de la classe, définir tous les paramètres passés à la fonction, etc.

Le nom de la fonction est standard pour tous. Chacun a son propre nom de fichier de bibliothèque.

Le vérificateur a un script. Le vérificateur change le nom de la bibliothèque importée, la compile et l'exécute.

C'est tout :

CFF * ff=new CFF1();

Dans le script du vérificateur.

Реter Konow  
Dmitry Fedoseev:

La classe devra être placée dans une bibliothèque pour le championnat. Créez une fonction dans la bibliothèque, qui sera appelée de l'extérieur, cette fonction fera tout : créer une instance de la classe, définir tous les paramètres passés à la fonction, etc.

Le nom de la fonction est standard pour tous. Chacun a son propre nom de fichier de bibliothèque.

Le vérificateur a un script. Checker change le nom de la bibliothèque importée, compile, exécute.

Pensez-vous que nous pouvons nous passer de la POO pour résoudre la tâche qui nous est assignée ? J'ai l'habitude de tout résoudre avec ma propre méthode. (Eh bien, je n'aime pas la POO). :)
Raison: