coursOptNum23 1
coursOptNum23 1
Master BD2C M1
Tayeb OUADERHMAN
SOMMAIRE ......................................................................................................................................................................1
1. INTRODUCTION ............................................................................................................................................................2
ACKNOWLEDGMENTS .................................................................................................................................................... 40
Optimisation numérique et Python
1. Introduction
n raison de l'utilisation étendue (et croissante) de l'optimisation dans les
2
Optimisation numérique et Python
2. Problème
d’optimisation:
Formulation et analyse
C
e chapitre donne une introduction aux bases de l'optimisation numérique et
aidera à construire les outils nécessaires à notre compréhension approfondie dans
les chapitres suivants. Nous aborderons quelques concepts fondamentaux
d'analyse convexe qui seront nécessaires pour des études ultérieures en optimisation, ainsi
qu'une introduction à des codes Python simples.
1. Formulation mathématique
D'un point de vue mathématique, l'optimisation est la minimisation ou la maximisation
d'une fonction soumise à des contraintes sur les variables. Le problème d'optimisation est
formulé de la manière suivante :
1-1
2
T. Ouaderhman
Le supremum sup(E) ∈ R ∪ {−∞, +∞} de E est le plus petit des majorants (sup(𝑥) )
𝑥∈𝐸
1.1.2. Proposition : (Suite minimisante/Suite maximisante)
Soit 𝐸 ⊂ ℝ , 𝐸 ≠ 𝜙. Il existe (𝑥𝑛 )𝑛∈ℕ une suite d’éléments de E telle que
lim 𝑥𝑛 = inf(𝐸)
𝑛→+∞
La suite(𝑥𝑛 )𝑛∈ℕ est une suite minimisante et (𝑦𝑛 )𝑛∈ℕ une suite maximisante de E.
Démonstration :
3
Optimisation numérique et Python
Il est important de sélectionner un certain nombre de points candidats à être des extrema
locaux, appelés points critiques ou points stationnaires. Parmi eux, figurent des minima
locaux, des maxima locaux et d’autres qui ne sont ni l’un, ni l’autre, appelés points selle.
4
T. Ouaderhman
1.2. Maximisation
Nous venons de définir un problème de minimisation comme notre tâche d'optimisation.
Nous pourrions faire de même avec un problème de maximisation avec quelques petites
modifications.
2. Convexité et optimisation
Les problèmes d’optimisation convexe forment une classe de problèmes que l’on peut
bien étudier et résoudre – en théorie et en pratique, car c’est les problems les plus
fréquemment rencontrés dans les applications et à la base de nombreuses méthodes
développées pour des problèmes plus généraux. C’est à dire, les méthodes efficaces dans
le cas non-convexe sont souvent des extensions de méthodes convexes ou utilisent des
sous-problèmes convexes.
2.1. Gradient et Hessien
On se donne un ouvert U de ℝ𝑛 , une fonction f de U dans ℝ𝑝 et a = (a1, . . . , an) ∈ U. On
note (e1, . . . , en) la base canonique de ℝ𝑛
On dit que f est différentiable en a s’il existe une application linéaire daf de ℝ𝑛 dans ℝ𝑝
telle que
5
Optimisation numérique et Python
𝑋 ⊂ ℝ𝑛 → ℝ𝑛
𝜕𝑥1 𝑓(𝑥)
∇𝑓 ∶ 𝜕 𝑓(𝑥)
𝑥 → ∇𝑓(𝑥) = 𝑥2
⋮
[𝜕𝑥𝑛 𝑓(𝑥)]
le vecteur gradient ∇𝑓(𝑥) est toujours perpendiculaire aux contours au point x . le vecteur
gradient est donc dans la direction de l'augmentation maximale de f(x).
2.1.1. Proposition
Pour tout a ∈ U le gradient ∇f(a) est l’unique vecteur tel que pour tout h ∈ ℝ𝑛 on a :
6
T. Ouaderhman
Une relation importante que nous garderons à l'esprit est que la matrice hessienne est le
Jacobien du vecteur gradient de 𝑓(𝑥), où la matrice jacobienne d'une fonction à valeurs
vectorielles F(x) est la matrice de toutes ses dérivées partielles de premier ordre, donnée
par :
2.1.2. Exemple :
2.1.3. Définition :
𝑥𝑠
Pour une function objectif 𝑓(𝑥) 𝑝𝑜𝑢𝑟 𝑥 ∈ ℝ2 , le point 𝑥 𝑠 =[ 1𝑠 ] est point selle si :
𝑥2
∀𝑥 , ∃𝜀 > 0 tel que les conditions suivantes sont satisfaites :
∇f(x) = 0,
est appelé point critique (ou point stationnaire) de f.
2.3. Dérivée directionnelle
2.3.1. Définition :
On appelle dérivée directionnelle au point x dans la direction d la limite suivante :
où : ∥δ∥=1.
7
Optimisation numérique et Python
c’est-à-dire, si x et y sont deux éléments de C alors le segment qui relie x à y est inclus
dans C.
2.5.2. Definition (Fonction convexe/strictement convexe)
Soit C ⊂ ℝ𝑛 convexe et f : C −→ R.
f est convexe ssi :
2.5.3. Théorème :
Soit C ⊂ ℝ𝑛 convexe et f : C → R différentiable. La fonction f est convexe ssi:
Démonstration :
8
T. Ouaderhman
2.5.4. Théorème :
Soit 𝑓 ∶ ℝ𝑛 → ℝ une fonctionnelle de classe C2
Si la hessienne H[f](x) de f est une matrice symétrique définie positive pour tout x ∈ ℝ𝑛 ,
alors f est strictement convexe.
Si H[f](x) est une matrice symétrique semidéfinie positive pour tout x ∈ ℝ𝑛 , alors f est
convexe.
Démonstration :
9
Optimisation numérique et Python
10
3 Optimisation
numérique sans
contraintes
C
e chapitre donne une vue globale des fondamentaux de l’optimisationce et présente qu'est exactement
un problème d'optimisation sans contrainte. Dans le cadre de l'optimisation sans contrainte, nous
optimisons une fonction objectif qui dépend de variables réelles, sans aucune restriction sur les variables.
variables réelles.
La formulation du problème est donnée par :
(𝑃) min𝑛 𝐽(𝑢)
𝑢∈ℝ
Une discussion détaillée du théorème de Taylor est fournie et a été utilisée pour étudier les conditions nécessaires
et suffisantes de premier ordre et de second ordre pour le minimum local. Des exemples ont également été fournis
afin de mieux comprendre les conditions nécessaires et suffisantes.
Nous nous intéressons aussi dans ce chapitre à la conception de méthodes numériques.
On supposera que 𝑢∗ existe (éventuellement qu’il est unique) et on se propose de trouver une approximation
(𝑘) (𝑘)
numérique de 𝑢∗ , en construisant une suite {𝑢 }𝑘∈ℕ 𝑡𝑒𝑙 𝑞𝑢𝑒 𝑢 → 𝑢∗
𝑘→∞
Alors une méthode numérique qui peut être envisagée c’est de résoudre numériquement l’équation d’Euler, qui
est en fait un système de n équations avec n inconnues, du type :
avec 𝑑(𝑘) ∈ ℝ𝑛 des vecteurs qu’on appelle directions de descente et 𝜌𝑘 ∈ ℝ des scalaires qu’on appelle pas de
descente. Ces noms viennent du fait qu’on cherchera toujours à avoir (entre autres)
L'une des conditions d’arrêt importantes, par exemple, consiste à vérifier si la condition nécessaire du premier
ordre est suffisamment precise ( pour une fonction objective differentiable).
D’autre part, la recherche linéaire consiste à déterminer le pas 𝜌𝑘 ∈ ℝ à effectuer le long d’une direction de
descente 𝑑 (𝑘) . Des valeurs de ce pas peuvent être obtenues par différentes méthodes : par recherche linéaire exacte,
par la méthode d’Armijo ou de Goldstein et par la méthode de Wolfe. Le pas 𝜌𝑘 est souvent choisi afin de vérifier
les deux conditions suivantes :
– la fonction f doit décroître suffisamment le long de la direction de descente;
– le pas αk ne doit pas être trop petit.
Méthode de la région de confiance :
Le principe des méthodes à région de confiance est de remplacer le problème d’optimisation initial par une suite
de sous-problèmes d’optimisation, plus simples à résoudre. Dans chaque sous-problème, la fonction objectif J est
remplacée par une fonction modèle m, à un itére courant u. La région de confiance est définie comme la région à
l’intérieur de laquelle la confiance est donnée à la fonction modèle quant à sa qualité à fournir une bonne
approximation de la fonction objectif. Ainsi, une contrainte supplémentaire existe sur les pas s. Si la décroissance
de la fonction J, évaluée entre le point courant u et le point u* qui minimise la fonction modèle m, n’est pas jugée
suffisante, le rayon de la région de confiance est diminué, et, en général, la direction de recherche est modifiée.
Une description complète des méthodes à région de confiance peut être trouvée dans Conn et al. (2000) et dans
Nocedal et Wright (1999)
Nous voudrions un modèle mk de J en u(k) qui satisfait au minimum les hypothèses suivantes:
12
T. Ouaderhman
𝑚𝑘 ∈ 𝐶1
𝑚𝑘 (0) = 𝐽(𝑢(𝑘) )
∇𝑚𝑘 (0) = ∇𝐽(𝑢(𝑘) )
Généralement, un modèle quadratique est sélectionné :
𝑚𝑘 (𝑠) = 𝐽(𝑢(𝑘) ) + ∇𝐽(𝑢(𝑘) )𝑇 𝑠 + 𝑠 𝑇 𝐻𝑘 𝑠
avec Hk symétrique (mais pas nécessairement définie positive!).
Pour de petits s, le modèle devrait ressembler à la fonction f , mais plus s est grand, plus il est probable que m et
f soient différents !
Nous allons contrer ce problème en bornant la norme du pas :
où ∆k est le rayon de la région de confiance et ||.||k est une norme, dont le choix peut être dépendant de
l’itération k. Le plus souvent toutefois, nous travaillerons avec la norme 2.
Dès lors, le sous-problème de région de confiance est le problème sous contraintes
La résolution de ce problème peut s’effectuer de manière exacte. Cependant, pour alléger les calculs
numériques, elle s’effectue souvent de manière approchée.
Une bonne détermination du rayon de la région de confiance est alors un point essentiel dans la performance de
telles methods.
3. Méthodes de gradient
la méthode utilisant pour direction de descente l’opposée du gradient de la fonction f au point courant 𝑢(𝑘)
Le membre de droite de l’égalité précédente est < 0 si ρ > 0 avec ρ “assez petit” et ∇𝐽(𝑢(𝑘) ) ≠ 0
Les méthodes de gradient sont définis alors par les relations :
13
Optimisation numérique et Python
Lorsque la minimisation de J est faite de façon exacte, les directions consécutives 𝑑(𝑘) et 𝑑(𝑘+1) sont
perpendiculaires : on s’arrête toujours de façon tangente à une courbe de niveau. La méthode peut prendre un
nombre considérable d’itérations avant de converger à un point critique.
avec A ∈ Mn(IR) matrice SDP (c’est à dire matrice symmétrique et définie positive), b ∈ IRn , c ∈ IR (donc c’est
une forme quadratique associée à une matrice SDP).
Nous devons calculer ρk ∈ IR qui minimise la fonction g : IR 7→ IR donnée par :
14
T. Ouaderhman
On obtient alors :
[Link]. Definition
la convergence est dite géométrique si
(où u* est l’unique point de minimum de J sur IRn).
[Link]. Théorème :
Soit J : IRn → IR une function elliptique et que et ∇J soit lipschitzienne ( M constant Lipschitz). Supposons que
la suite {ρk}k∈IN ⊂ IR satisfait la propriété suivante : il existe 𝛼1 𝑒𝑡 𝛼2 avec
15
Optimisation numérique et Python
Remarque :
On déduit du Théorème que si ρ est tel que alors la méthode de gradient à pas fixe est
L’algorithme de relaxation pour J quadratique n’est autre que l’algorithme de Gauss-Seidel pour la resolution
de système linéaire Au=b. Ceci s’explique par le fait que le point de minimum u* de J satisfait l’équation
d’Euler qui devient dans le cas J quadratique : Au* = b.
5. La méthode d’Armijo
Pour que la fonction J décroît suffisamment le long de la direction de descente on rajoute souvent un terme
négatif βk dans : La façon de procéder est alors de demander à f de décroire autant
16
T. Ouaderhman
qu’une proportion ω1 ∈ ]0,1[ de ce que ferai le modèle linéarisé de f autour du point xk. On a alors affaire à la
condition d’Armijo :
Ici, la constante ω1 est choisie arbitrairement et est habituellement prise très petite
6. Méthode de Goldstein
Dans la méthode de Goldstein la détermination du pas αk doit vérifier les equation
On peut démontrer qu’il est possible d’obtenir un pas, appelé pas de Goldstein, vérifiant les équations si fk est
continue et bornée inférieurement.
7. Méthode de Wolfe
La méthode de Wolfe consiste toujours à déterminer un pas αk, appelé pas de Wolfe, vérifiant les conditions :
Où l’espace vectoriel engendré par les vecteurs v1 , v2 ,· · · v𝑙 est note par ; c’est un sous-espace
vectoriel de IRn .
On va noter pour tout k ∈ IN :
La méthode des gradients conjugués consiste alors à chercher :
17
Optimisation numérique et Python
On minimise donc sur un espace plus “grand” que dans la méthode de gradient à pas optimal. Reste à montrer la
facilité de son implementation.
Comme J est quadratique et que u(k) + Gk est un ensemble fermé et convexe, il existe alors une solution unique
du problème.
De plus, on a :
Remarque:
L’algorithme s’arrête en au plus n itérations, car il existe k ∈ {0, 1, · · · n} tel que
sinon, on aurait n+1 vecteurs non-nuls indépendants en IRn, ce qui est impossible.
18
T. Ouaderhman
Il y a aussi une variante dite de Polack-Ribiere, qui donne des meilleurs résultats en pratique, avec comme seul
changement :
19
Optimisation numérique et Python
20
T. Ouaderhman
Les méthodes à région de confiance classiques utilisent des fonctions modèles quadratiques. L’essentiel
de la présentation des méthodes à région de confiance est fidèle à Fahl[ ].
Lorsque le gradient de la fonction objectif est connu, ou peut facilement être évalué de manière exacte.
la fonction modèle est :
Dans ce cas, la méthode est appelée méthode à région de confiance de Newton. Par la suite, aucune
indication ne sera donnée quant à l’éventuelle exactitude du hessien: on supposera uniquement que Hk
est une matrice symétrique uniformément bornée à l’itération k
En cas d’une approximation de hessian, différentes méthodes d’approximation du hessien basées sur la
connaissance du gradient de la fonction f sont présentées dans la litterature. On peut citer parmi les
méthodes les plus connues les méthodes BFGS, DFP
Il est alors nécessaire d’évaluer la valeur de la fonction f au nouveau point. Pour ce faire, on évalue la
réduction réelle, aredk :
Cette réduction est ensuite comparée à la réduction prédite par la fonction modèle, predk :
Ce rapport est alors utilisé comme critère d’actualisation du rayon de la région de confiance ∆k
Le point central de ces algorithmes est de vérifier que la décroissance de la fonction mquad k est au moins
égale à celle obtenue en appliquant la méthode du point de Cauchy . Le point de Cauchy est défini
comme le point minimisant la fonction mquad k le long de la plus forte pente , et devant satisfaire la
contrainte imposée par le rayon de confiance.
21
Optimisation numérique et Python
22
T. Ouaderhman
A chaque itération, la réduction de la fonction modèle en un point doit au moins être égale à un multiple
de la décroissance obtenue au point de Cauchy.
A chaque itération, la réduction de la fonction modèle en un point doit au moins être égale à un multiple
de la décroissance obtenue au point de Cauchy. La condition de la fraction de décroissance de Cauchy
(Fraction of Cauchy Decrease, fcd) doit alors être vérifiée.
23
Optimisation numérique et Python
Soit f : Rn → R une fonction continûment dérivable sur X = {x ∈ Rn | f(x) < f(x0)}, et soit {xk} une suite
d’itérés générés par l’algorithme, avec {Hk} uniformément bornée. Si de plus la direction sk vérifie la
condition
on a alors :
Une convergence forte peut par ailleurs être énoncée si l’on impose des contraintes supplémentaires sur
la fonction objectif comme supposer f avec un gradient continu au sens de Lipshitz, inférieurement
borné sur X = {x ∈ Rn | f(x) < f(x0)},
Généralement, le gradient de la fonction objectif est très difficile à obtenir, et seule une approximation
numérique de ce dernier est accessible.
En notant gk une approximation du gradient exact ∇f(xk), et Hk une approximation du hessien exacte, une
fonction quadratique basée sur un gradient approché peut s’écrire de la manière suivante :
il est nécessaire de prendre en compte la différence entre les gradients exact et approché, La méthode qui
est le plus utilisée est sans doute celle proposée par Carter (1991) :
Comme nous l’avons précisé précédemment, il suffit de déterminer une condition de décroissance
suffisante afin d’être en mesure de prouver la convergence de méthodes à région de confiance. Pour les
méthodes à région de confiance qui utilisent un gradient approché, Moré (1983) on a:
Nous allons maintenant nous attacher à décrire les principes d’un algorithme qui utilise des fonctions
modèles générales. lorsque la fonction modèle n’est pas quadratique, rien ne prouve que le point de
Cauchy produise une décroissance suffisante de la fonction modèle. Il semble alors intéressant de
généraliser cette condition de décroissance suffisante aux fonctions quelconques, non nécessairement
quadratiques.
L’algorithme ci-dessous, proposé par Toint (1988), permet de déterminer un pas qui produit une
décroissance suffisante pour une fonction modèle générale.
24
T. Ouaderhman
Algorithme 9.3: (bien posé suite à la démonstration du lemme d’après Toint (1988).
Posons :
Donc :
Si le point x0 et assez proche de la solution optimale locale x* telle que H (x*) soit définie positive, alors
l’algorithme de Newton converge de façon quadratique vers la solution x*. cíest à dire que l’on a :
Cette méthode fonctionne très bien pour les problèmes de petite dimension, lorsque on peut calculer
25
Optimisation numérique et Python
facilement la matrice Hessienne H et sont inverse. Ce calcul nécessite des itérations plus nombreuses et
couteuses dans les problèmes de grandes tailles.
Pour obtenir une méthode qui converge superlinéairement, il est nécessaire díapproximer l’étape de
Newton asymptotiquement en 1959 Davidon a développé une approche et popularisée par Fletcher et
Powell en 1963. Elle consiste à commencer par n’importe quelle approximation de la matrice Hessienne
et à chaque itération sans évaluer la matrice Hessienne et on obtient quelques méthodes
remarquablement robustes et efficaces.
Il y a plusieurs méthodes de variable métrique, on s’étalera particulièrement sur les trois plus
importantes, la méthode de correction de rang un, la mÈthode DFP (Davidon, Fletcher, Powell), et la
méthode BFGS (Broyden, Fletcher, Goldfarb, Shano).
10.1. Méthode de quasi Newton
Une méthode de quasi Newton est une méthode de type :
xk+1 = xk + λkdk,
dk = -Bkgk,
ou bien :
xk+1 = xk + λkdk,
dk = -Sk -1gk
où Bk (respectivement Sk) est une matrice destinée à approcher l'inverse du Hessien de ƒ
(respectivement le Hessien) de ƒ en xk. Le problème posé est : Quelle stratégie à adopter
pour faire cette approximation ? On peut par exemple poser B1 = I, mais comment ensuite
mettre à jour l'approximation Bk au cours des itérations?
ce qui implique :
Les approximations sont exacts si f est quadratique. En particulier avec x = xk+1 et si Bk était une
bonne approximation de alors :
Le principe de la mise à jour consiste à une itération donnée de l’algorithme à appliquer une
formule de type :
avec ∆𝑘 symétrique, assurant la relation de quasi Newton. ainsi que Bk+1 définie positive, sous
l’hypothèse que Bk est définie positive.
Cette formule permet d’utiliser les nouvelles informations obtenues lors de l’étape k de
l’algorithme.
26
T. Ouaderhman
10.2. Méthode de correction de rang un
Avec 𝑦𝑘 = 𝑔𝑘+1 − 𝑔𝑘 𝑒𝑡 𝑠𝑘 = 𝑥𝑘+1 − 𝑥𝑘 la condition de quasi Newton s’écrit donc comme suit :
on obtient :
Algorithme :
Remarque : Si f est quadratique, de matrice Hessienne H définie positive et si s1,s2,…, sn sont des
vecteurs indépendants, alors la méthode de correction de rang un converge au plus dans (n + 1)
itérations
10.3. Méthode de Davidon Fletcher Powell (DFP)
Cette méthode a été proposée par Davidon en 1959 et développé plus tard en 1963 par Fletcher.
La formule de mise à jour de DFP est une formule de correction de rang deux. Et on a:
où :
27
Optimisation numérique et Python
Par suite :
Donc :
D’où :
Algorithme :
28
T. Ouaderhman
La formule de mise à jour de Broyden, Fletcher, Goldfarb et Shanno est une formule de
correction de rang deux, qui síobtient à partir de la formule DFP en intervertissant les rôles de sk
et yk. permet de mettre à jour une approximation Bk de Hessien lui meme et non de son inverse
comme dans le cas de la méthode DFP . a savoir Bk+1 reste définie positive si Bk líest et l’équation
d’approximation de quasi Newton doit être vérifiée:
et
Algorithme :
29
Optimisation numérique et Python
La méthode BFGS possède les mêmes propriétés que la méthode DFP dans le cas quadratique.
Les directions engendrées sont conjuguées. Cette méthode est reconnue comme étant beaucoup
moins sensible que la méthode DFP aux imprécisions dans la recherche linéaire, du point de vue
de vitesse de convergence. Elle est donc tout à fait adaptée quand la recherche linéaire est faite
de façon économique, avec par exemple la règle de Goldstein ou la règle de wolf et Powell.
11.1. Exemple 1 :
30
T. Ouaderhman
# define DFP()
def DFP(Xj, tol, alpha_1, alpha_2):
x1 = [Xj[0]]
x2 = [Xj[1]]
Bf = [Link](len(Xj))
while True:
Grad = Df(Xj)
delta = -[Link](Grad) # Selection of the direction of the steepest descent
31
Optimisation numérique et Python
Bf += Delta # See line 23 of the algorithm
Xj = X # Update to the new iterate
x1 += [Xj[0], ]
x2 += [Xj[1], ]
DFP([Link]([-7.8, -3.75]), 10**-5, 10**-4, 3.82)
## (array([1., 3.]), 1.5777218104420236e-30)
Programme 2 :
# import the required packages
import [Link] as plt
import numpy as np
import [Link] as au
from autograd import grad, jacobian
import scipy
# define BFGS()
def BFGS(Xj, tol, alpha_1, alpha_2):
x1 = [Xj[0]]
x2 = [Xj[1]]
Bf = [Link](len(Xj))
while True:
32
T. Ouaderhman
Grad = Df(Xj)
delta = -[Link](Grad) # Selection of the direction of the steepest descent
den = [Link](Gj)
num = [Link](Gj)
L = 1 + [Link](Gj)/den
M = [Link](Dj, Dj)/den
N = [Link](Dj, num)/den
O = [Link](num, Dj)/den
Delta = L*M - N - O
Bf += Delta # See line 18 and line 19 of the algorithm
Xj = X # Update to the new iterate
x1 += [Xj[0], ]
x2 += [Xj[1], ]
BFGS([Link]([1.5, 7.75]), 10**-5, 10**-4, 0.25)
## (array([1., 3.]), 0.0)
from [Link] import minimize
33
Optimisation numérique et Python
4 Optimisation
numérique avec
contraintes
n s’intéresse dans ce chapitre aux problèmes du type suivant : "trouver le minimum d’une fonction
O avec contrainte(s)". D’un point de vue mathématique, le problème se formule de la façon suivante :
Toutefois, nous adopterons le point de vue qui consiste à traiter des problèmes d’optimisation en dimension
finie.
Nous envisagerons essentiellement deux types de contraintes :
Des contraintes de la forme
avec m ∈ IN∗ et ϕ1, ϕ2, · · · ϕm des fonctions de IRn dans IR données (on dit dans ce cas que U est donné par
des contraintes inégalités larges).
Dans la pratique on peut rencontrer des problèmes de minimisation avec contraintes égalités, c’est à
dire, des contraintes de la forme
34
T. Ouaderhman
Si x ∈ est tel que la famille des vecteurs forme un système libre en IRn alors on dit que x
est un point régulier de . La variété est dite régulière si tous les points de sont réguliers.
est régulier.
Théorème 1 :
Soit x ∗ un point régulier de tel que x ∗ soit un extremum local de J sur (minimum local ou maximum
local).
Et ( si )
On dira que v ∈ O est un point régulier de O si :
soit I(v) = ∅
soit v est un point régulier de la variété
Lemme 1 :
Soit v ∈ O tel que I(v) ≠∅ et soit w ∈ IRn tel que :
Alors : Alors w est une direction admissible pour v en O.
Corollaire 1 :
Soit v ∈ O tel que I(v) ≠∅ et soit w ∈ IRn tel que :
théorème 2 :
35
Optimisation numérique et Python
Soit x ∗ un point régulier de O. Si x ∗ est un point de minimum local de J sur O alors il existe :
(appellés multiplicateurs de Karush-Kuhn-Tucker) tels que :
avec m2 ≥ 1 alors on peut considérer O comme donné uniquement par des contraintes inégalités, en écrivant :
L’hypothèse de régularité n’est satisfaite pour aucun x ∈ O si O comporte au moins une contrainte égalité
transformée artificiellement en deux contraintes inégalités.
Définition :
On dit que les contraintes de O sont qualifiés en v ∈ O si :
a) Soit I(v) = ∅
b) Soit il existe w ∈ IRn tel qu’on a ∀ i ∈ I(v) :
avec en plus :
(Si θi est affine pour tout i ∈ I(v) alors les contraintes de O sont qualifiés en v)
Proposition :
Si un point v ∈ O est régulier alors les contraintes de O sont qualifiés en v.
On a alors le résultat suivant, plus forte que le Théorème 1.
Théorème 2 :
Soit x ∗ ∈ O tel que les contraintes de O sont qualifiés en x ∗ . Si x ∗ est un point de minimum local de J sur O
alors il existe tels que :
Proposition 2 :
Supposons que les fonctions θ1, θ2, · · · , θm sont convexes.
Supposons aussi que
- ou bien toutes les fonctions θ1, θ2, · · · , θm sont affines
- ou bien il existe y ∈ IRn tel que pour tout i = 1, · · · , m on a :
36
T. Ouaderhman
3. Point selle et optimisation
Nous introduisons la function donnée par :
On a le résultat suivant :
Si (x ∗ , p∗ ) est un point selle de L alors x ∗ est un point de minimum de J sur O. En plus (x ∗ , p∗ ) satisfait les
conditions de Karush-Kuhn-Tucker, c’est à dire :
On verra aussi une reciproque, sous des hypothèses supplementaires. On cherchera alors à résoudre le problème
appellé le problème dual :
Théorème 3:
Supposons que toutes les fonctions J, θ1, θ2, · · · , θm sont convexes. Supposons aussi qu’il existe p1* ,
p2*, · · · , pm*∈ [0, +∞[ et x* ∈ O tels que les conditions de Karush-Kuhn-Tucker du Théorème 2 soient
satisfaites. Alors
a) x* est un point de minimum de J sur O
b) (x* , p* ) est un point selle de L
4. Retour sur les conditions d’optimalité à contraintes mixtes
Posons :
On suppose les contraintes qualifiées au point x∗ . Alors, une condition nécessaire pour que x∗ soit un
minimum de J est qu’il existe des nombres positifs λ1* , . . ., λm* et des nombres réels µ1* , . . ., µp* tels que :
𝑚1 𝑚2
L(x, 𝜆, 𝜇) = 𝐽(𝑥 ∗ ) + ∑ 𝜆𝑗 . 𝜃𝑗 (𝑥 ) + ∑ 𝜇𝑗 . 𝜑𝑖 (𝑥 )
𝑗=1 𝑖=1
Toutefois, il est nécessaire, pour pouvoir conclure, d’avoir des résultats précisant si la solution obtenue est
effectivement un minimum. Pour cela, on peut restreindre le nombre de candidats grâce à une conditon du
second ordre.
Théorème 4 :
37
Optimisation numérique et Python
On suppose que J,f et g sont de classe C 2 , que x* est un minimum (local) de J sur C et le point x* est que les
contraintes sont qualifiées en ce point. On désigne par µ* (resp. λ* ) le vecteur des multiplicateurs de Lagrange
associés aux contraintes égalités (resp. inégalités). Alors, pour toute direction d ∈ Rn vérifiant :
⟨∇𝑥 𝜑𝑖 (𝑥 ∗ )|𝑑⟩ = 0 𝑖 = 1, … , 𝑚2
⟨∇𝑥 𝜃𝑗 (𝑥 ∗ )|𝑑⟩ = 0, 𝑗 ∈ 𝐼0+ (𝑥 ∗ )
⟨∇𝑥 𝜃𝑗 (𝑥 ∗ )|𝑑⟩ ≤ 0, 𝑗 ∈ 𝐼0 (𝑥 ∗ )\𝐼0+ (𝑥 ∗ )
Où : 𝐼0+ (𝑥 ∗)={𝑖, 1 ≤ 𝑖 ≤ 𝑚2 , 𝜑𝑖 (𝑥 ∗ ) = 0 𝑒𝑡 𝜇𝑖∗ > 0 } 𝑒𝑡 𝐼0 (𝑥 ∗ ) = {𝑖, 1 ≤ 𝑖 ≤ 𝑚2 , 𝜑𝑖 (𝑥 ∗ ) = 0 }
On a :
⟨∇2𝑥𝑥 𝐿(𝑥 ∗ , 𝜇∗ , 𝜆∗ ). d|𝑑⟩ ≥ 0
et on va calculer :
En n pas successifs, On a :
38
T. Ouaderhman
Lorsque l’on minimise sur un ensemble de contraintes C supposé fermé, il n’est pas sûr que x (k) reste dans C.
Il est donc nécessaire de se ramener dans C. On réalise cette dernière opération grâce à une projection sur C,
l’opérateur associé étant note
Ceci donne lieu alors naturellement à l’algorithme du gradient projeté, algorithme identique à celui du gradient
à la projection :
Cette approche paraît simple au premier abord. Toutefois, il ne faut pas oublier que l’on doit connaître
l’opérateur de projection sur C, ce qui n’est pas, à priori simple.
Il est important de remarquer que le calcul à l’étape 2(a) du projeté sur X, peut parfois être aussi difficile
yk est obtenu en résolvant le problème :
Il s’agit donc de résoudre un problème d’optimisation sur un convexe, avec une fonction objectif convexe.
Lorsque le domaine X des contraintes est simple (contraintes de bornes en particulier), c’est faisable. Dès que
les contraintes ne sont pas des contraintes de bornes, le calcul de la projection devient beaucoup plus délicat.
I et J étant des ensembles d’indices non nécessairement disjoints (ceci contient notamment le cas des paves
39
Optimisation numérique et Python
Acknowledgments
40