單變數最佳化

Python 最佳化入門

Jasmin Ludolf

Content Developer

範例:製造業的最佳化

 

目標函式

$P = 40q - 0.5q^2$

  • 單變數:只有一個變數

利潤隨產量變化。

Python 最佳化入門

範例:製造業的最佳化

 

目標函式

$P = 40q - 0.5q^2$

  • 單變數:只有一個變數

利潤隨產量變化。

Python 最佳化入門

計算導數

 

目標函式

$P = 40q - 0.5q^2$

導數:描述斜率如何變化

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

from sympy import symbols, diff, solve


q = symbols('q')
P = 40 * q - 0.5 * q**2
dp_dq = diff(P)
print(f"The derivative is: {dp_dq}")
The derivative is: 40 - 1.0*q
1 https://docs.sympy.org/latest/index.html
Python 最佳化入門

臨界點

當導數為 0 時得到最適解

  • 臨界點:導數為 0 的點

最適的 $q$ 滿足:

$\frac{dP}{dq} = 40 - q = 0$

q_opt = solve(dp_dq)
print(f"Optimum quantity: {q_opt}")
Optimum quantity: [40.0000000000000]
Python 最佳化入門

極大、極小,或都不是?

 

利潤隨產量變化。

 

目標函式

$p = 40q - 0.5q^2$

q_opt = solve(p_prime)
print(f"Optimum quantity: {q_opt}")
Optimum quantity: [40.0000000000000]
Python 最佳化入門

凸性與凹性

 

凹函式。

  • 極大

 

凸函式。

  • 極小
Python 最佳化入門

二階導數

 

  • 對導數再求導
  • 量測變數變動時斜率的改變速率

 

  • 若該點二階導數 $< 0$:極大
  • 若該點二階導數 $> 0$:極小
  • 若該點二階導數 $= 0$:皆非

利潤隨產量變化。

Python 最佳化入門

範例:極大、極小,或皆非?

 

導數

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

 

二階導數

$\frac{d^2p}{dq^2} = -1 < 0$

  • 極大!

 

d2p_dq2 = diff(dp_dq)

sol = d2p_dq2.subs('q', q_opt)
print(f"The 2nd derivative is: {sol}")
The 2nd derivative is: -1.0000000000000
Python 最佳化入門

導數在最佳化中的應用

 

  • 一階導數
    • 找出最佳化問題的臨界點
  • 二階導數
    • 判別為極小極大
Python 最佳化入門

一起來練習吧!

Python 最佳化入門

Preparing Video For Download...