Введение в математическую оптимизацию

Введение в оптимизацию на Python

Jasmin Ludolf

Content Developer

Что нас ждёт...

 

Вы узнаете...
  • Как решать практические задачи оптимизации
  • Как создать инструментарий для разных типов задач

 

Что нужно знать заранее...

 

Что знать необязательно...
  • Математический анализ
  • Алгоритмы
Введение в оптимизацию на Python

Что такое математическая оптимизация?

 

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

 

  • Примеры:
    • Максимизация урожайности

Посевы на поле.

  • Состав почвы, погода
  • Оптимальное количество и качество урожая
Введение в оптимизацию на Python

Что такое математическая оптимизация?

 

 

Фургоны на маршруте доставки.

 

 

  • Оптимальные маршруты доставки
  • Расстояние и трафик
  • Сокращение времени доставки и затрат
Введение в оптимизацию на Python

Целевая функция

  • Описывает связь между входными переменными и результатом

 

Производство мебели:

  • Максимизация прибыли P
  • Количество q

 

$P = 40q - 0.5q^2$

  • При каком значении q прибыль P максимальна?
Введение в оптимизацию на Python

Оптимизация с помощью 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

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

 

  • Максимальное значение = оптимальное значение

 

  • Возможные причины такой формы кривой:
    • Нехватка персонала или оборудования

 

Зависимость прибыли от количества.

Введение в оптимизацию на Python

Полный перебор

  • Метод «грубой силы»
  • Вычисление прибыли для диапазона значений количества
  • Выбор значения с наибольшей прибылью

 

Мужчина с биноклем на воздушном шаре со знаком доллара ищет прибыль.

Введение в оптимизацию на Python

Полный перебор на 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

Преимущества и недостатки полного перебора

 

  • Преимущества
    • (+) Простая реализация
    • (+) Не требует дорогостоящего ПО
    • (+) Минимум допущений
  • Недостатки
    • (-) Плохо масштабируется для сложных задач
Введение в оптимизацию на Python

Давайте потренируемся!

Введение в оптимизацию на Python

Preparing Video For Download...