Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Modéliser une décision : variables et contraintes

Après cette leçon: Je peux écrire une décision sous la forme de variables, d’un objectif et de contraintes.

Leçon de 60 min1 commandeLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Comment écrire une décision avec des nombres ?

La recherche opérationnelle est la science qui aide à prendre la meilleure décision quand les moyens sont limités. Elle commence toujours par un modèle : la décision écrite avec des nombres.

Ce modèle dit ce que l’on peut choisir, ce que l’on veut gagner et ce qui nous limite. Vous saurez l’écrire pour une boulangerie.

À la fin de cette leçon

Remarque

Je peux écrire une décision sous la forme de variables, d’un objectif et de contraintes.

Mots clés

MotCe que ça veut direExemple
Variable de décisionun nombre que l’on choisit librementpain
Objectifla quantité que l’on veut rendre la plus grande ou la plus petite
Contrainteune limite que le plan doit respecter
Plan réalisableun plan qui respecte toutes les contraintes
Modèlela décision écrite avec des variables, un objectif et des contraintes

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une boulangerie doit choisir ses fournées

Une boulangerie lyonnaise prépare le matin des fournées de pain et des fournées de brioches. Une fournée de pain rapporte 40 euros et une fournée de brioches 50 euros.

Elle dispose de 10 kg de farine et de 8 heures de pétrissage. Une fournée de pain prend 2 kg et 1 heure, une fournée de brioches 1 kg et 2 heures. Que faut-il cuire ?

Exemple travaillé : ce que prend chaque fournée

Pain (x)Brioches (y)Disponible
Farine en kg2110
Pétrissage en heures128
Gain en euros4050

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un modèle a trois parties

Les variables de décision sont les nombres à choisir : x fournées de pain et y fournées de brioches.

L’objectif est le gain à rendre le plus grand : 40 x + 50 y. Les contraintes sont les limites. Elles s’écrivent 2 x + y ≤ 10 pour la farine et x + 2 y ≤ 8 pour le temps. On ajoute x ≥ 0 et y ≥ 0, car on ne cuit pas un nombre négatif de fournées.

Tester un plan avec Python

Code: python
# Un plan : 4 fournées de pain et 2 fournées de brioches.
pain = 4
brioche = 2

farine_utilisee = 2 * pain + brioche
temps_utilise = pain + 2 * brioche
print("farine utilisée", farine_utilisee, "kg sur 10")
print("temps utilisé", temps_utilise, "heures sur 8")
print("plan réalisable", farine_utilisee <= 10 and temps_utilise <= 8)
print("gain", 40 * pain + 50 * brioche, "euros")

Un plan réalisable respecte toutes les limites

Pour juger un plan, on fait deux choses. D’abord, on vérifie chaque contrainte avec les nombres du plan. Ensuite, si tout passe, on calcule le gain.

Un plan qui dépasse une seule limite est non réalisable, même s’il rapporte beaucoup. Le plan 5 pains et 1 brioche rapporte 250 euros, mais il demande 11 kg de farine.

Juger trois plans d’un coup

Commande
docker exec jupyter python3 -c "[print(x, y, 2 * x + y <= 10, x + 2 * y <= 8, 40 * x + 50 * y) for x, y in [(4, 2), (5, 1), (0, 4)]]"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire ce que la commande affiche

Chaque ligne donne x, y, puis deux réponses Vrai ou Faux, puis le gain. La première réponse dit si la farine suffit, la seconde si le temps suffit.

Le plan (4, 2) passe les deux tests et rapporte 260 euros. Le plan (5, 1) échoue sur la farine. Le plan (0, 4) est réalisable mais ne rapporte que 200 euros.

Une erreur fréquente

Attention

Beaucoup pensent que le meilleur plan est celui qui utilise le plus de produit à l’objectif, ici le plus de brioches. Mais les brioches prennent du temps, et le temps est limité. Un modèle sert justement à peser toutes les limites ensemble, jamais une seule.

Pour aller plus loin

Dans votre carnet, changez les 10 kg de farine en 12 kg, puis testez le plan (5, 2). Dites s’il devient réalisable et combien il rapporte.

Pensez ensuite à un autre cas de votre vie : un budget de courses, un emploi du temps de révision. Écrivez ses variables, son objectif et ses contraintes.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.