数理最適化入門

Pythonで学ぶOptimization入門

Jasmin Ludolf

Content Developer

この後の内容

 

学習内容
  • 実問題の最適化の解法
  • さまざまな課題に挑むツールキットを構築

 

事前知識

 

不要な知識
  • 微積分
  • アルゴリズム
Pythonで学ぶOptimization入門

数理最適化とは

 

  • 特定の課題に最適な入力を見つける

 

  • :
    • 収量の最大化

畑で育つ作物。

  • 土壌条件、天候
  • 適切な量と品質
Pythonで学ぶOptimization入門

数理最適化とは

 

 

配送ルートを走るバン。

 

 

  • 最適な配送ルート
  • 距離と交通状況
  • 配送時間を短縮しコスト削減
Pythonで学ぶOptimization入門

目的関数

  • 入力変数と結果の関係を表す

 

家具製造:

  • 利益 P を最大化
  • 量 q

 

$P = 40q - 0.5q^2$

  • どの q が P を最大化?
Pythonで学ぶOptimization入門

Python で最適化

import numpy as np
import matplotlib.pyplot as plt

qs = np.arange(80)


def profit(q): return 40 * q - 0.5 * q**2
plt.plot(qs, profit(qs)) plt.xlabel('Quantity') plt.ylabel('Profit') plt.show()
Pythonで学ぶOptimization入門

製造における最適化

 

  • 最大値 = 最適値

 

  • この形の理由(例):
    • 人員や設備が不足

 

数量に応じて変化する利益。

Pythonで学ぶOptimization入門

全探索(総当たり)

  • 「総当たり」法
  • 複数の数量で利益を計算
  • 最大利益となる数量を選択

 

双眼鏡を持ち、ドル記号の気球に座って利益を探す男性。

Pythonで学ぶOptimization入門

Python での全探索

import numpy as np

qs = np.arange(80)

def profit(q): 
  return 40 * q - 0.5 * q**2


profits = profit(qs) max_profit = profits.max()
max_ind = np.argmax(profits) q_opt = qs[max_ind]
print(f"The optimum is {q_opt} pieces of furniture, which makes ${max_profit} profit.")
The optimum is 40 pieces of furniture, which makes $800 profit.
Pythonで学ぶOptimization入門

全探索の長所と短所

 

  • 利点
    • (+) 実装が容易
    • (+) 高価なソフト不要
    • (+) 仮定が最小限
  • 欠点
    • (-) 複雑なケースでは拡張不可
Pythonで学ぶOptimization入門

Let's practice!

Pythonで学ぶOptimization入門

Preparing Video For Download...