Экономичный распил раскрой линейных изделий php скрипт. Пример решения задачи линейного раскроя в MS Excel

Программа предназначена для оптимизации раскроя профиля и других длинномерных материалов (брус, бревно, труба, подоконник).
Использован алгоритм "плотной укладки", то есть взятое изделие укладывается на самый короткий остаток заготовки, на который она помещается. Если никуда не помещается, берется новая заготовка. Задачей оптимизации является нахождение последовательности изделий, при которой будет использовано меньше заготовок и будет больше длина деловых обрезков. На первом такте, изделия размещаются на хлыстах в случайном порядке. Возникает "начальная популяция". В процессе решения, популяция мутирует и размножается, неудачные экземпляры погибают, а лучшие продолжают эволюцию. Всё, как в животном и растительном мире + искусственный отбор.

Живое демо на сайте

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

Преимущества

  • Окнософт:cutting обеспечивает карты распила высокого качества. Многочисленные внедрения подтверждают реальный коэффициент обрези не более 1% при оптимизации партий от 30 контуров (~120 отрезков)
  • Для чтения исходных данных и записи результатов раскроя, программа использует простые форматы текстовых файлов, что упрощает интеграцию с учетными системами, внедренными у заказчика
  • При необходимости, раскрой может выполняться под Linux или OS X в браузере или Node.js с передачей параметров через url, web-socket или объекты javascript

Алгоритмы линейного оптимизатора

В окнософт:каттинге использован генетический алгоритм. Суть его вот в чем:
Назовем каждое распределение изделий по хлыстам решением. Определим целевую функцию, позволяющую сравнивать качество решений. Сформируем несколько произвольных решений, назовем их поколением. Определим правила получения следующего поколения. Экземпляры с лучшей целевой функцией передают большую часть своего "генофонда", это наш "искусственный отбор". Теперь остается предоставить систему самой себе, пусть мутирует и оптимизирует результаты раскроя
В процессе разработки испытывался метод "Монте-Карло", когда наши "экземпляры" являются случайными и не зависят друг от друга и "Муравьиные алгоритмы"(ACO- ant colony optimisation). Все методы показали себя вполне работоспособным, но генетический алгоритм оказался чуть более эффективным

Варианты поставки

Есть два варианта поставки модуля раскроя Окнософт:cutting - в составе комплексного решения Управление позаказным производствм и в виде отдельного исполняемого файла. Взаимодействие с раскройной программой при первом сценарии, полностью скрыто от пользователя. Оператор работает со стандартными документами 1С:

  • На основании заказов покупателей формируется план производства
  • На основании плана - сменные задания со списком продукции и необходимых материалов
  • Внутри задания на производство происходит оптимизация раскроя
  • В процессе оптимизации, программа забирает из незавершенного производства деловую обрезь и помещает в ячеистый склад вновь образовавшиеся деловые обрезки
  • Сменное задание умеет печатать бланки раскроя при ручном производстве или формировать файлы для станков с ЧПУ
  • Так же, из сменного задания печатаются этикетки для отрезаемых изделий и схемы раскладки в телеги и пирамиды
  • На основании заданий на производство формируются требования - накладные для передачи материалов в цех с учетом потребности и нормоупаковок

Программный интерфейс (API линейного раскроя)

Файл входных данных - setup.ini, помещается в папку с исполняемым файлом.
Файлы выходных данных - result.txt, resultproduct.txt и resultstick.txt - формируются в той же папке.
Скачать файлы с демо-данными Окнософт:cutting можно по ссылке в конце страницы. В файлх используются следующие теги:

  • Outputvariant - структура выходного файла файла. Возможные значения: tab, oknosoft, по умолчанию oknosoft
    • В варианте "oknosoft", формируются файлы resultproduct.txt и resultstick.txt с информацией о размещении изделий на заготовках и образовавшейся обрези
    • В варианте "tab" выводятся пять значений, разделенных символами "tab": длина изделия, номер хлыста, длина хлыста, номер реза и остаток заготовки
  • Algorithm - используемый алгоритм. Возможные значения: random, conservative, genetic, по умолчанию genetic
    • Random- случайный перебор вариантов
    • Conservative- экземпляры следующей итерации происходят от одного "родителя"
    • Genetic- от двух родителей
  • Variation - изменчивость, параметр алгоритмов "conservative" и "genetic". Чем выше, тем меньше потомство "похоже" на родителей. По умолчанию 1.
  • Generations - количество итераций алгоритма, по умолчанию 40000
  • Persons - количество "экземпляров" в "популяции", количество решений используемых в одной итерации. В алгоритме "random" просто делается generations*persons итераций с одним экземпляром(решением)
  • KnifeWidth - ширина пилы
  • StickLength - длина нового хлыста
  • Products - длина изделия
  • Scraps - длина обрезка, используемого в раскрое
  • Wrongsnipmin – минимальная длина «плохого» образка
  • Wrongsnipmax – максимальная длина «плохого» обрезка
    В результатах оптимизации не будет обрезков с длиной между Wrongsnipmin и Wrongsnipmax

Парный раскрой

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

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

Раскрой большого числа изделий

С одной стороны, для достижения высокого качества оптимизации, на вход программы должно поступать значительное количество изделий разной длины, чтобы оптимизатору было "что сортировать". С другой, при очень больших партиях, снижается вероятность нахождения максимума при фиксированном числе итераций перебора. Эксперименты показали, что оптимальной является партия в 60 – 120 заготовок (что соответствует такту производства 30-60 изделий при парном раскрое). Если необходимо оптимизировать более 120 заготовок, лучших результатов можно добиться, разделив задачу на N частей и выполнив последовательные оптимизации для каждой части. Обработка формирования пачек заданий на производство умеет группировать продукции по видам профиля и подбирать в сменные задания изделия с максимальной дисперсией, избавляя оператора от рутинной работы по составлению производственных документов

Скачать примеры раскроя и документацию

  • Демо карт одинарного и двойного распила: 60.01 Листы раскроя
  • Документация и примеры файлов:

Источник: ПО МАТЕРИАЛАМ ООО "БАЗИС - ЦЕНТР"

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

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

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

