Оптимизация раскроя листовых материалов для 1С

Оптимизация раскроя листовых материалов для 1С - размещение прямоугольных деталей в область (области) с возможностью вращения деталей на 90 градусов. Создание карт кроя материала.

Арт.: 1421562

Продано: 19

Общий вид.png
рис9 Большая раскладка Настройка.jpg
рис10 Большая раскладка Результат.jpg
Рис1 Исходные данные.png
рис2 Результат.png
рис3 Сравнение между полными и неполными Настройка1.jpg
рис4 Сравнение между полными и неполными Результат1.jpg
рис6 Сравнение между полными и неполными Результат2.jpg
рис7 Сравнение между полными и неполными Настройка3.jpg
рис8 Сравнение между полными и неполными Результат3.jpg
рис10 Большая раскладка Результат.jpg
Настройки алгоритма.png
Таблица виртуальный склад.png
Таблица марки материала.png
общий вид результатов расчета.png
таб док результатов.png
Общий вид.png
рис9 Большая раскладка Настройка.jpg
рис10 Большая раскладка Результат.jpg
Рис1 Исходные данные.png
рис2 Результат.png
рис3 Сравнение между полными и неполными Настройка1.jpg
рис4 Сравнение между полными и неполными Результат1.jpg
рис6 Сравнение между полными и неполными Результат2.jpg
рис7 Сравнение между полными и неполными Настройка3.jpg
рис8 Сравнение между полными и неполными Результат3.jpg
рис10 Большая раскладка Результат.jpg
Настройки алгоритма.png
Таблица виртуальный склад.png
Таблица марки материала.png
общий вид результатов расчета.png
таб док результатов.png
Обработка

10000 руб.

Техподдержка

3000 руб.

3000 руб.

Обработка имеет обычную и управляемую форму, пойдет как на старых решениях типа УПП, так и на новых, имеющих управляемый интерфейс.

Требования к платформе некритичны, тестировалось на 8.3.17, 8.3.18

Дополнительного ПО не требуется

Данная обработка оптимизирует размещение прямоугольников (далее деталей) в несколько (или один) крупный прямоугольник (далее - заготовка) с учетом гильотинного разреза листа. Допускается вращение деталей на 90 градусов для их более компактной укладки. Суть задачи данной обработки: расположить детали в область заготовок наиболее компактным способом так, чтобы максимизировать оставшееся пространство. Заготовок может быть сколь угодно много с разными или одинаковыми размерами. Обработка подбирает заготовки из списка самостоятельно, исходя из заданных деталей, и позволяет решать проблему копящихся остатков начатых и неиспользованных листовых материалов и создает карты кроя материала.

На скринах у нас задача: разложить 14 деталей, имея 15 заготовок разного размера. Какие заготовки выбрать? Как на них разложить детали? Вот те задачи, которые я старался решить.

Представим начальные данные:

и результат:

Алгоритм укладки деталей - метод имитации отжига (simulated annealing), подробнее о методе тут (отличие от классического метода, описанного по ссылке - здесь запоминается лучший результат из рассмотренных и именно он присутствует в печатной форме). В чем смысл данной публикации и преимущество данной обработки перед существующими работами на Инфостарте на момент публикации? Все работы по двумерной оптимизации, которые я нашел, основывались на методике жадного алгоритма, подробнее о методе тут . Процитирую первый вывод:

"Жадный алгоритм весьма быстр, позволяет найти некоторое приемлемое решение за котороткое время, но при этом часто не дает идеального результата."

Собственные опыты по раскладке с применением жадного алгоритма привели к тем же выводам: алгоритм крайне быстр, можно разложить 30+ деталей за секунды, но использование полезной площади мне показалось неоптимальным. Возможно, у некоторых авторов работ под капотом обработок присутствуют дополнительные методы оптимизации, об этом кто-то упоминал. Поэтому писал собственную обработку, основываясь на методе имитации отжига, заодно решая проблему использования деловых остатков. Старался сделать только используя 1с, не подгружая размеры деталей и заготовок из экселя и прочих внешних данных, т.к. для этих целей проще использовать спецификации.

