SlideShare a Scribd company logo
1 of 22
Download to read offline
Основы моделирования в
пакете GUSEK/GLPK
v 0.3 2015-02-17
Производство компьютеров Pear
(модель с отдельными ресурсами)
Заходякин Г.В. postlogist@gmail.com
План занятия
• Содержательная постановка задачи
• Концептуальное моделирование
• Компоненты оптимизационной модели
• Реализация в GLPK
2
Содержательная постановка задачи
• Компания «Pear» выпускает 3 линейки компьютеров: ПК (системные блоки), Ноутбуки, Серверы
• Производственный процесс включает 2 операции: сборку и тестирование
– Все компьютеры собираются на одной линии сборки
– Тестирование ПК и ноутбуков проводится на линии тестирования А. Тестирование серверов выполняется на линии B
– Ресурс линии сборки составляет 400 часов в неделю (10 сборщиков с 40-часовой рабочей неделей)
– Обе автоматические линии тестирования работают круглосуточно 5 дней в неделю, ресурс каждой – 120 часов в
неделю
• Маркетинговые ограничения
– Компания получила заказы на 10 ПК, 10 ноутбуков и 2 сервера – эти количества обязательны к производству
– Маркетологи компании считают, что реализовать более 20 серверов в неделю невозможно
– Прибыль от реализации единицы каждого продукта дана в таблице
• Требуется составить план производства компьютеров на неделю, обеспечивающий наибольшую прибыль
Продукт Прибыль,
руб
Мин.
спрос,
ед
Макс.
спрос,
ед
Время
сборки,
час
Время
тестирования
ПК 10000 10 0,5 1
Ноутбук 20000 10 1 1
Сервер 100000 2 20 5 2
Сборка
Тест. А
Тест. B
Рынок
Ресурс:
400 час
Ресурс:
120 час
Ресурс:
120 час
ПК Ноутбук Сервер
3
Математическая постановка задачи
• Переменные решения:
𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3- объем выпуска ПК, Ноутбуков, Серверов
• Целевая функция:
𝐹𝐹 = 10𝑥𝑥1 + 20𝑥𝑥2 + 100𝑥𝑥3 → 𝑚𝑚𝑚𝑚𝑚𝑚
• Система ограничений:
1
2
𝑥𝑥1 + 𝑥𝑥2 + 5𝑥𝑥3 ≤ 400
𝑥𝑥1 + 𝑥𝑥2 ≤ 120
2𝑥𝑥3 ≤ 120
𝑥𝑥1 ≥ 10
𝑥𝑥2 ≥ 10
2 ≤ 𝑥𝑥3 ≤ 20
4
Старый знакомый
• На рисунке показана табличная модель для решения задачи с помощью «Поиска
решения»
– Каждый столбец таблицы отвечает за один из множества продуктов (1)
– Строка таблицы соответствует либо переменной решения (2),
либо свойству продукта (3)
– В ячейках таблицы находятся данные для решения задачи – численные значения свойств
(параметров) продуктов (4)
– Справа от таблицы находятся линейные выражения, которые вычисляют итоговые значения
прибыли и расхода ресурсов, зависящие от плана производства и свойств продуктов (5) – левые
части (системы ограничений)
– Еще правее находятся значения правых частей ограничений – это также параметры, относящиеся
уже не к отдельным продуктам, а к ресурсам производства (6)
❶
❷
❸
❹
❺
❻
5
Модель и решение
• Если задать имена диапазонов Excel, то модель Поиска решения будет довольно
наглядной
• На рисунке показано оптимальное решение задачи
• Красным цветом выделены
связывающие ограничения –
ограничения, для которых
в оптимальном решении совпадают
значения левой и правой части.
Именно они не дают улучшить решение
6
Концептуальная модель
• Если число выпускаемых продуктов изменится, то принципиальных изменений в модели не
произойдет. Станет больше переменных и слагаемых в левых частях ограничений.
• Общую структуру задачи можно отразить с помощью концептуальной модели
– Круги обозначают элементы множества продуктов P (для примера показаны те же элементы, что и в исходной
задаче)
– Прямоугольники обозначают ресурсы производства – линии сборки и тестирования
– Числа рядом с ресурсами обозначают доступные количества каждого ресурса (параметры)
– Линии между продуктами и ресурсами отображают связи между ними. Количественной характеристикой каждой
связи является технологический коэффициент (yдельный расход ресурса), например на сборку ПК требуется 0,5 часа
– С продуктами связаны переменные решения – объемы производства 𝑴𝑴 и параметры – удельная прибыль 𝐼𝐼
Сборка Линия А Линия B
ПК
Ноут
бук
Сер-
вер
400 ч 120 ч 120 ч
АПК = 0,5
P (продукты)
TАсервер = 0
𝑴𝑴ПК 𝑴𝑴Ноутбук 𝑴𝑴Сервер
𝐼𝐼ПК = 10
7
Математическая модель: отдельные ресурсы
𝐹𝐹 = �
𝑝𝑝∈𝑃𝑃
𝑀𝑀𝑝𝑝 𝐼𝐼𝑝𝑝 → 𝑚𝑚𝑚𝑚𝑚𝑚
�
𝑝𝑝∈𝑃𝑃
𝐴𝐴𝑝𝑝 𝑀𝑀𝑝𝑝 ≤ 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴
�
𝑝𝑝∈𝑃𝑃
𝑇𝑇𝑇𝑇𝑝𝑝 𝑀𝑀𝑝𝑝 ≤ 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇
�
𝑝𝑝∈𝑃𝑃
𝑇𝑇𝑇𝑇𝑝𝑝 𝑀𝑀𝑝𝑝 ≤ 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇
𝐷𝐷𝐷𝐷𝐷𝐷𝑛𝑛𝑝𝑝 ≤ 𝑀𝑀𝑝𝑝 ≤ 𝐷𝐷𝐷𝐷𝐷𝐷𝑥𝑥𝑝𝑝 ∀𝑝𝑝 ∈ 𝑃𝑃
𝑀𝑀𝑝𝑝 ≥ 0 ∀𝑝𝑝 ∈ 𝑃𝑃
Обозначения:
• 𝑃𝑃 = ПК, Ноутбук, Сервер - множество продуктов, 𝑝𝑝 ∈ 𝑃𝑃 – индекс продукта
• 𝑀𝑀𝑝𝑝 - объем производства продукта 𝑝𝑝, переменные решения
• 𝐼𝐼𝑝𝑝- прибыль от продажи единицы продукта 𝑝𝑝
• 𝐷𝐷𝐷𝐷𝐷𝐷𝑛𝑛𝑝𝑝, 𝐷𝐷𝐷𝐷𝐷𝐷𝑥𝑥𝑝𝑝 - минимальный и максимальный спрос на продукт 𝑝𝑝
• 𝐴𝐴𝑝𝑝, 𝑇𝑇𝐴𝐴𝑝𝑝, 𝑇𝑇𝑇𝑇𝑝𝑝- технологические коэффициенты для линии сборки, тестирования А и тестирования B
(удельный расход ресурса 𝑟𝑟 на производство продукта 𝑝𝑝)
• 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴, 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇, 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇 - доступное количество ресурса 𝑟𝑟
• Символ ∀ (квантор общности) читается: «для каждого». Например, ∀𝑝𝑝 обозначает, что ограничение по
cпросу должно выполняться для каждого продукта
Сборка Линия А Линия B
ПК
Ноут
бук
Сер-
вер
400 ч 120 ч 120 ч
АПК = 0,5
P (продукты)
TАсервер = 0
𝑴𝑴ПК 𝑴𝑴Ноутбук 𝑴𝑴Сервер
𝐼𝐼ПК = 10
8
Компоненты оптимизационной модели
• Для формализации модели на языке моделирования необходимо
определить следующие компоненты:
1. Множества (set) – соответствуют типам объектов в содержательной постановке
задачи – продукты, клиенты, периоды времени, ресурсы и т.п.; содержат
названия или коды этих объектов
2. Параметры (parameter) – содержат количественные характеристики, которые
заранее известны; могут иметь одно значение, или характеризовать каждый
элемент некоторого множества
3. Переменные (var) – содержат неизвестные заранее количественные
характеристики объектов, т.е. решения, которые необходимо принять в задаче
оптимизации
4. Целевая функция (minimize/maximize) – линейное выражение, соответствующее
критерию эффективности в задаче
5. Ограничения (subject to) – линейное выражение, соответствующее некоторому
ограничению/требованию
• Порядок определения компонентов произвольный, но компонент,
который включается в выражение, должен быть обязательно уже
определен. Поэтому удобен именно такой порядок определения, как на
этом слайде: параметры и переменные почти всегда зависят от
множеств. Без переменных и параметров невозможно записать ни одно
выражение для целевой функции или ограничений.
9
Подготовка
• Запустите GUSEK и сохраните пустой файл модели под именем
pearsets.mod (например, на рабочий стол)
– Расширение должно быть обязательно .mod, от этого зависит подсветка
команд и доступный набор действий с файлом
• В этом примере мы будем хранить и модель, и данные в одном
файле
10
Математическая модель
на MathProg: множества
• Здесь мы определили множество, которое будет использоваться в модели
для обозначения продуктов – PRODUCTS
• Элементы множества на этапе формализации модели задавать не следует,
их указывают потом, в разделе данных. Это позволяет разделить модель и
данные, что существенно упрощает совершенствование модели и сценарный
анализ.
• Обратите внимание:
• MathProg чувствителен к регистру, PRODUCTS <> Products <> products
• имена компонентов задачи должны быть уникальными в пределах модели
• рекомендуется множествам давать понятные названия и использовать
заглавные буквы, чтобы подчеркнуть, что это именно множество, и
предотвратить возможные коллизии имен
• каждая команда в MathProg должна заканчиваться точкой с запятой
• в файле нужно использовать комментарии, чтобы не забыть, для чего нужны
обозначения и команды; комментарии начинаются с # или заключаются
в /* */. Файлы без комментариев рассматриваться не будут! 11
Параметры
• Здесь мы определили три параметра, определенные на множестве продуктов. Обозначение {PRODUCTS} – это
индексирующее выражение, которое означает, что для каждого продукта существует свое значение параметра
• Значения параметров на этапе формализации модели задавать не следует; они задаются в данных
• При определении параметра min_demand указана проверка (>=0): значение параметра не может быть отрицательным.
Это позволяет избежать ошибок в данных: не удовлетворяющие условию значения программа отвергнет. Проверка
применяется к данным, в отличие от ограничения, которое применяется к переменным или их линейным комбинациям.
Поэтому при записи условий для проверки допускается больше возможностей (условия, нелинейность…), чем при записи
ограничений. Проверка не является частью задачи оптимизации, она лишь предотвращает построение задач с
некорректными данными.
• Также для параметра min_demand указано значение по умолчанию (default). Значение по умолчанию будет
автоматически использовано, если в данных не указано другое значение. Это удобно, если значение параметра одно и то
же для большинства или всех элементов множества, или если параметр почти никогда не изменяется аналитиком.
• При определении параметра max_demand использовано индексирующее выражение, в котором вводится обозначение
для индекса – p. Это необходимо, т.к. в дальнейшем мы хотим сравнить максимальный и минимальный спрос на один и
тот же продукт. Для этого используется обращение по индексу – demand[p]. Выражение можно прочитать так: для
каждого продукта p максимальный спрос должен быть не меньше, чем минимальный спрос на этот продукт.
• 9999 – это большое число, которое заведомо превышает максимально возможный объем выпуска продуктов.
• Обратите внимание:
• MathProg чувствителен к регистру, profit <> Profit <> PROFIT и p <> P
• рекомендуется параметрам давать понятные названия и использовать строчные буквы, чтобы предотвратить
возможные коллизии имен; для разделения слов в имени можно использовать подчеркивание, и нельзя –
пробелы
• русские символы в именах компонентов модели использовать нельзя 12
Параметры (2)
• Параметры для технологических коэффициентов (расход ресурсов) определены
аналогично.
По умолчанию удобно задать, что продукт не использует ресурс (расход 0).
• Доступное время на каждом ресурсе – это характеристика ресурса, а не продуктов, поэтому
эти параметры – скалярные, у каждого только одно значение
13
Переменные решения
• Определив множества и параметры, можно приступить к формализации модели. Однако, поскольку
все выражения в модели зависят от решений, необходимо сначала объявить переменные решения
• Переменная make будет содержать одно значение для каждого продукта, т.к. она определена на
множестве PRODUCTS.
• Условие >= 0 при определении переменной – это граница (bound). Граница – специальный тип
ограничения, который задает допустимый диапазон для отдельной переменной, без использования
линейных выражений. В данном случае объем производства для каждого продукта не может быть
отрицательным
14
Целевая функция
• У целевой функции есть имя (TotalProfit) и выражение - расчетная формула, которая
записывается через двоеточие после имени. У каждого компонента модели (ограничение,
целевая функция) должно быть уникальное в пределах модели имя. Для обеспечения
уникальности имен рекомендуется писать имена ограничений/целевых функций с
заглавной буквы
• Выражение sum {p in PRODUCTS} обозначает, что сумма произведений прибыли и объема
производства будет вычисляться для каждого продукта.
15
Ограничения
• Каждое ограничение, как и в случае целевой функции, имеет имя (Assembly) и
выражение, которое записывается через двоеточие после имени. Для обеспечения
уникальности имен ограничений рекомендуется писать имена ограничений/целевых
функций с заглавной буквы
• Выражение sum {p in PRODUCTS} обозначает, что сумма произведений прибыли и объема
производства будет вычисляться для каждого продукта.
• В отличие от целевой функции, у ограничения есть правая часть – обычно там находится
константа, например, обозначающая доступное количество ресурса.
16
Ограничения (2)
• Ограничения по другим ресурсам записываются
аналогично.
• У ограничения по спросу есть два отличия:
• команда определяет сразу семейство
ограничений – для каждого продукта; это
достигается за счет использования
индексирующего выражения {p in PRODUCTS}
после имени ограничения; введенный здесь
индекс p можно использовать в выражении для
ограничения;
• ограничение двухстороннее (в MathProg такая
запись поддерживается, только когда верхний и
нижний пределы – константы. Если же пределы
зависят от переменных, то ограничение надо
разбить на два односторонних)
17
Данные для модели
Данные для решения задачи в этом примере будут содержаться в том же файле, что и
модель.
Раздел данных начинается с ключевого слова data;
Обычно вначале задаются элементы множеств. При перечислении элементы
можно разделять любым количеством пробелов, знаков табуляции и переводов
строки.
Значения элементов множеств могут содержать русские буквы и пробелы, но в этом
случае их надо брать в кавычки. Например:
set PRODUCTS := “Компьютер” “Рабочая станция”;
18
Данные для модели
• При определении значения параметра нужно указывать название элемента
множества и значение параметра для этого элемента. Например, PC 10 означает,
что прибыль при реализации одного PC составляет 10 денежных единиц
• Скалярные параметры задаются просто как числа
• Конец файла обозначается с помощью ключевого слова: end;
19
Вывод результатов
Чтобы увидеть результаты оптимизации, можно:
• вывести отчет по решению (Tools/Generate Output File on Go, или Ctrl-8);
• вставить в файл модели инструкции для вывода
результатов;
• вывести результаты в файл данных или базу данных
(работу с базами данных мы рассмотрим позднее).
Простейшей инструкцией для вывода результатов
является команда display
Добавьте в файл с моделью следующие команды
(обратите внимание на расположение – после модели,
но перед разделом данных; до вывода результатов
нужно обязательно дать команду на решение модели –
solve)
20
Результаты оптимизации
• Запустите расчет кнопкой F5 или
• Если возникает синтаксическая ошибка, то в консоли будет указан номер строки, где она
возникла
• Если модель правильная, то в отдельной вкладке откроется отчет по решению (pearsets.out), а
в консоли справа - информация о работе оптимизатора и результаты выполнения команды
display
• Отчет по решению – это обычный текстовый файл, который создается в той же папке, где
находится модель. Позднее его можно открыть в текстовом редакторе, например в SciTe
(перетащив в окно GUSEK).
21
Отчёт по решению
Activity – ЛЧ ограничения, либо переменная решения
Lower/Upper Bound – границы для переменной/ЛЧ
Marginal – теневая цена
St – статус переменной(ограничения):
• B – базисная (не связывающее ограничение),
• NU – связывающее ограничение-неравенство,
достигнут верхний предел ЛЧ,
• NL – то же, достигнут нижний предел ЛЧ
• NS – связывающее ограничение-равенство
22

