• Aucun résultat trouvé

Pour améliorer la méthode numérique développée et atteindre les objectifs de ce mémoire, un algorithme d’optimisation sera ajouté au code thermique. Cet ajout permettra de déterminer avec précision les paramètres optimaux pour générer un profil de température à l’intérieur des tolérances demandées et qui soit le plus uniforme possible. Cette section présentera une description des différentes techniques d’optimisation envisagées.

La résolution de problème d’optimisation n’est pas une chose nouvelle et la littérature est abondante à ce sujet. Il existe une grande diversité de méthodes d’optimisation, s’appliquant à une toute aussi grande diversité de type de problème. Afin de choisir la méthode la mieux adaptée à l’uniformisation du profil de température, les caractéristiques du problème sont tout d’abord cernées. Premièrement, la fonction à optimiser est dérivée de l’équation 2.14 et n’a donc pas de solution analytique pour une géométrie complexe. La méthode d’optimisation choisie doit donc être une méthode itérative. De plus, pour répondre à l’objectif de rapidité de simulation mentionné à la section 2.2.1, la solution optimale doit être trouvée le plus rapidement possible. La méthode doit également pouvoir s’intégrer facilement au code thermique. Finalement, il s’agit d’un problème de minimisation d’une fonction à plusieurs variables auquel des contraintes peuvent s’appliquer. Les méthodes les plus couramment utilisées répondant à ces critères sont les méthodes dites à direction de descentes. Ces algorithmes sont itératifs et génèrent une suite de point qui se rapproche progressivement du minimum de la fonction. Chaque point est trouvé avec la fonction de récurrence suivante (tiré de Arora, 2004, p. 283) :

= − (2.21)

Chaque point de la séquence est calculé à partir du point précédent auquel un déplacement est ajouté suivant une direction de descente et un pas de descente . Le calcul de la direction de descente dépend du type de méthode. Par contre, le pas de descente peut être choisi arbitrairement ou calculé avec une méthode de recherche linéaire. Le principe

de la recherche linéaire consiste à trouver le pas qui correspond le minimum de la fonction dans la direction de la descente. Parmi les méthodes de descentes, trois sont choisies et seront comparées pour déterminer la plus efficace. Dans ces méthodes, il est nécessaire de calculer les dérivées de la fonction à minimiser. Comme l’équation 2.14 doit être résolue numériquement, le calcul des dérivées est effectué numériquement avec les formules de différences finies. Les formules utilisées sont présentées à l’annexe IV et sont tirées du livre de Gilat et Subramaniam (Gilat et Subramaniam, 2008, p. 247 à 249). Le choix des pas de discrétisations h et k influence la précision du calcul des dérivés dans le vecteur gradient. La précision du gradient doit être suffisante pour assurer la convergence de l’algorithme d’optimisation. Lors de l’implémentation des algorithmes de descente, il a été établi par plusieurs essais qu’un pas de discrétisation représentant 1 % de la valeur de la variable en assure la convergence.

Les méthodes s’appliquant aux problèmes sans contraintes seront tout d’abord présentées. Si l’ajout de contraintes s’avère nécessaire dans le futur, la méthode de barrières, présenté à la section 2.3.4 pourra être utilisée. Cette méthode s’ajoute facilement aux méthodes de descente présentées.

2.3.1 Méthode de Newton avec recherche linéaire par rebroussement (Backtracking linesearch)

La méthode de Newton est basée sur la dérivée du développement en série de Taylor pour trouver une approximation du minimum d’une fonction ( ) . Le développement complet de cette méthode est expliqué par Arora (Arora, 2004, p. 319 à 325). En résumé, la direction de descente est définie comme étant le quotient du vecteur gradient ( ) de la fonction et de la matrice Hessienne ( ).

= ( )

( )= ( ) ( ) (2.22)

( ) =

( ) ( ) ( )⋮

et

( ) =

( ) ( )

… ( )

( ) ( )

… ( )

⋮ ⋮ ⋱ ⋮

( ) ( )

… ( )

Où m est le nombre de variables indépendantes. Cette méthode est implémentée dans le code en y ajoutant une méthode de recherche linéaire pour déterminer le pas de la descente . Un choix judicieux du pas de la descente améliore considérablement la rapidité et la stabilité de la convergence de l’algorithme.

