CommencezCommencez gratuitement

Biscuits avec contraintes linéaires

Félicitations! Votre entreprise de biscuits a pris de l'ampleur. Vous avez maintenant deux boulangeries, \(A\) et \(B\), pour vous aider à livrer vos biscuits partout au pays.

Chaque boulangerie peut fabriquer 100 biscuits par jour. Le coût de fabrication d'un biscuit dans la boulangerie \(A\) est \(1.5\) fois la quantité \(q\), tandis que dans la boulangerie \(B\) il est de \(1.75q\).

Le prix est défini par \(150 - q\).

Les affaires vont très bien et vous avez déjà 140 précommandes de biscuits pour la journée. Vous voulez maximiser votre profit aujourd'hui. Combien de biscuits devriez-vous produire dans chaque boulangerie?

minimize, Bounds et LinearConstraint ont été importés pour vous, et la fonction de revenus R est déjà définie.

Cette activité fait partie du cours

Introduction à l'optimisation en Python

Voir le cours

Instructions de l’exercice

  • Définissez la fonction de coût C en utilisant q[0] pour les quantités de la boulangerie \(A\) et q[1] pour la boulangerie \(B\).
  • Définissez la fonction profit.
  • Définissez les bounds et les constraints pour votre problème d'optimisation.
  • Effectuez l'optimisation et enregistrez le résultat dans result.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

def R(q):
    return (150 - q[0] - q[1]) * (q[0] + q[1])

# Define the cost function
def C(q): 
  return ____

# Define the profit function
def profit(q): 
  return ____

# Define the bounds and constraints
bounds = Bounds(____, ____) 
constraints = LinearConstraint([1, 1], ____) 

# Perform optimization
result = ____(lambda q: ____,                 
                  [50, 50],              
                  bounds=bounds,
                  constraints=constraints)

print(result.message)
print(f'The optimal number of biscuits to bake in bakery A is: {result.x[0]:.2f}')
print(f'The optimal number of biscuits to bake in bakery B is: {result.x[1]:.2f}')
print(f'The bakery company made: ${-result.fun:.2f}')
Modifier et exécuter le code