Линейный раскрой excel скачать

gumel

, 27 марта 2015 в 12:45

#1

Что значит «Безусловный отход»???

PlayDrag

, 28 марта 2015 в 09:20

#2

Цитата:

Сообщение #1 от gumel
Что значит «Безусловный отход»???

Это длина остатка, который для Вас не будет иметь ценности в качестве «делового остатка».
Это учитывается при выполнении алгоритма.

v.psk

, 30 марта 2015 в 13:27

#3

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

gumel

, 02 апреля 2015 в 08:39

#4

Спасибо, хорошая штука.

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

Отчего это зависит и какие ограничения???

PlayDrag

, 05 апреля 2015 в 23:13

#5

Цитата:

Сообщение #4 от gumel
Спасибо, хорошая штука.

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

Отчего это зависит и какие ограничения???

Это значит, что не совпадает один из ключевых параметров.
Прошу выслать конкретный пример «большой спецификации» исправлю ошибки.
[email protected]

gumel

, 08 апреля 2015 в 10:51

#6

Цитата:

Сообщение #5 от PlayDrag
Цитата:Сообщение #4 от gumelСпасибо, хорошая штука.

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

Отчего это зависит и какие ограничения???

Это значит, что не совпадает один из ключевых параметров.
Прошу выслать конкретный пример «большой спецификации» исправлю ошибки.
[email protected]

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

adibi1izm

, 30 декабря 2015 в 10:01

#7

А не известно случайно когда нибудь возможна доработка что бы была возможность при расчёте использовать больше 200 хлыстов?

МСергей

, 11 января 2016 в 11:52

#8

У меня есть макрос, который считает число хлыстов без ограничений. Если хотите могу поделиться. Автор не я, поэтому выложить не могу

m4shaman

, 27 января 2016 в 17:50

#9

Цитата:

Сообщение #8 от МСергей
У меня есть макрос, который считает число хлыстов без ограничений. Если хотите могу поделиться. Автор не я, поэтому выложить не могу

Поделитесь. [email protected]

MichaelCH

, 14 июля 2016 в 19:02

#10

Цитата:

Сообщение #9 от m4shaman
Поделитесь.

Реализация в Excel: http://www.excelworld.ru/forum/3-21304-1

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

Задачу линейного раскроя можно решать разными способами:
1. Полный перебор, как правило, не возможно реализовать в реальных условиях.
2. Самый эффективный способ — целочисленное линейное программирование (метод Гомори, как целочисленный вариант симплекс-метода). В качестве инструмента можно использовать Solver из MS Excel. Но здесь есть ряд ограничений — необходимо найти все варианты сложения исходных деталей, не превышающих размер заготовок (а вариантов может быть несколько тысяч или сотен тысяч). Ограничение Solver’a — 200 изменяемых ячеек.
3. «Жадный» алгоритм. У данного алгоритма есть вариации, основное достоинство — высокая скорость. Применим для быстрой оценки раскроя, либо когда скорость важнее оптимизации.
4. Решать как частный случай задачи о рюкзаке (сумма подмножеств) и выбор наилучшего варианта из имеющихся.
5. Про генетический алгоритм ничего сказать не могу, т.к. не изучал его.

Реализовал собственный алгоритм линейного раскроя в Excel, который основан на решении задачи о рюкзаке (сумма подмножеств) методом целочисленного динамического программирования. Производится генерация различных вариантов раскроя в зависимости от сортировки исходных деталей и заготовок и выбор наилучшего решения.
К достоинству можно отнести — достаточно эффективный результат по сравнению с «жадным» алгоритмом, а также при сравнении с результатом других программ линейного раскроя.

Сравнительные тесты различных специализированных программ линейного раскроя применительно к оконному производству проводилось здесь: http://forum-okna.ru/index.php?showtopic=35118
Применяемый мной алгоритм обошел все специализированные программы.

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

