多変量最適化

Pythonで学ぶOptimization入門

Jasmin Ludolf

Content Developer

ビスケット工場

 

目的関数:

  • $F = K^{0.34} \times L^{0.66}$
    • $F$: 生産関数
    • 労働 ($L$): 労働者の投入時間
    • 資本 ($K$): 機械の稼働時間
    • 多変量の問題

 

生産ライン上のビスケット。

Pythonで学ぶOptimization入門

偏導関数

 

1変量

 

目的関数:

$p = 40q - 0.5q^2$

導関数: 目的関数の傾きが単一変数の変化でどう変わるか

$\frac{dp}{dq} = 40 - q$

 

多変量

 

目的関数:

$F = K^{0.34} \times L^{0.66}$

偏導関数: 各変数に対する傾きの変化

$\frac{\partial F}{\partial K}$ と $\frac{\partial F}{\partial L}$

Pythonで学ぶOptimization入門

多変量問題の解法

 

目的関数:

  • $F = K^{0.34} \times L^{0.66}$
    • $F$: 生産関数
    • 労働 ($L$): 労働者の投入時間
    • 資本 ($K$): 機械の稼働時間
from sympy import symbols, diff, solve

K, L = symbols('K L') F = K**.34 * L**.66
dF_dK = diff(F, K) dF_dL = diff(F, L)
crit_points = solve([dF_dK, dF_dL], (K, L))
print(crit_points)
[]
Pythonで学ぶOptimization入門

生産関数

 

目的関数:

  • $F = K^{0.34} \times L^{0.66}$
  • $K$ と $L$ が増えると、$F$ も増加
  • 最大値最小値もなし!

ビスケットの生産関数の3Dプロット。

Pythonで学ぶOptimization入門

微分の限界

 

注意点:

  • 微分不可
  • 不連続
  • 単調増加・単調減少

 

  • 非微分可能: 微分では最適化できない

微分では極値を見つけられない関数の3つのプロット。

Pythonで学ぶOptimization入門

練習しましょう!

Pythonで学ぶOptimization入門

Preparing Video For Download...