Ch.2-Opt.Unid_c
Ch.2-Opt.Unid_c
Ch.2-Opt.Unid_c
Chapter 2
Optimisation unidimentionnelle
2.1 Définitions
Définition 1: Un programme non-linéaire à une variable réelle se présente sous la forme :
𝑚𝑖𝑛 𝑓(𝑥)
(PSC) { ; où 𝑓 : IR → IR. Ce problème est dit sans contrainte.
𝑥 ∈ 𝐼𝑅
Il sera avec contraintes :
min 𝑓(𝑥)
(PC) { 𝑠. 𝑐 ; K IR.
𝑥∈𝐾
Example:
min 𝑓(𝑥)
𝑠. 𝑐
{ ; si K= [a,b].
𝑥≥𝑎
𝑥≤𝑏
Nous tenterons de répondre aux questions suivantes :
1) Existe-t-il une solution (locale ou globale) ? si oui a-t-on l’unicité ?
2) Comment la caractériser ? (conditions d’optimalité).
3) Comment la calculer ? avec quel type d’algorithme ?
Définition 2 :
i) Une fonction 𝑓 admet un minimum local en x*, s’il existe un
Voisinage de x*, V(x*) tel que : 𝑓(x*) ≤ 𝑓(x) xKV(x*) min.
avec V(x*) = {xIR / |x – x*| }. local
ii) Un minimum global sur un intervalle (borné ou non-borné) A min.
𝑓 admet un minimum global sur K en x* si 𝑓(x*) ≤ 𝑓(x) xK. global
iii) 𝑓 admet un minimum strict en x* si 𝑓(x*) 𝑓(x), xx*, xKV(x*). B
Remarque : un minimum global correspond au plus petit des minimums
locaux dans le cas où K = IR. a1 b1 a2 b2
K
2.2 Condition suffisante d’existence d’un minimum.
Il existe principalement deux théorèmes :
1) Cas où l’ensemble des contraintes K est fermé et borné.
2) Cas où l’ensemble des contraintes K est fermé mais non-borné.
Théorème 2 :
Soient K un ensemble fermé et non-borné, 𝑓 : K → IR une application continue et coercive sur K, alors 𝑓 admet
un minimum global sur K.
i) 𝑓 est dérivable sur IR. C.P.O : 𝑓′(x) = 0 x = 0, 𝑓′ change de signe au voisinage de x = 0, x* = 0 est un
minimum local. Puisque 𝑓′′(x) ≥ 0 xIR, 𝑓 est convexe sur IR. Alors x* = 0 est un minimum global
sur IR.
ii) 𝑓 admet un minimum global au point x* = 0 sur [-1,3], comme f est convexe, 𝑓(-1) = 1 et 𝑓(-3) =81 sont
des maximums locaux et x* = 3 est un maximum global.
𝑚𝑖𝑛 𝑔(𝑥)
2) Soit 𝑔(x) = x2. Déterminer { ;
𝑥 ∈ [1,2]
𝑔(1) = 1, 𝑔(2) = 4. 𝑔′(x) = 2x 0 x]1,2[ (dans l’intérieur).
min 𝑔(𝑥) = min{𝑔(1), 𝑔(2)}= 𝑔(1) = 1.
𝑥∈[1,2]
x* = 1 solution optimale et la valeur optimale 𝑔(1) = 1.
𝑚𝑖𝑛 ℎ(𝑥)
3) ℎ(x) = cosx. Déterminer { ; la recherche des optimums de ℎ sur [2,10] est difficile, car la
𝑥 ∈ [2,10]
résolution de l’équation ℎ′(x) = cosx – xsinx = 0 est difficile. Il faut recourir aux méthodes itératives.
Chapitre 2 Optimisation Unidimentionnelle
a1 b2
a2 b2 Intervalles imbriqués (example: dichotomie).
a2 b3
Pour éviter que les méthodes de recherche ne convergent vers des optimums locaux, on suppose que la fonction
est unimodale (c.-à-d. qu’elle possède un seul minimum) sur l’intervalle. Les fonctions convexes sont
unimodales pour la recherche de minimum.
ii) Méthodes utilisant le calcul des dérivées :
Les résolutions itératives permettent simplement la résolution de l’équation 𝑓′(x) = 0, c.-à-d. la recherche
d’un point critique. C’est la raison pour laquelle nous supposons l’unimodalité de la fonction.
Tests :
𝑓(k) 𝑓(k) ak+1 = ak et bk+1 = k , x*[ak, k] = [ak+1, bk+1]
𝑓(k) 𝑓(k) ak+1 = k et bk+1 = bk , x*[k, bk] = [ak+1, bk+1]
𝑎𝑛−1 +𝑏𝑛−1
Itération n-1 : n-1 = n-1 = , x*[an-1, bn-1]
2
Pour une évaluation, on pose : n-1 = n-1 + , 0.
Test d’arrêt :
𝑛−1
𝐹𝑛−𝑖 1
𝑏𝑛 − 𝑎𝑛 = ∏ (𝑏 − 𝑎) = (𝑏 − 𝑎) ≤ 𝛼
𝐹𝑛+1−𝑖 𝐹𝑛
𝑖=1
1
𝑏𝑛 − 𝑎𝑛 = (𝑏 − 𝑎) + 𝜀 ≤ 𝛼 , 𝛼 𝑑𝑜𝑛𝑛é (𝛼 > 0)
{ 𝐹𝑛
ème
2 algorithme : Méthode de la section dorée.
Initialisation: a1 = a , b1 = b , x*[a1, b1],
Itération k, x*[ak, bk]
= 𝑎𝑘 + (1 − )(𝑏𝑘 − 𝑎𝑘 )
{ 𝑘 ; ( = 0,618 et 1- = 0,382).
𝜇𝑘 = 𝑎 𝑘 + (𝑏𝑘 − 𝑎𝑘 )
Tests :
𝑓(k) 𝑓(k) ak+1 = ak et bk+1 = k , x*[ak, k] = [ak+1, bk+1]
𝑓(k) 𝑓(k) ak+1 = k et bk+1 = bk , x*[k, bk] = [ak+1, bk+1]
𝑥 ∗ ∈ [𝑎𝑘 , 𝜇𝑘 ]
Si 𝑓(k) = 𝑓(k) { 𝑜𝑢
𝑥 ∗ ∈ [𝑘 , 𝑏𝑘 ]
Test d’arrêt :
bn − an = n-1 (b – a) ≤ , donné ( 0)
Itération k
xk ak dk ck ek bk
𝑓(xk) 𝑓(ak) 𝑓(dk) 𝑓(ck) 𝑓(ek) 𝑓(bk)
Chapitre 2 Optimisation Unidimentionnelle
f(xk) f(ak) f(dk) f(ck) f(ek) f(bk) f(xk) f(ak) f(dk) f(ck) f(ek) f(bk) f(xk) f(ak) f(dk) f(ck) f(ek) f(bk)
f(ak) f(dk) f(ck) f(ek) f(bk) f(ak) f(dk) f(ck) f(ek) f(bk) f(ak) f(dk) f(ck) f(ek) f(bk)
alors : x*[ak, ck] = [ak+1, bk+1] alors : x*[dk, ek] = [ak+1, bk+1] alors : x*[ck, bk] = [ak+1, bk+1]
f(xk) f(ak) f(dk) f(ck) f(ek) f(bk) f(xk) f(ak) f(dk) f(ck) f(ek) f(bk)
f(ak) f(dk) f(ck) f(ek) f(bk) f(ak) f(dk) f(ck) = f(ek) f(bk)
alors : x*[ek, bk] = [ak+1, bk+1] alors : x*[ck, ek] = [ak+1, bk+1].