Проверка корректности решения

Аналитика цепочек поставок на Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Схема стратегии проверки решения

Аналитика цепочек поставок на Python

Проверка статуса модели

  • Нет допустимых решений: допустимых решений не существует.
    • Проверьте ограничения
  • Неограниченность: целевая функция не ограничена — её максимизация или минимизация стремится к бесконечности.
    • Проверьте целевую функцию
  • Неопределённость: оптимальное решение может существовать, но не найдено.
    • Возможно, это наилучшее доступное решение
    • Пересмотрите постановку задачи
Аналитика цепочек поставок на Python

Проверка соответствия результатов ожиданиям

Находятся ли переменные решения и значение целевой функции в ожидаемом диапазоне?

  • Исходите из знания и понимания задачи
  • Если «Да» — решение корректно
  • Если «Нет» — проверьте:
    • Код на Python
    • Данные
    • Запишите LP-файл
Аналитика цепочек поставок на Python

Запись LP-файла

writeLP(filename)
  • filename = имя создаваемого файла

Отображает:

  • Название задачи
  • Целевую функцию и направление оптимизации (минимизация или максимизация)
  • Ограничения, включая ограничения на переменные решения (Bounds)
  • Переменные решения
Аналитика цепочек поставок на Python

Пример кода

\* Aggregate Production Planning *\
Minimize
OBJ: 20 prod_('A',_0) + 17 prod_('A',_1) 
    + 18 prod_('A',_2) + 15 prod_('B',_0) 
    + 16 prod_('B',_1) + 15 prod_('B',_2)
Subject To
_C1: prod_('A',_0) >= 0
_C2: prod_('A',_1) >= 0
_C3: prod_('A',_2) >= 0
_C4: prod_('B',_0) >= 8
_C5: prod_('B',_1) >= 7
_C6: prod_('B',_2) >= 6
Bounds
0 <= prod_('A',_0)
0 <= prod_('A',_1)
0 <= prod_('A',_2)
0 <= prod_('B',_0)
0 <= prod_('B',_1)
0 <= prod_('B',_2)
Generals
prod_('A',_0)
prod_('A',_1)
prod_('A',_2)
prod_('B',_0)
prod_('B',_1)
prod_('B',_2)
Аналитика цепочек поставок на Python

Итоги

Стратегия проверки корректности

  • Проверьте статус модели
  • Убедитесь, что переменные решения и целевая функция в допустимом диапазоне
  • При необходимости используйте writeLP()
Аналитика цепочек поставок на Python

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

Аналитика цепочек поставок на Python

Preparing Video For Download...