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

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

Артикул 714
Обновлено 27.12.2022
Исходный код Открыт
Изменение конфигурации Не требуется
Покупок 7

7000 руб

К ОПЛАТЕ
разработка также доступна по подписке Премиум

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

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

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

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

На рисунках ниже представлен пример: расположить 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, т.к. все размеры макета выводимые на экран и впоследствии на печать умножаются на этот коэффициент.


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

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

Комментарии (1)

Юрий

Юрий 15 августа 2021 г.
Добрый день скажите не планируется, обработка по учету мерных товаров? судя по этой доработке я вижу что ее можно адаптировать под раскрой линолеума, сандвич-панелей, поликарбоната. Нужно отражать остаток рулона и задавать минимальный остаток для отреза. Например есть рулон с остатком 4х10м. отрез 4х9м нельзя сделать так как остаток минимальный 4х2,5м

Чтобы оставить комментарий, зарегистрируйтесь и авторизуйтесь на сайте.