Кому будет полезно данное решение? Всем кто работает с листовыми материалами: нарезка листового пиломатериала, стекла, листового металла и прочее. В настройках вывода на печать есть коэффициент масштаба для вывода крупных или мелких заготовок, например листы нам поставляют размером 2800*2000 мм, вывод на печать с коэффициентом масштаба "1" будет неприлично большим (рекомендуется примерно 0,07).

Подробнее насчет настроек алгоритма. Повышаем температуру при увеличении количества деталей согласно описанию на форме. Если же вам кажется, что алгоритм раскладывает неоптимально или недосчитывает, то поднимаем температуру. Так как алгоритм относится к эвристическим, то не всегда я получал абсолютно оптимальный результат раскладки материала. Поэтому два варианта: запустить алгоритм еще раз, либо, основываясь на результате, уже вручную перерисовать карту раскроя.

Для одновременного расчета разного материала предусмотрена таблица "Марки материала".

Представляет собой таблицу со списком марок. При ее непустом значении можно будет выбрать одну из марок при заполнении таблиц заготовок, деталей или виртуального склада (о нем чуть ниже).

 

Добавлено хранилище "бесконечных заготовок" - "Виртуальный склад". Предназначен для ввода размера заготовки (заготовок), которые будут использованы в расчетах. Например в таблице заготовок мы указываем деловые остатки материала (их размер и количество), а основной размер заготовок складского материала мы указываем один раз в виртуальном складе.

Для решения проблемы рационального использования деловых остатков предусмотрен флажок «Максимально использовать неполные листы». Суть его проще объяснить на простых примерах.

Пример 1. У нас две детали размером 500*500 и три заготовки размером 510*510, 510*510, 1010*510. Очевидно, что рациональнее будет использована площадь заготовки 1010*510. И при снятом флажке «Максимально использовать неполные листы», раскладка дает именно такой результат.

Результат:

Пример 2. Те же исходные данные, но ставим флажок «Максимально использовать неполные листы», получаем:

Действие алгоритма следующее: будут в приоритетном порядке использоваться заготовки с минимальной площадью в порядке ее возрастания. Потом происходит «утрамбовка» деталей в областях заготовок и выдается результат оптимизации. 

Но алгоритм не тяготеет к использованию минимального количества заготовок, его задача максимально использовать имеющуюся полезную площадь, и для наглядности мы переходим к примеру 3.

Пример 3. Почти те же исходные данные, но заменим заготовку 1010*510 на 1100*510. То есть площадь этой заготовки будет больше суммы двух заготовок 510*510 и смотрим на исходные данные и результат:

Результат:

Добавлен вывод на форму результатов расчета. Всего на выходе мы получаем 3 таблицы: используемые заготовки (изначально заготовок может быть много, выводятся только те, которые использовались в расчетах), области занятые деталями и свободные области (это области заготовок, не занятые деталями - возвратные материалы). До этого результат расчета можно было забирать только программно и передавать результаты расчета также программно в документы. Теперь результаты можно сохранить в табличные документы (Excel), отредактировать по своему усмотрению и любой обработкой загрузки данных, коих на просторах интернета множество, загрузить результаты в документы. Подробнее о таблицах:

Используемые заготовки: списываем с остатков, грузим в документы типа "Требование-накладная"

Занятые области (детали): приходуем на остатки как готовую продукцию или полуфабрикат, грузим в "Выпуск продукции". Колонки в таблице "Верх" и "Лево" используются для построения печатной формы документа как координаты областей (т.е. Верх и Лево - это верхний левый угол, от него откладываем высоту - это движение от угла вниз и ширину - это движение от угла вправо). Можно использовать для аналогичных задач. Колонка "Принадлежит заготовке" означает на каком номере заготовки уложена эта деталь. Колонка "Область" - уникальный номер области в пределах расчета, используется как идентификатор области независимо от того к какой таблице принадлежит область. Колонка "Марка" используется для дополнительной группировки областей деталей и заготовок по маркам при расчетах и выводе на печать.

Свободные области (возвратный материал): его нужно разделить на 2 части, первую приходуем на остатки как деловые отходы, вторая - неиспользуемые отходы никак не используется, эта часть уже списана в составе заготовок. Колонки имеют такой же смысл как в описании таблиц деталей.

