Cutting line

Назначение

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

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

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

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

  • Окнософт: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 Листы раскроя
  • Документация и примеры файлов: 60.00 Oknosoft:Cutting

Thu, 19 May 2016 06:27:58 +0000

Thu, 19 May 2016 06:17:45 +0000

Thu, 19 May 2016 06:15:30 +0000

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

Если нужно одновременно выделить несколько строк, которые необязательно расположены друг под другом можно воспользоваться дискретным выбором через кнопку Ctrl или пользоваться стрелками направления вверх или вниз, зажав при этом кнопку Shift. Отменить выполненную процедуру можно повторив вышеуказанные рекомендации в обратном порядке. Строки, которые были выделены, не только отличаются от остальных другим цветом, но и обозначены с помощью специального символа «•».

Подготовка листов

Чтобы грамотно выполнить необходимые расчеты, конструктору обязательно нужно знать заданные параметры материала заданного листа, подлежащего кроению, его геометрические размеры, текстуру и количество. Все эти информационные данные нужно будет внести в так называемую «Таблицу листов». Размеры в виде вещественных параметров Х и Y задает пользователь. В некоторых случаях вид может быть целым. Кнопочная панель, расположенная в верхней части рабочего экрана, представлена следующими функциями:

  • Выплывающий список с различными названиями используемых материалов. Чтобы выбрать нужный материал, достаточно кликнуть мышкой по подходящему названию из списка. В итоге выбранный материал будет присвоен всем строкам, которые в этот момент были выделены. Если же вы этого не сделаете, программа применит последний используемый программой материал.
  • Параметр под названием «Основные функции», оснащен выпадающим списком:

1) Выделить все – отвечает за выделение всех имеющихся строчек в таблице.

2) Очищение таблицы – удаляют все используемые строки и материалы из таблицы.

3) Удаление выбранных строк – устраняет только те строки, которые угодно пользователю.

4) Перемещение на склад – функция активизирует удаление выбранных строк из таблицы, но они сохраняются на складе материалов.

5) Удаление раскроенного материала – программа останавливается на текущем материале расчета, а именно удаляет обработанные материалы.

6) Перенесение в буфер обмена – в буфере обмена формируется копия выделенных строчек.

7) Дополнение буфера обмена – выбранные строчки появятся в конце списка элементов буфера обмена.

  • Функция «Сортировки по заданному параметру» также имеет выплывающий список:

1) Материал – позволяет выбрать все необходимые элементы из списка с одинаковым наименованием материала.

2) Длина – позволяет составить список из деталей и элементов, обладающих одинаковой длиной.

3) Высота – функция выполняет сортировку по конкретному параметру ширины или высоты материала.

4) Количество – сортирует элементы таблицы по заданному параметру.

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

Подготовка деталей

Чтобы грамотно выполнить все необходимые расчеты, конструктору нужно располагать всей необходимой информацией о параметрах используемого материала, его текстуре и количестве. Данные по деталям, которые должны быть раскроены в заданном проекте, обязаны быть представлены в «Таблице деталей». Для задания размеров по сторонам стоит применить оси X и Y. Они могут использоваться в целом или вещественном виде.

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

  • Выплывающий список с названиями материала.

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

  • Выплывающий список с названиями кромки.

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

  • Клавиши «Основные функции», оснащенные выпадающим списком:

1) Выделить все – выполняет полное выделение всех элементов таблицы.

2) Очистка таблицы – активирует устранение из таблицы всех строчек, связанных с характеристиками материала.

3) Удалить избранные строки – команда отвечает за удаление выбранных табличных значений.

4) Копировать в буфер обмена – программа санкционирует создание резервной копии выбранных данных в буфере обмена.

5) Добавить из буфера обмена – команда позволяет переместить необходимую информацию из буфера обмена в конец таблицы.

  • Клавиши «Сортировки по заданному признаку», оснащенные выплывающим списком:

1) Материал – учитывает все детали и элементы, выполненные из одного и того же материала.

2) Длина – учитывает протяженность деталей и элементов.

3) Высота – сортирует элементы и значения таблицы с учетом ширины и высоты.

4) Количество – сортирует элементы по количеству используемых деталей.

5) Признак вращения – сортирует детали в зависимости от того, можно ли их вращать в том или ином направлении, а также от типов совместного вращения.

  • Клавиша «Расположение торцевой ленты», оснащенная выплывающим списком:

