← Tous les textes du Grand Oral
MathsSESHGGSPNSI
Comment produire le plus possible avec des machines et des matières premières limitées ? Combien de pièces commander à la fois pour dépenser le moins ? Qui doit faire quelle tâche pour finir au plus vite ? Ces questions se posent à une usine, un hôpital, une compagnie aérienne, une armée. La recherche opérationnelle est la branche des mathématiques qui cherche la meilleure décision possible quand les moyens sont limités.
Ce texte présente son histoire et trois de ses méthodes, avec les mathématiques de terminale : droites et inégalités, fonction affine sur un segment, dérivation et étude de fonction, valeur moyenne d'une fonction, dénombrement et factorielle, raisonnement par récurrence. Il rassemble des connaissances ; à chacun d'y choisir une direction et d'y construire sa question.
À la fin des années 1930, le Royaume-Uni installe le long de ses côtes une chaîne de stations radar pour repérer les avions allemands. Les appareils fonctionnent, mais encore faut-il organiser la transmission des informations, le guidage des chasseurs, la répartition des stations. Des scientifiques sont chargés d'étudier non pas les appareils, mais leur utilisation, leurs « opérations » : c'est l'origine du nom operational research, recherche opérationnelle.
Pendant la guerre, des équipes mêlant physiciens, mathématiciens, biologistes et psychologues travaillent pour l'armée britannique, notamment autour du physicien Patrick Blackett, futur prix Nobel de physique. L'un de leurs sujets est la bataille de l'Atlantique : les navires marchands qui ravitaillent le Royaume-Uni traversent l'océan en convois, protégés par des navires d'escorte, et les sous-marins allemands les attaquent.
Faut-il de petits convois ou de grands convois ? L'analyse des données a conduit les équipes de Blackett à une conclusion surprenante : les grands convois sont proportionnellement moins vulnérables. Un raisonnement géométrique simple aide à le comprendre.
Un convoi de $80$ navires demande, par navire, $\sqrt{2} \approx 1{,}41$ fois moins d'escortes qu'un convoi de $40$ navires, car $\dfrac{1/\sqrt{40}}{1/\sqrt{80}} = \sqrt{2}$. La réalité est plus compliquée (les sous-marins attaquaient en groupes, un grand convoi est plus facile à repérer), mais l'idée a pesé dans les décisions. D'autres études ont porté sur la profondeur de déclenchement des grenades sous-marines, ou sur la couleur des avions de patrouille pour qu'ils soient moins visibles depuis la surface.
En 1939, en Union soviétique, le mathématicien Leonid Kantorovitch est consulté par une usine de contreplaqué de Leningrad qui veut répartir au mieux le travail entre ses machines. Il en tire une méthode générale pour organiser une production quand les ressources sont limitées : c'est la naissance de la programmation linéaire. Son travail passe largement inaperçu, en URSS comme en Occident : dans une économie planifiée, l'idée de « prix » attachés aux ressources rares, qui apparaît dans ses calculs, était suspecte.
En 1947, aux États-Unis, le mathématicien George Dantzig, qui travaille sur la planification de l'armée de l'air américaine, invente indépendamment une méthode de calcul très efficace, la méthode du simplexe. Les ordinateurs naissants permettent de l'appliquer à des problèmes de plus en plus grands. En 1975, Kantorovitch et l'économiste américain d'origine néerlandaise Tjalling Koopmans reçoivent le prix de la Banque de Suède en sciences économiques en mémoire d'Alfred Nobel (souvent appelé « prix Nobel d'économie ») pour leurs travaux sur la répartition optimale des ressources. Dantzig, au grand étonnement de beaucoup, n'y est pas associé.
Un atelier fabrique deux modèles de meubles, A et B. On note $x$ le nombre de meubles A et $y$ le nombre de meubles B fabriqués par semaine. Les ressources sont limitées :
Un meuble A rapporte $30$ € de bénéfice, un meuble B $20$ €. Le bénéfice de la semaine est
$$P = 30x + 20y.$$Il s'agit de rendre $P$ maximal en respectant toutes les contraintes. Les contraintes et le bénéfice s'écrivent avec des expressions du premier degré en $x$ et $y$ : d'où le nom de programmation linéaire.
Dans un repère, chaque contrainte délimite un demi-plan. Par exemple, la droite d'équation $x + y = 8$ passe par $(8\,;0)$ et $(0\,;8)$, et les points qui vérifient $x + y \leqslant 8$ sont ceux situés du côté de l'origine, puisque $0 + 0 \leqslant 8$. Les points qui vérifient toutes les contraintes forment un polygone, la région admissible. Ses sommets s'obtiennent en résolvant des systèmes de deux équations.
Calculons le bénéfice en chaque sommet.
| sommet | $(0\,;0)$ | $(6\,;0)$ | $(4\,;4)$ | $(3\,;5)$ | $(0\,;6)$ |
|---|---|---|---|---|---|
| $P = 30x + 20y$ | $0$ | $180$ | $200$ | $190$ | $120$ |
Le meilleur sommet est $(4\,;4)$ : $4$ meubles A et $4$ meubles B, pour un bénéfice de $200$ €. La partie suivante démontre qu'aucun point de la région ne fait mieux.
Les points où le bénéfice vaut un nombre $k$ donné sont sur la droite d'équation $30x + 20y = k$. Quand $k$ augmente, cette droite se déplace parallèlement à elle-même, en s'éloignant de l'origine. Le bénéfice maximal correspond à la dernière position où la droite touche encore la région admissible. Dans la figure, le premier curseur déplace la droite ; le second change le bénéfice d'un meuble B, et l'on voit le sommet optimal changer.
Avec un bénéfice de $20$ € par meuble B, la droite quitte la région en $(4\,;4)$ pour $k = 200$. Si un meuble B rapporte $30$ €, les bénéfices aux sommets deviennent $0$, $180$, $240$, $240$ et $180$ : la droite de bénéfice est alors parallèle au côté qui joint $(4\,;4)$ et $(3\,;5)$, et tous les points de ce côté sont optimaux. Au-delà, l'optimum passe en $(3\,;5)$.
Étape 1 : sur un segment. Soient $A(x_A\,;y_A)$ et $B(x_B\,;y_B)$ deux points. Les points du segment $[AB]$ s'écrivent $M = A + t\,\overrightarrow{AB}$ avec $t \in [0\,;1]$, c'est-à-dire $x_M = x_A + t(x_B - x_A)$ et $y_M = y_A + t(y_B - y_A)$. Alors
$$P(M) = P(A) + t\,\big(P(B) - P(A)\big).$$C'est une fonction affine de $t$ : elle est monotone sur $[0\,;1]$, donc $P(M) \leqslant \max\big(P(A)\,;P(B)\big)$. Sur un segment, $P$ est maximal à une extrémité.
Étape 2 : sur le bord. Le bord du polygone est formé de côtés, qui sont des segments dont les extrémités sont des sommets. D'après l'étape 1, en tout point du bord, $P$ est inférieur ou égal à sa valeur en l'un des sommets.
Étape 3 : à l'intérieur. Par un point $M$ intérieur, traçons une droite horizontale : elle coupe le bord en deux points $C$ et $D$, et $M$ est sur le segment $[CD]$. D'après l'étape 1, $P(M) \leqslant \max\big(P(C)\,;P(D)\big)$, et d'après l'étape 2, cette valeur est inférieure ou égale à la valeur de $P$ en un sommet.
Conclusion. La plus grande des valeurs de $P$ aux sommets est le maximum de $P$ sur tout le polygone.
Ce résultat transforme un problème avec une infinité de points en un problème avec un nombre fini de candidats : les sommets. La démonstration utilise le fait que la région est convexe : elle contient tout segment qui joint deux de ses points.
La méthode du simplexe. Dans un vrai problème, il y a des milliers de variables et de contraintes, et le nombre de sommets est astronomique : on ne peut pas tous les calculer. La méthode de Dantzig part d'un sommet et passe à un sommet voisin meilleur, tant qu'il en existe un. Quand aucun sommet voisin ne fait mieux, la convexité garantit qu'on a trouvé l'optimum. En pratique, elle ne visite qu'une petite partie des sommets.
Un magasin vend chaque année $D$ unités d'un produit, à un rythme régulier. À chaque commande, il paie un coût fixe $a$ (transport, traitement administratif), quelle que soit la quantité commandée. Garder une unité en stock coûte $h$ par an (place, assurance, argent immobilisé). S'il commande $q$ unités à la fois :
Pourquoi un stock moyen de $\dfrac{q}{2}$ ? Entre deux livraisons, sur une durée $T$, le stock est la fonction affine $s(t) = q - \dfrac{q}{T}\,t$. Sa valeur moyenne est $\dfrac{1}{T}\displaystyle\int_0^T s(t)\,\mathrm{d}t$.
Le coût annuel total est donc
$$f(q) = \frac{aD}{q} + \frac{hq}{2}, \qquad q > 0.$$Commander souvent de petites quantités coûte cher en commandes ; commander rarement de grandes quantités coûte cher en stockage. Il faut trouver le bon compromis.
Prenons $D = 1\,200$ unités par an, $a = 50$ € par commande et $h = 3$ € par unité et par an.
| $q$ | commandes | $\frac{aD}{q}$ | $\frac{hq}{2}$ | $f(q)$ |
|---|---|---|---|---|
| $100$ | $12$ | $600$ | $150$ | $750$ |
| $200$ | $6$ | $300$ | $300$ | $600$ |
| $400$ | $3$ | $150$ | $600$ | $750$ |
Le meilleur choix du tableau est $q = 200$, et l'on remarque qu'en ce point les deux coûts sont égaux. Est-ce le minimum ?
Étape 1 : la dérivée. La fonction $f$ est dérivable sur $]0\,;+\infty[$, et
$$f'(q) = -\frac{aD}{q^2} + \frac{h}{2} = \frac{hq^2 - 2aD}{2q^2}.$$Étape 2 : le signe. Comme $2q^2 > 0$, $f'(q)$ a le signe de $hq^2 - 2aD$. Pour $q > 0$, $hq^2 - 2aD > 0$ équivaut à $q^2 > \dfrac{2aD}{h}$, soit $q > q^*$.
Étape 3 : les variations. La fonction $f$ est décroissante sur $]0\,;q^*]$ et croissante sur $[q^*\,;+\infty[$ : elle atteint son minimum en $q^*$.
C'est la formule de Wilson, établie en 1913 par l'ingénieur américain Ford Harris et popularisée dans les années 1930 par R. H. Wilson. Avec l'exemple :
$$q^* = \sqrt{\frac{2 \times 50 \times 1\,200}{3}},$$soit $q^* = \sqrt{40\,000} = 200$.
Les deux coûts sont égaux à l'optimum. En effet $(q^*)^2 = \dfrac{2aD}{h}$ donne $\dfrac{h\,q^*}{2} = \dfrac{aD}{q^*}$. Notons $c$ cette valeur commune : le coût minimal est $2c$.
Une formule robuste. Si l'on commande $\lambda q^*$ au lieu de $q^*$ (avec $\lambda > 0$), le coût devient $\dfrac{c}{\lambda} + c\,\lambda = c\left(\lambda + \dfrac{1}{\lambda}\right)$. Pour $\lambda = 2$ ou $\lambda = \dfrac{1}{2}$, on obtient $2{,}5\,c$, soit seulement $25\,\%$ de plus que le minimum $2c$ : se tromper du simple au double coûte relativement peu. C'est ce que montrait le tableau (750 € au lieu de 600 €).
Le tableur ci-dessous calcule le coût pour différentes quantités commandées. On peut changer la demande $D$ (cellule B2), le coût
d'une commande $a$ (B3) et le coût de stockage $h$ (B4), avec un point décimal. La cellule B5 calcule
$q^*$ avec la formule =(2*B3*B2/B4)**0.5, où **0.5 signifie « puissance $0{,}5$ », c'est-à-dire
racine carrée.
Une entreprise doit affecter trois livreurs A, B et C à trois tournées T1, T2 et T3, un livreur par tournée. Selon leur domicile et leur véhicule, ils ne mettent pas le même temps. Les durées, en heures, sont :
| T1 | T2 | T3 | |
|---|---|---|---|
| A | $2$ | $3$ | $8$ |
| B | $3$ | $7$ | $9$ |
| C | $4$ | $9$ | $6$ |
On veut rendre minimale la durée totale. Combien d'affectations possibles ? On choisit la tournée de A ($3$ choix), puis celle de B parmi les deux restantes ($2$ choix), et C prend la dernière ($1$ choix) : $3 \times 2 \times 1 = 6$ affectations. Énumérons-les :
| A | B | C | durée totale |
|---|---|---|---|
| T1 | T2 | T3 | $2 + 7 + 6 = 15$ |
| T1 | T3 | T2 | $2 + 9 + 9 = 20$ |
| T2 | T1 | T3 | $3 + 3 + 6 = 12$ |
| T2 | T3 | T1 | $3 + 9 + 4 = 16$ |
| T3 | T1 | T2 | $8 + 3 + 9 = 20$ |
| T3 | T2 | T1 | $8 + 7 + 4 = 19$ |
La meilleure affectation est A sur T2, B sur T1, C sur T3, pour $12$ heures.
Une idée naturelle : choisir d'abord le plus petit temps du tableau, puis le plus petit parmi ceux qui restent possibles, et ainsi de suite. C'est un algorithme glouton : à chaque étape, il prend ce qui semble le meilleur sur le moment, sans revenir en arrière.
Total : $15$ heures, alors que l'optimum est $12$ heures. En prenant tout de suite la meilleure case pour A, l'algorithme a privé B de T1, où B était aussi très rapide. L'algorithme glouton est rapide, mais il ne garantit pas l'optimum.
Avec $n$ livreurs et $n$ tournées, le même raisonnement donne $n \times (n-1) \times \cdots \times 1$ affectations : c'est la factorielle de $n$, notée $n!$.
| $n$ | $5$ | $10$ | $15$ | $20$ |
|---|---|---|---|---|
| $n!$ | $120$ | $3\,628\,800$ | $\approx 1{,}3 \times 10^{12}$ | $\approx 2{,}4 \times 10^{18}$ |
Un ordinateur qui examinerait un milliard d'affectations par seconde mettrait environ $77$ ans pour en examiner $2{,}4 \times 10^{18}$ (une année compte environ $3{,}15 \times 10^{7}$ secondes). La factorielle croît plus vite que n'importe quelle suite géométrique ; démontrons-le pour la raison $2$.
Initialisation. $4! = 24$ et $2^4 = 16$, donc $4! \geqslant 2^4$.
Hérédité. Supposons $n! \geqslant 2^n$ pour un entier $n \geqslant 4$. Alors
$$(n+1)! = (n+1) \times n!,$$donc, d'après l'hypothèse de récurrence, $(n+1)! \geqslant (n+1) \times 2^n$. Comme $n + 1 \geqslant 2$, on obtient $(n+1)! \geqslant 2 \times 2^n = 2^{n+1}$.
Conclusion. La propriété est vraie pour tout $n \geqslant 4$. Comme $2^n$ tend vers $+\infty$, $n!$ aussi, par comparaison.
Essayer toutes les possibilités devient vite impossible : c'est l'explosion combinatoire. Pour l'affectation, il existe heureusement une méthode exacte et rapide, la méthode hongroise, publiée par Harold Kuhn en 1955, dont le nombre d'opérations croît seulement comme $n^3$. Pour d'autres problèmes, comme celui du voyageur de commerce (trouver le plus court circuit passant par $n$ villes), on ne connaît aucune méthode exacte rapide, et l'on se contente de bonnes solutions approchées, par exemple avec les algorithmes présentés dans le texte Les algorithmes génétiques.
Elle est partout, souvent invisible :
Pour les sciences économiques, la programmation linéaire éclaire la question centrale de l'allocation de ressources rares. Les nombres que la méthode associe à chaque contrainte, que Kantorovitch appelait des « évaluations objectivement déterminées », mesurent combien rapporterait une unité supplémentaire de chaque ressource : un jour de montage, un mètre cube de bois. Ils jouent le rôle de prix, même dans une économie sans marché. Mais le calcul ne dit pas tout : le choix de ce que l'on maximise (bénéfice, temps, bien-être, émissions évitées) et des contraintes que l'on se donne reste une décision humaine et politique.
Ce texte n'est pas un Grand Oral. Il rassemble des connaissances dans lesquelles chacun peut choisir une direction, la creuser et formuler sa propre question. Quelques directions possibles :
Le jury peut interroger sur les chapitres de spécialité mobilisés. Avec ce thème, il est utile de connaître parfaitement : les équations de droites et la résolution de systèmes ; les vecteurs et la représentation paramétrique d'un segment ; la dérivation, le signe de la dérivée et les variations d'une fonction ; les primitives, l'intégrale et la valeur moyenne d'une fonction ; le dénombrement, les permutations et la factorielle ; le raisonnement par récurrence et les limites de suites.
Pour réviser ces chapitres, l'application Maths FlashBac reprend tout le cours de spécialité en cartes.