• Aucun résultat trouvé

4.4 Conclusions sur la simulation du tremblement sur profils supercritiques

5.1.1 Algorithme d’optimisation

5.1.1.1 Principes généraux

Afin de traiter des problèmes d’optimisation réellement multi-objectifs, le choix a été fait d’utiliser une approche par algorithme génétique (AG). La souplesse des algorithmes géné- tiques et leur aptitude à traiter des problèmes multi-paramètres et multi-objectifs font qu’ils ont été utilisés pour une gamme très large de problèmes. Cette méthode d’optimisation repose sur l’utilisation de trois opérateurs basiques, inspirés des principes de la sélection naturelle, pour faire évoluer une population initiale de solutions possibles du problème aléatoirement générée. Ces trois opérateurs fondamentaux sont :

– la sélection : on sélectionne les meilleurs individus vis-à-vis d’un objectif fixé ;

– le croisement : les meilleurs individus après avoir été sélectionnés sont croisés. Concrè- tement, par analogie à la sélection naturelle un échange de chromosomes a lieu entre "bons" individus afin de définir un nouvel individu ;

– la mutation : cet opérateur modifie la valeur d’un gène/d’une allèle dans un chromosome qui définit le "patrimoine génétique" d’un individu. Cet opérateur a un rôle important dans la mesure où il permet d’explorer au mieux l’espace des paramètres, en évitant de converger vers un extremum local.

Toujours par analogie avec les processus biologiques, les opérateurs génétiques de croisement et de mutation n’agissent qu’avec une certaine probabilité. Concrètement, une optimisation par algorithmes génétiques consiste à générer une population d’individus, c’est-à-dire un ensemble de jeux de paramètres du problème d’optimisation à résoudre, puis à évaluer l’adap- tation de chaque individu, c’est-à-dire la ou les valeurs de la ou des fonctions objectifs qui définissent le problème d’optimisation et enfin à appliquer les trois opérateurs précédemment décrits aux combinaisons paramètres/objectifs afin de générer une nouvelle population. On réalise ce processus pendant un certain nombre de générations, jusqu’à obtenir dans la po- pulation des individus que l’on estime optimaux ou en tout cas suffisamment améliorés par rapport à la configuration initiale dont on disposait. Les principaux paramètres d’une optimi- sation par algorithme génétique sont donc la taille de la population pop, conservée fixe au cours des générations, le nombre maximal de générations maxgen, les probabilités de croisement et de mutation pc et pm. Dans les travaux qui suivent, ces probabilités seront respectivement

fixées à 0.9 et 0.1, sur la base d’expériences réalisées sur des problèmes modèles avec l’algo- rithme mis en oeuvre. En pratique, le produit pop ×maxgen est fixé par des considérations de temps de calcul. Dans les problèmes que nous traitons, l’évaluation des fonctions objectifs né- cessite au minimum une simulation d’écoulement sur profil (davantage dans le cas où plusieurs points de fonctionnement sont considérés) et le temps de calcul C associé à une seule de ces simulations, de l’ordre de plusieurs minutes, est très largement supérieur au temps de calcul associé à l’ensemble des opérations purement génétiques. Les paramètres pop et maxgen sont

donc choisis de telle sorte que le temps de calcul total associé au processus d’optimisation, donné par C × pop × maxgen reste inférieur à une valeur prescrite sur la base par exemple de la disponibilité de la machine de calcul (en particulier sur des machines avec système de queue pour lesquelles la durée globale d’un calcul est limitée). Les calculs présentés dans ce chapitre ont été réalisés en utilisant systématiquement une population de 24 individus que l’on a fait évoluer pendant au maximum 20 générations ce qui a donc limité le temps d’exécution de l’algorithme. Plus précisément, le temps d’évaluation d’un individu est d’environ 35 minutes sur les machines scalaires présentes au laboratoire, et d’environ 2 à 4 minutes sur les machines vectorielles de l’IDRIS (SX5 puis SX-8). Une optimisation typique, d’environ 350 individus, a donc un coût global d’un peu plus de 200 heures sur machine scalaire, et de 11 (SX-8) à 22 heures (SX-5) sur machines vectorielles.