More Related Content

What's hot

Визуализация данных на географических картах - 2016
Визуализация данных на географических картах - 2016Визуализация данных на географических картах - 2016
Визуализация данных на географических картах - 2016Gleb Zakhodiakin
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данныхAlex Polorotov
 
паттерны проектирования источников данных
паттерны проектирования источников данныхпаттерны проектирования источников данных
паттерны проектирования источников данныхVitaliy Trenkenshu
 
How To Make Your Dashboard Smaller
How To Make Your Dashboard SmallerHow To Make Your Dashboard Smaller
How To Make Your Dashboard SmallerGreenM
 

What's hot (6)

Визуализация данных на географических картах - 2016
Визуализация данных на географических картах - 2016Визуализация данных на географических картах - 2016
Визуализация данных на географических картах - 2016
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
 
паттерны проектирования источников данных
паттерны проектирования источников данныхпаттерны проектирования источников данных
паттерны проектирования источников данных
 
How To Make Your Dashboard Smaller
How To Make Your Dashboard SmallerHow To Make Your Dashboard Smaller
How To Make Your Dashboard Smaller
 
PS отчеты в RP
PS отчеты в RPPS отчеты в RP
PS отчеты в RP
 
24 25 запросы
24 25 запросы24 25 запросы
24 25 запросы
 

