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
etStopReason.cpp
pour ajouter des StopReasons de base: se baser sur LH pour commencer. - Éditer les fichiers
src/Type/StepType.hpp
etStepType.cpp
pour ajouter un StepType, par exempleALGORITHM_SUPER
: se baser surALGORITHM_LH
. - Éditer le fichier
src/MainStep.cpp
pour s'assurer que lorsque le paramètreSUPER_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.