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

Analyse de sensibilité et prix caché

Après cette leçon: Je peux dire de combien le gain optimal change quand une limite augmente d’une unité.

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

Combien rapporte un kilo de farine de plus ?

L’analyse de sensibilité dit comment la meilleure réponse change quand une donnée du problème change un peu. Le prix caché d’une limite est le gain obtenu en la relâchant d’une unité.

Il aide à décider où investir. Vous saurez dire si la boulangerie gagne plus avec un kilo de farine ou avec une heure de pétrissage.

À la fin de cette leçon

Remarque

Je peux dire de combien le gain optimal change quand une limite augmente d’une unité.

Mots clés

MotCe que ça veut direExemple
Sensibilitél’effet d’un petit changement de donnée sur la réponse
Prix cachéle gain apporté par une unité de plus d’une limite10 euros par kg
Contrainte saturéeune limite entièrement utilisée par le meilleur plan
Margece qui reste d’une limite non utilisée
Ressourcece qui est limité, comme la farine ou le temps

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

Le prix caché mesure la valeur d’une limite

Le meilleur plan de la boulangerie rapporte 260 euros. Si l’on avait un kilo de farine en plus, le gain passerait à 270 euros : cette limite vaut donc 10 euros le kilo.

De la même façon, une heure de plus de pétrissage rapporte 20 euros. Le prix caché de la farine est 10 euros le kilo, celui du temps 20 euros l’heure.

Exemple travaillé : une unité de plus

LimiteValeur actuelleAprès un de plusGain optimalPrix caché
Farine (kg)1011270 au lieu de 26010
Temps (heures)89280 au lieu de 26020

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

Calculer un prix caché avec Python

Code: python
# Le gain optimal de la boulangerie pour une farine donnée.
# Les sommets viennent de la leçon 2 : on essaie le sommet des deux limites.
def gain_optimal(farine, temps):
    # x + 2 y = temps et 2 x + y = farine se croisent en :
    x = (2 * farine - temps) / 3
    y = (2 * temps - farine) / 3
    return 40 * x + 50 * y

avant = gain_optimal(10, 8)
apres = gain_optimal(11, 8)
print("gain avec 10 kg", round(avant, 2))
print("gain avec 11 kg", round(apres, 2))
print("un kilo de plus rapporte", round(apres - avant, 2))

Lire les prix cachés dans SciPy

Commande
docker exec jupyter python3 -c "from scipy.optimize import linprog; res = linprog([-40, -50], A_ub=[[2, 1], [1, 2]], b_ub=[10, 8]); print([round(-m, 2) for m in res.ineqlin.marginals])"

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.

Une limite non utilisée ne vaut rien

Ajoutons une règle : au plus 6 fournées de pain. Le meilleur plan en fait 4. Cette limite n’est pas saturée : il en reste 2, sa marge.

Un kilo de farine de plus aide, mais une fournée de pain de plus en permis n’aide pas. Le prix caché d’une limite non saturée vaut zéro.

Voir les prix cachés et les marges

Commande
docker exec jupyter python3 -c "from scipy.optimize import linprog; res = linprog([-40, -50], A_ub=[[2, 1], [1, 2], [1, 0]], b_ub=[10, 8, 6]); print([round(-m, 2) for m in res.ineqlin.marginals]); print([round(v, 2) for v in res.ineqlin.residual])"

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.

Comparer 10, 11 et 20 kg de farine

Commande
docker exec jupyter python3 -c "from scipy.optimize import linprog; print([round(-linprog([-40, -50], A_ub=[[2, 1], [1, 2]], b_ub=[b, 8]).fun, 2) for b in (10, 11, 20)])"

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.

Une erreur fréquente

Attention

Beaucoup pensent que le prix caché vaut pour n’importe quelle quantité. Avec 20 kg de farine, le gain est 320 euros et non 360. Le prix ne vaut que pour un petit changement : plus loin, le temps limite à son tour.

Pour aller plus loin

Dans votre carnet, calculez le gain optimal avec 12 kg de farine, puis avec 13 kg. Comparez avec 10 euros par kilo.

Dites jusqu’à combien de kilos le prix de 10 euros semble tenir, et ce qui change ensuite.

À 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.