Приведем простой пример. Пусть есть плита размером 2000х1000 мм. Ширина реза 0 мм. Необходимо раскроить 12 деталей размером 1001х501 мм. Очевидно, что на одну плиту помещается только одна панель, т.е для выполнения заказа необходимо 12 плит, а значение КИМ - около 25%. Но, если размеры панели уменьшить всего на 1 мм, то панелей с размерами 1000х500 мм на плите 2000х1000 мм разместится четыре штуки, а значение КИМ при этом будет равно 100%. При всей условности примера он наглядно иллюстрирует, как можно изменив размеры панелей на величину, которая, как правило, не критична для функциональности и эстетических показателей мебельных изделий, получить значительный выигрыш по всем основным показателям: стоимости, трудоемкости и времени изготовления изделия.

В том случае, когда размеры панелей изменить невозможно, можно попытаться варьировать толщиной облицовки. Рассмотрим пример. Панели в изделии облицованы материалом толщиной 0,5 мм со всех сторон, при этом облицовка нанесена с подрезанием контура панели. Это означает, что распиловочные размеры панелей уменьшаются на две толщины кромки по каждому измерению - длине и ширине, то есть на 1 мм. Формируем и анализируем карты раскроя. Допустим, они не устраивают по качеству. Возвращаемся к модели изделия в модулях БАЗИС-Мебельщик или БАЗИС-Шкаф и выполняем команду групповой замены облицовочного материала на новый толщиной 2,0 мм (или команду замену облицовочного материала на отдельных кромках панелей). В этом случае распиловочные размеры панели уменьшатся уже на 4 мм, но размеры готовой панели останутся прежними. Выполняем повторный раскрой и анализируем результаты. Вполне может оказаться, что значение КИМ возрастет очень резко, поскольку именно этих миллиметров и не хватало для получения качественного раскроя. Конечно, новый облицовочный материал стоит дороже, то есть при новом раскрое проигрываем в стоимости облицовочного материала, но экономим на стоимости ДСтП, что может «перекрыть» полученное удорожание. Получается парадоксальная ситуация: более дорогая мебель (за счет дорогой облицовки) оказывается в производстве более дешевой за счет экономии материала. Отметим, что все расчеты затрат на изделие выполняются автоматически и практически мгновенно в модуле БАЗИС-Смета.

Еще одно пояснение. В алгоритмах раскроя плитных материалов для мебельной промышленности заложена идеология раскроя гильотинными резами, то есть прямыми сквозными резами, разрезающими текущую полосу на две части. Одним из требований технологичности раскроя является точность размеров деталей с учетом допусков и посадок. Соответственно, алгоритмы формирования карт раскроя должны работать таким образом, чтобы получать панели с максимально точными размерами.

Рассмотрим фрагмент карты раскроя, приведенный на рис. 5.1.

Последнюю полосу, содержащую одиннадцать панелей с размерами 200х120 мм можно кроить разными способами. Допустим, что упоры устанавливаются с точностью ±0,5 мм, что является обычной точностью при распиловке панелей. Ширина реза - 5 мм. Выполняем раскрой. Вначале выполняем торцевание плиты, затем отрезаем полосу с этими панелями, то есть выполняем «горизонтальный» рез. После этого можно сделать рез на расстоянии 200*11+5*10 = 2250 мм для того, чтобы отпилить отход. Но этот размер может быть установлен на 0,5 мм меньше (точность установки упоров), то есть 2249,5 мм. Выполняем рез и устанавливаем размер по ширине на 120 мм, который реально из-за точности установки может оказаться равным 120-0,5=119,5 мм. Затем устанавливаем размер 200 мм, который реально может оказаться равным 200+0,5=200,5 мм. Отрезаем десять панелей, при этом размеры последней панели образуются автоматически. Измеряем ее длину и обнаруживаем, что она равна 194,5 мм, то есть на 5,5 мм меньше, чем нужно. Как это получилось, если все размеры были установлены с точностью 0,5 мм? Однако это легко доказать: 2249,5 - 200,5*10 - 5*10 = 194,5 мм. Реальный размер последней панели оказался равным 194,5х119,5 мм, а это уже неисправимый брак. Этот пример иллюстрирует, как влияет очередность раскроя на реальные размеры деталей.

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

Анализ оптимальности, технологичности и исполнимости карт раскроя

В данном разделе приведены примеры некоторых карт раскроя, полученных в различных программах, с анализом тех проблем и неудобств, которые могут возникнуть при их реализации на раскройном оборудовании. Это позволит читателю получить более полное представление о таких важных параметрах карт раскроя, как их технологичность и исполнимость. Ряд примеров карт раскроя и комментарии к ним с согласия автора взяты из статьи , часть - с профессионального мебельного форума htpp://mebelsoft.net.

Будем считать, что технологическая операция торцевания кромок плиты с двух сторон для обеспечения измерительной базы (кромки, от которой ведется отсчет) выполнена, поэтому она не рассматривается при описании последовательности действий по раскрою. Для упрощения анализа будем считать, что ширина реза равна нулю.

Проанализируем карту раскроя, показанную на рис. 5.2. С точки зрения КИМ данная карта вполне хорошая. Рассмотрим процесс ее исполнения на круглопильном станке: выполняем последовательно горизонтальный рез 1 и вертикальный рез 2.

Для раскроя оставшейся части листа единственными базами являются левая и верхняя кромки. Чтобы выполнить следующий рез, например, горизонтальный рез 3, необходимо сложить ширину полос (480+394+394 мм). Это означает, что на этом шаге ни один точный размер выставить невозможно - произошла потеря базы.

На первый взгляд кажется, что ничего страшного не произошло. Однако, где гарантия, что рабочий не ошибется и часть листа просто не уйдет в брак? Второй, более серьезный момент. Ни одна операция не может быть выполнена точно, поскольку в технике не существует размеров без допусков. Они обеспечиваются точностью станка, системой линеек и упоров, точностью измерительных приборов и т.д. На первом и втором шаге размер полосы выставлялся точно от базы, поэтому погрешность размеров минимальна. При отрезе полос на оставшейся части листа (горизонтальный рез 3) размер отрезаемой полосы будет выставлен с погрешностью 0,5 мм. Cоответственно, можно выставить размер 480+394+394=1268-0,5 мм=1267,5 мм.

Вертикальные резы 4, 5 и 6 выполняем с удовлетворительной точностью. Далее берем полосу 509х1267,5 мм и разрезаем ее горизонтальными резами. Для выполнения реза 7 при установке размера 480 мм с точностью 0,5 мм реально установили размер 480,5 мм, а при выполнении реза 8 при установке размера 394 мм с точностью 0,5 мм реально установили размер 394,5 мм.

Последняя деталь получилась с размером 392,5 мм, меньше номинала на 1,5 мм. Это для серьезного производства уже неисправимый брак, поскольку заданная точность исполнения 0,5 мм.

Для карты, показанной на рис. 5.3 даже для первого реза невозможно выставить точный размер. Первый рез (вертикальный рез 1) должен производиться на расстоянии 6*363 мм. Для дальнейшего раскроя установим размер 363 мм с точностью 0,5 мм, то есть первые пять полос будут отрезаться в размер 363,5 мм. Нетрудно подсчитать, что размер последней полосы будет равным 360 мм, а это уже неисправимый брак четырех деталей. Конечно, мы можем получить пять полос размером 362,5 мм, а последнюю полосу - размером 366 мм. Это уже исправимый брак, но для его исправления придется делать дополнительный рез.

Рассмотрим карту, приведенную на рис. 5.4. Как видно, укладка панелей на ней довольно плотная, но сама карта является неисполнимой, то есть выполнить раскрой в соответствии с ней просто невозможно. Рассмотрим возможную последовательность действий:

▼ выполнение вертикального реза 1 в размер 872 мм;
▼ выполнение горизонтального реза 2 в размер 868 мм;
▼ выполнение горизонтального реза 3 в размер 550+90 мм.

Дальше ни одного сквозного реза, например, горизонтальные резы 4, 6, или вертикальный рез 5, выполнить невозможно. Хорошо, если рабочий перед выполнением раскроя заметит это. В противном случае один или несколько листов материала уйдут в брак.

Карта, показанная на рис. 5.5, исполнима и имеет неплохое значение КИМ. Последовательность ее распила следующая: вертикальный рез 1, опиливание кромки, поворот, горизонтальный рез 2, опиливание кромки, поворот, вертикальный рез 3 и т.д. Другими словами, практически после каждого реза плиту придется поворачивать, а, значит, трудоемкость раскроя существенно возрастает.

Карту на рис. 5.6 на первый взгляд улучшить невозможно: и КИМ максимальный, и технологичность обеспечена. Рассмотрим последовательность распила. Вначале опиливаем правую сторону (вертикальный рез 1), а затем, развернув плиту на 90°, нарезаем полосы. Неудобство кроется в необходимости разворота практически целой плиты, поскольку, например, средний вес плиты ДСтП 2750х1830 мм толщиной 16 мм около 60 кг. Значительно легче было бы вначале нарезать полосы, а уж потом у каждой из них опилить кромку.

Рассмотрим последовательность распила карты, показанной на рис. 5.7. Выполняем вертикальный рез 1 в размер 2000 мм. Далее ее необходимо распилить на горизонтальные полосы, первая из которых имеет размер 1999х50 мм. Из-за наличия внутренних напряжений в плите, такую узкую и длинную полосу с большой вероятностью изогнет, и ее, возможно, придется списать в брак. Тоже самое может случиться и с крайней правой вертикальной полосой (вертикальный рез N) шириной 100 мм.

Карта раскроя, показанная на рис. 5.8, решает проблему возможного изгиба узкой полосы шириной 50 мм, расположив ее посередине листа. Такой эффект получен при помощи выбора метода сортировки, при котором узкие полосы располагаются внутри. Однако это существенно «ухудшило» технологичность остальных полос: попеременная установка упоров на уменьшение и увеличение размеров отрезаемых полос второго и выше уровней способствует понижению точности размеров. Это произошло в силу того, что выбранный метод сортировки действует на полосы всех уровней.

Решить эту проблему возможно включением опции Узкие полосы первого уровня располагаются внутри, который расположен на вкладке Критерии выбора в диалоге задания параметров раскроя. В этом случае, как видно из рис. 5.9, полоса шириной 50 мм по-прежнему располагается в середине плиты, но при этом в каждой получаемой полосе панели сортируются по установленному методу, например, от максимального размера к минимальному размеру.

Карту раскроя, показанную на рис. 5.10, вообще невозможно реализовать, поскольку в выделенном фрагменте отсутствуют прямые сквозные резы.

Таким образом, анализ карт раскроя, полученных автоматизированным способом в различных программах раскроя, показывает, что отсутствие учета технологических факторов оптимизации в лучшем случае приводит к получению трудоемких в реализации карт раскроя, а в худшем случае - к неисправимому браку. Традиционные алгоритмы оптимизации раскроя по максимальному значению КИМ по этим причинам далеко не всегда обеспечивают его.

Уменьшение трудоемкости раскроя

Задача уменьшения трудоемкости операции раскроя является актуальной для любого мебельного предприятия. Рассмотрим возможные варианты ее решения. Будем считать, что на предприятии используются пильные центры, на которых можно выполнять пакетный раскрой, и обычные круглопильные станки. Информацию для построения наименее трудоемкой стратегии раскроя будем получать из выдаваемой модулем БАЗИС-Раскрой статистической информации.

Допустим, выполнен раскрой некоторого задания, содержащего примерно пятьдесят типоразмеров панелей общим количеством не менее 150 штук, а количество панелей порядка 3000 штук. Вариант фрагмента статистических данных, формируемых модулем БАЗИС-Раскрой, приведен в табл. 5.1.

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

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

При выполнении раскроя по две плиты в пакете количество циклов будет равно 84. При переходе к раскрою по три плиты, количество циклов уменьшается незначительно, до 83. Другие характеристики тоже улучшаются, но незначительно. Зато при переходе к раскрою по четыре плиты все значения резко улучшаются, почти в два раза. Например, количество циклов равно уже 45.

Дальнейшее увеличение количества плит в пакете совершенно не изменяет характеристики раскроя. На первый взгляд это не логично. Тем не менее, объяснение достаточно простое: в данном варианте набор панелей таков, что для его раскроя невозможно сформировать пакеты по пять плит. Оптимальным вариантом будет раскрой по четыре плиты в пакете.

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

Поясним, как рассчитывается количество циклов. Пусть надо раскроить по некоторой карте раскроя 12 плит. При четырех плитах в пакете необходимо три цикла (12:4=3), а при пяти плитах -два пакета по пять плит и один пакет из двух плит, то есть те же самые три цикла.

От количества циклов зависит общая длина резов, а от нее - износ пилы. Пиление тупым инструментом увеличивает потребление электроэнергии, ухудшает качества продукции и может служить причиной поломки пил. Вернемся к первому примеру. При раскрое по одной плите длина резов равна 4654,266 м, а при раскрое по четыре плиты она меньше - 1302,112 м. С другой стороны общая толщина «прорезаемой» плиты в первом случае меньше (одна плита), а во втором - больше (четыре плиты). Следовательно, износ пилы будет практически одинаковым.

Однако это не совсем так. Известно, что износ режущего инструмента зависит от множества факторов: скорости подачи, технического состояния станка и т.д., в том числе, от количества ударов зубьев о поверхность материала и количества распиленного материала. При прочих равных условиях на удар приходится примерно одна треть износа, а собственно на пиление - примерно две трети. Легко догадаться, что количество ударов при раскрое по одной плите будет значительно большим, что приведет к большему износу пилы. Вывод: раскрой предпочтительнее вести пакетами с максимально возможным количеством плит. Это не только экономит время и уменьшает трудоемкость, но и продлевает срок службы режущего инструмента.

Практика штабелирования панелей

Как отмечалось выше, решение задачи оптимального раскроя материалов имеет не только экономические и технологические, но и организационные аспекты, позволяющие повысить производительность работы, как самого раскройного участка, так и многих связанных с ним участков. Проанализируем карты раскроя некоторого заказа, показанные на рис. 5.11 и рис. 5.12.

Общая информация по раскрою (в модуле БАЗИС-Раскрой она выводится перед первой картой) приведена в табл. 5.3.

С точки зрения значения КИМ и технологичности их можно считать оптимальными. Рассмотрим последовательность выполнения раскроя. Карты условно будем нумеровать слева направо и сверху вниз вначале на рис. 5.11 с продолжением на рис. 5.12. Аналогичным образом нумеруем карты на рис. 5.13 с продолжением на рис. 5.14.

После распила первой карты на участке образуются штабели из 40 панелей 800х350 мм (позиция 3), 48 панелей размером 600х290 мм (позиция 1) и 192 панелей размером 500х146 мм (позиция 2). Последние панели можно отправлять на дальнейшую обработку, поскольку они выпилены в полном объеме. Остальные панели остаются на участке. После распила второй карты штабель панелей 800х350 мм (позиция 3) увеличивается еще на 30 панелей, но он попрежнему остается на участке. Только выполнив распил четвертой карты, можно передать панели 800х350 мм (позиция 3) на последующую обработку, но панели 600х290 мм (позиция 1) остаются на участке. Кроме того, появляется штабель панелей 480х352 мм (позиция 4) в количестве 20 штук. Только после распила третьей карты на участке остается единственный штабель панелей 480х352 мм (позиция 4). Таким образом, на раскройном участке во время выполнения заказа постоянно находится значительное количество штабелей панелей разных типоразмеров, которые ждут отправки на дальнейшую обработку. И это, как показывает практика, далеко не самый крупный заказ. Подобная ситуация чревата как минимум двумя отрицательными последствиями:

▼ при близких значениях размеров панелей в разных штабелях велика вероятность субъективной ошибки рабочего, который может просто перепутать панели и положить не в тот штабель;
▼ простой других участков предприятия (облицовочный, фрезерно-присадочный и т.д.) в ожидании панелей.

Выполним раскрой того же задания при неизменных настройках критериев и параметров, но с учетом технологии оптимального штабелирования. Для этого в диалоге настройки параметрах раскроя на вкладке Критерии выбора установим режим штабелирования по площади. Результат показан на рис. 5.13 и 5.14, а общая информация по результатам нового раскроя приведена в табл. 5.4.

Проанализируем результаты раскроя. Значение КИМ уменьшилось на 5,48%, но КИМ с учетом обрезков практически не изменился. Увеличились количество и площадь обрезков, а также количество карт раскроя - на две штуки. Для распила заказа потребовалась одна дополнительная плита материала. Количество и общая длина резов практически не изменились.

В качестве положительного момента отметим двукратное уменьшение количества установок размеров. Рассмотрим последовательность распила листов. После распила первой карты на участке формируется единственный штабель панелей 800х350 мм (позиция 3), который после распила четвертой карты может быть отправлен на следующие этапы обработки. Вместо него образуется штабель панелей 600х290 мм (позиция 1). Последовательно распиливаем шестую и вторую карты, после чего отправляем эти панели дальше. На участке по+прежнему один штабель панелей - теперь размером 480х352 мм (позиция 4). После распиливания седьмой карты они также отправляются на последующие этапы обработки. Последняя (третья) карта содержит только панели 500х146 мм (позиция 2). Таким образом, в любой момент времени на раскройном участке находится не более двух штабелей разных по размеру панелей, один из которых уже полностью подготовлен к передаче на другие участки.

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

см. Модели линейного программирования для решения задач раскроя .

Пример №1 . Продукция бумажной фирмы выпускается в виде бумажных рулонов стандартной ширины - по 2 метра. По специальным заказам потребителей фирма поставляет рулоны и других размеров, для чего производится разрезание стандартных рулонов. Типичные заказы на рулоны нестандартных размеров приведены в табл.


Требуется найти такие сочетания различных вариантов разрезания стандартных рулонов, чтобы поступившие заказы полностью удовлетворить с минимальными потерями (отходами).
Рассмотрим все возможные варианты раскроя стандартного рулона, соответствующие данные приведем в табл.
Ширина рулона(м) Варианты раскроя рулона Минимальное количество рулонов
1 2 3 4 5 6
0,5 0 2 2 4 1 0 150
0,7 1 1 0 0 2 0 200
0,9 1 0 1 0 0 2 300
Отходы в м 0,4 0,3 0,1 0 0,1 0,2 -

Определим переменные:
X j - количество стандартных рулонов, разрезаемых по варианту j, j =1, 2, 3,4,5, 6 .
Ограничения непосредственно связаны с требованием обеспечить изготовление требуемого количества нестандартных рулонов. Используя данные табл., получим:
2Х 2 + 2 Х 3 + 4 Х 4 + Х 5 = 150 - количество рулонов шириной 0,5 м,
X 1 + Х 2 + 2 Х 5 = 200 - количество рулонов шириной 0,7 м,
X 1 + Х 3 + 2 Х 6 =300 - количество рулонов шириной 0,9 м.

Выражение для суммарной величины потерь бумаги (отходы) (в м) имеет вид
0,4Х 1 + 0,3 Х 2 + 0,1 Х 3 + 0,1 Х 5 + 0,2 Х 6 .

Таким образом, математическая модель в общем виде имеет вид
min f(x) = 0,4 X 1 + 0,3Х 2 + 0,1Х 3 + 0,1Х 5 + 0,2Х 6 .
при ограничениях:
2Х 2 + 2 Х 3 + 4 Х 4 + Х 5 = 150
Х 2 + Х 2 + 2 Х 5 = 200
Х 2 + Х 3 + 2 Х 6 = 300

Задача о раскрое материалов

Данная задача состоит в разработке такого плана, который обеспечивает необходимый комплект изделий при минимальных отходах (по длине, площади, массе, стоимости и др.) при раскрое материалов или обеспечивает максимальное число комплектов изделий. Пример №2 . Требуется разработать оптимальный план раскроя стандартных листов стали, обеспечивая выход планового числа заготовок разного вида при минимальных суммарных отходах, если известно, что из партии листовой стали необходимо нарезать четыре вида различных заготовок в количестве b i (i = 1, 2,…,4) штук. Лист стали стандартных размеров может быть раскроен четырьмя способами. Каждому возможному способу раскроя соответствует карта раскроя. Из карт раскроя известен выход заготовок в штуках разных видов a ij (i = 1, 2,…4; j = 1,2,…,4), а также площадь отходов c j (j = 1, 2,…,n) при раскрое одного листа стали по j-му способу раскроя. Какое количество листов стали необходимо раскроить тем или иным способом, чтобы отходы были минимальными?

Таблица 3

Виды
заготовок

План-задание по количеству заготовок (b 1)

Выход заготовок (шт) разных видов
из карт раскроя (a ij)

1 2 3 4
1 240 1 4 0 1
2 200 1 0 4 0
3 120 1 0 0 3
4 140 1 1 0 3
Площадь отходов, м 2
(c j)
1,4 0,1 2,1 0,1

Составим экономико-математическую модель задачи. Обозначим через x j – количество исходного материала (листов стали), которые необходимо раскроить по одному из способов j . Ограничения в задаче должны соответствовать плановому выходу заготовок различных видов. Целевая функция сводиться к нахождению минимума отходов при раскрое

F=1,4·x 1 +0,1·x 2 +2,1·x 3 +0,1·x 4 →(min)..
Ограничения по выходу заготовок i-го вида по всем j способам раскроя:

Пример №3 . На раскрой (распил, обработку) поступает материал одного образца в количестве a единиц. Требуется изготовить из него l разных комплектующих изделий в количествах, пропорциональных числам b 1 , b 2 ,…,b l (условие комплектности). Каждая единица материала может быть раскроена n различными способами, причем использование i -го способа (i = 1, 2,…,n) дает a ik единиц k-го изделия (k = 1, 2,…,l). Необходимо найти план раскроя, обеспечивающий максимальное число комплектов.
Составим экономико-математическую модель задачи.
Обозначим через x i – число единиц материала, раскраиваемых i-ым способом, и x – число изготавливаемых комплектов изделий. Тогда целевая функция сводиться к нахождению

F=x→(max),
при ограничениях: по общему количеству материала равного сумме его единиц, раскраиваемых различными способами; по требованию комплектности и не отрицательности переменных.

Пример №4 . На предприятии имеются бревна длиной L м, которые необходимо разрезать на заготовки длиной l 1 , l 2 , l 3 м в количестве p 1 , p 2 , p 3 соответственно.
Необходимо составить оптимальный план раскройки материала, который обеспечивает минимальные отходы, при условии выполнения плана по выходу заготовок. Исходные данные приведены в таблице.

Задача Длина Размеры заготовок, м Количество заготовок, шт.
l 1 l 2 l 3 p 1 p 2 p 3
68 6,5 2,1 2,3 1,4 600 720 900

Решение: Сначала составим математическую модель нашей задачи. Возможные варианты раскроя и отходы при каждом из них запишем в виде таблицы.
Длина заготовки Варианты раскроя Количество заготовок
1 2 3 4 5 6 7
2,1 3 2 2 1 1 0 0 600
2,3 0 1 0 1 0 2 1 720
1,4 0 0 1 1 3 1 3 900
Остаток, м 0,2 0 0,9 0,7 0,2 0,5 0

Обозначим через x i количество бревен, разрезанных по i-му варианту (i=1..7). Тогда суммарный остаток отходов запишется в виде линейной функции:
Z = 0,2x 1 + 0x 2 + 0,9x 3 + 0,7x 4 + 0,2x 5 + 0,5x 6 + 0x 7
При этом должны выполняться условия выполнения плана по количеству заготовок, т.е.
3x 1 + 2x 2 + 2x 3 + x 4 + x 5 = 600
x 2 + x 4 + 2x 6 + x 7 = 720
x 3 + x 4 + 3x 5 + x 6 + 3x 7 = 900

Таким образом, для решения поставленной задачи необходимо найти minZ при ограничениях. Поскольку minZ = -max(-Z(x)), то вместо задачи минимизации функции будем решать задачу максимизации функции:
Z = -(0,2x 1 + 0x 2 + 0,9x 3 + 0,7x 4 + 0,2x 5 + 0,5x 6 + 0x 7)

Пример №5 . Для пошива одного изделия требуется выкроить из ткани 6 деталей. На швейной фабрике были разработаны два варианта раскройки ткани. В таблице (расположенной ниже) приведены характеристики вариантов раскроя 10 м 2 ткани комплектность, т.е. количество деталей определенного вида, которые необходимы для пошива одного изделия. Ежемесячный запас ткани для пошива изделий данного типа составляет 405 м 2 . В ближайший вечер планируется сшить 90 изделий.
Построить математическую модель задачи, позволяющий в ближайший месяц выполнить план по пошиву с минимальным количеством отходов.

Таблица - Характеристики вариантов раскроя отрезков ткани по 10м 2

Вариант раскроя Количество деталей, шт./отрез Отходы, м 2 /отрез
1 2 3 4 5 6
1 60 0 90 40 70 90 0,5
2 80 35 20 78 15 0 0,35
Комплектность, шт./изделие 1 2 2 2 2 2

Математическая постановка задачи

Переменные задачи
В данной задаче искомые величины явно не указаны, но сказано, что должен быть выполнен ежемесячный план по пошиву 90 изделий. Для пошива 90 изделий в месяц требуется раскроить строго определенное количество деталей. Крой производится из отрезков ткани по 10 м 2 двумя различными способами, которое позволяют получить различное число деталей. Поскольку заранее неизвестно, сколько ткани будет раскраиваться первым способом и сколько - вторым, то в качестве искомых величин можно задать количество отрезков ткани по 10м 2 , раскроенных каждым из способов:
x 1 - количество отрезков ткани по 10м 2 , раскроенных первым способом в течении месяца, [отрез./мес.];
x 2 - количество отрезков ткани по 10м 2 , раскроенных первым способом в течении месяца, [отрез./мес.];

Целевая функция
Целью решения задачи является выполнение плана при минимальном количестве отходов. Поскольку количество изделий строго запланировано (90 шт./мес.), то этот параметр не описывает ЦФ, а относится к ограничению, невыполнение которого означает, что задача не решена. А критерием эффективности выполнение плана служит параметр «количество отходов», который необходимо свести к минимуму. Поскольку при раскрое одного отреза (10м 2) ткани по 1-му варианту получается 0,5м 2 отходов, а по 2-му варианту - 0,35м 2 (см. таблицу 1), то общее количество отходов при крое (ЦФ) имеет вид
L(x) = 0.5x 1 + 0.35x 2 = min,

Ограничения
Количество раскроев ткани различными способами ограничивается следующими условиями:

  • Должен быть выполнен план по пошиву изделий, другими словами, общее количество выкроенных деталей должно быть таким, чтобы из него можно было пошить 90 изделий в месяц, а именно: 1-го вида должно быть как минимум 90 и деталей остальных видов - как минимум по 180 (см. комплектность в таблицу).
  • Расход ткани не должен превышать месячного запаса на складе;
  • Количество отрезков раскроенной ткани не может быть отрицательным.
Ограничение по плану пошива пальто имеют следующую содержательную форму записи.
(Общее количество деталей №1 выкроенных по всем вариантам)≥ (90 штук);
(Общее количество деталей №2 выкроенных по всем вариантам) ≥ (180 штук);
(Общее количество деталей №6 выкроенных по всем вариантам) ≥ (180 штук);

Математически эти ограничения записываются в виде :
60x 1 + 80x 2 ≥90;
35x 2 ≥180;
90x 1 + 20x 2 ≥180;
40x 1 + 78x 2 ≥180;
70x 1 + 15x 2 ≥180;
90x 1 ≥180;

Ограничение по расходу ткани имеет следующие формы записи:
Содержательную
(общее количество ткани, раскроенной за месяц)≤ (405м 2)
Математическую
x 1 +x 2 ≤405/10

Не отрицательность количества раскроенных отрезков задается в виде
x 1 ≥ 0, x 2 ≥ 0

Таким образом, математическая модель задачи имеет вид
L(x) = 0.5x 1 + 0.35x 2 = min [м 2 отх./мес.],
60x 1 + 80x 2 ≥90;
35x 2 ≥180;
90x 1 + 20x 2 ≥180;
40x 1 + 78x 2 ≥180;
70x 1 + 15x 2 ≥180;
90x 1 ≥180;
x 1 +x 2 ≤40,5
x 1 ≥ 0, x 2 ≥ 0

Пример №6 . Имеется 69 труб для отопительной сети по 1070 см каждая. Их необходимо разрезать на трубы по 130, 150 и 310 см. Найти такой вариант раскроя поступивших труб, при котором отходы были бы минимальными.

Этап 1. Определяем варианты оптимального распила труб.

Варианты раскроя 1 2 3 4 5 6 7 8 9 10 11 12 13
310 3 2 2 2 2 1 1 1 1 0 0 0 0
150 0 3 2 1 0 3 2 1 0 3 2 1 0
130 1 0 1 2 3 2 3 4 5 4 5 7 8
Остатки 10 0 20 40 60 50 70 90 110 100 120 10 30

Этап 2.
Составим экономико-математическую модель задачи. Обозначим через x j - количество труб, которые необходимо распилить по одному из способов j. Целевая функция сводиться к нахождению минимума отходов при распиле:
10x 1 + 20x 3 + 40x 4 + 60x 5 + 50x 6 + 70x 7 + 90x 8 + 110x 9 + 100x 10 + 120x 11 + 10x 12 + 30x 13 → min

x 1 + x 3 + x 4 + x 5 + x 6 + x 7 + x 8 + x 9 + x 10 + x 11 + x 12 + x 13 = 69

Ответ: необходимо использовать только второй вариант распила (нулевые отходы)

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

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

Не смотря на кажущуюся простоту, решение задач линейного раскроя является весьма не легким, но стоящим делом. Внедрение научного подхода к раскрою погонажных материалов позволяет снизить расходы на них иногда более чем на 10%! Дочитайте статью до конца и убедитесь в правоте этих слов.

Рассматриваемая тема относится к задачам линейного программирования. Для решения таких задач ученые в последние 70 лет придумали несколько различных методов.

Метод индексов Л.В. Канторовича и В.А. Залгаллера при определенном навыке позволяет «вручную» без использования вычислительной техники эффектно выполнять линейный раскрой. Любопытным читателям рекомендую с этим методом ознакомиться, прочитав книгу вышеназванных авторов «Рациональный раскрой промышленных материалов».

Симплекс-метод, основанный на идеях Л.В. Канторовича, был описан и детально разработан рядом ученых из США в середине 20 века. Надстройка MS Excel «Поиск решения» (Solver) использует этот алгоритм. Именно с помощью этого метода и Excel мы будем в этой статье решать задачу линейного раскроя.

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

Включим Excel и на простом примере порезки металлических стержней на детали познакомимся с одним из способов решения практических задач линейного раскроя. Часто математики эту задачу называют «задачей о распиле».

Исходные данные для примера я не стал придумывать, а взял из статьи Покровского М.А. «Минимизация неизбежных потерь материалов в промышленном производстве при их раскрое на штучные заготовки» опубликованной в №5 (май 2015) электронного научно-технического журнала «Инженерный вестник» издаваемого ФГБОУ ВПО «МГТУ им. Н.Э. Баумана» (ссылка: engbul . bmstu . ru / doc /775784. html ).

Цель, которую я преследовал – сравнить полученные результаты решения задачи.

Пример решения задачи линейного раскроя в MS Excel.

Договоримся, что:

1. Заготовки – это исходный материал в виде прутков, полос, стержней и т.д. одинаковой длины.

2. Детали – это элементы, которые необходимо получить, разрезав исходные заготовки на части.

3. Ширина пила, реза, руба принята равной нулю.

Условие задачи:

