SLAB/Status — различия между версиями
Материал из DISCOPAL
< SLAB
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) (→Optimal ILP Solvers .) |
||
(не показаны 62 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | === | + | <noinclude><slideshow style="ispras" headingmark="." scaled=1 /></noinclude> |
+ | === Видео . === | ||
+ | {{vimeoembed|746598714|800|450}} | ||
+ | |||
+ | === Быстро набросан фреймворк . === | ||
+ | <slides width="800" split="-----"> | ||
[[File:Status_2022-09-02_16-56-51_image0.png|center|400px]] | [[File:Status_2022-09-02_16-56-51_image0.png|center|400px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-02_19-26-01_image0.png|center|400px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_16-32-34_image0.png|center|400px]] | ||
+ | </slides> | ||
+ | === Визуализация . === | ||
+ | * Цвета-геометрия-сетка | ||
+ | ** Визуалиазация важных переменных-ограничений | ||
+ | * «WTF» по картинке | ||
+ | ** очевидная неоптимальность — разбираемся | ||
+ | |||
+ | === Технологически . === | ||
+ | * Веб — ненужен (пока) | ||
+ | * Анимации, динамики нет — «вход-выход» | ||
+ | * Таблицы — как вход и результат | ||
+ | ** Можно перечитывать без выхода | ||
+ | |||
+ | === Симуляции — потом . === | ||
+ | |||
+ | {{youtubeembed|YQiDT6vtpTQ|800|450}} | ||
+ | |||
+ | === pygame симуляция . === | ||
+ | |||
+ | [[File:Status_2022-09-07_13-18-12_image0.png|center|800px]] | ||
+ | |||
+ | === Параллельная обработка несколькими солверами . === | ||
+ | |||
+ | <slides width="800" split="-----"> | ||
[[File:Status_2022-09-02_16-51-50_image0.png|center|800px]] | [[File:Status_2022-09-02_16-51-50_image0.png|center|800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-02_17-06-04_image0.png|center|800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-02_17-41-05_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-02_17-51-53_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-03_21-23-25_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-04_00-57-46_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-04_01-00-02_image0.png||800px]] | ||
+ | ----- | ||
+ | </slides> | ||
+ | |||
+ | === Мучения . === | ||
+ | * Тонкости солверов | ||
+ | ** pyomo — хорошо, но --- | ||
+ | * Долгие операции | ||
+ | ** «неудачи космических полетов» | ||
+ | |||
+ | |||
+ | <slides width="800" split="-----"> | ||
+ | [[File:Status_2022-09-03_21-25-34_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_02-16-53_image0.png||800px]] | ||
+ | </slides> | ||
+ | |||
+ | === 4226 заказов (все) на 26 смен . === | ||
+ | |||
+ | <slides width="800" split="-----"> | ||
+ | [[File:Status_2022-09-05_02-19-35_image0.png||800px]] | ||
+ | ---- | ||
+ | [[File:Status_2022-09-05_14-25-44_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_15-01-51_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-07_12-28-53_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-08_10-25-03_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-08_10-29-08_image0.png||800px]] | ||
+ | </slides> | ||
+ | |||
+ | ==== Файл-решение ==== | ||
+ | * [[:Файл:Output-gurobi-2022-09-07-18-27-31-4226.xls]] | ||
+ | |||
+ | === На древнем компе 2008 года . === | ||
+ | |||
+ | <slides width="800" split="-----"> | ||
+ | [[File:Status_2022-09-05_17-24-29_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_17-25-00_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_17-25-34_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_17-26-24_image0.png||800px]] | ||
+ | </slides> | ||
+ | |||
+ | == Модель . == | ||
+ | Убрано | ||
+ | * Цепь вывоза | ||
+ | ** На складе надо моделировать серьезно (не «рюкзак») | ||
+ | *** Охлаждение | ||
+ | *** Стекирование | ||
+ | *** Вывоз | ||
+ | * Сроки вывоза | ||
+ | ** Можно легко вернуть — но в буфере склад! | ||
+ | |||
+ | == Модель — максимальная простота . == | ||
+ | Демо | ||
+ | * «Гидродинамика потока слабов» | ||
+ | * ЦЛП моделирование всего этого. | ||
+ | * Убедиться, что эти размеры «тащатся». | ||
+ | |||
+ | |||
+ | === Модель1 — размеры. === | ||
+ | <tab class=wikitable sep=spaces head=top> | ||
+ | Смен Печей Периодов Заказов Размер Время | ||
+ | 5 5 2 180 9569x3975 | ||
+ | 5 5 2 220 10774x4475 | ||
+ | 8 5 2 300 20999x7160 | ||
+ | 14 5 2 500 37049x12530 | ||
+ | 16 5 2 2000* 80439x27120 1800-антек182 | ||
+ | 20 5 2 3000* 136469x45900 2693-антек182 | ||
+ | 26 5 2 4226* 180821x60710 1700-антек182 | ||
+ | </tab> | ||
+ | |||
+ | == План . == | ||
+ | * У меня (пока?) есть магия добывать лицензии на гуроби | ||
+ | * Придерживаться gurobi-солвера пока отлаживаем модель | ||
+ | * Когда все ОК с моделью → смотреть cbc/glpk/… → пытаемся догнать | ||
+ | |||
+ | == Модель . == | ||
+ | * Компактификация заказов (небинарные, целые) | ||
+ | * Понять, что с охлаждением-вывозом-складом | ||
+ | |||
+ | |||
+ | === Модель1 — разъяснение . === | ||
+ | * Пройдемся по коду | ||
+ | |||
+ | {{vimeoembed|746613941|800|450}} | ||
+ | |||
+ | |||
+ | === Модель2 — вывоз . === | ||
+ | Учет вывоза, рельс, склада | ||
+ | |||
+ | <slides width="800" split="-----"> | ||
+ | [[File:Status_2022-09-09_23-44-29_image0.png|center|800px]] | ||
+ | ----- | ||
+ | </slides> | ||
+ | |||
+ | |||
+ | |||
+ | === SAT/SMT-верификация === | ||
+ | * Нужна только когда определились с целевой функцией | ||
+ | ** Переходим к задаче разрешимости | ||
+ | * Пробовал для эвристики «подобрать минимальное количество смен, чтобы выполнить набранный заказ» | ||
+ | ** Работает, но «персистент гуроби» — на порядок лучше. | ||
+ | <slides width="800" split="-----"> | ||
+ | [[File:Status_2022-09-11_16-36-16_image0.png||400px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-11_16-40-29_image0.png||400px]] | ||
+ | </slides> | ||
+ | |||
+ | |||
+ | == Модель с оптимизацией. == | ||
+ | * Обязательно выполняются только срочные заказы («Imax», к сроку) | ||
+ | * Остальные добираются из «рынка» заказов с большими сроками. | ||
+ | * Можно сильно играться с параметрами «доход плавки» против «стоимости перенастройки» и т.п. | ||
+ | |||
+ | === Решается легко . === | ||
+ | * 20 смен | ||
+ | * 1053 плавки | ||
+ | * 30 секунд на гуроби | ||
+ | |||
+ | <slides width="800" split="-----"> | ||
+ | [[File:Status_2022-09-14_11-16-18_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-14_11-17-19_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-14_11-19-19_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-14_11-35-29_image0.png||400px]] | ||
+ | </slides> | ||
+ | |||
+ | === Проблемы . === | ||
+ | * Долго формулируется проблема в Pyomo (4400 сек). | ||
+ | ** В два раза ускорил | ||
+ | ** Сделал систему кеширования моделей. | ||
+ | |||
+ | === Optimal ILP Solvers . === | ||
+ | <slides width="800" split="-----"> | ||
+ | [[File:Status_2022-09-11_17-22-13_image0.png||800px]]<ref>[https://assets.gurobi.com/pdfs/benchmarks.pdf]</ref> | ||
+ | ----- | ||
+ | [[File:gurobi-becnhmarks-2019-01.png||800px]] | ||
+ | ----- | ||
+ | </slides> | ||
+ | |||
+ | ==== Цены ==== | ||
+ | * https://ampl.com/products/standard-price-list/ | ||
+ | |||
+ | == Как работать на портале discopal-lab == | ||
+ | * https://vimeo.com/746819286/2d3ee4479f | ||
+ | |||
+ | == Вопросы по предметной области == | ||
+ | * Проработать — переключение, АЦВ-АПК, плавка=ковш? | ||
+ | ** задержки на вакуумирование срабатывают (или пренебрежимы времем плавки0? | ||
+ | * Заказы с долгим охлаждением — откуда берется? тип стали, обьем? | ||
+ | ** Моделирование двухсменного охлаждения — два склада. | ||
+ | * Точно склад стеллажно - квадратно-гнездовой? | ||
+ | |||
+ | === флоу === | ||
+ | |||
+ | [[File:стилкастингфлоу.png||800px]] | ||
+ | |||
+ | [[file:Scheduling-in-hybrid-flow-shop_W640.jpg]] | ||
+ | |||
+ | |||
+ | === Склад === | ||
+ | Может быть реально стеллажным | ||
+ | * https://youtu.be/otVFDo9YSM8?t=1025 | ||
+ | |||
+ | Или ханойские башни? | ||
+ | |||
+ | [[File:Status_2022-09-11_20-33-56_image0.png||800px]] | ||
+ | |||
+ | == Открытые технические вопросы . == | ||
+ | * Исследовать параметры солверов (не реагирует на gap) | ||
+ | * Собрать версию CBC с threading | ||
+ | * xpra и cocalc — большие лаги | ||
+ | |||
+ | === Как бы сохранить best feasible? . === | ||
+ | |||
+ | <slides width="800" split="-----"> | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_11-09-05_image0.png||800px]] | ||
+ | ----- | ||
+ | [[File:Status_2022-09-05_11-12-57_image0.png||800px]] | ||
+ | </slides> | ||
+ | |||
+ | |||
+ | === Библиотека === | ||
+ | * [https://www.youtube.com/user/MetalVisionME Ютуб про метеллофармы] |
Текущая версия на 10:09, 21 сентября 2022
- Заголовок
- SLAB/Status
- Автор
- Стас Фомин
- Нижний колонтитул
- SLAB/Status
- Дополнительный нижний колонтитул
- Стас Фомин, 10:09, 21 сентября 2022
Содержание
- 1 Видео .
- 2 Быстро набросан фреймворк .
- 3 Визуализация .
- 4 Технологически .
- 5 Симуляции — потом .
- 6 pygame симуляция .
- 7 Параллельная обработка несколькими солверами .
- 8 Мучения .
- 9 4226 заказов (все) на 26 смен .
- 10 На древнем компе 2008 года .
- 11 Модель .
- 12 Модель — максимальная простота .
- 13 План .
- 14 Модель .
- 15 Модель с оптимизацией.
- 16 Как работать на портале discopal-lab
- 17 Вопросы по предметной области
- 18 Открытые технические вопросы .
Видео .
Быстро набросан фреймворк .
Визуализация .
- Цвета-геометрия-сетка
- Визуалиазация важных переменных-ограничений
- «WTF» по картинке
- очевидная неоптимальность — разбираемся
Технологически .
- Веб — ненужен (пока)
- Анимации, динамики нет — «вход-выход»
- Таблицы — как вход и результат
- Можно перечитывать без выхода
Симуляции — потом .
pygame симуляция .
Параллельная обработка несколькими солверами .
Мучения .
- Тонкости солверов
- pyomo — хорошо, но ---
- Долгие операции
- «неудачи космических полетов»
4226 заказов (все) на 26 смен .
Файл-решение
На древнем компе 2008 года .
Модель .
Убрано
- Цепь вывоза
- На складе надо моделировать серьезно (не «рюкзак»)
- Охлаждение
- Стекирование
- Вывоз
- На складе надо моделировать серьезно (не «рюкзак»)
- Сроки вывоза
- Можно легко вернуть — но в буфере склад!
Модель — максимальная простота .
Демо
- «Гидродинамика потока слабов»
- ЦЛП моделирование всего этого.
- Убедиться, что эти размеры «тащатся».
Модель1 — размеры.
Смен | Печей | Периодов | Заказов | Размер | Время |
---|---|---|---|---|---|
5 | 5 | 2 | 180 | 9569x3975 | |
5 | 5 | 2 | 220 | 10774x4475 | |
8 | 5 | 2 | 300 | 20999x7160 | |
14 | 5 | 2 | 500 | 37049x12530 | |
16 | 5 | 2 | 2000* | 80439x27120 | 1800-антек182 |
20 | 5 | 2 | 3000* | 136469x45900 | 2693-антек182 |
26 | 5 | 2 | 4226* | 180821x60710 | 1700-антек182 |
План .
- У меня (пока?) есть магия добывать лицензии на гуроби
- Придерживаться gurobi-солвера пока отлаживаем модель
- Когда все ОК с моделью → смотреть cbc/glpk/… → пытаемся догнать
Модель .
- Компактификация заказов (небинарные, целые)
- Понять, что с охлаждением-вывозом-складом
Модель1 — разъяснение .
- Пройдемся по коду
Модель2 — вывоз .
Учет вывоза, рельс, склада
SAT/SMT-верификация
- Нужна только когда определились с целевой функцией
- Переходим к задаче разрешимости
- Пробовал для эвристики «подобрать минимальное количество смен, чтобы выполнить набранный заказ»
- Работает, но «персистент гуроби» — на порядок лучше.
Модель с оптимизацией.
- Обязательно выполняются только срочные заказы («Imax», к сроку)
- Остальные добираются из «рынка» заказов с большими сроками.
- Можно сильно играться с параметрами «доход плавки» против «стоимости перенастройки» и т.п.
Решается легко .
- 20 смен
- 1053 плавки
- 30 секунд на гуроби
Проблемы .
- Долго формулируется проблема в Pyomo (4400 сек).
- В два раза ускорил
- Сделал систему кеширования моделей.
Optimal ILP Solvers .
Цены
Как работать на портале discopal-lab
Вопросы по предметной области
- Проработать — переключение, АЦВ-АПК, плавка=ковш?
- задержки на вакуумирование срабатывают (или пренебрежимы времем плавки0?
- Заказы с долгим охлаждением — откуда берется? тип стали, обьем?
- Моделирование двухсменного охлаждения — два склада.
- Точно склад стеллажно - квадратно-гнездовой?
флоу
Склад
Может быть реально стеллажным
Или ханойские башни?
Открытые технические вопросы .
- Исследовать параметры солверов (не реагирует на gap)
- Собрать версию CBC с threading
- xpra и cocalc — большие лаги
Как бы сохранить best feasible? .