Viewers also liked

Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозированияПрогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозированияGleb Zakhodiakin
 
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)Gleb Zakhodiakin
 
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессияПрогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессияGleb Zakhodiakin
 
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Gleb Zakhodiakin
 
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядовПрогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядовGleb Zakhodiakin
 
Прогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессияПрогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессияGleb Zakhodiakin
 
Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)Gleb Zakhodiakin
 

Viewers also liked (7)

Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозированияПрогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
Прогнозирование - Лекция 1. Компьютерные инструменты прогнозирования
 
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
Прогнозирование - Лекция 5. Методология Бокса-Дженкинса (модели ARIMA)
 
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессияПрогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
Прогнозирование - Лекция 2. Корреляционный анализ и простая линейная регрессия
 
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
Прогнозирование - Лекция 6. Использование инструментов подготовки данных и пр...
 
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядовПрогнозирование - Лекция 4. Регрессионные модели временных рядов
Прогнозирование - Лекция 4. Регрессионные модели временных рядов
 
Прогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессияПрогнозирование - Лекция 3. Множественная регрессия
Прогнозирование - Лекция 3. Множественная регрессия
 
Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)Визуализация данных на географических картах в Tableau (базовый уровень)
Визуализация данных на географических картах в Tableau (базовый уровень)
 