Сохранение таблиц имеет следующий вид:

Добавлена опция "Экспресс расчет" - тот самый жадный алгоритм, с дополнительной оптимизацией раскладки. Для тех кому скорость важнее, т.к. в общем случае расчет может длиться довольно долго (20 деталей раскладываются где то 2-2,5 минуты). Экспресс разложит за несколько секунд.

Размеры как заготовок так и деталей можно указывать в произвольном порядке. Какая-либо предварительная сортировка не требуется и на конечный результат оптимизации не повлияет.

Напоследок пример из реальной практики использования: в спецификации 22 детали. Используемый материал - лист ЛДСП 2440*1830. 

Результат раскладки:

Практический вывод: если в 1 лист можно добавить детали из разных спецификаций, так и нужно делать. Тетрис из 30 деталей будет уложен плотнее, чем по отдельности 3 раза по 10 деталей.

Проверено на следующих конфигурациях и релизах:

  • 1С:Комплексная автоматизация 2, релизы 2.5.13.74, 2.4.5.86

Причины купить

Причина использовать оптимизацию раскладки: при снижении обрези на 3%, при расходах на листовой материал около 20-30млн.р. в год, экономия выходит 600-900т.р.

Статистика:
Просмотры 18094
Загрузки 19
Рейтинг 33
Создание 13.04.21 14:17
Обновление 02.10.24 17:57
№ Публикации 1421562
Характеристики:
Теги

оптимизация двумерный раскрой

Рубрики Производство готовой продукции (работ, услуг)
Кому Программист ,
Пользователь
Тип файла Внешняя обработка (ert,epf)
Платформа Платформа 1С v8.3 ,
Управляемые формы
Конфигурация Конфигурации 1cv8 ,
1С:Комплексная автоматизация 2.х ,
1С:Управление нашей фирмой 3.0
Операционная система Windows
Страна Не имеет значения
Отрасль Лесное и деревообрабатывающее хозяйство
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Платные (руб)
Код открыт Да
1. serpent 13.04.21 15:17 Сейчас в теме
Заложено ли в алгоритм коэффициент на "ОТРУБ, отрез". При условии что будем ПИЛИТЬ или РУБИТЬ на второй кусок может не хватить ФИЗИЧЕСКОГО(не расчетного) размера. Поясню даже в Вашем идеально приведенном примере в заготовку 1010+510 надо разместить два отреза 500*500 и они размещаются рядом, т.е. места для РАСПИЛА(ширина пилы) нет.
А если уж заготовка ровная 1000*500 - два отруба 500*500 никак не получатся(один 500*500, другой 500*495).

Вот про какой коэффициент я спрашивал.
2. Техподдержка 13.04.21 15:33
(1), приветствую, если я правильно понял ваш вопрос, то в самом первом рисунке (в заглавном) в настройках оборудования указывается ширина реза в мм. Это тот размер, который будет проходить между деталями и участвовать в расчетах. Вы об этом спрашивали?
3. serpent 13.04.21 18:51 Сейчас в теме
(2) да, просто в описании не увидил
4. soz2000ya 31.05.21 14:09 Сейчас в теме
Есть возможность списывать исходные листы, оприходовать нарезку и отходы?
5. Техподдержка 31.05.21 22:21
(4) Добрый день, штатно возможности нет по 2 причинам:
1) Разные конфигурации могут иметь разную структуру хранения номенклатуры. Этот вопрос надо решать индивидуально.
2) Оприходование отходов делится на оприходование деловых остатков и списание неделовых. Тут также все индивидуально, например критерием могут выступать как размеры длины и ширины, так и площади остатка. Эти вопросы надо решать отдельно от задачи оптимизации.
Дополнительной причиной можно указать то, что здесь не указывается номенклатура в принципе. Как я писал ранее - разумно заполнять все из спецификаций. Брать и материал(номенклатуру) и размеры деталей. Но это уже вопрос внедрения.
Допилить под ваши потребности можно, либо это можно сделать силами ваших внедренцев. У обработки код разумеется открыт.
6. michfood 29.04.22 13:17 Сейчас в теме
Добрый день. Код открыт?
8. Apix 06.09.22 11:04 Сейчас в теме
Обработка выдает ошибку в строке 1231 модуля объекта. Лечится проверкой на неопределено.

