Одномерная оптимизация

Введение в оптимизацию на 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

Вторая производная

 

  • Производная от производной
  • Показывает, как изменяется наклон при изменении переменной

 

  • Если 2-я производная в точке $< 0$: максимум
  • Если 2-я производная в точке $> 0$: минимум
  • Если 2-я производная в точке $= 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...