1) Положение слева отвечает за маркировку конкретной торцевой ленты детали с соответствующей стороны.

2) Положение сверху отвечает за маркировку конкретной торцевой ленты детали с соответствующей стороны.

3) Положение справа отвечает за маркировку конкретной торцевой ленты детали с соответствующей стороны.

4) Положение снизу отвечает за маркировку конкретной торцевой ленты детали с соответствующей стороны.

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

  • Клавиша «Признак вращения», оснащенная выплывающим списком:

1) Не вращать – фиксирует деталь во время проведения процедуры раскроя так, чтобы она была неподвижной по отношению к текстуре листа.

2) Вращать – признак, позволяющий детали вращаться в любом направлении от текстуры листа, когда конструктор проводит процедуру раскроя.

3) Совместное вращение – положение детали, подлежащей раскроению, будет таким же, как и других деталей, выполненных из идентичного материала, которые были отмечены таким же признаком.

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

0 — Не вращать деталь.

1 — Вращать деталь.

2 — Совместное вращение.

  • Клавиша «Детали AutoCad», оснащенная выплывающим списком:

1) Добавить деталь AutoCad. Функция запускает работу диалогового окна выбора соответствующей детали. Важно сохранить расширение в формате dxf. Когда диалог будет завершен, на экране должна отобразиться визуальная картинка с требуемой деталью. На этом рабочем этапе можно либо загрузить деталь в конец таблички, либо нажать «Отмену». Поле заметок предназначено для записи наименования детали.

2) Показать деталь AutoCad. Команда запускает визуализацию соответствующей детали AutoCad в рабочей форме программы. Компонент не позволяет задавать размеры таких деталей по осям абсцисс и ординат, а также торцевую ленту. Именно поэтому расчет всех необходимых параметров выполняется в автоматическом режиме. Маркировка табличных данных обычно выполняется с помощью команды «Использовать отступ». Заданный отступ будет учитываться только в том случае, если напротив необходимого параметра был выставлен флажок. В противном случае программное средство будет работать с реальными размерами такой детали.

Импорт данных

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

  • Через спецификацию программного средства Cutting 2. Для этого нужно перейти на вкладку «Файл», которая ведет к закладке под названием «Импорт». Именно там вы без труда найдете еще одну вкладку «Из спецификации Cutting 2». Программа запустит диалоговое окно, в котором нужно будет определиться с выбором соответствующей спецификации. Текущие файлы имеют расширение «Cut2».

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

Программы для составления карт раскроя

Сначала я пользовался программой Cutting 2, затем Cutting 3 www.cuttinghome.com. Отличаются они довольно сильно. Но версия Cutting 2 мне понравилась больше. В третьей версии есть дополнительные возможности, которые по большому счету не очень-то и нужны для мелкого производства. Cutting 2 и сейчас помогает мне в предварительном расчете количества материала и длинны линий реза на большие заказы, например такие, как кухня. Для создания конечной карты раскроя я пользуюсь программой Nowy Rozkrój (Cut Optimiser или New Cut Manager ) от создателей программы PRO100. www.ecru.pl. Оба сайта можно переключить на русский и ознакомиться с описанием программ. А теперь опишу незамысловатый процесс создания карт раскроя. Видеоурок по теме.

Открываем любой проект, созданный нами в PRO100. Кликаем по вкладке Σ.

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

Кликаем по ней. Теперь мы можем таблицу с нашими элементами вставить в список деталей в Cutting 2. Но нам нужны только элементы основного материала, допустим ЛДСП толщиной18 мм. Поэтому открываем Excel и вставляем список элементов PRO100. Теперь выделяем те строки, в которых элементы не18 мми удаляем их. В результате остается таблица, состоящая из 4-х столбцов, в одном из которых во всех ячейках лишь цифра 18. Выделяем и удаляем этот столбец. Оставшиеся элементы выделяем и копируем. Запускаем программу Cutting 2. Таблица деталей справа.

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

Кликаем по значку Выполнить расчет.

Карта раскроя готова. Можно распечатать и использовать. Но я столкнулся с некоторыми неудобствами. Например, цифры маловаты, линии реза недостаточно отчетливы.

Люди, которые кроили для меня материал, были недовольны необходимостью использования увеличительного стекла. А вот для предварительного расчета стоимости изделия программа подошла идеально благодаря описанному выше переносу деталей из PRO100 в Cutting 2.