Domo -версию программы можно скачать здесь или здесь, она полностью функциональна, доступен расчет с помощью динамического программирования (DP).
Расчет с помощью линейного программирования (LP) отключен.
Также отключена возможность составления и экспорта отчетов.

Можно использовать до 20 различных размеров заготовок и до 90 различных размеров деталей.
Есть возможность задать ширину реза, размер торцевой кромки, размер полезного (делового) остатка, возможность раскраивать в два профиля (если это требуется)

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

UPDATE, декабрь 2021
PS:
В связи с нехваткой свободного времени на адаптацию программы по линейному раскрою для нужд всех желающих, а также с учетом отсутствия личной мотивации в этом, выкладываю ссылку на рабочую программу с открытым кодом: https://disk.yandex.ru/d/wLjg9aMUpoGtLw
Реализованы разные алгоритмы по раскрою
Тем, кто знаком с VBA, не трудно будет внести изменение в код, если функционала текущей версии недостаточно.
Либо можно воспользоваться веткой фриланс на данном форуме, где специалисты за разумную оплату смогут реализовать все хотелки.
Для дальнейшего продолжения темы по раскрою есть моя реализация двумерной упаковки (раскроя) в полуограниченную полосу с использованием линейного программирования: http://www.excelworld.ru/forum/3-48430-1

PPS:
Если программа по раскрою окажется полезной и возникнет непреодолимое желания меня отблагодарить, то не откажусь от любого доната
ЯД: 410012329135704

UPDATE, апрель 2022
Выкладываю небольшой калькулятор с примерами, который работает в 3х режимах (быстро, медленно и очень медленно)
т.к. используется внешняя dll, то будет работать только в Excel 32бит

Вопрос.
Стоит задача (очень насущная и трудоемкая — приходится постоянно выполнять) по раскрою линейного профиля материала (брус, прут, труба). Раскрой требуется выполнять с максимальной экономией материала (деловой отход также учитывается и идет в дело при раскрое). Алгоритм раскроя известен. Вот только очень трудоемко выполнять эту задачу, особенно, если попадается большой набор материала разной длины. Как я понимаю, задача чисто арифметическая — перебор значений для максимального заполнения всей длины заготовки. Возможно ли ее решить силами самого Excel? Или для этой задачи требуются ресурсы языка программирования (наподобие Visual Basic)?

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

Перерыл весь Инет. Имеются готовые программы подобного рода, но все имеют один (или несколько недостатков) или работают ужасно. (Например, одна из них (RealCut) выполнила мою задачу — заготовки с обоими косыми углами разной величины нужно было накроить из материала — неправильно. Вывела результатом работы раскрой, где сочетание возможное равных углов заготовок не было учтено вообще, что привело к неэкономии материала. Переделал все вручную с гораздо большей экономией. Хотя в программе имеется инструмент для задания углов заготовки.) Все это делает их непригодными для моих конкретных условий.

Насколько понял из прочтений материалов на программистких форумах, задача из разряда линейного программирования и давно решена. Вот только решений не нашел готовых. А сам, своими силами программировать я не смогу — не хватает знаний и времени для восполнения этих знаний.

Подскажите, кто что знает по этому вопросу. Помощь очень нужна!


Да, задачка непростая. Сталкивался с ней, но уже давно. Подзабыл. У нас было несколько тем по раскрою. Введите в поисковое окошко слово «раскрой».


Поиск по ключевому слову «раскрой» результатов не дал. Скачал архив форума (до 2008 года) — результат аналогичный. Жалко…


Цитата: tomeo от 29.10.2010, 23:47
Поиск по ключевому слову «раскрой» результатов не дал. Скачал архив форума (до 2008 года) — результат аналогичный. Жалко…

