Ceci est une ancienne révision du document !
Ajout d'un nouvel algorithme
Supposons que vous vouliez ajouter l'algorithme d'optimisation Super
à nomad. Voici une marche à suivre.
- Créer un nouveau répertoire
Super
soussrc/Algos/
, soitsrc/algos/Super
. - 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. - Changer les noms des fichiers (ex. LH.hpp → Super.hpp).
- Changer les noms des classes dans les fichiers.
- 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;
- Éditer le fichier src/CMakeLists.txt pour ajouter les nouveaux fichiers.
- Ajouter un paramètre pour l'utilisation de l'algorihme, par exemple
SUPER_OPTIMIZATION
. - Éditer les fichiers src/Util/StopReason.hpp et StopReason.cpp pour ajouter des StopReasons de base: se baser sur LH pour commencer.
- Éditer les fichiers src/Type/StepType.hpp et StepType.cpp pour ajouter un StepType, par exemple ALGORITHM_SUPER: se baser sur ALGORITHM_LH.
- É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! - Compiler le tout. Résoudre les problèmes de compilation.
- Rouler nomad avec le paramètre
SUPER_OPTIMIZATION
à true et vérifier que le message “Bonjour c'est Super!” est affiché. - Noter que Super est de la classe Algorithm, donc de la classe Step, et qu'un Step a toujours les méthodes
start
,run
etend
.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.