28.01.2015 Views

ETUDE DE LA METHODE D'OPTIMISATION DE RACKWITZ - ISIMA

ETUDE DE LA METHODE D'OPTIMISATION DE RACKWITZ - ISIMA

ETUDE DE LA METHODE D'OPTIMISATION DE RACKWITZ - ISIMA

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Institut Supérieur d’Informatique,<br />

Polytech’ Clermont-Ferrand<br />

de Modélisation et de leurs Applications<br />

Complexe des Cézeaux<br />

Complexe des Cézeaux<br />

BP 125 BP 206<br />

63173 Aubière Cedex 63174 Aubière Cedex<br />

Rapport de projet de 3 ème année<br />

Filière F4 - Calcul et modélisation scientifiques<br />

________________________________________________________________________________<br />

<strong>ETU<strong>DE</strong></strong> <strong>DE</strong> <strong>LA</strong> METHO<strong>DE</strong> D’OPTIMISATION<br />

<strong>DE</strong> <strong>RACKWITZ</strong><br />

________________________________________________________________________________<br />

Présenté par : Benoît GAL<strong>LA</strong>ND et Christophe MAETZ<br />

Responsable : Michel FOGLI (Polytech' Clermont-Ferrand)<br />

Durée : 100h<br />

Octobre 2007 à mars 2008


Institut Supérieur d’Informatique,<br />

Polytech’ Clermont-Ferrand<br />

de Modélisation et de leurs Applications<br />

Complexe des Cézeaux<br />

Complexe des Cézeaux<br />

BP 125 BP 206<br />

63173 Aubière Cedex 63174 Aubière Cedex<br />

Rapport de projet de 3 ème année<br />

Filière F4 - Calcul et modélisation scientifiques<br />

________________________________________________________________________________<br />

<strong>ETU<strong>DE</strong></strong> <strong>DE</strong> <strong>LA</strong> METHO<strong>DE</strong> D’OPTIMISATION<br />

<strong>DE</strong> <strong>RACKWITZ</strong><br />

________________________________________________________________________________<br />

Présenté par : Benoît GAL<strong>LA</strong>ND et Christophe MAETZ<br />

Responsable : Michel FOGLI (Polytech' Clermont-Ferrand)<br />

Durée : 100h<br />

Octobre 2007 à mars 2008


Remerciements<br />

Nous remercions M. Michel Fogli, notre responsable de projet, pour son aide et ses<br />

conseils pour la compréhension de l’algorithme principal et l’élaboration du projet. Nous<br />

remercions également M. Jonas Koko, professeur à l’<strong>ISIMA</strong>, pour ses explications dans<br />

l’utilisation de fonctions d’optimisation de Matlab.


Table des figures et illustrations<br />

1.1 Représentation graphique de la fonction contrainte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

1.2 Illustration de l’algorithme de Rackwitz (initialisation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.3 Illustration de l’algorithme de Rackwitz (itération 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

1.4 Illustration de l’algorithme de Rackwitz (itération 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

1.5 Illustration de l’algorithme de Rackwitz (solution) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

3.1 Exécution de l’algorithme de Rackwitz dans le cas d’un hyperplan en 2D . . . . . . . . . . . . . 21<br />

3.2 Convergence en nombre d’itérations dans le cas d’un hyperplan . . . . . . . . . . . . . . . . . . . . . 22<br />

3.3 Convergence en temps d’exécution dans le cas d’un hyperplan . . . . . . . . . . . . . . . . . . . . . . 22<br />

3.4 Influence de l’initialisation sur le nombre d’itérations dans le cas d’un hyperplan . . . . . . . . 22<br />

3.5 Intersections possibles entre une droite issue de l’origine et une parabole . . . . . . . . . . . . . . 23<br />

3.6 Intersections possibles entre une droite issue de l’origine et une hyperbole . . . . . . . . . . . . . 23<br />

3.7 Cas de non convergence de l’algorithme de Rackwitz avec une parabole. . . . . . . . . . . . . . . 24<br />

3.8 Exécution de l’algorithme de Rackwitz avec un domaine non connexe . . . . . . . . . . . . . . . . 25<br />

3.9 Exécution de l’algorithme de Rackwitz avec un domaine non connexe (zoom) . . . . . . . . . . 26<br />

3.10 Convergence en nombre d’itérations dans le cas de paraboloïdes / hyperboloïdes . . . . . . . . 26<br />

3.11 Exemple d’un domaine délimité par un cercle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

3.12 Convergence en nombre d’itérations dans le cas d’ellipsoïdes . . . . . . . . . . . . . . . . . . . . . . . 28<br />

3.13 Convergence en nombre d’itérations pour des cas divers . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

3.14 Convergence en temps d’exécution pour des cas divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28


Résumé<br />

L’objet de ce projet est l’étude de la méthode d’optimisation de Rackwitz. Nous avons testé<br />

cette méthode récente, principalement utilisée dans le domaine de la fiabilité, sur un problème<br />

d’optimisation non linéaire : la minimisation, dans un espace à n dimensions, d’une norme d’un<br />

vecteur avec une fonction contrainte non linéaire.<br />

Notre travail a consisté tout d’abord à implémenter l’algorithme de Rackwitz, puis deux<br />

autres algorithmes itératifs de type gradient projeté et lagrangien augmenté. La méthode de<br />

Rackwitz a été analysée quant à sa convergence et comparée aux autres méthodes selon des critères<br />

que nous avons sélectionnés.<br />

L’implémentation des différentes méthodes d’optimisation ainsi que la visualisation des<br />

résultats ont été faites dans l’environnement Matlab.<br />

Mots-clés :<br />

optimisation non linéaire, algorithme de Rackwitz, gradient projeté,<br />

lagrangien augmenté, Matlab<br />

Abstract<br />

The purpose of this project is the study of the Rackwitz optimization method. We have tested<br />

this recent method, principally used in the reliability domain, on a nonlinear optimization<br />

problem: the minimization, in a n-dimensional space, of a vector’s norm with a nonlinear constraint<br />

function.<br />

We have first implemented the Rackwitz algorithm, then two other iterative algorithms,<br />

projected gradient and augmented Lagrangian methods. We have analysed the Rackwitz method<br />

about its convergence and compared it to the other methods with criteria we have selected.<br />

The implementation of the different optimization methods and the visualization of results<br />

have been realized in the Matlab environment.<br />

Keywords :<br />

nonlinear optimization, Rackwitz algorithm, projected gradient<br />

augmented Lagrangian, Matlab


Table des matières<br />

Remerciements<br />

Table des figures et illustrations<br />

Résumé / Abstract<br />

Table des matières<br />

Introduction 7<br />

1. L’algorithme de Rackwitz 8<br />

1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.2 Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.3 Principe de l’algorithme et exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.4 Le schéma de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

1.5 L’implémentation en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2. Les algorithmes de comparaison 15<br />

2.1 L’algorithme de type gradient projeté . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.2 L’algorithme de type lagrangien augmenté . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2.3 L’implémentation en Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3. Exemples d’application et résultats comparés 20<br />

3.1 Critères de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

3.2 Cas où le graphe F(x) = 0 est un hyperplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

3.3 Cas où le graphe F(x) = 0 est un paraboloïde ou un hyperboloïde . . . . . . . . . . . . . . . . . 23<br />

3.4 Cas où le graphe F(x) = 0 est un ellipsoïde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

3.5 Cas divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

Conclusion 30<br />

Bibliographie<br />

Annexes


Introduction<br />

Le problème que nous cherchons à traiter est un problème d’optimisation non linéaire contraint<br />

du type :<br />

où<br />

est une fonction non linéaire<br />

Nous utiliserons la norme euclidienne dans :<br />

Nous allons présenter l’algorithme de Rackwitz, en l’illustrant graphiquement sur un exemple,<br />

puis en présentant le schéma itératif utilisé pour son implémentation. Nous décrirons ensuite les deux<br />

algorithmes de type gradient projeté et lagrangien augmenté, et nous verrons comment ils peuvent<br />

s’appliquer au problème spécifique que nous voulons traiter. Enfin, dans une dernière partie, nous<br />

allons comparer ces trois méthodes d’optimisation, plus précisément la méthode de Rackwitz par<br />

rapport aux deux autres, au moyen de critères que nous choisirons.<br />

7


1. L’algorithme de Rackwitz<br />

1.1. Introduction<br />

Rüdiger Rackwitz [1] est un chercheur de l’université technique de Munich (Allemagne). Il<br />

travaille notamment sur la théorie de la fiabilité, mais également dans l’application de la théorie des<br />

probabilités et des statistiques dans l’ingénierie du bâtiment, et l’optimisation des constructions.<br />

En 1978, il développe l’algorithme qui porte aujourd’hui son nom, et qui est très largement<br />

utilisé en fiabilité structurale. Cet algorithme se base notamment sur les notions de normale à une<br />

courbe et de gradient, et il en existe plusieurs variantes, dont celle dite de Rackwitz-Fiessler [2] [3] .<br />

1.2. Convergence<br />

L’algorithme de Rackwitz est un algorithme non convergent. Par définition, cela signifie qu’il<br />

existe au moins un exemple pour lequel il ne converge pas. Néanmoins, lorsqu’il y a convergence,<br />

c’est l’un des algorithmes qui converge le plus rapidement. Nous allons vérifier cette proposition en<br />

mettant en œuvre cet algorithme sur différents exemples assez représentatifs.<br />

1.3. Principe de l’algorithme et exemple<br />

Nous souhaitons donc résoudre le problème suivant, avec dans :<br />

Minimiser<br />

sous<br />

Pour illustrer l’algorithme, nous avons choisi un exemple en 2D pour lequel il y a convergence,<br />

avec pour contrainte la fonction F suivante :<br />

Le vecteur solution de ce problème est la distance entre l’origine O du repère et le domaine<br />

, colorié en vert sur la figure suivante (Fig. 1.1).<br />

8


Fig. 1.1 - Représentation graphique de la fonction contrainte<br />

Le point d’initialisation est choisi sur la courbe définie par . L’algorithme cherchera<br />

ce point initial au moyen de la méthode de Newton. Pour cela, on cherche, s’il existe, le point sur la<br />

courbe dont les (n-1) premières coordonnées sont fixées à 1, la dernière coordonnée étant le paramètre<br />

de la méthode de Newton. Cette coordonnée x à trouver est telle que :<br />

Sur notre exemple (Fig. 1.2), le point d’initialisation est dont le point :<br />

9


Fig. 1.2 - Illustration de l’algorithme de Rackwitz (initialisation)<br />

Ensuite, une itération de l’algorithme revient à chercher la normale au point courant et ensuite<br />

trouver le point courant suivant en trouvant l’intersection entre la parallèle de la normale passant par<br />

l’origine et la courbe définie par .<br />

Sur notre exemple (Fig. 1.3), la droite rouge en pointillés est la normale en à la courbe<br />

. La droite rouge est la parallèle à cette droite passant par l’origine et coupant, après calcul, la<br />

courbe au point<br />

10


Fig. 1.3 - Illustration de l’algorithme de Rackwitz (itération 1)<br />

Fig. 1.4 - Illustration de l’algorithme de Rackwitz (itération 2)<br />

11


L’algorithme consiste ensuite à réitérer ce calcul de la normale au point courant puis de la<br />

recherche de l’intersection entre la courbe et la parallèle à cette normale passant par<br />

l’origine. Ainsi la normale en est la droite rouge en pointillés (Fig. 1.4) et sa parallèle passant par<br />

l’origine est la droite rouge, qui coupe, après calcul, la courbe au point<br />

Il faut ainsi réitérer ces calculs jusqu’à ce que deux itérations successives vérifient la condition<br />

suivante :<br />

Sur notre exemple (Fig. 1.5), la solution trouvée par l’algorithme de Rackwitz est :<br />

Fig. 1.5 - Illustration de l’algorithme de Rackwitz (solution)<br />

Cette condition d’arrêt signifie que dès que la distance entre deux points successifs est<br />

inférieure à la précision choisie, nous considérons que ces deux points sont confondus et forment donc<br />

la solution recherchée.<br />

12


1.4. Le schéma de l’algorithme<br />

Nous avons implémenté l’algorithme de Rackwitz à partir du schéma suivant :<br />

Initialisation :<br />

Itération :<br />

Condition d’arrêt :<br />

1.5. L’implémentation en Matlab<br />

1.5.1. Remarques générales<br />

Tous les algorithmes du projet, dont celui de Rackwitz, ont été implémentés dans la version 7 du<br />

logiciel Matlab. Tout le code de ce projet est exécutable sur les versions de Matlab équipées de la boîte<br />

à outils Optimization Toolbox, car notre implémentation des algorithmes de comparaison nécessite<br />

l’utilisation de fonctions de minimisation spécifiques.<br />

L’instruction Matlab – format long – permet d’effectuer tous les calculs avec une grande<br />

précision, avec jusqu’à 15 chiffres pour un nombre flottant.<br />

Pour l’implémentation de l’algorithme de Rackwitz, nous avons au préalable écrit plusieurs<br />

fonctions auxiliaires qui seront réutilisées pour les autres algorithmes.<br />

13


1.5.2. Calcul des dérivées<br />

Deux fonctions auxiliaires permettent de calculer une dérivée totale ou partielle ainsi que le<br />

gradient, vecteur des dérivées partielles. Pour le calcul de la dérivée, nous utilisons l’approximation<br />

par différences finies suivante :<br />

si ,<br />

alors<br />

1.3.3. La méthode de Newton<br />

Nous avons implémenté la méthode de Newton pour l’initialisation de l’algorithme de<br />

Rackwitz. En effet, celui-ci nécessite de démarrer d’un point courant situé sur la courbe .<br />

Comme nous traitons des fonctions<br />

, nous appliquons la méthode de Newton sur<br />

la dernière variable de , les valeurs des (n-1) premières variables étant fixées au préalable. Avec cette<br />

hypothèse, il se peut que la méthode de Newton ne trouve pas de solution : dans ce cas, un nombre<br />

d’itérations maximum étant fixé à l’avance, une erreur d’initialisation est prévue.<br />

14


2. Les algorithmes de comparaison<br />

Les méthodes existantes en programmation non linéaire sous contraintes se divisent en deux<br />

grandes catégories, les méthodes primales et les méthodes duales. Nous allons présenter un algorithme<br />

de chaque catégorie, et montrer comment on peut adapter chacun au problème général que nous<br />

voulons traiter.<br />

2.1. L’algorithme de type gradient projeté<br />

2.1.1. Une méthode primale<br />

Le premier algorithme que nous avons choisi de comparer à la méthode de Rackwitz est un<br />

algorithme de type gradient projeté avec contraintes, d’après Rosen [4] (1960). Cet algorithme du<br />

gradient projeté est une méthode dite primale, qui opère directement sur le problème à traiter. Les<br />

méthodes primales engendrent une séquence itérative de solutions en assurant une décroissance<br />

monotone de la fonction à minimiser. Leur principal avantage est, en cas d’interruption du processus<br />

itératif, l’obtention d’une solution intermédiaire approchée vérifiant les contraintes.<br />

2.1.2. Hypothèses<br />

Cette méthode se base sur une idée simple : à chaque étape de l’algorithme, le nouveau point ne<br />

vérifie peut-être pas certaines contraintes, on projette donc ce point obtenu sur l’ensemble induit par<br />

les contraintes pour qu’il appartienne à l’ensemble des solutions réalisables. Le point est projeté sur la<br />

frontière du domaine et l’algorithme n’est donc en réalité qu’un cheminement le long de la frontière,<br />

jusqu’à obtention de la solution.<br />

Cet algorithme s’applique, de manière générale, au problème suivant :<br />

Minimiser<br />

sous les contraintes<br />

Dans notre problème, nous n’avons qu’une seule contrainte de type inégalité, ce que l’on peut<br />

donc réécrire :<br />

Minimiser<br />

sous la contrainte<br />

15


2.1.3. Déroulement<br />

Une itération consiste à chercher depuis un point une direction de descente et à trouver dans<br />

cette direction la meilleure solution.<br />

La contrainte sera dite saturée pour si .<br />

Pour appliquer l’algorithme de gradient projeté, il faudra suivre le schéma suivant :<br />

Initialisation :<br />

Tant que n’est pas acceptable :<br />

Déterminer si la contrainte est saturée ou non<br />

Si la contrainte est saturée,<br />

Construction de<br />

Sinon<br />

Calcul de la matrice de projection<br />

( ( est ici un scalaire)<br />

Calcul de la direction de descente<br />

Si alors<br />

Calcul de<br />

Calcul de tel que<br />

Sinon<br />

Poser<br />

Si alors satisfait les conditions de Kuhn et Tucker, est acceptable<br />

Sinon<br />

La contrainte n’est plus considérée comme saturée<br />

On retourne à l’étape de construction de<br />

16


2.2. L’algorithme de type lagrangien augmenté<br />

2.2.1. Une méthode duale<br />

Le second algorithme que nous avons choisi est un algorithme de type lagrangien augmenté [5] ,<br />

une méthode dite duale. Le principe général de ce type de méthode consiste à ramener le problème<br />

initial à la résolution d’une suite de problèmes d’optimisations sans contrainte.<br />

2.2.2. Hypothèses<br />

Cet algorithme s’applique, de manière générale, au problème suivant :<br />

Minimiser<br />

sous les contraintes<br />

Dans notre problème, nous n’avons qu’une seule contrainte de type inégalité, ce que l’on peut<br />

donc réécrire :<br />

Minimiser<br />

sous la contrainte<br />

2.2.3. Déroulement<br />

Le schéma de l’algorithme, assez simple, est le suivant :<br />

- Initialisation : et<br />

- Minimisation du lagrangien augmenté<br />

- Mise à jour du coefficient de Lagrange<br />

- Augmentation de R<br />

- S’il n’y a pas convergence, mettre à jour et réitérer<br />

17


2.3. L’implémentation en Matlab<br />

Ces deux algorithmes du gradient projeté et du lagrangien augmenté font eux-mêmes intervenir<br />

des sous-problèmes d’optimisation. Ainsi, pour l’implémentation de ces deux méthodes, nous avons<br />

fait appel à plusieurs fonctions de minimisation déjà programmées dans la boîte à outils Optimization<br />

Toolbox de Matlab :<br />

2.3.1. La fonction « fminbnd »<br />

Cette fonction recherche le minimum d’une fonction dans un intervalle donné.<br />

Cette instruction retourne une valeur qui est un minimum local de la fonction dans<br />

l’intervalle , ainsi que la valeur de la fonction en ce point.<br />

Nous utilisons cette fonction de minimisation pour calculer, dans l’algorithme du gradient<br />

projeté :<br />

2.3.2. La fonction « fmincon »<br />

Cette fonction recherche le minimum d’une fonction soumis à des contraintes linéaires et/ou<br />

non linéaires dans un intervalle donné.<br />

Cette instruction retourne une valeur , ainsi que la valeur de la fonction en ce point,<br />

solution approchée d’un problème de type :<br />

Nous utilisons cette fonction de minimisation pour calculer, dans l’algorithme du gradient<br />

projeté :<br />

18


2.3.3. La fonction « fminunc »<br />

Cette fonction recherche le minimum d’une fonction qui n’est soumise à aucune contrainte.<br />

Cette instruction retourne une valeur , qui est un minimum local de la fonction fun.<br />

Nous utilisons cette fonction de minimisation pour calculer, dans l’algorithme du lagrangien<br />

augmenté :<br />

Nous avons présenté en détail l’algorithme de Rackwitz, plus brièvement les méthodes de type<br />

gradient projeté et lagrangien augmenté, et nous avons parlé des éléments nécessaires à leur<br />

implémentation dans le langage Matlab.<br />

L’ensemble du code Matlab du projet est présent en annexe.<br />

Nous allons maintenant tester ces trois méthodes sur différents exemples et comparer celles-ci,<br />

lorsque la comparaison est possible.<br />

19


3. Exemples d’application et résultats comparés<br />

Cette troisième et dernière partie regroupe les différents résultats comparés de l’exécution des<br />

trois méthodes sur des exemples que nous avons choisis pour mettre en évidence des propriétés de<br />

convergence et de rapidité d’exécution de l’une ou l’autre méthode.<br />

Par hypothèse, dans tous les exemples que nous traiterons, l’origine O du repère de sera<br />

située dans le domaine<br />

. En effet, le problème étudié revenant à trouver la distance entre<br />

le point O et le domaine<br />

, prendre O dans ce domaine n’est pas un cas intéressant. Etant<br />

donné que l’algorithme de Rackwitz cherche un point solution sur la frontière du domaine<br />

, la solution triviale du point origine, si celui-ci n’est pas sur la frontière du domaine, ne<br />

pourra être trouvée par cette méthode.<br />

Nous n’évoquerons pas la complexité des algorithmes, le fait est que nous ne disposons que de<br />

peu d’informations sur le fonctionnement intérieur des fonctions<br />

de<br />

l’Optimization Toolbox de Matlab.<br />

3.1. Critères de comparaison<br />

Dans cette troisième et dernière partie, nous allons essayer d’analyser les trois méthodes<br />

d’optimisation, voir dans quels cas l’algorithme de Rackwitz converge, et le cas échéant comparer la<br />

solution retournée avec celles des deux autres méthodes de type gradient projeté et lagrangien<br />

augmenté.<br />

Pour cela, il nous a fallu sélectionner des critères de comparaison comme le nombre<br />

d’itérations et le temps d’exécution de chaque méthode.<br />

3.1.1. Le nombre d’itérations<br />

Comme les trois méthodes étudiées sont des méthodes itératives, un critère intéressant de<br />

comparaison est le nombre d’itérations que chacun des algorithmes met, lors de son exécution avec<br />

Matlab, pour arriver à la solution finale.<br />

3.1.2. Le temps d’exécution<br />

D’autre part, un autre critère que nous avons choisi est le temps d’exécution. La paire<br />

d’instructions Matlab<br />

permet d’afficher la durée écoulée en secondes entre deux instants.<br />

Cette instruction mise au début et à la fin de l’exécution d’une méthode, nous donne sa durée<br />

d’exécution. Cette durée dépendant du processeur de l’ordinateur, elle pourra être utilisée en terme de<br />

rapport entre deux durées. D’autre part, dans le cas où la convergence se fait en moins d’une dizaine<br />

d’itérations, le temps d’exécution très court peut parfois se relever insignifiant.<br />

20


Nous allons maintenant essayer de donner des exemples assez représentatifs de fonctions. Nous<br />

avons d’abord étudié certains cas de fonctions dont le graphe est assez particulier,<br />

avant de donner divers exemples de fonctions non linéaires.<br />

3.2. Cas où le graphe F(x)=0 est un hyperplan<br />

Supposons tout d’abord que la fonction définit un hyperplan . Dans ce cas, il est<br />

clair que l’algorithme de Rackwitz donne toujours en deux itérations maximum le résultat. En effet,<br />

quelque soit le point, les normales sont toutes parallèles. Il y a donc le point initial de l’algorithme qui<br />

est, a priori, un point différent de l’optimum. La première itération donne directement l’optimum. A<br />

l’itération suivante, l’algorithme trouve donc le même point et s’arrête. Cela fait donc bien au plus<br />

deux itérations.<br />

Fig. 3.1 - Exécution de l’algorithme de Rackwitz dans le cas d’un hyperplan en 2D<br />

Dans le cas du lagrangien augmenté, l’algorithme converge assez rapidement, en une dizaine<br />

d’itérations maximum pour les cas traités, suivant que le point initial se situe plus ou moins loin de la<br />

solution. Cependant, si on prend un point d’initialisation trop éloigné de la solution optimale, la<br />

convergence ne peut se faire au moyen de cette méthode. L’algorithme ne nous donne pas la bonne<br />

solution et l’appel de retourne à l’écran :<br />

« »<br />

Il y a aussi le cas très particulier de l’origine comme point initial : l’algorithme s’arrête<br />

directement et considère l’origine comme solution.<br />

21


En revanche, dans le cas du gradient projeté, la convergence semble se faire en trois ou quatre<br />

itérations suivant que l’initialisation soit plus ou moins loin de la solution<br />

Fonction contrainte<br />

Dimension<br />

Gradient Lagrangien<br />

Rackwitz<br />

du problème<br />

projeté augmenté<br />

x 1 - x 2 + 1 2 2 3 4 à 10<br />

6 + x 1 - 3*x 2 - x 3 - 4*x 4 - 6*x 5 5 2 3 ou 4 8 ou 9<br />

6 + x 1 - 3*x 2 - x 3 - 4*x 4 - 6*x 5<br />

+ 3*x 6 - x 7 - x 8 - 2*x 9 + 2*x 10<br />

10 2 3 ou 4 8 ou 9<br />

Fig. 3.2 - Convergence en nombre d’itérations dans le cas d’un hyperplan<br />

Fonction contrainte<br />

Dimension du<br />

Lagrangien<br />

Rackwitz Gradient projeté<br />

problème<br />

augmenté<br />

x 1 -x 2 +1 2 < 0.1 s 0.1 à 0.2 s 0.2 à 1 s<br />

6 + x 1 - 3*x 2 - x 3 - 4*x 4 - 6*x 5 5 < 0.1 s 0.2 s 0.5 à 1.5 s<br />

6 + x 1 - 3*x 2 - x 3 - 4*x 4 -6*x 5 +<br />

3*x 6 - x 7 - x 8 - 2*x 9 + 2*x 10<br />

10 < 0.1 s 0.2 à 0.3 s 0.8 à 2 s<br />

Fig. 3.3 - Convergence en temps d’exécution dans le cas d’un hyperplan<br />

Revenons sur l’exemple en dimension 10. La solution approchée du problème étudié est alors :<br />

T<br />

Les différents points d’initialisation ci-dessous convergent tous sur les deux algorithmes, donc<br />

sont dans le domaine de contrainte . Le nombre d’itérations varie peu.<br />

Point d’initialisation Gradient<br />

projeté<br />

Lagrangien<br />

augmenté<br />

(1;1;1;1;1;1;1;1;1;1) 4 8<br />

(1;41;30;11;15;1;1;11;11;5) 3 8<br />

(1;1;-3;1;5;10;1;11;11;5) 3 8<br />

(1;1;-3;1;5;0;7;16;-11;-5) 4 9<br />

(10;10;10;10;10;10;10;10;10;10) 4 9<br />

(1;1;1;1;1;1;1;1;10;1) 4 8<br />

Fig. 3.4 - Influence de l’initialisation sur le nombre d’itérations dans le cas d’un hyperplan<br />

22


3.3. Cas où le graphe F(x)=0 est un paraboloïde ou un hyperboloïde<br />

Nous avons choisi de regrouper dans une même sous-partie les cas des paraboloïdes et<br />

hyperboloïdes cas car ils présentent des points communs quant aux situations de non-convergence de<br />

la méthode de Rackwitz.<br />

En effet, si on considère en dimension 2, une parabole ou une hyperbole, alors la parallèle<br />

passant par l’origine, à la normale à un point situé sur le graphe , ne coupe pas, ou bien<br />

coupe une ou deux fois la courbe. Ainsi, quand il n’y a pas d’intersection, l’algorithme s’arrête, et<br />

quand l’intersection est double, le choix induit par la méthode de Newton peut faire entrer l’algorithme<br />

dans un cycle infini.<br />

La figure Fig. 3.5 (resp. Fig. 3.6) montre les cas où la parallèle à la normale à un point courant<br />

situé sur une parabole (resp. hyperbole) ne coupe pas ou coupe deux fois la courbe.<br />

Fig. 3.5 - Intersections possibles entre une droite issue de l’origine et une parabole<br />

Fig. 3.6 - Intersections possibles entre une droite issue de l’origine et une hyperbole<br />

23


3.3.1. Cas de non convergence pour une parabole<br />

Dans le cas où la courbe est une parabole (ou plus généralement un paraboloïde en<br />

dimension n), si la fonction contrainte prend des valeurs négatives pour les points situés dans la<br />

partie non convexe, alors la convergence de l’algorithme de Rackwitz n’est pas obligatoirement<br />

assurée.<br />

Un tel exemple de non-convergence est celui où<br />

. En effet, à chaque<br />

itération, il est possible de choisir entre deux points, et l’algorithme, comme nous l’avons programmé,<br />

ne peut pas chercher s’il y a plusieurs points et prend le premier qui arrive. Ce point n’est pas<br />

forcément le plus judicieux. Dans notre exemple, l’algorithme fait un cycle entre les deux points :<br />

La parallèle à la normale à la courbe au point , passant par l’origine, coupe la<br />

courbe en deux points distincts dont l’un est , et inversement en échangeant les rôles de et .<br />

Fig. 3.7 - Cas de non convergence de l’algorithme de Rackwitz avec une parabole<br />

24


3.3.2. Cas de non convergence pour une hyperbole<br />

Prenons l’exemple où délimite un domaine non connexe. C’est le cas par exemple<br />

dans où le graphe correspond à une hyperbole.<br />

Dans le cas des hyperboles, l’algorithme de Rackwitz ne convergera généralement pas car il<br />

aura tendance à faire un cycle entre deux voire trois points situés sur l’hyperbole. La raison principale<br />

est C’est un cas important de non convergence de l’algorithme de Rackwitz.<br />

Pour illustrer ce cas, prenons la fonction contrainte<br />

Considérons maintenant l’hyperbole définie par<br />

courbe d’équation :<br />

, c'est-à-dire le graphe (Fig. 3.1) de la<br />

Fig. 3.8 - Exécution de l’algorithme de Rackwitz avec un domaine non connexe<br />

Nous nous apercevons que l’algorithme de Rackwitz va très rapidement, en quelques itérations,<br />

parvenir à ce cycle de trois points :<br />

25


Le cycle est infini, mais nous nous apercevons que , le point plus proche de l’origine, est une<br />

très bonne solution approchée de la solution. Nous pouvons le voir graphiquement en traçant (Fig. 3.2)<br />

le cercle de centre 0 et de rayon .<br />

Fig. 3.9 - Exécution de l’algorithme de Rackwitz avec un domaine non connexe (zoom)<br />

3.3.3. Résultats en cas de convergence<br />

Le tableau suivant donne les résultats trouvés en cas de convergence de l’algorithme de<br />

Rackwitz dans le cas où le graphe est du type paraboloïde ou hyperboloïde. La quatrième<br />

colonne indique l’initialisation choisie pour le gradient projeté et le lagrangien augmenté ; on rappelle<br />

que pour la méthode de Rackwitz, l’initialisation, si elle est possible telle que nous l’avons<br />

implémentée, est faite automatiquement. Le signe (-) dans la colonne du gradient projeté indique que<br />

nous n’avons pas trouvé de point d’initialisation tel que cette méthode converge vers la bonne solution.<br />

Fonction contrainte<br />

Dimension<br />

Gradient Lagrangien<br />

Initialisation Rackwitz<br />

du problème<br />

projeté augmenté<br />

x 1 ² - 4*x 1 - x 2 + 3 2 (0;1) 7 (-) 8<br />

x 1 ² - 20*x 1 - x 2 + 20 2 (0;1) 3 (-) 9<br />

x 1 ² - 2*x 2 - 3*x 2 + 2 3 (0;0;1) 13 4 8<br />

Fig. 3.10 - Convergence en nombre d’itérations dans le cas de paraboloïdes / hyperboloïdes<br />

Ce tableau montre que la méthode de Rackwitz donne en moyenne de meilleurs résultats que le<br />

lagrangien augmenté, mais que le gradient projeté peut s’il converge arriver à un bon résultat.<br />

26


3.4. Cas où le graphe F(x)=0 est un ellipsoïde<br />

Etudions maintenant le cas où le graphe<br />

ou un cercle en dimension 2.<br />

est un ellipsoïde, en particulier une ellipse<br />

Commençons tout d’abord par un exemple en dimension 2 avec la fonction contrainte :<br />

Considérons maintenant le cercle défini par<br />

centre et de rayon dont le graphe est le suivant :<br />

, et le domaine défini par le disque de<br />

Fig. 3.11 - Exemple d’un domaine délimité par un cercle<br />

Dans ce cas, l’algorithme de Rackwitz converge en 16 itérations. Selon le point d’initialisation<br />

de la méthode de type lagrangien augmenté, on a une convergence en 8 ou 9 itérations. Ainsi, dans ce<br />

cas, on remarquera que le lagrangien augmenté donne de meilleurs résultats. Nous n’avons en<br />

revanche trouvé aucun point d’initialisation pour lequel la méthode de type gradient projeté nous<br />

donne la bonne solution pour cet exemple.<br />

Le tableau suivant donne les résultats trouvés en cas de convergence de l’algorithme de<br />

Rackwitz dans le cas où le graphe est du type ellipsoïde. Comme précédemment, la<br />

quatrième colonne indique l’initialisation choisie pour le gradient projeté et le lagrangien augmenté, et<br />

le signe (-) dans la colonne du gradient projeté indique que nous n’avons pas trouvé de point<br />

d’initialisation tel que cette méthode converge vers la bonne solution.<br />

27


Fonction contrainte<br />

Dimension<br />

Gradient Lagrangien<br />

Initialisation Rackwitz<br />

du problème<br />

projeté augmenté<br />

x 1 ² + x 2 ² + x 1 – 5*x 2 + 3 2 (1;1) 16 (-) 8<br />

- x 1 ² - x 2 ² - x 1 + 5*x 2 + 18.5 2 (1;-3) 19 15 10<br />

- x 1 ² - x 2 ² - x 1 + 5*x 2 + 18.5 2 (-5;5) 19 29 9<br />

x 1 ² + x 2 ² + x 3 ² + 1 3 (1;1;1) 13 4 8<br />

Fig. 3.12 - Convergence en nombre d’itérations dans le cas d’ellipsoïdes<br />

Dans ce cas particulier où le graphe est un ellipsoïde, on peut noter que la méthode de Rackwitz<br />

nous donne des résultats assez moyens par rapport à celle du lagrangien augmenté. Quant à celle du<br />

gradient projeté, elle dépend beaucoup de l’initialisation.<br />

3.5. Cas divers<br />

L’étude de cas de graphes particuliers donne des résultats assez mitigés pour les différentes<br />

méthodes. Nous allons maintenant voir si une méthode « l’emporte » sur une autre en testant des<br />

exemples avec des fonctions de contraintes non linéaires.<br />

Nous avons pris ces exemples de fonctions de manière totalement aléatoire, exemples que l’on<br />

a testés à la fois en nombre d’itérations et en temps d’exécution.<br />

Fonction contrainte<br />

Dimension<br />

Gradient Lagrangien<br />

Initialisation Rackwitz<br />

du problème<br />

projeté augmenté<br />

-(exp(x 1 - x 2 ) + x 1 - 3) 2 (-8;10) 5 (-) 7<br />

2*x 1 ²*x 2 +3*x 2 + 1 2 (1;-3) 8 12 5<br />

2*x 1 ²*x 2 +3*x 2 - x 3 +1 3 (1;-3;1) 8 10 5<br />

2*x 1 ²*x 2 +3*x 2 - x 3 + x 4 +1 4 (0;0;5;0) 8 4 5<br />

Fig. 3.13 - Convergence en nombre d’itérations pour des cas divers<br />

Fonction contrainte<br />

Dimension<br />

Gradient Lagrangien<br />

Initialisation Rackwitz<br />

du problème<br />

projeté augmenté<br />

-(exp(x 1 - x 2 ) + x 1 - 3) 2 (-8;10) 0.2 s (-) 0.5 s<br />

2*x 1 ²*x 2 +3*x 2 + 1 2 (1;-3) 0.2 s 0.6 s 0.3 s<br />

2*x 1 ²*x 2 +3*x 2 - x 3 +1 3 (1;-3;1) 0.1 s 0.8 s 0.3 s<br />

2*x 1 ²*x 2 +3*x 2 - x 3 + x 4 +1 4 (0;0;5;0) 0.1 s 0.3 s 0.3 s<br />

Fig. 3.14 - Convergence en temps d’exécution pour des cas divers<br />

28


L’étude de ces quelques exemples a permis de montrer que, dans le cas général, la méthode de<br />

Rackwitz donne de meilleurs résultats que celle du gradient projeté et de moins bons résultats que celle<br />

du lagrangien augmenté, en terme de nombre d’itérations effectuées. Cependant, dans tous les cas, la<br />

méthode de Rackwitz l’emporte en terme de rapidité d’exécution. La méthode du gradient projeté<br />

arrive quant à elle dernière au niveau performance.<br />

29


Conclusion<br />

Nous avons implémenté dans l’environnement Matlab l’algorithme de Rackwitz, et les deux<br />

méthodes de type gradient projeté et lagrangien augmenté que nous avons adaptées au problème<br />

d’optimisation non linéaire avec une unique fonction contrainte non linéaire dans .<br />

Nous avons vu qu’il est assez facile de trouver des exemples de non convergence de<br />

l’algorithme de Rackwitz. Cependant, cette méthode, lorsqu’elle converge, donne les meilleurs<br />

résultats en terme de rapidité d’exécution, le nombre d’itérations effectuées étant légèrement plus<br />

important que pour le lagrangien augmenté. En effet, contrairement aux algorithmes plus communs de<br />

type gradient projeté et lagrangien augmenté, la méthode de Rackwitz ne fait pas intervenir d’autres<br />

sous-problèmes d’optimisation.<br />

Nous noterons enfin que l’algorithme du gradient projeté se prête assez mal au problème que<br />

nous avons étudié, en particulier du fait de la présence d’une unique fonction contrainte, et de la nonlinéarité<br />

de celle-ci, faisant de nombreux exemples étudiés des cas de non convergence.<br />

30


Bibliographie<br />

[1] Rüdiger Rackwitz, http://www.mb.bv.tum.de/index-d/mitarbeiter/rackwitz.htm<br />

[2] Reliability based design optimization, http://www.iitk.ac.in/kangal/seminar/rbdo.ppt<br />

[3] Introduction to reliability-based design, http://www.ippt.gov.pl/~arek/intr-reliab.ppt<br />

[4] MINOUX M., Programmation mathématique, théorie et algorithmes, Tome 1,<br />

éditions Dunod, 1983<br />

[5] Optimisation sous contrainte, http://ycollette.free.fr/spip/IMG/pdf/02_AvecContraintes.pdf


ANNEXES


Table des annexes<br />

A. Code Matlab pour la dérivée, le gradient et la méthode de Newton . . . . . . . . . . . . . . . . . . . . I<br />

B. Code Matlab de la méthode de type gradient projeté . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II<br />

C. Code Matlab de la méthode de type lagrangien augmenté . . . . . . . . . . . . . . . . . . . . . . . . . . . IV<br />

D. Code Matlab de l’algorithme de Rackwitz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VI


A. Code Matlab pour la dérivée, le gradient et la méthode de Newton<br />

function [dif] = deriv(f,i,x,eps)<br />

%Approximation de la dérivée en un point par différences finies<br />

% [dif] = deriv(f,i,x,eps)<br />

% f : Rn -> R, fonction<br />

% i, pour la i-ème derivée partielle (i=1 si dérivée)<br />

% x, point de Rn<br />

% eps, précisions des calculs<br />

format long<br />

n = length(x);<br />

dif = feval(f,[x(1:i-1);x(i)+eps;x(i+1:n)])-...<br />

feval(f,[x(1:i-1);x(i)-eps;x(i+1:n)]);<br />

dif = dif/2/eps;<br />

function [gradU,normU] = grad(f,x,n,eps)<br />

%Calcul du gradient d'une fonction en un point<br />

% [gradU,normU] = grad(f,x,n,eps)<br />

% f : Rn -> R, fonction<br />

% x, point de Rn<br />

% n, dimension du problème<br />

% eps, précisions des calculs<br />

format long<br />

for i=1:n<br />

gradU(i) = deriv(f,i,x,eps);<br />

end<br />

normU = sqrt(gradU*gradU');<br />

function [x,iter] = newton(f,eps,a,itermax)<br />

%Méthode de Newton<br />

% [x,iter] = newton(f,eps,a,itermax)<br />

% f : R -> R, fonction<br />

% eps, précision des calculs<br />

% a, point d'initialisation<br />

% itermax, nombre maximal d'itérations<br />

format long<br />

x = a;<br />

for iter=1:itermax<br />

if abs(deriv(f,1,x,eps)) < eps<br />

disp('Méthode de Newton : division par 0');<br />

return<br />

end y = x - feval(f,x)/deriv(f,1,x,eps);<br />

if abs(y-x) < eps<br />

break<br />

end<br />

x = y;<br />

end<br />

I


B. Code Matlab de la méthode de type gradient projeté<br />

function [] = gradient_projete(f,n,x0)<br />

%Méthode du gradient projeté<br />

% gradient_projete(f,n,x0)<br />

% f : Rn -> R, contrainte F sur x<br />

% n, dimension du problème<br />

% x0, point d'initialisation dans Rn<br />

stop = 0;<br />

if feval(f,x0)>0<br />

disp('Le point d initialisation doit etre dans le domaine F(x)


if alphamax>epsilon<br />

[alphak,fxk] = fminbnd(@(alpha)norm(xk+alpha*yk),0,alphamax);<br />

else<br />

alphak = 0;<br />

fxk = 0;<br />

end<br />

% Calcul du nouveau point courant<br />

xk = xk+alphak*yk;<br />

stopc = 1;<br />

if norm(alphak*yk) < epsilon<br />

stop = 1;<br />

break<br />

end<br />

else<br />

end<br />

end<br />

end<br />

u = - 1/(dgdx*dgdx')*dgdx*2*xk;<br />

if u >= -epsilon<br />

stopc = 1;<br />

stop = 1;<br />

else<br />

sat = 0;<br />

end<br />

x = xk<br />

disp('Solution x calculée par l algorithme de type gradient projeté');<br />

x<br />

disp('Nombre d iterations');<br />

iter<br />

disp('Norme de x');<br />

norm(x)<br />

end<br />

function [c,ceq] = constr(f,alpha,xk,yk)<br />

c = feval(f,xk+alpha*yk);<br />

ceq = [];<br />

end<br />

III


C. Code Matlab de la méthode de type lagrangien augmenté<br />

function [] = lagrangien_augmente(f,n,x0)<br />

%Méthode du lagrangien augmenté<br />

% lagrangien_augmente(f,n,x0)<br />

% f : Rn -> R, contrainte F sur x<br />

% n, dimension du problème<br />

% x0, point d'initialisation dans Rn<br />

format long<br />

itermax = 10000;<br />

epsilon = 1e-6;<br />

x = x0;<br />

lambda = 0;<br />

R = 0.1;<br />

iter = 0;<br />

stop = 0;<br />

while (stop==0 & iter


% Calcul du lagrangien, avec gradient et hessien<br />

function [L,gL,HL] = lagrangien(x,f,lambda,R,n,eps)<br />

L = norm(x)+lambda*feval(f,x)+R*(feval(f,x)*feval(f,x))/2;<br />

if nargout>1<br />

for i=1:n<br />

gL(i) = 2*x(i)+lambda*deriv(f,i,x,eps)+R*deriv(f,i,x,eps)*feval(f,x);<br />

end<br />

if nargout>2<br />

HL(i,j) = 2+(lambda+R)*deriv(@(x)deriv(f,j,x,eps),i,x,eps)...<br />

+R*deriv(f,i,x,eps)*deriv(f,j,x,eps);<br />

if i~=j<br />

HL(i,j) = HL(i,j)-2;<br />

end<br />

end<br />

end<br />

end<br />

V


D. Code Matlab de l’algorithme de Rackwitz<br />

function [] = rackwitz(f,n)<br />

%Méthode de Rackwitz<br />

% rackwitz(f,n)<br />

% f : Rn -> R, fonction contrainte<br />

% n, dimension du problème<br />

format long<br />

iter = 0;<br />

itermax = 10000;<br />

epsilon = 1e-6;<br />

a = 1;<br />

% Initialisation pour trouver x0 par la méthode de Newton<br />

if nepsilon & iter


disp('Solution x calculée par l algorithme de Rackwitz');<br />

x<br />

disp('Nombre d iterations');<br />

iter<br />

disp('Norme de x');<br />

norm(x)<br />

VII

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!