Ну как же, я ведь проверил, прежде чем посоветовать. Конечно, полностью готового решения для excel, кажется, нет, но очень много аналогичных задач и есть ссылка на платную, но недорогую, программку. Вот, что я в течение пяти минут нашел на сайте:
http://www.cutting.com.ua/
https://forum.msexcel.ru/microsoft_excel/karta_raskroya-t1320.0.html
https://forum.msexcel.ru/microsoft_excel/summirovanie_znacheniy_kolonki_na_predmet_poiska_summy_chisel_ravnoy_x-t977.0.html
https://forum.msexcel.ru/microsoft_excel/vybrat_iz_stolbtsa_s_chislami_v_summe_maksimalno_priblizhennoe_k_zadannomu_chislu-t967.0.html
https://forum.msexcel.ru/microsoft_excel/nebolshie_problemmy_s_filtrom-t2463.0.html


Спасибо за ссылки! (Вечно я тороплюсь…) Изучу их детально. Предмет нужный для меня.


#5




31.10.2010, 00:24

Последнее редактирование: 31.10.2010, 00:27 от Алексей Шмуйлович

tomeo, я из спортивного интереса написал небольшую программку для раскроя. Сразу оговорюсь — я математического алгоритма оптимизации для этой задачи не знаю, поэтому действовал наобум. Но результат меня устроил. Я постарался набор условных данных сделать максимально правдоподобным. В свое время я работал на производстве пластиковых окон. У нас отходы профиля доходили до 10-15 %. Итак я имитировал набор заготовок (около 2,5 тыс. шт) двух типоразмеров 700 +/- 100 мм — порядка 65% и 1400 +/- 100 мм — остальное. Это распределение привязано к среднестатистическому окну 1400 х 1400. Деловыми остатками считал остатки от 500 мм включительно. Процент отходов по моему алгоритму получается 1-3 %. Но нужно еще учитывать, что деловые остатки по длине вряд ли имеют нормальное распределение. По опыту, коротышки накапливаются гораздо быстрее, чем их удается использовать, так что приходится периодически устраивать чистку завалов. Отсюда реальный процент отходов гораздо выше.
И еще я не уверен, что время на поштучный учет деловых остатков не окажется дороже, чем сэкономленный профиль :). Мы его так и не внедрили, хотя пытались (нас аудиторы и всякие проверяльщики на это пытались вынудить).

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

Собственно все.

Прикладываю файл. Заполняйте два листа — Детали и Остатки и нажимайте кнопку Раскроить на листе Детали. По результатам откроется лист Карта раскроя, а состояние склада после раскроя можно найти на листе Остатки после раскроя.

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


Здравствуйте, Алексей Шмуйлович.

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

Да, предложенный Вами алгоритм в целом именно таков. Попытаюсь объяснить его так, как он видится и делается мною.
1. На складе имеются заготовки опеределенной длины (перечень возможных размеров — 12 000мм, 9 000мм, 6 000мм). Кол-во заготовок роли не играет — считается, что их неограниченное колличество.
2. Нужно из одной длины (допустим, 12 000мм) заготовки накроить детали заданной длинны и колличества (к примеру, 7950мм — 33шт., 8590мм — 22шт., 2543мм — 22шт., 2542мм — 22шт.).
3. Берется самая длинная деталь и улаживается на заготовку. При этом стремится надо в к тому, чтобы уложилось целое их число, без остатка. И так далее — по нисходящей.
4. Если все же имеется остаток (тут играет роль и его длина — если это <= 250-300мм — то он не учитывается при дальнейшем расчете), этот остаток вычисляется от длины заготовки, и нужная недостающая длина отпиливается от новой заготовки (так как имеем дело с металлопрофилем, имеют место сварные швы детали, но не более одного шва на одной детали). Получается своеобразная цепочка. Одна из задач — сделать эту цепочку краткой (в приложенной таблице имеются примеры).

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

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

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

Хотелось бы услышать Ваше мнение.


