線形制約つきビスケット
おめでとうございます! あなたのビスケット事業は成長し、いまや全国配送のためにベーカリー \(A\) と \(B\) の2店舗を運営しています。
各ベーカリーは1日に100個のビスケットを製造でき、ベーカリー \(A\) でビスケットを1個作るコストは数量 \(q\) に対して $1.5$、ベーカリー \(B\) では \(1.75q\) です。
価格は \(150 - q\) で定義されます。
事業は好調で、本日分としてすでにビスケット140個の予約注文があります。1日の利益を最大化したいとします。各ベーカリーで何個ずつ作るべきでしょうか?
minimize、Bounds、LinearConstraint は読み込まれており、収益関数 R はすでに定義されています。
この演習はコースの一部です
Pythonで学ぶOptimization入門
演習の手順
- ベーカリー \(A\) の数量には
q[0]、ベーカリー \(B\) にはq[1]を用いて、コスト関数Cを定義します。 profit関数を定義します。- 最適化問題のための
boundsとconstraintsを定義します。 - 最適化を実行し、
resultに保存します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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}')