Similar to Тренинг GLPK, часть 1: Модель планирования производства

Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»Igor Marutiak
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Ontico
 
оптимизация My Sql петр зайцев
оптимизация My Sql   петр зайцевоптимизация My Sql   петр зайцев
оптимизация My Sql петр зайцевMedia Gorod
 
Сергей Ревко
Сергей РевкоСергей Ревко
Сергей РевкоSQALab
 
Презентация RPA
Презентация RPAПрезентация RPA
Презентация RPADanixoid Saum
 
Презентация Optimal Management
Презентация Optimal ManagementПрезентация Optimal Management
Презентация Optimal ManagementAndrey Sukhobokov
 
Fincontrollex® Variance Analysis Tool
Fincontrollex® Variance Analysis ToolFincontrollex® Variance Analysis Tool
Fincontrollex® Variance Analysis ToolVladimir Plakhotnik
 
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....HOWWEDOIT
 
Технология внедрения и эффекты от систем автоматизации управления производств...
Технология внедрения и эффекты от систем автоматизации управления производств...Технология внедрения и эффекты от систем автоматизации управления производств...
Технология внедрения и эффекты от систем автоматизации управления производств...Диалог Информационные Технологии
 
2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы
2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы
2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ыHappyDev
 
Как автоматизировать тестирование метрик на сайте
Как автоматизировать тестирование метрик на сайтеКак автоматизировать тестирование метрик на сайте
Как автоматизировать тестирование метрик на сайтеМаркетинг-аналитика с OWOX BI
 
Презентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BIПрезентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BIОникс Софт
 
Python Meetup
Python Meetup Python Meetup
Python Meetup iQSpace
 
OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...
OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...
OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...IP_Accelerator NeuroNet
 
Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Maxim Shulga
 
Пространство вариантов_final
Пространство вариантов_finalПространство вариантов_final
Пространство вариантов_finalVlad Berezin, PMP
 
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»АНАЛИТИКА ПЛЮС
 
Александр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSАлександр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSYury Yurevich
 

Similar to Тренинг GLPK, часть 1: Модель планирования производства (20)

Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»Вебинар «Диагностика типовых узких мест скорости работы 1С»
Вебинар «Диагностика типовых узких мест скорости работы 1С»
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
Как Mail.Ru и AT Consulting перевели профили абонентов Beeline на Tarantool /...
 
оптимизация My Sql петр зайцев
оптимизация My Sql   петр зайцевоптимизация My Sql   петр зайцев
оптимизация My Sql петр зайцев
 
Сергей Ревко
Сергей РевкоСергей Ревко
Сергей Ревко
 
Презентация RPA
Презентация RPAПрезентация RPA
Презентация RPA
 
Vebinar isa88
Vebinar isa88Vebinar isa88
Vebinar isa88
 
Презентация Optimal Management
Презентация Optimal ManagementПрезентация Optimal Management
Презентация Optimal Management
 
Fincontrollex® Variance Analysis Tool
Fincontrollex® Variance Analysis ToolFincontrollex® Variance Analysis Tool
Fincontrollex® Variance Analysis Tool
 
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
Построение и переход на новую аналитическую платформу. Цели, вызовы, решения....
 
Технология внедрения и эффекты от систем автоматизации управления производств...
Технология внедрения и эффекты от систем автоматизации управления производств...Технология внедрения и эффекты от систем автоматизации управления производств...
Технология внедрения и эффекты от систем автоматизации управления производств...
 
2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы
2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы
2014.12.06 02 Екатерина Боброва — Тестируем сложные backend-ы
 
Как автоматизировать тестирование метрик на сайте
Как автоматизировать тестирование метрик на сайтеКак автоматизировать тестирование метрик на сайте
Как автоматизировать тестирование метрик на сайте
 
Презентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BIПрезентация аналитической системы для ритейла СуперМаг BI
Презентация аналитической системы для ритейла СуперМаг BI
 
Python Meetup
Python Meetup Python Meetup
Python Meetup
 
OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...
OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...
OpenTalks.AI - Оптимизация бизнес-процессов и документооборота с использовани...
 
Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы Автоматизация тестирования - это пот, кровь и слезы
Автоматизация тестирования - это пот, кровь и слезы
 
Пространство вариантов_final
Пространство вариантов_finalПространство вариантов_final
Пространство вариантов_final
 
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»Семинар 24-25 апреля 2014 г.  «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
Семинар 24-25 апреля 2014 г. «R + TABLEAU. ПРОГНОЗИRОВАНИЕ И BIG DATA АНАЛИЗ»
 
Александр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSАлександр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JS
 