Да, виноват. Спешил на поезд и забыл файл приложить.
Бегло посмотрел Ваш файл. Конечно, косые резы все усложняют.
Ведь у меня в алгоритм перебор вариантов вообще не заложен — все построено на сортировке списка деталей по убыванию и использованию самой короткой заготовки из возможных. И в принципе работает. А тут, действительно, нужно перебирать. Единственное, что приходит пока в голову — осуществлять подбор для деталей с одинаковым углом реза отдельными группами. Тогда длину можно искусственно уменьшить на длину одной полки угла.
В общем, обдумайте. Если сможете дать формализованный алгоритм, может быть переделаем и программку.
А Вы на VBA совсем не программируете?


К сожалению, на VBA не умею програмировать. Хотя есть начальные навыки программирования. Допустим, вложения по тем ссылкам, что Вы привели, открывал и пробовал анализировать. Что-то из исходного текста понимаю. Язык то, в общем, не сложный… Когда-то пытался Python самостоятельно изучать… :-)
Ну, это отступление от темы. Главное — самостоятельно написать подобную программу на VBA, к сожалению, мне не по силам…
Но желание автоматизировать (облегчить, исключить возможные ошибки и повысить скорость соей работы — целых 3 плюса!) у меня большое… :-)
А что значит — формализованный алгоритм? (Хотя, могу догадываться, что это)…


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


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


Хорошо. Постараюсь сделать это.



Задачу линейного раскроя можно решать разными способами:
1. Полный перебор, как правило, не возможно реализовать в реальных условиях.
2. Самый эффективный способ — целочисленное линейное программирование. В качестве инструмента можно использовать Solver.
Но здесь есть ряд ограничений — необходимо найти все варианты сложения исходных деталей, не превышающих размер заготовок (а вариантов может быть несколько тысяч или сотен тысяч). Ограничение Solver’a — 200 изменяемых ячеек.
3. «Жадный» алгоритм. У данного алгоритма есть вариации, основное достоинство — высокая скорость. Применим для быстрой оценки раскроя, либо когда скорость важнее оптимизации.
4. Решать как частный случай задачи о рюкзаке (сумма подмножеств) и выбор наилучшего варианта из имеющихся.
5. Генетический алгоритм и алгоритм муравьиной колонии. Ничего про эти алгоритмы сказать не могу, т.к. их не изучал.

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

Примеры получаемых раскроев можно посмотреть здесь: https://yadi.sk/d/B_fg089lhsMk4
Если будет заинтересованность в алгоритме, то можете обратиться ко мне в личку.



  • Профессиональные приемы работы в Microsoft Excel

  • Обмен опытом

  • Microsoft Excel

  • Расчет линейного раскроя в Excel

 

Sla_0412

Пользователь

Сообщений: 206
Регистрация: 17.11.2013

Встал вопрос, возможно ли создать средствами эксель оптимизацию по раскрою линейных материалов.
Чтобы было понятнее  даю исходные данные примера:
Имеются детали с указанием их длин в столбец  2500, 900, 2200 ….
Исходная длина заготовки =3000
Задача: сколько целых полотен по 3000 уйдет на раскрой деталей  2500, 900, 2200 ?
Причем, программы по раскрою , понятно что существуют и в них присутствуют карты в графическом виде. От эксель требуется только нахождение целых полотен по количеству без карт.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Задачу линейного раскроя можно решать разными способами:
1. Полный перебор, как правило, не возможно реализовать в реальных условиях.
2. Самый эффективный способ — целочисленное линейное программирование. В качестве инструмента можно использовать Solver.
Но здесь есть ряд ограничений — необходимо найти все варианты сложения исходных деталей, не превышающих размер заготовок (а вариантов может быть несколько тысяч или сотен тысяч). Ограничение Solver’a — 200 изменяемых ячеек.
3. «Жадный» алгоритм. У данного алгоритма есть вариации, основное достоинство — высокая скорость. Применим для быстрой оценки раскроя, либо когда скорость важнее оптимизации.
4. Решать как частный случай задачи о рюкзаке (сумма подмножеств) и выбор наилучшего варианта из имеющихся.
5. Генетический алгоритм и алгоритм муравьиной колонии. Ничего про эти алгоритмы сказать не могу, т.к. их не изучал.

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

