Имя: Пароль:
1C
1С v8
Оптимизатор раскроя хлыстов на заготовки
0 serg999
 
28.05.21
11:31
Добрый день.

Задача написать оптимизатор раскроя хлыстов. Вроде тема не новая, даже мат. примеры и модели есть в инете ..  
* https://math.semestr.ru/lp/rask.php
* https://math.semestr.ru/simplex/optimal-cutting.php

На первом этапе, попробовал разложить варианты раскроя с ограничением по длине мин. заготовки и длине хлыста. Тут перебор по ТЗ и вроде прослеживается логика.
https://www.screencast.com/t/1CvLiOMfyZSV

На втором этапе надо отобраться по оптимальным вариантам раскроя. Визуально понятно что выбрать, но как это запрограммировать?
Думал насчёт использования СЛАУ, но как понял из документации "систему надо привести к одинаковой размерности" .. короче засада.
Буду признателен за любые мысли по теме.
1 Garykom
 
гуру
28.05.21
11:34
Видяху купи, это не шутка
2 acht
 
28.05.21
11:39
А как же ... микросервис на GO?
3 polosov
 
28.05.21
11:46
Бабаев Ф.В. Оптимальный раскрой материалов с помощью ЭВМ
4 Kassern
 
28.05.21
11:46
5 Garykom
 
гуру
28.05.21
11:48
(2) да пофиг на чем, OpenCL или CUDA смотря какая видяха
6 Garykom
 
гуру
28.05.21
11:49
В целом такие задачки требуют хороших определенных знаний
Ну или кому то заказывать кто умеет
Не мне ибо у меня опыта маловато, так баловался с CUDA
7 Garykom
 
гуру
28.05.21
11:57
(0) Напиши тупой полный перебор сначала линейный
Затем распараллель перебор по фоновым в 1С, запускай их по числу логических процессоров
Если скорости не хватает то переходить на GPU
8 RomanYS
 
28.05.21
12:07
(7) для начала нужно хотя бы с критериями оптимальности определиться
>>Полный перебор... GPU...
Допустим GPU будет в тысячу раз быстрее. Полный перебор без GPU, например, тысячу лет - на GPU за год переберёшь.
9 Garykom
 
гуру
28.05.21
12:14
(8) GPU уже не в тысячу раз быстрее а 3 тысячи и более на нормальных видяхах
10 Garykom
 
гуру
28.05.21
12:16
(9)+ Но согласен что оптимизировать надо
Хотя в его случае  даже тупой пойдет
11 Михаил Козлов
 
28.05.21
13:06
Году в 2098 делал похожее для раскроя металла. Правда, ширина рулона была одинаковая (как я понял, у Вас длина хлыста может быть разной).
По сути, делал как во второй ссылке в (0):
- определение рациональных способов раскроя (их посчитать можно заранее и хранить где-то);
- определение оптимальных интенсивностей использования этих способов раскроя.
В отличие от ссылки в (0) на втором этапе решал не просто задачу линейного программирования (интенсивность использования способа раскроя должна быть целой), а целочисленную методом ветвей и границ с использованием задачи ЛП для отсечения вариантов.
Характерных размеров ширины заготовок было порядка 10 (кровельные элементы). Выход готовых составлял 97-98%.
Расчет был довольно быстрым (меньше минуты). Делал на Паскале, на 1С вычисления будут медленнее.
Для начала можно на 2-ом этапе можно попробовать жадный алгоритм: в первую очередь использовать схемы раскроя с минимальными отходами.
Можно было бы повозиться (правда, сейчас лето). Пришлите на мыло (в профиле) несколько реальных примеров.
12 МихаилМ
 
28.05.21
13:18
+(4) https://infostart.ru/public/513444/ того же автора
13 toypaul
 
гуру
28.05.21
13:23
решение СЛАУ (если это оно) вроде есть в 1С
14 H A D G E H O G s
 
28.05.21
13:24
(4) Глянь почту плиз.
15 Злопчинский
 
28.05.21
13:39
На мисте как-то было уже аналогичная тема, поройся
16 ДедМорроз
 
28.05.21
13:40
Когда задача решается
Забывают другие факторы:
- какие-то элементы могут быть нужны раньше других,и если этого не будет,то оптимальность раскроя просто забьет склад болванками.
- динамичность заказов - в процессе выполнения могут быть добавлены другие заготовки или поменяться срочность.
Поэтому,нужно получать более менее оптимальный результат быстро и оценить возможность применения других критериев.
17 d4rkmesa
 
28.05.21
13:47
Ага, или начальник лесоцеха сп***ит, скажет что в сердцевине дупло или грибок. Помню, на моей первой работе начальники воровали вагонами пиломатериал, а собственнику говорили, что выход 50-55% норм.
18 Михаил Козлов
 
28.05.21
13:56
(13) СЛАУ не имеет отношение к задаче. Кстати, пробовал решение СЛАУ из платформы: удобно данные заполнять и считает быстро.
Правда на плохо обусловленной задаче (системы Ушакова) сыпется при меньшей размерности (38 против 67 Гаусса-Жордана). Но это для 1С неважно.
19 Михаил Козлов
 
28.05.21
14:01
(0) Забыл: если нужна реализация симплекс-метода для задачи ЛП - пришлю.
20 Kassern
 
28.05.21
14:10
(14) глянул, отписался
21 Злопчинский
 
28.05.21
14:21
22 serg999
 
28.05.21
17:35
(3) За книжку спасибо!

(18) Да, я понял, что через СЛАУ не решить задачу. Сейчас тоже осмотрю в сторону симплекс-метода, но у меня есть опасения насчет двух хлыстов. Не пойм как объединить две системы уравнений?

(19) Письмо отправил в почту ...
23 Krendel
 
30.05.21
11:57
(17) да могут просто ленится думать, я видел когда просто в стружку уходит
24 Михаил Козлов
 
30.05.21
16:48
(22) Выслал.
Какая проблема с двумя типоразмерами хлыстов?
- генерите рациональные раскрои для каждого типоразмера;
- формируете задачу ЛП по массиву сгенерированных раскроев (как во 2-ой ссылке в (0)).
25 shotsdv2008
 
30.05.21
22:17
Фигней маетась... Если бы хлысты были все ровненькие, а так там стопятьсот всяких вариантов... Я, всё-таки, имею вышку по этому делу...
26 SiAl-chel
 
31.05.21
07:51
(11) В каком, каком году? Там у вас яблони на Марсе то уже цветут?
27 Михаил Козлов
 
31.05.21
10:09
(26) Промахнулся: в 1998, конечно.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс