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:steps-and-algorithms.
Ensuite, modifier les méthodes runImp, generateTrialPoints, etc, pour implémenter le véritable algorithme Super.