Примеры получаемых раскроев можно посмотреть здесь:

https://yadi.sk/d/B_fg089lhsMk4

Если будет заинтересованность в алгоритме, то можете обратиться ко мне в личку.

Тесты эффективности различных специализированных программ линейного раскроя есть здесь:

http://forum-okna.ru/index.php?showtopic=35118

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

Изменено: MCH03.02.2016 20:16:42

 

Sla_0412

Пользователь

Сообщений: 206
Регистрация: 17.11.2013

Я хочу объяснить цель только в рамках своей узкой задачи.
Сейчас сотрудничаю с фирмой по производству мебели. Задача была поставлена по оптимизации кухонных столешниц длиной 3 и 4 метра в основе. При просчете дизайнер рисует кухню , где максимальное количество деталей в раскрое не превышает 5-6 штук. Но как правило — 90% случаев до 3-х деталей. На эснове этого, можно конечно все гораздо быстрее разложить врукопашную, но это одна из тех многих точек внимания , которую нужно убрать из ручного ввода. Ньюансов и так предостаточно . Дизайнер скидывает кухонную деталировку и нажимает кнопочку расчитать,  далее макрос выполняет работу по выводу итогов. У меня и так к экселю подключена программа оптимизации раскроя, в которую автоматом вгружаются детали для оптимизации (полотна). Я просто подумал, что профили можно реализавть и макросом, тем самым упростив работу людей.

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Если у Вас расчет раскроя автоматизирован, то зачем тогда делать дополнительный расчет?
Можно сделать быструю оценку, сколько максимально нужно заготовок используя «жадный» алгоритм.
Реализуется очень просто, работает быстро, гарантированно потребуется заготовок не более, чем расчитал «жадный» алгоритм.
Учитывая, что у Вас 5-6 деталей, то алгоритм, как правило, будет выдавать оптимальный результат.
Для реализации примера выложите данные в виде файла в том виде, как они у Вас храняться и какой должен получится результат.

 

Sla_0412

Пользователь

Сообщений: 206
Регистрация: 17.11.2013

 видео пример

https://drive.google.com/file/d/0BxrfsCg1fMBOR3p4cUJFZlZVRDA/view?usp=sharing

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

Изменено: Sla_041230.09.2015 23:07:44

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Пример реализации «жадного» алгоритма для задачи линейного раскроя.
Он не самый эффективный, но очень быстрый

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Реализацию программы по линейному раскрою на базе Excel выложил здесь:

http://www.excelworld.ru/forum/3-21304-1

 

Sla_0412

Пользователь

Сообщений: 206
Регистрация: 17.11.2013

Спасибо вам. В любом случае интересно.

 

Сливочный

Пользователь

Сообщений: 178
Регистрация: 27.11.2013

Win 10, MSO 2016

Здравствуйте уважаемые профессионалы, у меня один большой (для меня большой) вопрос.

Имеется готовый макрос, взялся его усовершенствоваться, но мозгов к сожалению на всё не хватает..   Что-то получилось улучшить и внедрить, что-то получилось улучшить, но внедрить не получается.. а что-то даже не понимаю, потихоньку изучаю (Уокенбах Дж. — Excel 2010. Профессиональное программирование на VBA — 2012), но время как всегда не ждёт.

1. Необходимо разложить по полочкам что в этом макросе и как работает (могу показать до куда я разобрался, не много :)) .

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

если это большой запрос для бесплатной помощи, можно обсудить величину «спасибо»

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

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

PS: Вы мне так и не ответили на мое письмо в почте.

 

elnino

Пользователь

Сообщений: 3
Регистрация: 17.12.2016

#12

17.12.2016 22:50:11

Цитата
MCH написал: Пример реализации «жадного» алгоритма для задачи линейного раскроя GreedyAlgo.xlsm  (16.18 КБ)