Для комплектации одного из заказов заготовительный участок должен порубить на комбинированных ножницах из одинаковых прутков-заготовок длиной 1500 мм три типоразмера деталей:

151 штуку длиной 330 мм

206 штук длиной 270 мм

163 штуки длиной 190 мм

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

Исходные данные:

1. Длину исходных заготовок L з в миллиметрах записываем в объединенную ячейку

D3E3F3: 1500

2. Присваиваем номера i всем типоразмерам деталей, начиная от самой длинной и заканчивая самой короткой в ячейках

D4; E4; F4: 1; 2; 3

3. Длины деталей L д i в миллиметрах пишем в

D5; E5; F5: 330; 270; 190

4. Количество деталей N д i в штуках заносим в

D6; E6; F6: 151; 206; 163

5. Приступаем к очень важному этапу – заполнению вариантов раскроев.

Необходимо запомнить и понять 2 принципа выполнения этой работы .

1. Длины отходов должны быть меньше самой маленькой детали (0< Lo j < L д min ).

2. «Укладку» деталей в заготовку начинаем с самых больших деталей и с самого большого их количества, последовательно двигаясь в сторону уменьшения.

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

Вариант раскроя №1:

Попытка выкроить из одной заготовки 5 деталей №1 невозможна, поэтому пишем в ячейку

Добавить в раскрой деталь №2 или деталь №3 также невозможно, поэтому оставляем пустыми ячейки

Вариант раскроя №2:

Уменьшаем на 1 от предыдущего варианта количество деталей №1 и записываем в

Пробуем добавить 2 детали №2 – не получается, поэтому дополняем в

Остается возможность дополнить раскрой деталью №3. Заносим в

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

Сделав пару-тройку таблиц вариантов раскроев самостоятельно, вы уясните логику действий и будете тратить считанные минуты на эту работу.

Если при раскрое не выполняется первый принцип, то ячейка с длиной отхода автоматически окрашивается в красный цвет. Условное форматирование, примененное к ячейкам G7…G24, наглядно поможет вам в этой работе.

В ячейках H7…H24 ничего не пишем! Они используются для вывода результата решения!

Подготовка к решению:

* В ячейках G7…G24 вычисляются длины отходов (обрезков), остающиеся в результате выполнения раскроев, по формуле

Lo j = L з — Σ (L д i * N д ij )

6. Количество деталей каждого типоразмера, изготовленных по всем примененным вариантам раскроя, будут подсчитываться в ячейках D26, E26 и F26 по формуле

N д i расч = Σ (N д ij * N з j )

Количество деталей в найденном в конце решения плане раскроя должно полностью соответствовать заданному количеству деталей!

7. Необходимое число заготовок для выполнения оптимального плана раскроя будет определяться в объединенной ячейке D27E27F27 по формуле

N з расч = ΣNз j

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

L з Σ = L з * N з расч

9. Общая длина всех отходов, получаемых при выполнении найденного плана раскроя, будет считаться в объединенной ячейке D29E29F29 по формуле

L о Σ = Σ (L о j * N з j )

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

Ωo = Lо Σ /Lз Σ

Решение:

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

1. Выбираем в главном меню «Сервис» - «Поиск решения…».

2. В появившемся одноименном окне «Поиск решения» производим настройки.

2.1. Назначаем целевой функцией общую длину отходов Lо Σ и вводим ссылку в окно целевой ячейки.

2.2. Устанавливаем переключатель «Равной:» в положение «минимальному значению».

2.3. Указываем ячейки с переменными Nз j в окне «Изменяя ячейки».

2.4. Вводим ограничения в одноименное окно. В качестве условий указываем необходимость равенства заданного Nд i и расчетного Nд iрасч количества деталей, а так же на переменные Nз j – расчетное количество заготовок по вариантам раскроев – накладываем ограничение: это должны быть целые числа.

3. Нажимаем кнопку «Параметры» и в выпавшем окне «Параметры поиска решения» выполняем настройки так, как показано на следующем скриншоте. Закрываем окно кнопкой «ОК».

4. В окне «Поиск решения» нажимаем кнопку «Выполнить» и ждем, пока Excel найдет решение. Это может длиться несколько минут.

5. После сохранения найденного решения кнопкой «ОК», результаты отобразятся в ячейках H7...H24 на листе Excel.

На следующей картинке показан найденный оптимальный линейный раскройный план.

Что в итоге?

Линейный раскрой в Excel заготовок для задач подобных рассмотренной в этой статье выполняется описанным выше методом за 10-15 минут! «Вручную», не зная метод индексов Канторовича, за такое время решения не найдешь.

Запустив «Поиск решения» несколько раз при разных параметрах поиска, удалось найти 5 различных планов рубки заготовок. Все 5 планов требуют одинаковое число заготовок – 93 и дают отходов всего 2,21%!!! Эти планы почти на 6% лучше, чем план, рассчитанный Покровским и более чем на 10% экономичнее «Традиционного» плана (смотри ссылку на первоисточник в первой части статьи). Очень достойный результат достигнут быстро и без применения дорогостоящих программ.

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

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

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

P.S. Ссылки на лучшие из бесплатных программ линейного раскроя, найденных мной в Сети:

http://stroymaterial-buy.ru/raschet/70-raskroy-lineynih-izdeliy.html

http://forum-okna.ru/index.php?app=core&module=attach§ion=attach &attach_id=7508

http://forum.dwg.ru/attachment.php?attachmentid=114501&d=13823277 74

http://www.planetcalc.ru/917/

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

Ниже статьи в блоке «Отзывы» можете написать свои комментарии, уважаемые читатели.

Алгоритм оптимального раскроя материалов для автоматизированного производства

Павел Бунаков

Задача рационального раскроя плитных материалов на исходные заготовки прямоугольной формы имеет большое практическое значение при проектировании изделий корпусной мебели. По своему характеру она является задачей дискретно-непрерывной структуры, относящейся к классу так называемых NP-полных задач, нахождение точного решения которых возможно только методом полного перебора всех возможных вариантов.

Математическая постановка задачи заключается в размещении плоских геометрических объектов (исходный набор заготовок) на листах заданных размеров (полноформатных листах) с минимальными отходами материала и учетом существующих ограничений. Ограничения первого типа - геометрические - являются классическими и определяются условиями принадлежности заготовок к области размещения, их взаимного непересечения, а также изотропным или анизотропным характером среды размещения (наличием или отсутствием направленного рисунка на поверхности объектов - текстуры).

