総当たり法(Exhaustive search method)
目的関数を適用して結果を可視化しましたが、プロットを見て最適値を「目測」することしかできませんでした。より正確に求めるには、総当たり法を使います。
今回も、雑誌を発行・印刷するメディア企業で働いている設定です。ただし今回は、コストの最小化ではなく利益の最大化を目指します。利益と数量の単位は千であることを思い出してください。つまり、q が 1 なら 1000 部の雑誌、利益が 5 なら $5000 を意味します。
前の演習と同じ quantity 配列が用意されており、最適化するための profit() 関数も提供されています。
numpy は np としてインポート済みです。
この演習はコースの一部です
Pythonで学ぶOptimization入門
演習の手順
- 提供された
profit()関数を使って、すべての数量に対する利益を計算し、profitsに保存します。 - 適切な配列メソッドで最大利益を求め、
max_profitに保存します。 - 最大利益のインデックスを
max_indexとして取得し、これを使ってquantityを部分取得し、利益を最大化する最適な数量を求めます。 - f-string を完成させて結果を表示します。利益と数量はそれぞれ
1000を掛けて表示することを忘れないでください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Calculate the profit for every quantity
profits = ____
# Find the maximum profit
max_profit = ____
# Find the optimal quantity
max_profit_ind = ____
optimal_quantity = ____
# Print the results
print(f"You need to print {____} magazines to make the maximum profit of ${____}.")