But: On veut utiliser NOMAD avec Oríon.
Oríon utilise des fonctions qu'on a déjà vues avec BBOpt: suggest
, observe
, ainsi qu'une autre pour le parallélisme: set_state
.
Le problème est que notre boîte noire est asynchrone. Oríon peut recevoir un point, puis en recevoir un autre, sans que le premier point soit évalué. On peut donc imaginer un NOMAD asynchrone, qui suggère des points quand on lui demande, quitte à suggérer les mêmes points deux fois de suite si NOMAD n'a aucune nouvelle information. Il y a des similitudes avec pMADS asynchrone.
Conséquence: NOMAD ne peut pas attendre que les points soient (tous) évalués avant de continuer.
Proposition 1: Recommencer NOMAD à chaque appel pour se rendre au point courant
Proposition 2: Nomad Server. Version de NOMAD qui est un serveur de points.
suggest
, il génère tous les points d'une itération (i.e., on utilise le paramètre GENERATE_ALL_POINTS_BEFORE_EVAL, déjà implémenté). Les points sont triés, et le nombre de points demandé est envoyé. Nomad Server n'attend pas que les points soient évalués, il continue simplement (ou il pourrait aller dans une boucle d'attente). observe
, il met la cache à jour.set_state
est à voir plus en détail (implémentation dans un deuxième temps). Elle serait similaire à ce qu'on fait déjà avec le hot restart: Il s'agit de donner les bonnes valeurs au mesh size, barrier, cache et autres afin que Mads reparte d'un point donné. Cette commande est utile pour le parallélisme (donc est-ce que plusieurs Nomad Server rouleraient en parallèle?) nomad
et nomad-server
.Il y aura des détails à régler, par exemple le calcul de hMax, mais j'estime que ce ne sera rien de trop compliqué.
Avantages:
Inconvénients: