Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python и исследование операций

Python и исследование операций

Сергей Сундуков @ Moscow Python Meetup 44

"Хочу рассказать об успешном опыте применения питона и опен-сорсных библиотек при решении реальных бизнес-задач планирования и оптимизации".

Видео: http://www.moscowpython.ru/meetup/44/python-i-issledovanie-operacij/

Moscow Python Meetup
PRO

April 20, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Python и исследование операций
    Спикер: Сергей Сундуков
    Компания: Консалтинговая группа Борлас
    Twitter: @alwaysallright

    View Slide

  2. Введение
    • Исследование операций (Operations Research) – теория о
    применении математических методов для принятия
    оптимальных решений

    View Slide

  3. Введение
    • Исследование операций (Operations Research) – теория о
    применении математических методов для принятия
    оптимальных решений
    • В современном виде начала формироваться во время
    WWII

    View Slide

  4. Введение
    • Исследование операций (Operations Research) – теория о
    применении математических методов для принятия
    оптимальных решений
    • В современном виде начала формироваться во время
    WWII
    • Используемые методы: математическая оптимизация,
    математическое моделирование, статистический анализ

    View Slide

  5. Примеры
    • Планирование производства

    View Slide

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

    View Slide

  7. Примеры
    • Планирование производства
    • Составления расписания игр и тренировок для детской
    спортивной лиги
    • Распределение персонала промоушен-агентства

    View Slide

  8. Примеры
    • Планирование производства
    • Составления расписания игр и тренировок для детской
    спортивной лиги
    • Распределение персонала промоушен-агентства
    • Распределение товаров в торговой сети

    View Slide

  9. Примеры
    • Планирование производства
    • Составления расписания игр и тренировок для детской
    спортивной лиги
    • Распределение персонала промоушен-агентства
    • Распределение товаров в торговой сети
    • Планирование посевных площадей агрохолдинга

    View Slide

  10. Готовые решения
    • APO
    • MOPZ
    SAP
    • Demand-Driven Planning
    and Optimization
    SAS
    • ASCP
    • SNO
    Oracle
    • Operational Decision
    Manager
    IBM

    View Slide

  11. Недостатки готовых решений
    • Отсутствие необходимого функционала
    • Недостаточная гибкость
    • Проекты по внедрению трудозатратны или
    проваливаются

    View Slide

  12. Построение кастомных приложений
    Входные данные
    • Спрос на товары
    или услуги
    • Доступные
    ресурсы и
    мощности
    • Затраты,
    спецификации,
    технологии
    • Операционные
    ограничения,
    предпочтения
    клиентов
    • Бизнес-цели
    Преобразование данных
    в математическую
    модель
    Поиск оптимального
    решения
    математической модели
    Выходные
    данные
    • Интерпретация
    полученного
    решения
    • Построение
    отчетов
    • Формулировани
    е рекомендаций

    View Slide

  13. Математическая оптимизация
    • Задача линейного программирования (LP)

    View Slide

  14. Математическая оптимизация
    • Задача линейного программирования (LP)
    • Переменные

    ,
    , … ,

    View Slide

  15. Математическая оптимизация
    • Задача линейного программирования (LP)
    • Переменные

    ,
    , … ,
    • Целевая функция
    = ෍
    =



    =

    +

    + … +

    View Slide

  16. Математическая оптимизация
    • Задача линейного программирования (LP)
    • Переменные

    ,
    , … ,
    • Целевая функция
    • Ограничения
    = ෍
    =



    =

    +

    + … +


    =




    = , , … ,

    View Slide

  17. Математическая оптимизация 2
    • Задача смешанно-целочисленного линейного
    программирования (MILP)

    View Slide

  18. Математическая оптимизация 2
    • Задача смешанно-целочисленного линейного
    программирования (MILP)
    • Нелинейное программирование (NLP)

    View Slide

  19. Математическая оптимизация 2
    • Задача смешанно-целочисленного линейного
    программирования (MILP)
    • Нелинейное программирование (NLP)
    • Квадратичное программирование (QP)

    View Slide

  20. Математическая оптимизация 2
    • Задача смешанно-целочисленного линейного
    программирования (MILP)
    • Нелинейное программирование (NLP)
    • Квадратичное программирование (QP)
    • Смешанно-целочисленное квадратичное
    программирование (MIQP)

    View Slide

  21. Математическая оптимизация 3
    • Опенсорсные солверы: COIN-OR, GLOP, GLPK, lp_solve,
    APOPT

    View Slide

  22. Математическая оптимизация 3
    • Опенсорсные солверы: COIN-OR, GLOP, GLPK, lp_solve,
    APOPT
    • Коммерческие солверы: CPLEX, Gurobi, SCIP, LINDO,
    XPRESS, Matlab solver

    View Slide

  23. Математическая оптимизация 3
    • Опенсорсные солверы: COIN-OR, GLOP, GLPK, lp_solve,
    APOPT
    • Коммерческие солверы: CPLEX, Gurobi, SCIP, LINDO,
    XPRESS, Matlab solver
    • Фреймворки для разработки оптимизационных моделей:
    • GMPL, lp_solve IDE, opensolver
    • AMPL, AIMMS, CPLEX Optimization Studio,
    MATLAB, LINDO

    View Slide

  24. Математическая оптимизация в python
    • Все основные солверы имеют API

    View Slide

  25. Математическая оптимизация в python
    • Все основные солверы имеют API
    • Библиотеки, позволяющие разрабатывать
    оптимизационные модели.

    View Slide

  26. Математическая оптимизация в python
    • Все основные солверы имеют API
    • Библиотеки, позволяющие разрабатывать
    оптимизационные модели.
    • Основные библиотеки: openopt, PuLP, google ortools,
    pyomo, scipy.optimize

    View Slide

  27. Пример разработки модели

    View Slide

  28. Пример разработки модели
    Входные данные

    View Slide

  29. Пример разработки модели
    Входные данные
    Преобразование

    View Slide

  30. Пример разработки модели 2
    Инициализация
    модели

    View Slide

  31. Пример разработки модели 2
    Инициализация
    модели
    Переменные
    Отправляем на решение

    View Slide

  32. Пример разработки модели 2
    Инициализация
    модели
    Переменные
    Целевая функция

    View Slide

  33. Пример разработки модели 2
    Инициализация
    модели
    Переменные
    Целевая функция
    Ограничения

    View Slide

  34. Пример разработки модели 2
    Инициализация
    модели
    Переменные
    Целевая функция
    Ограничения
    Отправляем на решение

    View Slide

  35. Пример разработки модели 3
    Интерпретация

    View Slide

  36. Пример разработки модели 3
    Интерпретация
    Выходные данные

    View Slide

  37. Преимущества python для разработки ОМ
    • Почему я рекомендую кастомные оптимизационные
    приложения?

    View Slide

  38. Преимущества python для разработки ОМ
    • Почему я рекомендую кастомные оптимизационные
    приложения?
    - Скорость разработки

    View Slide

  39. Преимущества python для разработки ОМ
    • Почему я рекомендую кастомные оптимизационные
    приложения?
    - Скорость разработки
    - Эффективность

    View Slide

  40. Преимущества python для разработки ОМ
    • Почему я рекомендую кастомные оптимизационные
    приложения?
    - Скорость разработки
    - Эффективность.
    - Низкая стоимость

    View Slide

  41. Преимущества python для разработки ОМ
    • Почему я рекомендую кастомные оптимизационные
    приложения?
    - Скорость разработки
    - Эффективность.
    - Низкая стоимость
    • Почему я рекомендую python для разработки?

    View Slide

  42. Преимущества python для разработки ОМ
    • Почему я рекомендую кастомные оптимизационные
    приложения?
    - Скорость разработки
    - Эффективность.
    - Низкая стоимость
    • Почему я рекомендую python для разработки?
    • Почему я рекомендую мультисолверные библиотеки?

    View Slide

  43. Преимущества python для разработки ОМ 2
    • Огромное количество возможностей для
    загрузки/выгрузки, преобразования, анализа данных

    View Slide

  44. Преимущества python для разработки ОМ 2
    • Огромное количество возможностей для
    загрузки/выгрузки, преобразования, анализа данных
    • Возможность использовать ML

    View Slide

  45. Преимущества python для разработки ОМ 2
    • Огромное количество возможностей для
    загрузки/выгрузки, преобразования, анализа данных
    • Возможность использовать ML
    • Возможность быстрого прототипирования

    View Slide

  46. Сергей Сундуков
    [email protected]
    Пример: https://github.com/sergeisundukov/app_scheduling

    View Slide