Условия автоматизированного производства расширяют этот список ограничениями второго типа - технологическими, которые определяются характеристиками раскройного оборудования и организационно-технологическими особенностями производства:

  • максимальная и минимальная ширина отрезаемой полосы;
  • необходимость и размер предварительной обрезки края листа;
  • ресурс непрерывной работы режущего инструмента;
  • ширина режущей части инструмента;
  • максимальная длина сквозного реза;
  • вектор первых резов (продольный или поперечный раскрой);
  • количество одновременно раскраиваемых листов (размер пакета);
  • максимальное количество поворотов пакета;
  • минимальное расстояние между пилами в многопильных станках;
  • направление укладки заготовок на листе;
  • операционные припуски на сторону заготовки для последующей обработки.

Как видно, количественно технологические ограничения значительно превосходят геометрические. Кроме того, они могут варьироваться в широком диапазоне в зависимости от специфики конкретного предприятия.

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

где S i - площадь i -го обрезка материала, технологические критерии оптимизации имеют множественный и нередко эмпирический характер. В общем виде их можно объединить понятием «трудоемкость физической реализации раскроя», которая включает такие параметры, как общее количество и общая длина выполняемых резов, количество карт раскроя, количество поворотов пакета листов и переустановок ограничительных упоров на станке, геометрические параметры получаемых обрезков.

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

Рассмотрим функционирование алгоритма, основанного на переходе от площадного раскроя к линейному раскрою, с элементами эвристик, полученных экспериментальным путем.

Как известно, задача оптимального линейного раскроя имеет точное математическое решение, геометрическая интерпретация которого показана на рис. 1 для случая, когда мощность исходного множества заготовок равна двум. Оси системы координат размечаются с шагом, кратным типоразмерам заготовок (N и K ), до значения, не превышающего линейного размера области размещения (L ). Таким образом, на плоскости генерируется сетка, каждый узел которой соответствует некоторому варианту раскроя. Отрезок, соединяющий точки на осях координат, значения которых равны размеру области размещения, является границей подмножества узлов, соответствующих реальным вариантам раскроя (расположенных ниже границы). Тот из них, который находится ближе других к границе, и будет определять вариант раскроя, оптимальный по количеству отходов материала. Для ускорения поиска рассматриваются только те ячейки сетки, которые пересекает построенный отрезок (на рис. 1 они заштрихованы).

Единственным критерием оптимизации при линейном раскрое является минимизация отходов, поэтому получаемые варианты раскроя априорно являются технологичными.

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

  • нахождение оптимального варианта раскроя в двумерной постановке, каждая из которых соответствует проекции многомерной сетки на одну из координатных плоскостей (количество таких задач равно C 2 N , где N - количество типоразмеров заготовок);
  • нахождение минимального элемента в полученном векторе решений.

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

Исходя из этого сделан вывод о возможности перехода от площадного раскроя к суперпозиции линейных раскроев. Соответствующий алгоритм является рекурсивным и реализуется за три шага.

На первом шаге из исходного множества M формируется подмножество M k (δ) , объединяющее заготовки, главный линейный размер которых находится в диапазоне

L max (1- δ),

где L max - максимальный размер заготовки, 0 ≤ δ < 1 - допустимый разброс размеров. Под главным линейным размером понимается тот размер заготовки, который соответствует текущему направлению текстуры. При отсутствии или игнорировании направления текстуры он определяется как максимальное значение, выбранное из длины и ширины заготовки.

Величина получаемого при раскрое КИМ зависит от выбранного значения коэффициента δ:K ИМ = F (δ) . Теоретически это означает необходимость перебора вариантов формирования подмножества M k (δ) для всего возможного диапазона значений δ. Это неизбежно приведет к недопустимому увеличению времени раскроя. Экспериментальные исследования, проведенные на ряде мебельных предприятий, позволили сделать три вывода (рис. 3):

  • наибольшие изменения значений F (δ) приходятся на диапазон 0,05 ≤ d ≤ 0,2;
  • в указанном диапазоне изменение функции F (δ) носит плавный характер;
  • при значении δ > 0,2 величина КИМ практически не зависит от дальнейшего его увеличения.

На основании этих выводов при формировании M k (δ) берется фиксированное количество значений δ, что позволяет добиться приемлемого времени перебора вариантов раскроя. Практика показала, что без существенной потери качества раскроя можно варьировать значение δ в указанном диапазоне с шагом от 0,01 до 0,2.

На втором шаге заготовки из подмножества M k (δ) раскраиваются по алгоритму линейного раскроя. Это означает, что, во-первых, получается локально оптимальная по значению КИМ карта раскроя полосы для выбранного значения δ, а во-вторых, она является технологичной. Процедура формирования подмножества M k (δ) и линейный раскрой полосы выполняются для всех значений δ, после чего выбирается оптимальная карта раскроя, которой соответствует оптимальное подмножество M opt k .

Остаток материала в полосе для оптимальной карты раскроя, так же как и его остатки при размещении любого элемента подмножества M opt k , соответствующего значению δ ≠ 0, образует множество псевдополноформатных листов. Для каждого элемента этого множества рекурсивно повторяются рассмотренные выше операции. Это означает, что при выполнении каждой пары шагов мощность исходного множества заготовок уменьшается не только со стороны более «крупных» его элементов, но и со стороны более «мелких».

После раскроя всех псевдополноформатных листов проверяется мощность множества

M \ M opt k \ M i k ,

где M i k - подмножество заготовок, размещенных на остатках материала, полученного при формировании k -й полосы. Если она имеет ненулевое значение, то по отношению к указанному множеству вновь выполняются вышеописанные шаги, то есть формируется подмножество M k-1 (δ), из которого выбирается M k+1 opt .

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

На третьем шаге элементы множества S рассматриваются в качестве исходных заготовок для линейного раскроя полноформатных листов.

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

Для сравнительной оценки значений КИМ, получаемых при использовании традиционного алгоритма площадного раскроя и предлагаемого алгоритма, была произведена случайная выборка из 50 мебельных ансамблей, выпускаемых различными предприятиями. Для каждого ансамбля были выполнены два варианта раскроя. Результаты эксперимента представлены на рис. 4. Из него видно, что в большинстве случаев предлагаемый алгоритм (график красного цвета) дает большее значение КИМ. Таким образом, раскрой площадных материалов по рассмотренному алгоритму подходит не только для пильных центров, но и для обычных форматно-раскройных станков.

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