SLAB/Status — различия между версиями

Материал из DISCOPAL
Перейти к: навигация, поиск
(Optimal ILP Solvers .)
 
(не показано 37 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
<noinclude><slideshow style="ispras" headingmark="." scaled=1 /></noinclude>
 
<noinclude><slideshow style="ispras" headingmark="." scaled=1 /></noinclude>
 +
 +
=== Видео . ===
 +
{{vimeoembed|746598714|800|450}}
  
 
=== Быстро набросан фреймворк . ===
 
=== Быстро набросан фреймворк . ===
Строка 6: Строка 9:
 
-----
 
-----
 
[[File:Status_2022-09-02_19-26-01_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>
 
</slides>
  
Строка 19: Строка 24:
 
* Таблицы — как вход и результат
 
* Таблицы — как вход и результат
 
** Можно перечитывать без выхода
 
** Можно перечитывать без выхода
 +
 +
=== Симуляции — потом . ===
 +
 +
{{youtubeembed|YQiDT6vtpTQ|800|450}}
 +
 +
=== pygame симуляция . ===
 +
 +
[[File:Status_2022-09-07_13-18-12_image0.png|center|800px]]
  
 
=== Параллельная обработка несколькими солверами . ===
 
=== Параллельная обработка несколькими солверами . ===
Строка 37: Строка 50:
 
[[File:Status_2022-09-04_01-00-02_image0.png||800px]]
 
[[File:Status_2022-09-04_01-00-02_image0.png||800px]]
 
-----
 
-----
[[File:Status_2022-09-05_02-19-35_image0.png||800px]]
 
-----
 
[[File:Status_2022-09-05_11-09-05_image0.png||800px]]
 
 
</slides>
 
</slides>
  
Строка 53: Строка 63:
 
-----
 
-----
 
[[File:Status_2022-09-05_02-16-53_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>
 
</slides>
  
Строка 72: Строка 113:
  
  
=== Модель — размеры. ===
+
=== Модель1 — размеры. ===
 
<tab class=wikitable sep=spaces head=top>
 
<tab class=wikitable sep=spaces head=top>
Смен  Печей  Периодов  Заказов  Размер
+
Смен  Печей  Периодов  Заказов  Размер         Время
 
5      5      2        180      9569x3975
 
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>
 
</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

Видео .

Быстро набросан фреймворк .

Status 2022-09-02 16-56-51 image0.png
Status 2022-09-02 19-26-01 image0.png
Status 2022-09-05 16-32-34 image0.png

Визуализация .

  • Цвета-геометрия-сетка
    • Визуалиазация важных переменных-ограничений
  • «WTF» по картинке
    • очевидная неоптимальность — разбираемся

Технологически .

  • Веб — ненужен (пока)
  • Анимации, динамики нет — «вход-выход»
  • Таблицы — как вход и результат
    • Можно перечитывать без выхода

Симуляции — потом .

pygame симуляция .

Status 2022-09-07 13-18-12 image0.png

Параллельная обработка несколькими солверами .

Status 2022-09-02 16-51-50 image0.png
Status 2022-09-02 17-06-04 image0.png

Status 2022-09-02 17-41-05 image0.png

Status 2022-09-02 17-51-53 image0.png

Status 2022-09-03 21-23-25 image0.png

Status 2022-09-04 00-57-46 image0.png

Status 2022-09-04 01-00-02 image0.png

Мучения .

  • Тонкости солверов
    • pyomo — хорошо, но ---
  • Долгие операции
    • «неудачи космических полетов»


Status 2022-09-03 21-25-34 image0.png

Status 2022-09-05 02-16-53 image0.png

4226 заказов (все) на 26 смен .

Status 2022-09-05 02-19-35 image0.png


Status 2022-09-05 14-25-44 image0.png

Status 2022-09-05 15-01-51 image0.png

Status 2022-09-07 12-28-53 image0.png

Status 2022-09-08 10-25-03 image0.png

Status 2022-09-08 10-29-08 image0.png

Файл-решение

На древнем компе 2008 года .

Status 2022-09-05 17-24-29 image0.png

Status 2022-09-05 17-25-00 image0.png

Status 2022-09-05 17-25-34 image0.png

Status 2022-09-05 17-26-24 image0.png

Модель .

Убрано

  • Цепь вывоза
    • На складе надо моделировать серьезно (не «рюкзак»)
      • Охлаждение
      • Стекирование
      • Вывоз
  • Сроки вывоза
    • Можно легко вернуть — но в буфере склад!

Модель — максимальная простота .

Демо

  • «Гидродинамика потока слабов»
  • ЦЛП моделирование всего этого.
  • Убедиться, что эти размеры «тащатся».


Модель1 — размеры.

СменПечейПериодовЗаказовРазмерВремя
5521809569x3975
55222010774x4475
85230020999x7160
145250037049x12530
16522000*80439x271201800-антек182
20523000*136469x459002693-антек182
26524226*180821x607101700-антек182

План .

  • У меня (пока?) есть магия добывать лицензии на гуроби
  • Придерживаться gurobi-солвера пока отлаживаем модель
  • Когда все ОК с моделью → смотреть cbc/glpk/…  → пытаемся догнать

Модель .

  • Компактификация заказов (небинарные, целые)
  • Понять, что с охлаждением-вывозом-складом


Модель1 — разъяснение .

  • Пройдемся по коду


Модель2 — вывоз .

Учет вывоза, рельс, склада

Status 2022-09-09 23-44-29 image0.png


SAT/SMT-верификация

  • Нужна только когда определились с целевой функцией
    • Переходим к задаче разрешимости
  • Пробовал для эвристики «подобрать минимальное количество смен, чтобы выполнить набранный заказ»
    • Работает, но «персистент гуроби» — на порядок лучше.

Status 2022-09-11 16-36-16 image0.png

Status 2022-09-11 16-40-29 image0.png


Модель с оптимизацией.

  • Обязательно выполняются только срочные заказы («Imax», к сроку)
  • Остальные добираются из «рынка» заказов с большими сроками.
  • Можно сильно играться с параметрами «доход плавки» против «стоимости перенастройки» и т.п.

Решается легко .

  • 20 смен
  • 1053 плавки
  • 30 секунд на гуроби

Status 2022-09-14 11-16-18 image0.png

Status 2022-09-14 11-17-19 image0.png

Status 2022-09-14 11-19-19 image0.png

Status 2022-09-14 11-35-29 image0.png

Проблемы .

  • Долго формулируется проблема в Pyomo (4400 сек).
    • В два раза ускорил
    • Сделал систему кеширования моделей.

Optimal ILP Solvers .

Gurobi-becnhmarks-2019-01.png

Цены

Как работать на портале discopal-lab

Вопросы по предметной области

  • Проработать — переключение, АЦВ-АПК, плавка=ковш?
    • задержки на вакуумирование срабатывают (или пренебрежимы времем плавки0?
  • Заказы с долгим охлаждением — откуда берется? тип стали, обьем?
    • Моделирование двухсменного охлаждения — два склада.
  • Точно склад стеллажно - квадратно-гнездовой?

флоу

Стилкастингфлоу.png

Scheduling-in-hybrid-flow-shop W640.jpg


Склад

Может быть реально стеллажным

Или ханойские башни?

Status 2022-09-11 20-33-56 image0.png

Открытые технические вопросы .

  • Исследовать параметры солверов (не реагирует на gap)
  • Собрать версию CBC с threading
  • xpra и cocalc — большие лаги

Как бы сохранить best feasible? .

Status 2022-09-05 11-09-05 image0.png

Status 2022-09-05 11-12-57 image0.png


Библиотека