Программа Nowy Rozkroj более хороший оптимизатор.

Но все размеры деталей необходимо вводить вручную.

Программа рассчитывает сразу несколько вариантов раскроя.

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

Сначала в настройках я указываю вариант раскроя без полосы,

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

и запускаю окончательный расчёт. Оставшуюся горизонтальную полосу ходовых цветов материала продавец оставляет себе, что снижает себестоимость мебели. Карты раскроя, созданные программой Nowy Rozkroj, достаточно подробны и отчетливы, размеры отображаются отлично.

Результат раскроя может быть другим. Например, вы сделали оптимальный раскрой при варианте без полосы, и у вас получилось 3 листа и 3 детали. Это особенно важно, если этот цвет материала продавец не продаст полосой, а только листом. В этом случае примените следующий вариант:

При добавлении каждой детали убирайте отметку в таблице Свойства детали на позиции Структура.

Затем, глядя на свой проект, пройдите по деталировке и отметьте структуру в деталях, структура на которых может быть только согласна дизайну, т.е. другие варианты структуры на этих деталях не приемлемы. Если этот метод не помог, то уменьшите размеры скрытых деталей, таких, как цоколи и соединительные планки, на 10, или более, мм. Но не перестарайтесь.

Есть ещё один важный плюс у этой программы. Если вы отметили кромку на какой-либо стороне детали, то она не съедет с этой стороны на другую при повороте детали оптимизатором, что может произойти в других программах. В том случае, если торцевая кромка будет бумажной, размеры деталей остаются такими же, как в проекте, а если кромка ПВХ толщиной 1-2 мм, то не забывайте отнимать от размера смежной стороны с оклеиваемой толщину кромки.

Пример составления карт раскроя

На начало ролика, до момента запуска программы Nowy Rozkrój, не обращайте внимания. А далее все по теме. Небольшая техническая заминка.

Ошибка, с которой вы можете столкнуться при составлении карт раскроя

Если ваш лист, например, 2800 на 2070, а обрезка по стороне 10 мм, забыв о том, что на пропил нужно 4 мм, вы указываете размер детали 2790 на 600 с кромкой по 2790. В результате, кромка сползает на 600. Обратите на это внимание. Я однажды не проверил карту и отдал её в работу. Во-первых, ребята намучились, когда клеили кромку на сторону 600, т.к. деталь упиралась в дверь мастерской, пришлось двигать станок. Никто и не думал, что расстояние от станка до стены 2,5 м может быть когда-либо недостаточным. А во-вторых, мне пришлось заплатить за то, чтобы мне поклеили кромку по длинной стороне, а в тот момент я на это не рассчитывал. Поэтому, будьте внимательны.

Ошибка, с которой вы можете столкнуться при составлении карт раскроя

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

Кроме того, предварительно сформированная карта раскроя поможет вам правильно оценить требуемое кПодробнее

Когда расчет будет выполнен, на рабочем поле должно возникнуть окно с изображение диаграммы раскроя. Добиться запуска такой процедуры можно через соответствующую вкладку блокнота. Она называется «Диаграммы раскроя». Также можно воспользоваться комбинацией команд «Файл»-«Диаграммы раскроя».

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

Чтобы хранить новые материалы или остаточные средства после предыдущих сеансов кроения, вы можете воспользоваться складом материалов. Запустить это рабочее окно необходимо с помощью соответствующей закладки блокнота с многочисленными страницами. Она называется «Склад материалов».

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

Страница 1 из 2

Уважаемые пользователи, хотим Вас проинформировать о том, что некоторые антивирусные программы ложно срабатывают на дистрибутив программы MediaGet, считая его зараженным. Данный софт не содержит никаких вредоносных программ и вирусов и многие из антивирусов просто Вас предупреждают, что это загрузчик (Downloader). Если хотите избежать подобных проблем, просто добавьте MediaGet в список доверенных программ Вашей антивирусной программы.

Выбрав нужную версию программы и кликнув ссылку, Вам на компьютер скачивается дистрибутив приложения MediaGet, который будет находиться в папке «Загрузки» для Вашего браузера. Находим этот файл и запускаем его.

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

В следующем окне нажимаем кнопку «Продолжить», те самым принимаем пользовательское соглашение. Далее происходит установка приложения, которая занимает некоторое время.

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

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

