maths

L’optimisation sous contrainte a mauvaise presse chez les préparationnaires. C’est une notion considérée (souvent à tort) comme très complexe et inabordable. Pourtant, les exercices d’optimisation sous contrainte en classe préparatoire ECG se distinguent par leur ressemblance. Les méthodes utilisées sont quasiment identiques d’un exercice à un autre.

Je te propose donc d’étudier ces méthodes, dont tu pourras imiter presque à l’identique la rédaction dans tes exercices. Ces éléments de rédaction seront indiqués en gras.

Avant-propos

Dans les faits, l’optimisation sous contrainte est un domaine complexe des mathématiques. Fort heureusement pour nous, les concepteurs du programme ont choisi de limiter l’optimisation sous contrainte à des cas « simples ».

La fonction que l’on cherchera à optimiser sur \(\Omega\) une partie de \(\mathbb{R}^n\) sous la contrainte \(\mathcal{C}\) sera systématiquement \(C^2\) sur \(\Omega\), ce qui facilitera considérablement notre travail. On notera donc dans la suite de cet article \(f\), une fonction \(C^2\) sur \(\Omega\). De même, les fonctions qui composent notre système de contraintes seront \(C^1\).

Optimisation sous contrainte linéaire

Soient \(g_1, \dots, g_p\) des fonctions linéaires de \(\mathbb{R}^n\) dans \(\mathbb{R}\), \(a\) un vecteur de \(\mathbb{R}^n\) et \(\alpha_1, \dots, \alpha_p\) des réels. On note \(\mathcal{C}\) le système à \(p\) contraintes linéaires suivant :

\(\mathcal{C} : \begin{cases} g_1(x)=\alpha_1&\\ \vdots &\\g_p(x)=\alpha_p \end{cases}\)

On note par ailleurs \(\mathcal{H}\) le système suivant :

\(\mathcal{H} : \begin{cases} g_1(x)=0&\\ \vdots &\\g_p(x)=0\end{cases}\)

Le cours nous offre une condition nécessaire d’extremum en \(a\) sous la contrainte \(\mathcal{C}\) : il faut que \(\nabla(f)(a) \in \mathcal{H}^\perp\)= \(\text{Vect}(\nabla(g_1), \dots, \nabla(g_p))\).

Quelques remarques

  • Le fait que \(\mathcal{H}^\perp\)= \(\text{Vect}(\nabla(g_1), \dots, \nabla(g_p))\) est admis par le cours, il ne te sera jamais demandé de le démontrer.
  • La notation \(\text{Vect}(\nabla(g_1), \dots, \nabla(g_p))\) est légitime. On peut écrire \(\nabla(g_i)\) au lieu de \(\nabla(g_i)(a)\), où \(a\) désigne un vecteur de \(\mathbb{R}^n\), car pour tout \(i\) de \([\![1,p]\!]\), \(g_i\) est une fonction linéaire, donc son gradient est constant (il ne dépend pas du vecteur en lequel il est appliqué).

Ainsi, la méthode que tu pourras appliquer si tu dois optimiser la fonction \(f\) sous la contrainte \(\mathcal{C}\) ressemblera à cela :

Dans un premier temps, tu pourras calculer \(\nabla(f)(a)\) après avoir justifié le caractère \(C^1\) de \(f\), puis les \(\nabla(g_i)\).

Après avoir fait cela, tu bénéficies de deux informations :

Si \(f\) possède un extremum en \(a\) sous la contrainte \(\mathcal{C}\), alors d’après le cours \(a\) vérifie le système \(\mathcal{C}\) et \(\nabla(f)(x) \in \text{Vect}(\nabla(g_1), \dots, \nabla(g_p))\). 

À partir de ces deux informations, tu devras résoudre des systèmes, qui te permettront alors de trouver un ou plusieurs \(a\) qui vérifient ces contraintes. Après avoir trouvé \(a\), il peut être intéressant de vérifier que ce vecteur vérifie bien les contraintes demandées pour t’assurer que tu n’as pas fait d’erreurs de calcul.

À partir de là, tu as plusieurs options.

Méthode 1

En considérant le \(a\) trouvé, tu peux chercher à établir le signe de \(f(a)-f(a+h)\) (où \(h\) désigne un vecteur de \(\mathbb{R}^n\) tel que \(a+h \in \mathcal{C}\)) par des calculs qui peuvent s’avérer parfois très lourds. Un outil permettant de simplifier les calculs est l’équivalence (admise par le cours) suivante : \(a+h \in \mathcal{C} \Leftrightarrow h \in \mathcal{H}\).

Méthode 2

Il existe une méthode bien plus efficace et élégante, bien que plus contraignante et un peu compliquée dans les concepts. Si tu sais (après avoir calculé et justifié que la fonction \(f\) est \(C^2\) ) qu’en tout point \(a\) la forme quadratique associée à la hessienne de \(f\) en \(a\) notée \(q_a\) est positive (respectivement négative), tu pourras alors appliquer la formule de Taylor-Lagrange avec reste intégral à la fonction (à une variable) \(g\) entre \(0\) et \(1\), où \(g\) est définie par \(\forall t \in \mathbb{R},  g(t)=f(a+th)\). On supposera ici que cette forme quadratique est négative.

Cette fonction \(g\) est \(C^2\) d’après le cours (c’est admis), et on a \(\forall t \in \mathbb{R}, g'(t)=\langle \nabla(f)(a+th),h\rangle\), et \( g^{(2)}(t)= q_{a+th}(h)\).

Tu pourras le rédiger comme cela :

Soit \(h \in \mathbb{R}^n | a+h \in \mathcal{C} \Leftrightarrow h \in \mathcal{H}\) (d’après le cours) et soit \(g\) définie sur \(\mathbb{R}\) par \(\forall t \in \mathbb{R}, g(t)=f(a+th)\). \(g\) étant \(C^2\) sur \(\mathbb{R}\) d’après le cours, on a d’après la formule de Taylor-Lagrange avec reste intégral appliquée à l’ordre \(1\) entre \(0\) et \(1\) :

\(g(1)=g(0)+g'(0)+ \displaystyle \int_{0}^{1} g^{(2)}(t) \,\mathrm{d}t\)

Soit

\(f(a+h)=f(a)+\langle \nabla(f)(a),h\rangle+ \displaystyle \int_{0}^{1} q_{a+th}(h) \,\mathrm{d}t\)

Seulement, rappelle-toi : \(\nabla(f)(a) \in \mathcal{H}^\perp\), et \(a+h \in \mathcal{C} \Leftrightarrow h \in \mathcal{H}\), donc \(\langle \nabla(f)(a),h\rangle=0\).

Ainsi, on a l’égalité \(f(a+h)-f(a)= \displaystyle \int_{0}^{1} q_{a+th}(h) \,\mathrm{d}t\).

Alors, il ne reste plus qu’à rappeler que \(\forall t \in [\![0,1]\!], q_{a+th}(h) \le 0\), utiliser la croissance de l’intégration dans le cas où les bornes sont rangées dans l’ordre croissant, pour obtenir \( f(a+h)-f(a) \le 0\), soit \( f(a+h) \le f(a)\).

Ainsi, on vient de prouver que \(f\) possède en \(a\) un maximum global sous la contrainte \(\mathcal{C}\).

Si tu souhaites apprendre des méthodes comparables sur l’optimisation sur un ouvert ou sur un fermé borné, tu peux cliquer ici.