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

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

Это внешняя разработка

Одно из 358 готовых решений нашего

Не мешает обновлению

Конфигурация остается "на замке", без изменений

Есть техподдержка

Бессрочная (3 месяца бесплатно)

Ограничения

Не подходит для 1C:Fresh

Кому полезна обработка

Всем, кто нарезает листовой материал на прямоугольники - нарезка стекла, листовых пиломатериалов, листового металла.

Обработка имеет обычную и управляемую форму, соответственно будет работать на старых конфигурациях типа УТ 10, УПП, так и на свежих конфигурациях с управляемым интерфейсом.

Использование

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

На рисунках ниже представлен пример: расположить 14 деталей среди 15 имеющихся заготовок разного размера. Решение алгоритма также представлено на рисунках: карта укладки деталей (карта кроя) и размер заготовок (слева от карты заготовки).

список деталей и список заготовок

Поэтому предлагается вводить максимально доступное количество заготовок по размерам, а дальше алгоритм сам выберет оптимальный вариант. Если заготовок одного размера несколько, то нужно ввести одну строку с размерами, а далее скопировать строку. Для алгоритма в таблице заготовок действует правило: одна строка - одна заготовка. Результат работы алгоритма ниже:

результат раскроя

Алгоритм оптимизации - метод имитации отжига https://infostart.ru/public/406682/. Настройки алгоритма указаны в форме обработки. Если есть ощущение, что алгоритм недосчитывает, то рекомендация: увеличить температуру (влияет на интенсивность движения деталей внутри заготовок и длительность расчета). Можно ограничить количество итераций алгоритма в соответствующей настройке, но при сложных расчетах (если деталей больше 8 и тем более они разные по форме, например как на рисунках выше - часть в форме «доски», часть тяготеет к «квадрату») не рекомендуется. В этом алгоритме суть оптимизации: пока высокая температура - ищется оптимальный контур будущей раскладки, а в конце алгоритма уже оптимизируется сам контур, т.е. происходит более тонкая подстройка. Однако, напомню метод относится к эвристическим (Эвристический алгоритм (эвристика) — алгоритм решения задачи, включающий практический метод, не являющийся гарантированно точным или оптимальным, но достаточный для решения поставленной задачи. Позволяет ускорить решение задачи в тех случаях, когда точное решение не может быть найдено), т.е. решение будет не всегда математически и гарантированно наилучшим, но дает неплохие решения.

Остановлюсь на описании настроек алгоритма. На практике часто встречается проблема неиспользования остатков, т.е. остатки листовых материалов, в общем признанные деловыми, не востребованы и ждут лучшего дня. Поэтому алгоритм имеет 2 ветки расчета, ниже будет приведены примеры входящих данных и рисунки с результатами раскладки. Примеры будут простыми, чтобы не утомлять читателя, лишь для наглядного отличия в работе алгоритма.

Пример 1. Необходимо для двух деталей задействовать раскладку с участием неполных листов. У нас 3 заготовки, на одну из них поместятся обе детали, причем полезная площадь гарантированно будет использована с большей эффективностью, на две другие «неполные» - по одной детали. Но мы ставим флажок «Максимально использовать неполные листы».

рисунок 3

На следующем рисунке видим результат:

рисунок 4

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

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

рисунок 5 рисунок 6

Пример 3. Еще один небольшой пример: если все-таки две небольшие заготовки позволяют использовать свою площадь более эффективно, чем одна большая заготовка, то даже при снятом флажке «Максимально использовать неполные листы», мы получим раскладку на две небольшие заготовки. То есть алгоритм выбирает те заготовки, где площадь будет использоваться с максимальной эффективностью. На рисунке мы поменяли заготовку 810*410 на заготовку 1000*410, небольшие заготовки оставили те же. Для наглядности опять же рисунки с входящими данными и результатом:

рисунок 7 рисунок 8

Далее несколько результатов с работой алгоритма: сравнение эффективности использования площадей в зависимости от наличия заготовок. Вывод и рекомендации будет чуть позже.

Приведу пример из реального внедрения. На следующем рисунке входящие данные по деталям из спецификации. Материал и спецификация находятся в самом верху формы обработки и замазаны. Заготовка – ЛДСП, самый верхний лист – полноразмерный лист 2440*1830мм, ниже неполный лист 1500*1500. Алгоритм выбрал тот лист, площадь которого будет использована эффективней. Вариант с раскладкой также приведен.

рисунок 9 рисунок 10

Представим, что мы в этом варианте поленились вписать все имеющиеся заготовки. Но теперь жадность победила лень. Дополним список заготовок неполными листами чуть меньших размеров и несколько заготовок скопируем (сымитируем, что у нас несколько заготовок одного размера, на которые можно уложить детали). Флажок «Максимально использовать неполные листы» снят.

рисунок 11

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

рисунок 12 рисунок 13

Вывод: если есть неполные листы, нужно не лениться их вводить, результат может оказаться гораздо лучше.

Пара слов о настройках в форме. Можно задать ширину реза (прохода пилы). В настройках вывода на печать есть коэффициент масштаба - для крупных или мелких заготовок. Если заготовки крупные, (например МДФ имеет размеры листа 2800*2070мм) то используем понижающий коэффициент (0,07-0,05). Для мелких заготовок имеет смысл укрупнить макет для более читаемого изображения. Не оставляйте значение 0, т.к. все размеры макета выводимые на экран и впоследствии на печать умножаются на этот коэффициент.

Релиз 714.1.1.3 от 03.07.2023

В обработку добавлены 2 настройки: "Марки материала" и "Виртуальный склад".

"Марки материала" - таблица, предназначенная для хранения рассчитываемых марок материала, т.е. можно производить расчет, не перезаполняя таблицу отдельно под каждый рассчитываемый материал. Если вы заполняете список марок материала, то в таблицах деталей и заготовок нужно будет также указать марку материала, к которой относится деталь/заготовка. Расчет будет выполнен в разрезе марок и в печатной форме также будет указана марка материала.

Образец заполнения:

заполнение настроек марки материала

выбор марки материала

"Виртуальный склад" предназначен для хранения заготовок и подпитывает таблицу заготовок "бесконечными остатками". Суть его в том, что сама таблица заготовок может быть заполнена деловыми остатками материала разных размеров, а складской материал основного размера может быть указан в виртуальном складе один раз без указания количества. Также может быть указана марка материала, если заполнена таблица марок:

заполнение настройки виртуальный склад

настройка запретить вращение деталей и заготовок

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

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

На форму добавлены результаты расчета, выведено несколько таблиц, подробнее о них:

результаты расчета раскроя материала

Таблица "Используемые заготовки" - выводятся те заготовки, которые непосредственно были использованы в расчете. Т.е. те заготовки, на которые уложены детали. Неиспользованные выведены не будут. Суть - списать этот материал с остатков склада (например, документом "Требование-накладная")

Таблица "Занятые области заготовок (детали)" - предназначена для отображения уложенных деталей на заготовки. Суть - источник данных для прихода на складские остатки готовой продукции/полуфабрикатов.

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

Обработка имеет обычную и управляемую форму, соответственно будет работать на старых конфигурациях типа УТ 10, УПП, так и на свежих конфигурациях с управляемым интерфейсом.


Дмитрий Медведков 1С

Дмитрий Медведков программист, консультант 1С
Работаю в 1С с 2012-го, специализируюсь на УТ 11
Имею 10 квалифиционных 1C

Артикул: 714

Обновлено: 02.10.2023

Продано (раз): 9

Совместимость:

  • Управление торговлей 11.4 и 11.5
  • Бухгалтерия предприятия 3.0
  • Управление нашей фирмой 1.6
  • Управление нашей фирмой 3.0
  • Комплексная автоматизация 2.4 и 2.5
  • Розница 2.2 и 2.3
  • Управление предприятием ERP 2.4 и 2.5
  • Управление торговлей 3 (Казахстан)
  • Комплексная автоматизация 2.4 (Казахстан)
  • Бухгалтерия для Казахстана 3.0
  • Управление торговлей 3 (Беларусь)
  • Комплексная автоматизация 2.4 (Беларусь)
  • BAS ERP (Украина)
  • BAS Комплексное управление предприятием 2 (Украина)
  • Управление торговлей 10.3
  • BAS Управление торговлей 3 (Украина)
  • Управление производственным предприятием 1.3
  • Комплексная автоматизация 1.1

загрузка цены...

58000 ₸

500 Br

200 $

167 €