Все работает пока не вводишь значения ширины реза ((
Или я что то не так делаю?

Прикрепленные файлы

  • GreedyAlgoError.xlsm (15.28 КБ)

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

#13

18.12.2016 12:53:25

Все правильно считает, вы детали 12000мм не сможете сделать из заготовки 12000мм при ширине реза 1мм
т.к. нужны заготовки как минимум 12001мм, поэтому данные детали пропускаются
В коде заложен алгоритм, что для изготовления каждой детали ее нужно отпилить от заготовки и каждый рез обязателен.
Чтобы игнорировать последний рез (не обязательность последнего реза), то достаточно к размеру заготовки прибавить ширину реза и формула будет иметь вид:

Код
=GreedyAlgo(A8:A11;B8:B11;B2+B3;B3;B4)

или уберите из кромки ширину реза:

Код
=GreedyAlgo(A8:A11;B8:B11;B2;B3;B4-B3)

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

Изменено: MCH18.12.2016 12:58:50

 

elnino

Пользователь

Сообщений: 3
Регистрация: 17.12.2016

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

Изменено: elnino18.12.2016 13:47:46

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

#15

18.12.2016 13:56:34

Цитата
elnino написал:
Еще этот алгоритм, по той же самой причине, видимо, не понимает когда рез всего один и заготовка режется на две ровные части.

из заготовки 12000 не возможно сделать две по 6000 если на рез уходит несколько мм (если ширину реза и кромки прировнять к нулю, тогда возможно)

 

elnino

Пользователь

Сообщений: 3
Регистрация: 17.12.2016

Нет, я имею ввиду, что если нужно разрезать 12м на 2 ровные части с шириной реза 2мм, то получится в реальной жизни два куска по 5999мм.
Но алгоритм считает что от каждого куска нужно отрезать по 2мм.
Таким образом для этой задачи он заложит две заготовки.
Другая ситуация, более реальная. Есть несколько деталей длиной 2158, 149, 856, 5148, 516, 896, 2265. Невооруженным глазом сразу не сообразить, что с учетом резов 2мм, получится ровно труба 12000мм (2158+2+149+2+856+2+5148+2+516+2+896+2+2265=12000), однако алгоритм к каждой детали добавит по 2мм и заложит две заготовки вместо одной. И это проблема не жадного алгоритма, а его конкретной реализацией, как я понимаю.

MCH

, а в вашем алгоритме учтен этот момент?

Изменено: elnino19.12.2016 01:35:11

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

#17

19.12.2016 07:01:14

Цитата
elnino написал:
а в вашем алгоритме учтен этот момент?

В алгоритме заложено, что последний рез обязателен, но я описал, как обойти это ограничение, нужно просто добавить к размеру заготовки ширину реза
Соответственно получится:
2158+2+149+2+856+2+5148+2+516+2+896+2+2265+2=12000+2
Это математическое решение необязательности последнего реза (когда последний рез необязательный или его можно совместить с кромкой).

Если рассудить логически, то пила, как правило, режет автоматически и какая ей разница, сколько ей отрезать в конце от заготовки 2мм, 1мм или 0мм (сделать рез в воздухе)
таким образом будут допустимым следующие решения:
5999+2+5999+0=12000
5999+2+5998+1=12000
5998+2+5998+2=12000

Данный математический подход можно применить в любом алгоритме линейного раскроя

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

shk, Вы прорекламироваться зашли? Можно, но с разрешения администратора. Без разрешения нарываетесь на бан.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#19

19.06.2017 15:41:23

при этих исходных:

Цитата
Исходная длина заготовки =3000
Задача: сколько целых полотен по 3000 уйдет на раскрой деталей  2500, 900, 2200 ?

требуется 3 заготовки
если например, 2500 нужно А шт. 2200 нужно В шт., а 900 нужно С шт.
то всего заготовок нужно
А + В + Целое((С+2)/3)
и считается это устно без Excel

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Игорь, дата сообщения (перед моим) какая?

 

да, уж… не слабо
а для информации: по истечении скольких лет НЕЛЬЗЯ писать в тему? в т.ч. если это решение по существу заданного вопроса
решения ведь не только для автора, а для всех, кто столкнулся с аналогичным вопросм и нашел на форуме ответ на него

Изменено: Ігор Гончаренко19.06.2017 15:53:50

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

#22

19.06.2017 15:53:35

Цитата
Ігор Гончаренко написал:
и считается это устно без Excel

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

Википедии

:
Сколько заготовок размером 5600 мм нужно для изготовления следующих деталей (ширина реза равна нулю):
размер — количество
1380 — 22
1520 — 25
1560 — 12
1710 — 14
1820 — 18
1880 — 18
1930 — 20
2000 — 10
2050 — 12
2100 — 14
2140 — 16
2150 — 18
2200 — 20

Скрытый текст

Изменено: MCH19.06.2017 15:53:58

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

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

 

Sla_0412

Пользователь

Сообщений: 206
Регистрация: 17.11.2013

Приветствую всех. Раз уж тема снова всплыла. Задам в ней вопрос. Существует много программ где нет встроенного раскрой прямоугольных деталей. Более того данные зачастую передаются через Excel в программы раскроя. По опыту вижу, что у Excel нет никаких противопоказаний для того, чтобы таковая программа была реализована прямо в нем. (Кроме конечно того, такая программа станет бесплатным достоянием общественности.)
В противовес -автор мог бы себя прорекламировать. Так почему же такой программы до сих пор нет?

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

#25

19.06.2017 16:27:08

Цитата
Sla_0412 написал:
Excel нет никаких противопоказаний для того, чтобы таковая программа была реализована прямо в нем

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

 

Sla_0412

Пользователь

Сообщений: 206
Регистрация: 17.11.2013

Не уверен что дело в времени. По опыту-  использовал Базис раскрой, Новый Раскрой-Pro100,  
PaneCut. Первые две-делают раскрой практически моментально. Третья о-очень медленно. Сравнивал деталировку    Раскрой-Pro100 vs PaneCut. Закладывал одну и туже деталировку. Думал что PaneCut выиграет. Однако при детальном рассмотрении выиграл   Раскрой-Pro100. Думаю, тут главное алгоритм.

 

Jack Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#27

22.12.2020 10:55:54

Сообщение andris krusines удалено [МОДЕРАТОР]

andris krusines, здесь форум по обмену знаниями, а не реклама ХЗ какой программы
Если ваш алгоритм хорош, то поделитесь им тут — есть MCH, который давно и прочно зарекомендовал себя отличным специалистом в этой области. Есть и другие знающие люди — они проверят (если им не лень) и дадут заключение

Если не поделитесь алгоритмом, то это 100%ный маркер мягко говоря «некачественного» продукта, а человек, решивший такого «кота в мешке» приобрести сильно пожалеет
А самое смешное, то такие «авторы» даже понять не могут, что именно с их «продуктом» не так, если вообще обнаружат проблему без обратной связи :D

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

Версия

1.0.4

Обновлено

2018-10-27 17:23:55

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

Windows 2000, Windows XP, Windows 2003, Windows Vista, Windows 2008, Windows 7, Windows 10

Размер

1.84 МБ

Язык

Русский

Разработчик

mysoftBel

Сайт


softbel.000webhostapp.com

Описание

Линейный раскрой с учётом углов реза торцов — это интересная программа раскрой профильного материала с учетом углов реза торцов и с использованием остатков от предыдущих кроев. Учитывает ширину пропила. Программа пытается оптимально разместить на заготовке заданные детали.

Версии

Скачать приложение Линейный раскрой с учётом углов реза торцов
1.0.4

x32/x64
(1.84 МБ)

Скачать

Like this post? Please share to your friends:
  • Линейка в word на windows 10
  • Линейка в word для mac
  • Линейка в word 2010 ответ
  • Линейка в microsoft word это
  • Линейка в excel как включить