groupe-dfo-bbo:projets:nomad:nouvel-algorithme

Ajout d'un nouvel algorithme

Supposons que vous vouliez ajouter l'algorithme d'optimisation Super à nomad. Voici une marche à suivre.

  1. Créer un nouveau répertoire Super sous src/Algos/, soit src/algos/Super.
  2. Pour se simplifier la tâche, on peut se baser sur un algorithme simple, soit LatinHypercubeSampling. Copier les fichiers de LatinHypercubeSampling dans le répertoire Super.
  3. Changer les noms des fichiers (ex. LH.hpp → Super.hpp).
  4. Changer les noms des classes dans les fichiers.
  5. Enlever le code pour garder une coquille vide. Dans la méthode runImp, ajouter une ligne de vérification:
  std::cout << "Bonjour c'est Super!" << std::endl;
  1. Éditer le fichier src/CMakeLists.txt pour ajouter les nouveaux fichiers.
  2. Ajouter un paramètre pour l'utilisation de l'algorihme, par exemple SUPER_OPTIMIZATION.
  3. Éditer les fichiers src/Util/StopReason.hpp et StopReason.cpp pour ajouter des StopReasons de base: se baser sur LH pour commencer.
  4. Éditer les fichiers src/Type/StepType.hpp et StepType.cpp pour ajouter un StepType, par exemple ALGORITHM_SUPER: se baser sur ALGORITHM_LH.
  5. Éditer le fichier src/MainStep.cpp pour s'assurer que lorsque le paramètre SUPER_OPTIMIZATION est true, l'optimization Super est exécutée. Se baser sur LH!
  6. Compiler le tout. Résoudre les problèmes de compilation.
  7. Rouler nomad avec le paramètre SUPER_OPTIMIZATION à true et vérifier que le message “Bonjour c'est Super!” est affiché.
  8. Noter que Super est de la classe Algorithm, donc de la classe Step, et qu'un Step a toujours les méthodes start, run et end. runImp est l'implémentation spécifique de run pour la classe. Voir l'information sur l'architecture.

Ensuite, modifier les méthodes runImp, generateTrialPoints, etc, pour implémenter le véritable algorithme Super.

  • groupe-dfo-bbo/projets/nomad/nouvel-algorithme.txt
  • Dernière modification: 2021/07/02 15:42
  • par rochvivi