Тренинг GLPK, часть 1: Модель планирования производства

  • 1. Основы моделирования в пакете GUSEK/GLPK v 0.3 2015-02-17 Производство компьютеров Pear (модель с отдельными ресурсами) Заходякин Г.В. postlogist@gmail.com
  • 2. План занятия • Содержательная постановка задачи • Концептуальное моделирование • Компоненты оптимизационной модели • Реализация в GLPK 2
  • 3. Содержательная постановка задачи • Компания «Pear» выпускает 3 линейки компьютеров: ПК (системные блоки), Ноутбуки, Серверы • Производственный процесс включает 2 операции: сборку и тестирование – Все компьютеры собираются на одной линии сборки – Тестирование ПК и ноутбуков проводится на линии тестирования А. Тестирование серверов выполняется на линии B – Ресурс линии сборки составляет 400 часов в неделю (10 сборщиков с 40-часовой рабочей неделей) – Обе автоматические линии тестирования работают круглосуточно 5 дней в неделю, ресурс каждой – 120 часов в неделю • Маркетинговые ограничения – Компания получила заказы на 10 ПК, 10 ноутбуков и 2 сервера – эти количества обязательны к производству – Маркетологи компании считают, что реализовать более 20 серверов в неделю невозможно – Прибыль от реализации единицы каждого продукта дана в таблице • Требуется составить план производства компьютеров на неделю, обеспечивающий наибольшую прибыль Продукт Прибыль, руб Мин. спрос, ед Макс. спрос, ед Время сборки, час Время тестирования ПК 10000 10 0,5 1 Ноутбук 20000 10 1 1 Сервер 100000 2 20 5 2 Сборка Тест. А Тест. B Рынок Ресурс: 400 час Ресурс: 120 час Ресурс: 120 час ПК Ноутбук Сервер 3
  • 4. Математическая постановка задачи • Переменные решения: 𝑥𝑥1, 𝑥𝑥2, 𝑥𝑥3- объем выпуска ПК, Ноутбуков, Серверов • Целевая функция: 𝐹𝐹 = 10𝑥𝑥1 + 20𝑥𝑥2 + 100𝑥𝑥3 → 𝑚𝑚𝑚𝑚𝑚𝑚 • Система ограничений: 1 2 𝑥𝑥1 + 𝑥𝑥2 + 5𝑥𝑥3 ≤ 400 𝑥𝑥1 + 𝑥𝑥2 ≤ 120 2𝑥𝑥3 ≤ 120 𝑥𝑥1 ≥ 10 𝑥𝑥2 ≥ 10 2 ≤ 𝑥𝑥3 ≤ 20 4
  • 5. Старый знакомый • На рисунке показана табличная модель для решения задачи с помощью «Поиска решения» – Каждый столбец таблицы отвечает за один из множества продуктов (1) – Строка таблицы соответствует либо переменной решения (2), либо свойству продукта (3) – В ячейках таблицы находятся данные для решения задачи – численные значения свойств (параметров) продуктов (4) – Справа от таблицы находятся линейные выражения, которые вычисляют итоговые значения прибыли и расхода ресурсов, зависящие от плана производства и свойств продуктов (5) – левые части (системы ограничений) – Еще правее находятся значения правых частей ограничений – это также параметры, относящиеся уже не к отдельным продуктам, а к ресурсам производства (6) ❶ ❷ ❸ ❹ ❺ ❻ 5
  • 6. Модель и решение • Если задать имена диапазонов Excel, то модель Поиска решения будет довольно наглядной • На рисунке показано оптимальное решение задачи • Красным цветом выделены связывающие ограничения – ограничения, для которых в оптимальном решении совпадают значения левой и правой части. Именно они не дают улучшить решение 6
  • 7. Концептуальная модель • Если число выпускаемых продуктов изменится, то принципиальных изменений в модели не произойдет. Станет больше переменных и слагаемых в левых частях ограничений. • Общую структуру задачи можно отразить с помощью концептуальной модели – Круги обозначают элементы множества продуктов P (для примера показаны те же элементы, что и в исходной задаче) – Прямоугольники обозначают ресурсы производства – линии сборки и тестирования – Числа рядом с ресурсами обозначают доступные количества каждого ресурса (параметры) – Линии между продуктами и ресурсами отображают связи между ними. Количественной характеристикой каждой связи является технологический коэффициент (yдельный расход ресурса), например на сборку ПК требуется 0,5 часа – С продуктами связаны переменные решения – объемы производства 𝑴𝑴 и параметры – удельная прибыль 𝐼𝐼 Сборка Линия А Линия B ПК Ноут бук Сер- вер 400 ч 120 ч 120 ч АПК = 0,5 P (продукты) TАсервер = 0 𝑴𝑴ПК 𝑴𝑴Ноутбук 𝑴𝑴Сервер 𝐼𝐼ПК = 10 7
  • 8. Математическая модель: отдельные ресурсы 𝐹𝐹 = � 𝑝𝑝∈𝑃𝑃 𝑀𝑀𝑝𝑝 𝐼𝐼𝑝𝑝 → 𝑚𝑚𝑚𝑚𝑚𝑚 � 𝑝𝑝∈𝑃𝑃 𝐴𝐴𝑝𝑝 𝑀𝑀𝑝𝑝 ≤ 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 � 𝑝𝑝∈𝑃𝑃 𝑇𝑇𝑇𝑇𝑝𝑝 𝑀𝑀𝑝𝑝 ≤ 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇 � 𝑝𝑝∈𝑃𝑃 𝑇𝑇𝑇𝑇𝑝𝑝 𝑀𝑀𝑝𝑝 ≤ 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇 𝐷𝐷𝐷𝐷𝐷𝐷𝑛𝑛𝑝𝑝 ≤ 𝑀𝑀𝑝𝑝 ≤ 𝐷𝐷𝐷𝐷𝐷𝐷𝑥𝑥𝑝𝑝 ∀𝑝𝑝 ∈ 𝑃𝑃 𝑀𝑀𝑝𝑝 ≥ 0 ∀𝑝𝑝 ∈ 𝑃𝑃 Обозначения: • 𝑃𝑃 = ПК, Ноутбук, Сервер - множество продуктов, 𝑝𝑝 ∈ 𝑃𝑃 – индекс продукта • 𝑀𝑀𝑝𝑝 - объем производства продукта 𝑝𝑝, переменные решения • 𝐼𝐼𝑝𝑝- прибыль от продажи единицы продукта 𝑝𝑝 • 𝐷𝐷𝐷𝐷𝐷𝐷𝑛𝑛𝑝𝑝, 𝐷𝐷𝐷𝐷𝐷𝐷𝑥𝑥𝑝𝑝 - минимальный и максимальный спрос на продукт 𝑝𝑝 • 𝐴𝐴𝑝𝑝, 𝑇𝑇𝐴𝐴𝑝𝑝, 𝑇𝑇𝑇𝑇𝑝𝑝- технологические коэффициенты для линии сборки, тестирования А и тестирования B (удельный расход ресурса 𝑟𝑟 на производство продукта 𝑝𝑝) • 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴, 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇, 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇 - доступное количество ресурса 𝑟𝑟 • Символ ∀ (квантор общности) читается: «для каждого». Например, ∀𝑝𝑝 обозначает, что ограничение по cпросу должно выполняться для каждого продукта Сборка Линия А Линия B ПК Ноут бук Сер- вер 400 ч 120 ч 120 ч АПК = 0,5 P (продукты) TАсервер = 0 𝑴𝑴ПК 𝑴𝑴Ноутбук 𝑴𝑴Сервер 𝐼𝐼ПК = 10 8
  • 9. Компоненты оптимизационной модели • Для формализации модели на языке моделирования необходимо определить следующие компоненты: 1. Множества (set) – соответствуют типам объектов в содержательной постановке задачи – продукты, клиенты, периоды времени, ресурсы и т.п.; содержат названия или коды этих объектов 2. Параметры (parameter) – содержат количественные характеристики, которые заранее известны; могут иметь одно значение, или характеризовать каждый элемент некоторого множества 3. Переменные (var) – содержат неизвестные заранее количественные характеристики объектов, т.е. решения, которые необходимо принять в задаче оптимизации 4. Целевая функция (minimize/maximize) – линейное выражение, соответствующее критерию эффективности в задаче 5. Ограничения (subject to) – линейное выражение, соответствующее некоторому ограничению/требованию • Порядок определения компонентов произвольный, но компонент, который включается в выражение, должен быть обязательно уже определен. Поэтому удобен именно такой порядок определения, как на этом слайде: параметры и переменные почти всегда зависят от множеств. Без переменных и параметров невозможно записать ни одно выражение для целевой функции или ограничений. 9
  • 10. Подготовка • Запустите GUSEK и сохраните пустой файл модели под именем pearsets.mod (например, на рабочий стол) – Расширение должно быть обязательно .mod, от этого зависит подсветка команд и доступный набор действий с файлом • В этом примере мы будем хранить и модель, и данные в одном файле 10
  • 11. Математическая модель на MathProg: множества • Здесь мы определили множество, которое будет использоваться в модели для обозначения продуктов – PRODUCTS • Элементы множества на этапе формализации модели задавать не следует, их указывают потом, в разделе данных. Это позволяет разделить модель и данные, что существенно упрощает совершенствование модели и сценарный анализ. • Обратите внимание: • MathProg чувствителен к регистру, PRODUCTS <> Products <> products • имена компонентов задачи должны быть уникальными в пределах модели • рекомендуется множествам давать понятные названия и использовать заглавные буквы, чтобы подчеркнуть, что это именно множество, и предотвратить возможные коллизии имен • каждая команда в MathProg должна заканчиваться точкой с запятой • в файле нужно использовать комментарии, чтобы не забыть, для чего нужны обозначения и команды; комментарии начинаются с # или заключаются в /* */. Файлы без комментариев рассматриваться не будут! 11
  • 12. Параметры • Здесь мы определили три параметра, определенные на множестве продуктов. Обозначение {PRODUCTS} – это индексирующее выражение, которое означает, что для каждого продукта существует свое значение параметра • Значения параметров на этапе формализации модели задавать не следует; они задаются в данных • При определении параметра min_demand указана проверка (>=0): значение параметра не может быть отрицательным. Это позволяет избежать ошибок в данных: не удовлетворяющие условию значения программа отвергнет. Проверка применяется к данным, в отличие от ограничения, которое применяется к переменным или их линейным комбинациям. Поэтому при записи условий для проверки допускается больше возможностей (условия, нелинейность…), чем при записи ограничений. Проверка не является частью задачи оптимизации, она лишь предотвращает построение задач с некорректными данными. • Также для параметра min_demand указано значение по умолчанию (default). Значение по умолчанию будет автоматически использовано, если в данных не указано другое значение. Это удобно, если значение параметра одно и то же для большинства или всех элементов множества, или если параметр почти никогда не изменяется аналитиком. • При определении параметра max_demand использовано индексирующее выражение, в котором вводится обозначение для индекса – p. Это необходимо, т.к. в дальнейшем мы хотим сравнить максимальный и минимальный спрос на один и тот же продукт. Для этого используется обращение по индексу – demand[p]. Выражение можно прочитать так: для каждого продукта p максимальный спрос должен быть не меньше, чем минимальный спрос на этот продукт. • 9999 – это большое число, которое заведомо превышает максимально возможный объем выпуска продуктов. • Обратите внимание: • MathProg чувствителен к регистру, profit <> Profit <> PROFIT и p <> P • рекомендуется параметрам давать понятные названия и использовать строчные буквы, чтобы предотвратить возможные коллизии имен; для разделения слов в имени можно использовать подчеркивание, и нельзя – пробелы • русские символы в именах компонентов модели использовать нельзя 12
  • 13. Параметры (2) • Параметры для технологических коэффициентов (расход ресурсов) определены аналогично. По умолчанию удобно задать, что продукт не использует ресурс (расход 0). • Доступное время на каждом ресурсе – это характеристика ресурса, а не продуктов, поэтому эти параметры – скалярные, у каждого только одно значение 13
  • 14. Переменные решения • Определив множества и параметры, можно приступить к формализации модели. Однако, поскольку все выражения в модели зависят от решений, необходимо сначала объявить переменные решения • Переменная make будет содержать одно значение для каждого продукта, т.к. она определена на множестве PRODUCTS. • Условие >= 0 при определении переменной – это граница (bound). Граница – специальный тип ограничения, который задает допустимый диапазон для отдельной переменной, без использования линейных выражений. В данном случае объем производства для каждого продукта не может быть отрицательным 14
  • 15. Целевая функция • У целевой функции есть имя (TotalProfit) и выражение - расчетная формула, которая записывается через двоеточие после имени. У каждого компонента модели (ограничение, целевая функция) должно быть уникальное в пределах модели имя. Для обеспечения уникальности имен рекомендуется писать имена ограничений/целевых функций с заглавной буквы • Выражение sum {p in PRODUCTS} обозначает, что сумма произведений прибыли и объема производства будет вычисляться для каждого продукта. 15
  • 16. Ограничения • Каждое ограничение, как и в случае целевой функции, имеет имя (Assembly) и выражение, которое записывается через двоеточие после имени. Для обеспечения уникальности имен ограничений рекомендуется писать имена ограничений/целевых функций с заглавной буквы • Выражение sum {p in PRODUCTS} обозначает, что сумма произведений прибыли и объема производства будет вычисляться для каждого продукта. • В отличие от целевой функции, у ограничения есть правая часть – обычно там находится константа, например, обозначающая доступное количество ресурса. 16
  • 17. Ограничения (2) • Ограничения по другим ресурсам записываются аналогично. • У ограничения по спросу есть два отличия: • команда определяет сразу семейство ограничений – для каждого продукта; это достигается за счет использования индексирующего выражения {p in PRODUCTS} после имени ограничения; введенный здесь индекс p можно использовать в выражении для ограничения; • ограничение двухстороннее (в MathProg такая запись поддерживается, только когда верхний и нижний пределы – константы. Если же пределы зависят от переменных, то ограничение надо разбить на два односторонних) 17
  • 18. Данные для модели Данные для решения задачи в этом примере будут содержаться в том же файле, что и модель. Раздел данных начинается с ключевого слова data; Обычно вначале задаются элементы множеств. При перечислении элементы можно разделять любым количеством пробелов, знаков табуляции и переводов строки. Значения элементов множеств могут содержать русские буквы и пробелы, но в этом случае их надо брать в кавычки. Например: set PRODUCTS := “Компьютер” “Рабочая станция”; 18
  • 19. Данные для модели • При определении значения параметра нужно указывать название элемента множества и значение параметра для этого элемента. Например, PC 10 означает, что прибыль при реализации одного PC составляет 10 денежных единиц • Скалярные параметры задаются просто как числа • Конец файла обозначается с помощью ключевого слова: end; 19
  • 20. Вывод результатов Чтобы увидеть результаты оптимизации, можно: • вывести отчет по решению (Tools/Generate Output File on Go, или Ctrl-8); • вставить в файл модели инструкции для вывода результатов; • вывести результаты в файл данных или базу данных (работу с базами данных мы рассмотрим позднее). Простейшей инструкцией для вывода результатов является команда display Добавьте в файл с моделью следующие команды (обратите внимание на расположение – после модели, но перед разделом данных; до вывода результатов нужно обязательно дать команду на решение модели – solve) 20
  • 21. Результаты оптимизации • Запустите расчет кнопкой F5 или • Если возникает синтаксическая ошибка, то в консоли будет указан номер строки, где она возникла • Если модель правильная, то в отдельной вкладке откроется отчет по решению (pearsets.out), а в консоли справа - информация о работе оптимизатора и результаты выполнения команды display • Отчет по решению – это обычный текстовый файл, который создается в той же папке, где находится модель. Позднее его можно открыть в текстовом редакторе, например в SciTe (перетащив в окно GUSEK). 21
  • 22. Отчёт по решению Activity – ЛЧ ограничения, либо переменная решения Lower/Upper Bound – границы для переменной/ЛЧ Marginal – теневая цена St – статус переменной(ограничения): • B – базисная (не связывающее ограничение), • NU – связывающее ограничение-неравенство, достигнут верхний предел ЛЧ, • NL – то же, достигнут нижний предел ЛЧ • NS – связывающее ограничение-равенство 22