Une plateforme open source d'optimisation générique hautement distribuée

Session : SS19 / SS19 : Simulation et optimisation des systèmes industriels
Jeudi 11 février 15:00 - 16:40 Salle : Amphi-CI
Adrien Cabarbaye, Aurélien Cabarbaye et André Cabarbaye

Cet article présente une plateforme open-source d'optimisation générique (Gencab Indra) en cours de développement (disponible fin 2016) qui cherche à résoudre des problématiques multiples dont celles de conception multidisciplinaire mettant en œuvre différents domaines d’expertises interdépendants [1][2]. Afin de pouvoir s’adapter à la diversité des problèmes rencontrés et faciliter leur formalisation par des ingénieurs non informaticiens, elle offre une large palette de formats de variables de décision ainsi qu’un ensemble d’algorithmes d’optimisation locale et globale pouvant s’imbriquer entre eux de manière hiérarchisée. Exploitant les dernières technologies issues d’Internet et du Big Data, cette plateforme open source bénéficie d’une capacité de calculs parallèles massivement distribués. 1 Introduction La plupart des problèmes d’optimisation dans le domaine industriel sont de type boîte noire car des informations du premier ordre (gradients) ne sont pas accessibles et que l'expression analytique des informations d'ordre zéro (valeurs de la fonction) est souvent inconnue pour diverses raisons (résultat de simulation, temps de calcul prohibitif, traitement inconnu ou caché, etc.). Les méthodes d’optimisation utilisées doivent pouvoir s’affranchir de multiples optima locaux et trouver un optimum après un nombre minimal d'évaluations de fonctions rarement linéaires, souvent contraintes et généralement gourmandes en temps de calcul. Ces méthodes doivent, par ailleurs, se révéler robustes face à la diversité des problématiques rencontrées par des spécialistes métiers qui n’ont pas forcément une expertise en recherche opérationnelle et aide à la décision. Afin de répondre à ce besoin, un outil générique d’optimisation (Gencab) a été développé par la société Cab Innovation au début des années 2000 [5]. Basé sur des algorithmes génétiques couplés à un algorithme de simplexe (Nelder-Mead) pour accélérer la convergence, cet outil est notamment utilisé dans le domaine spatial pour optimiser des architectures de systèmes avec leur soutien logistique, ajuster des modèles probabilistes complexes et planifier des essais (Optimal design). Il a récemment été utilisé dans le cadre d’un projet de drone martien pour optimiser la forme des pales d’un rotor d’hélicoptère caractérisées au moyen de courbes de Bézier. Fonctionnant sous Excel, cet outil présente des limites en termes de performance et de flexibilité. La conception aérospatiale est en effet gourmande en puissance de calcul et a souvent recours à des logiciels de simulation externes (XFoil pour le design de profil d'aile par exemple). Elle recouvre des disciplines interdépendantes qui ne peuvent véritablement aboutir à un optimum que si elles font l’objet d’un traitement global [1][2]. Aussi une refonte de cet outil s'impose-t-elle à nos yeux, d’autant qu’il nous semble opportun de tirer parti des nouvelles technologies issues d’Internet (web services, cloud computing…) et du Big Data (calculs parallèles et distribués). 2 Vers un outil d’optimisation générique Afin de pouvoir s’adapter à la diversité des problèmes rencontrés et faciliter leur formalisation par des ingénieurs non informaticiens, un outil d’optimisation générique doit offrir une large palette de formats de variables de décision (binaire, réel, entier, alphanumérique, liste de m valeurs, différentes ou non, ordonnées ou non, parmi n, etc.) ainsi qu’un ensemble d’algorithmes d’optimisation locale et globale pouvant s’imbriquer entre eux. Outre une capacité de recherche multi-objectifs (front de Pareto), il doit pouvoir s’interfacer à divers logiciels d’évaluation ou de simulation externes et permettre la parallélisation des traitements pour limiter les temps de calcul. Les types de variables peuvent s’employer indifféremment dans un problème et le choix d’un ordre parmi les variables de différents types constitue une forme générique de solution (pseudo chromosomes). La possibilité pour l’utilisateur (ou de manière semi-automatique) d’effectuer des regroupements au sein de cette liste ordonnée permet de la soumettre à des optimisations séquentielles employant des algorithmes adaptés aux formats des variables de chacun des regroupements (recherche arborescente, recherche directe, Algorithmes Génétiques, etc.). Ainsi, l’évaluation de solutions candidates peut elle-même faire appel à des optimisations, comme cela s’avère parfois nécessaire pour résoudre des problématiques d’analyse de missions. De plus, les algorithmes peuvent s’imbriquer entre eux (optimisations successives ou parallèles), au moyen d’une structure originale standardisée d’entrée/sortie, afin de faciliter la formulation des problématiques et accélérer leur traitement, notamment dans le cas d’optimisations multidisciplinaires [1][2]. Par ailleurs, un algorithme de couplage aux outils de simulation élabore des résultats statistiques à partir des résultats individuels. Celui-ci doit limiter au plus juste le nombre d’évaluations des configurations peu prometteuses afin que les temps de calcul ne soient pas rédhibitoires même en parallélisant les traitements sous incertitude [1]. Cette parallélisation des traitements peut s’envisager de diverses manières (parallélisation des seules évaluations, population répartie en sous-populations avec possibilité de migration entre elles…) et peut se faire par l’utilisation de tâches (threads) dans un même processus et/ou via l’utilisation simultanée de plusieurs processus sur des architectures distribuées en grappes (clusters) telles que celles proposées par les fournisseurs de cloud (e.g. Amazon AWS, Microsoft Azure, Google Compute Engine, ou les francais CloudWatt, Numergy, Outscale, OVH et Ikoula). La solution retenue pour la plateforme est d’utiliser un ensemble cohérent de composants logiciels développés initialement pour le Big Data (e.g. Apache Spark [3]) afin de répartir les calculs (algorithmes et/ou évaluations) sur ce genre d’architectures facilement configurables dans le cloud. Les algorithmes d’optimisation font également appel à des ressources externes pour évaluer des configurations de paramètres via des services Web RESTful suivant la philosophie des microservices [4]. 3 Conclusion Cette plateforme d’optimisation s’inscrit dans un projet collaboratif qui a pour ambition de fédérer une communauté de chercheurs, développeurs, industriels et donneurs d’ordres. Elle devrait favoriser la diffusion des techniques d’optimisation dans l’industrie où elles s’avèrent souvent absentes bien qu’indispensables à sa survie dans un monde globalisé. Références [1] L. JAEGER. Optimisation multidisciplinaire sous incertitude en phase conceptuelle avion. PhD thesis, 2013. Université Toulouse 3 Paul Sabatier [2] J. CLÉMENT. Optimisation multidisciplinaire : étude théorique et application à la conception des avions en phase d'avant-projet. PhD thesis, 2009. Institut Supérieur de l’Aéronautique et de l’Espace [3] M. Zaharia. Spark: cluster computing with working sets, Proceedings of the 2nd USENIX conference on Hot topics in cloud computing, p.10-10, June 22-25, 2010, Boston, MA [4] S. Newman. Building Microservices. ISBN 978-1-4919-5035-7. [5] A. Cabarbaye. Outil générique d’optimisation dans le domaine discret et/ou continu éventuellement stochastique. ROADEF’03 – Avignon, 2003.

Mots clés : Recherche opérationnelle, Optimisation multidisciplinaire, Optimisation distribuée, Open source