单变量优化

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 优化入门

临界点

导数为零处达到最优

  • 临界点:导数为零的点

最优的 $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...