始める無料で始める

線形制約つきビスケット

おめでとうございます! あなたのビスケット事業は成長し、いまや全国配送のためにベーカリー \(A\) と \(B\) の2店舗を運営しています。

各ベーカリーは1日に100個のビスケットを製造でき、ベーカリー \(A\) でビスケットを1個作るコストは数量 \(q\) に対して $1.5$、ベーカリー \(B\) では \(1.75q\) です。

価格は \(150 - q\) で定義されます。

事業は好調で、本日分としてすでにビスケット140個の予約注文があります。1日の利益を最大化したいとします。各ベーカリーで何個ずつ作るべきでしょうか?

minimizeBoundsLinearConstraint は読み込まれており、収益関数 R はすでに定義されています。

この演習はコースの一部です

Pythonで学ぶOptimization入門

コースを見る

演習の手順

  • ベーカリー \(A\) の数量には q[0]、ベーカリー \(B\) には q[1] を用いて、コスト関数 C を定義します。
  • profit 関数を定義します。
  • 最適化問題のための boundsconstraints を定義します。
  • 最適化を実行し、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}')
コードを編集して実行