Опубликовано 02 Дек 2015
Рубрика: Справочник Excel | 27 комментариев

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

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

Не смотря на кажущуюся простоту, решение задач линейного раскроя является весьма не легким, но стоящим делом. Внедрение научного подхода к раскрою погонажных материалов позволяет снизить расходы на них иногда более чем на 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<Loj<Lдmin).

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

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

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

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

D7: 4

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

E7 и F7:

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

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

D8: 3

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

E8: 1

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

F8: 1

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

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

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

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

Прошу уважающих труд автора скачать файл с примером после подписки на анонсы статей. Подписные окна расположены в конце статьи и наверху страницы.

Ссылка на скачивание файла с примером: lineynyy-raskroy-v-excel (xls 38,5KB).

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

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

Loj=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) было на блоге уже однажды рассмотрено в статье «Бак для воды? «Поиск решения» в Excel!». Думаю, что этот замечательный инструмент достоин пристального внимания и еще не раз поможет изящно и быстро решить ряд новых нетривиальных задач.

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

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

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

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

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

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

Другие статьи автора блога

На главную

P. S. (11.06.2019)

В статье «Программа для раскроя в Excel и Calc» представлено решение автоматизации заполнения вариантов (схем) раскроев. Для поиска оптимального плана раскроя кроме надстройки Excel Solver использованы более мощные инструменты: NLPSolver и OpenSolver.