Le coût de la boucle génétique que nous avons utilisée est clairement élevé puisque cette boucle conduit typiquement à l’évaluation de plusieurs centaines d’individus pour dégager une population d’individus optimaux. Notre choix d’un algorithme d’optimisation de type évolutionnaire s’appuie cependant sur deux atouts importants : en premier lieu, le couplage code de calcul / algorithme génétique, s’il n’est pas nécessairement immédiat, s’avère néan- moins beaucoup moins coûteux en temps de développement que la mise en place d’un outil d’optimisation nécessitant un code de résolution du problème adjoint (voir par exemple [105]). Cet argument a été décisif dans notre stratégie dans la mesure où, comme nous allons le dé- tailler par la suite, nous savons d’ores et déjà que l’optimisation entreprise devra évoluer en fonction des améliorations effectuées en matière de modélisation de la turbulence. Dans le cas d’une optimisation par approche adjointe, extrêmement efficace une fois que l’outil numé- rique est disponible, il sera nécessaire de prévoir de nouveaux développements pour le code adjoint à chaque évolution du solveur fluide, notamment donc en ce qui concerne le modèle de turbulence. Au contraire, l’approche génétique permet d’intégrer immédiatement dans la boucle d’optimisation toute nouvelle version du solveur fluide, en minimisant donc les coûts de développement, même si le prix à payer pour cette souplesse est un coût élevé de la boucle d’optimisation elle-même. Un deuxième argument en faveur de l’utilisation des algorithmes génétiques est notre intérêt pour des problèmes d’optimisation multi-objectifs : il existe en effet des AG particulièrement bien adaptés à la résolution de tels problèmes et qui permettent notamment de tirer pleinement parti de l’utilisation d’une population de solutions comme nous allons l’expliquer dans le paragraphe qui suit.

5.1.1.2 Optimisation multi-objectifs

Nous avons mis en oeuvre dans la présente étude l’algorithme génétique multi-objectifs NSGA (pour Non-Dominated Sorting Genetic Algorithm) proposé initialement par Srinivas et Deb [128] ; un code d’optimisation intégrant cette méthode a été développé par Kalyanmoy Deb au Kanpur Genetic Algorithms Laboratory en Inde et mis à disposition des utilisateurs. Nous avons donc utilisé cet outil existant en l’adaptant bien sûr à nos besoins spécifiques. Nous rappelons brièvement dans ce paragraphe les principes de fonctionnement d’un tel algorithme génétique multi-objectifs ; nous renvoyons aux ouvrages spécialisés de Goldberg [55] et Deb [33] pour plus d’informations sur ces algorithmes.

L’algorithme NSGA, comme la plupart des algorithmes génétiques multi-objectifs, utilise la notion de dominance au sens de Pareto pour déterminer l’adaptation d’un individu. Ainsi, en présence d’objectifs multiples, on va classer la population d’individus selon leur rang de do-

5.1. Outils numériques 173

minance : par exemple dans le cas d’un problème bi-objectifs, deux individus ne se dominent pas l’un l’autre si l’un des individus est meilleur que l’autre vis-à-vis du premier objectif, mais moins bon que l’autre vis-à-vis du deuxième objectif. Clairement, un individu en dominera un autre s’il lui est supérieur pour les deux objectifs considérés. Pour une population d’individus à une génération donnée, on attribue le rang 1 aux individus non-dominés de la population puis on progresse de façon récursive pour classer les individus dominés : on définit une population intermédiaire comme la population initiale privée des individus de rang 1 précédemment dé- terminés et on attribue le rang 2 aux individus non-dominés de cette population intermédiaire puis on définit une nouvelle population intermédiaire égale à la population initiale privée des individus de rang 1 et 2 au sein de laquelle on cherche à nouveau les individus non-dominés pour leur attribuer le rang 3 et ainsi de suite jusqu’à ce que tous les individus de la population initiale se soient vus attribuer un rang. La fonction d’adaptation de base retenue par l’algo- rithme génétique pour sélectionner les "bons" individus sera directement fonction du rang de dominance, qui permet bien une prise en compte globale de tous les objectifs.

Dans la mesure où la solution du problème multi-objectifs va être constituée par un ensemble d’individus, dit ensemble ou front de Pareto, qui dominent tous les autres sans se dominer les uns les autres et compte tenu du fait que l’AG manipule une population d’individus, un AG multi-objectifs va chercher à répartir autant que possible cette population le long du front de Pareto optimal. Cette répartition est obtenue en introduisant une stratégie dite de partage dont le rôle est de diminuer l’adaptation des individus situés dans un même voisinage, ce qui rend par conséquence plus attractifs les individus isolés (on suppose ici que l’on cherche à maximiser la fonction d’adaptation). Concrètement, la fonction d’adaptation brute d’un indi- vidu, déduite du rang de dominance, est divisée par un facteur d’autant plus grand devant 1 que l’individu considéré possède un nombre élevé de voisins - dans le cas limite d’un individu isolé la fonction d’adaptation brute conserve sa valeur. Signalons encore que, le souci prin- cipal dans la mise en oeuvre de l’algorithme étant d’éviter tout calcul inutile de la fonction d’adaptation en raison du coût élevé de son évaluation, une stratégie est mise en oeuvre qui consiste à ne pas simuler les individus situés dans un même voisinage (notion définie dans l’espace des paramètres) mais à se contenter plutôt d’attribuer les mêmes valeurs de fonctions objectifs aux individus d’un même voisinage. Ce choix simple est bien justifié par le fait que la stratégie de partage a pour but de ne conserver qu’un seul individu dans une "niche" donnée, i.e. une portion du front de Pareto global.

Documents relatifs