Pour ce faire, la stratégie dite de recherche linéaire par rebroussement (backtracking linesearch (BL)) est utilisée (Luenberger and Ye 2008). Celle-ci permet d’obtenir de façon simple une bonne estimation d’un pas de descente qui soit ni trop grand, ni trop petit (Luenberger and Ye, 2008, p. 230 à 233). L’algorithme est défini par deux variables décisionnelles positives : 0 < < 0,5 et 0 < < 1, ajustées pour obtenir un compromis entre rapidité de convergence et précision du résultat. Tant que l’inégalité ( + ) >

( ) + ( ) n’est pas satisfaite, t est réduite d’un facteur . Il est mentionné qu’une bonne valeur de départ est = 1. Le code de la méthode de Newton avec BL se retrouve à l’annexe V.

2.3.2 Gradient conjugué

Dans le code thermique, la méthode utilisée est la fonction gsl_multimin_fdfminimizer_conjugate_fr de la librairie scientifique GSL – GNU (Galassi and Gough, 2009, p. 391 à 401). Cette fonction s’intègre directement dans le code thermique.

Le langage de programmation utilisé est le C++. L’algorithme de gradient conjugué utilisé dans la librairie est celui de Fletcher-Reeves. Celui-ci consiste en une succession de minimisation linéaire, suivant la direction du gradient. À chaque itération, une direction de descente est choisie en utilisant le gradient ( ) et une recherche linéaire est effectuée selon cette direction.

La précision de la méthode de recherche linéaire est déterminée par le paramètre tol de la fonction. Le minimum est atteint lorsque le vecteur gradient et la direction de descente sont orthogonaux. Ainsi, la recherche linéaire se termine lorsque :

∙ ( ) < | || ( )| (2.23)

La direction de descente est rectifiée en utilisant la formule de Fletcher-Reeves = ( ) − ( ), où = −| ( ) | /| ( )| . La recherche linéaire est ensuite répétée pour la nouvelle direction de descente.

2.3.3 Algorithme de Broyden-Fletcher-Goldfarb-Shanno 2 (BFGS2)

La fonction utilisée est gsl_multimin_fdfminimizer_vector_bfgs2, et provient de la librairie scientifique GSL – GNU (Galassi and Gough, 2009, p. 391 à 401). Cette méthode utilise l’algorithme de BFGS2 et est une méthode dite de quasi-Newton. Cet algorithme utilise la différence de plusieurs vecteurs gradient pour approximer la dérivée seconde de la fonction ( ) à optimiser. Le calcul de chaque itération est ensuite effectué de la même façon que la méthode de Newton. Cette approximation permet une convergence plus rapide et un nombre de calculs de la fonction à minimiser inférieur à la méthode de Newton traditionnelle.

2.3.4 Méthode de barrière

Les méthodes dites de barrières sont utilisées pour approximer la solution d’un problème contraint par un problème non contraint. Les contraintes d’un problème sont les valeurs limites de l’ensemble des solutions admissibles. Par exemple, en optimisant la puissance pour atteindre une certaine température, il serait possible d’imposer une limite de 12 500 W, soit la puissance maximale que peut fournir le système d’induction. Pour une fonction ( ), les contraintes doivent être exprimées sous forme d’inégalité :

( ) ≤ 0, = 1, …

L’approximation est atteinte en ajoutant un coût ( ), à ( ), qui favorise les points à l’intérieur de l’ensemble admissible par rapport à ceux qui se trouvent près de la frontière.

L’ensemble admissible est l’ensemble qui englobe les points à l’intérieur des contraintes. Ce coût ajouté est appelé fonction de barrière. Parmi les plus répandus, et celle qui sera ici utilisée, on retrouve la fonction de barrière logarithmique :

( ) = − log(− ( )) (2.24)

Ainsi, la fonction à minimiser devient :

( , ) = ( ) +1

( ) (2.25)

La recherche du minimum de cette nouvelle fonction s’effectue selon l’équation 2.21, seulement, est obtenu en minimisant l’équation 1.25 en augmentant successivement c.

= min ( ) + 1

( ) (2.26)

Avec → ∞, > ≥ 0 et l = 1, 2, … . Les équations 2.24, 2.25 et 2.26 sont tirées de (Luenberger and Ye, 2008, p. 401 à 408).