Статьи с близкой тематикой

  1. Артур 03 Дек 2015 00:14

    Интересная тема, Александр.

    В работе часто пригождается. с радостью изучу.

  2. Роман 03 Дек 2015 13:26

    Прекрасная работа, спасибо!

  3. Михаил 03 Дек 2015 13:29

    Спасибо! Очень интересно!

  4. Анатолий 03 Дек 2015 16:39

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

  5. MichaelCH 07 Дек 2015 15:39

    Тема линейного раскроя достаточно интересная, для себя решил двумя способами:

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

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

    Можно использовать заготовки разного размера с ограничением или без ограничения их количества.

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

    2й способ — решение как частный случай «задачи о рюкзаке» («сумма подмножеств»), в случае когда рюкзаков много. В основе решения динамическое программирование.

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

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

  6. Александр Воробьев 07 Дек 2015 16:03

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

    Так как это было достаточно давно, то сегодня было бы интересно разобраться с возможностями и сферой применения «новых» алгоритмов — «генетического» и «муравьиной колонии».

  7. MichaelCH 07 Дек 2015 16:38

    Относительно «генетического» и «муравьиного» алгоритма.

    Сам не изучал и не применял эти методы для задачи линейного раскроя.

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

    «Генетический» алгоритм хорошо себя зарекомендовал для двухмерного раскроя. Думаю, что другого эффективного метода для 2D-раскроя не найти (полный перебор не применим на практике). Раскрой будет зависеть на сколько качественно реализованы мутации.

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

    PS. Александр, а Вы используете на практике линейный раскрой? Хочу предложить сравнить разные алгоритмы на реальных данных.

  8. MichaelCH 08 Дек 2015 12:19

    Относительно раскроя указанных данных.

    Их можно раскроить используя 93 заготовки.

    Вариант 1. Максимизация полезного остатка:

    330*2 + 270 + 190*3 = 1500 (42 повторения), остаток — 0

    330*2 +270*3 = 1470 (32 повторения), остаток — 30

    270*4 + 190*2 = 1460 (17 повторений), остаток — 40

    330*3 + 190*2 = 1370 (1 повторение), остаток — 130

    190 = 190 (1 повторение), остаток — 1310

    Использовано 5 различных вариантов схем раскроя, удалось сохранить полезный остаток размером 1310мм

    отходы (за вычетом полезного остатка) составили 0*42 + 30*32 + 40*17 + 130 = 1770мм, что составляет 1,27% от размера заготовок

    Вариант 2. Минимизация количества переходов:

    330*2 + 270 + 190*3 = 1500 (27 повторений), остаток — 0

    270*2 + 190*5 = 1490 (17 повторений), остаток — 10

    330*2 + 270*3 = 1470 (49 повторений), остаток — 30

    В результате получилось деталей чуть больше, чем требовалось:

    330мм — 152шт (+1)

    270мм — 208шт (+2)

    190мм — 166шт (+3)

    При этом используется всего три различных варианта раскроя.

  9. Александр Воробьев 08 Дек 2015 18:04

    Да, чем меньше переходов, безусловно, тем лучше… Оба, предложенных Вами варианта, хороши! Думаю, их можно получить, используя описанный в статье метод, добавив иррациональные на первый взгляд раскрои и введя дополнительные ограничения. Конечно, при по-заказном производстве изготовление лишних деталей — это плохо, а вот получение делового остатка всего лишь в единственном экземпляре вместо металлолома — это здорово! Каким путем Вы получили представленные варианты решений?

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

  10. MichaelCH 08 Дек 2015 19:52

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

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

    С другой стороны, какая разница получаются ли дополнительные детали или нет.

    Общее кол-во заготовок — 93шт, суммарный размер всех заготовок — 93*1500 = 139500мм

    необходимо получить детали: 330*151 + 270*206 + 190*163 = 136420мм

    общие отходы составят 139500-136420 = 3080мм или 2,21% (3080/139500 = 0,0221)

    В разных производствах по разному относятся к отходам и переналадке.

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

    А, например, при раскрое рулонов пленки, уже не так важно, получаются ли остатки, все обрезки являются отходом. Важным фактором является именно переналадка (перестановка ножей), т.к. эта процедуры достаточно трудоемкая.

    Смогу подробнее ответить на Ваши вопросы по скайпу или почте (m-ch собака mail.ru)

  11. Артем 29 Янв 2016 15:20

    Добрый день

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

    Спасибо

  12. Александр Воробьев 30 Янв 2016 11:52

    Картинку раскроя можно нарисовать в любом графическом редакторе или CAD-программе. Можно нарисовать и в Excel. (И не такое люди рисуют!!!).

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

  13. Артем 30 Янв 2016 16:11

    Спасибо за ответ

    теперь ясно

  14. MichaelCH 07 Фев 2016 17:26

    Выложил демо-версию своей программы: excelworld.ru/forum/3-21304-1

  15. AstraRaskroy 04 Июл 2016 18:16

    А вы бы могли привести пример решения в Excel e задачки из книги Синдром стога сена Голдратта?

    (astraraskroy.ru)

  16. Александр Воробьев 04 Июл 2016 19:17

    Кому интересно — почитайте у Сергея Викторовича Багузина:

    baguzin.ru/wp/wp-content/uploads/2013/09/Э.Голдратт. -Синдром-стога-сена.pdf

    Авторам вопроса, я думаю, ответ не нужен.

  17. Алексей Алимпиев 27 Сен 2016 21:48

    «forum.dwg.ru/attachment.php?attachmentid=114501&d=13823277 74»

    этот надо контролировать — тестировал его ранее, выдает при большом количестве деталей глюки: повторные строки и т.п.

  18. Александр Воробьев 28 Сен 2016 07:55

    Спасибо за информацию, Алексей.

  19. MichaelCH 30 Сен 2016 12:26

    В файле RASKROY_GRUPP.xls используется «жадный» алгоритм, который крайне не эффективный на большом количестве деталей

  20. Борис 13 Окт 2016 11:09

    Спасибо. Полезно, понятно. Борис.

  21. Мария 17 Фев 2018 13:27

    Ищу программу по оптимальному раскрою арматуры длиной 6 м, чтобы не считать вручную. Хочу попробовать ваш вариант

  22. Александр Воробьев 17 Фев 2018 21:37

    Попробуйте.

  23. Владимир 30 мая 2018 11:51

    Спасибо, что поделились — решаю задачу с целью минимизации материала и реза при модернизации теплицы, надеюсь поможет 🙂

  24. Дмитрий 23 Июл 2018 02:09

    Спасибо

  25. Цветомир Ценов 16 Дек 2018 00:51

    Здравейте,

    аз Ви поздравявам за Вашият труд. Это означало подчеркивать число в колоне H.

    Поздравьте,

    Цветомир Ценов

  26. Юрий 09 мая 2019 11:59

    Спасибо

  27. Ильшат 17 Окт 2019 20:34

    Добрый день! Мы хотим приобрести программный продукт по раскрою линейного металла. Так же при необходимости, нам важно что бы можно было доработать продукт под наши нужды (дизайн)

Ваш отзыв

Оставьте комментарий