Сам алгоритм в случае постоянно использования генерирует большое количество делового отхода. Результат оптимизации не стабилен, сильно зависит от первой итерации жадного алгоритма. На мой взгляд лучше разделить на два этапа - сначала максимально заполнить все имеющиеся деловые отходы (заготовки), а на втором этапе оптимизировать материал из виртуального склада.
Прикрепленные файлы:
9. Техподдержка 06.09.22 12:36
(8) Добрый день, указанную ошибку не воспроизвел, может быть в колонках количество что то спрятано?
Насчет нестабильности - это принцип действия эвристических алгоритмов, генетического, имитации отжига и т.д. Тут возразить нечего, вы абсолютно правы. К стабильным их отнести нельзя, приходится выбирать или полный перебор и предсказуемо лучший результат, или эвристика, где хаос допустим.
10. user1539782 14.06.23 16:47 Сейчас в теме
Добрый день, эту обработки можно использовать любой базы ?
11. Техподдержка 14.06.23 22:30
(10) Добрый день, конфигурация не важна, должна пойти на любой платформе от 8.3
12. пользователь 17.10.23 16:21
Сообщение было скрыто модератором.
...
13. Dmitry_Baluev 17.10.23 16:22 Сейчас в теме
Ошибка в исполняемой процедуре обработки настройки виртуального склада. Указан контекст &НаСервере. Что характерно - работает. Но при открытии формы из другой формы с обработкой выбора падает в ошибку, так как код попадает в ошибочную процедуру.
Прикрепленные файлы:
14. Техподдержка 17.10.23 20:04
(13), благодарю за найденный косяк, исправился
15. user1856044 17.12.23 14:05 Сейчас в теме
Здравствуйте. Возможно ли доработать до 3D раскроя. Вернее сказать возможно ли доработать до создания упаковки деталей?
16. Техподдержка 17.12.23 17:34
(15)Добрый день, технически наверно можно, но я не очень представляю как в 1с визуализировать алгоритм укладки в 3D. Да и работать будет долго, даже двумерный раскрой работает не очень быстро, все таки 1с это язык для бизнес логики, а не цифромолотилка. Я бы поискал стороннее решение не на языке 1с под такую задачу

Оставьте свое сообщение

См. также

Пульт управления производством для 1С:УНФ

Разработка “Пульт управления производством для 1С:УНФ” содержит цифровые инструменты и средства для производственного и технологического программного обеспечения автоматизации производства - подсистему Технологического контроля с АРМ Контро...

36000 руб.

Отчет "Полный анализ себестоимости выпущенной продукции" для 1С:ERP (ЕРП), 1С:КА, 1С:ERP УХ

Данный отчет показывает себестоимость выпущенной продукции с разузлованием полуфабрикатов любых уровней, входящих в ее состав, до статей затрат и материалов. Отчет работает независимо от метода оценки стоимости товаров и подходит для любых ...

70000 руб.

Сервисный центр в 1С: Программа для сервисного центра по ремонту техники

Модуль или расширение «Сервисный центр для 1С» позволяет принимать в ремонт оборудование (компьютеры, бытовая техника и т.п.), оформлять заявки инженеров на посещение клиентов и вести начисление заработной платы для сотрудников. Позволяет н...

14800 руб.

Отчет "Полный анализ себестоимости реализованной продукции" для 1С:ERP (ЕРП), 1С:КА, 1С:ERP УХ

Данный отчет показывает себестоимость реализованной продукции в разузлованном виде, как с выделением входящих в нее полуфабрикатов любых уровней, так и свернутый до статей затрат и материалов, видов работ. Отчет работает независимо от метод...

70000 руб.

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-...

Задайте для каждой организации свою печать и для каждого физического лица свою подпись. Выберите в документе печатную форму "... с печатью и подписью" - и автоматически сформируется табличный документ с печатью и подписями той орг...

14400 руб.

КС 2 и КС 3 в 1С Бухгалтерия 3.0: заполнить, распечатать, сохранить. Отправить по ЭДО!

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или &...

3600 руб.