Программа Для Раскройки Труб

Программа Для Раскройки Труб 4,6/5 7538 votes

Быстрый линейный раскрой. Программа предназначена для оптимизации раскроя деталей из линейных заготовок. Программа предназначена для раскроя прямоугольных листов на детали прямоугольной формы. Cutting Line 2.0 Шибаев Юрий Анатольевич. Программа предназначена для оптимального раскроя линейных заготовок на линейные отрезки различной длины и может быть использована в деревообрабатывающей и целлюлозно-бумажной промышленности, металлообработке, швейном производстве и т. Другие программы категории. Active File Compare 2.0 Евгений Баянов. Делал его для программы по раскрою стекла. Раскрой стекла оптимизирует на четверку (може даже с плюсом), а хлысты для профилей (одномерные ведь!) кроит практически без потерь. Притачил фрагмент моей программы, в которой есть Sub CaclMat, содержащая этот алгоритм. Если убрать в последней все разукрашивания, то и останется 10 строк алгоритма.

  1. Программа Для Фотошопа

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

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

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

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

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

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

Я постарался набор условных данных сделать максимально правдоподобным. В свое время я работал на производстве пластиковых окон. У нас отходы профиля доходили до 10-15%.

Итак я имитировал набор заготовок (около 2,5 тыс. Шт) двух типоразмеров 700 +/- 100 мм - порядка 65% и 1400 +/- 100 мм - остальное. Это распределение привязано к среднестатистическому окну 1400 х 1400. Деловыми остатками считал остатки от 500 мм включительно.

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

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

Заполняйте два листа - Детали и Остатки и нажимайте кнопку Раскроить на листе Детали. По результатам откроется лист Карта раскроя, а состояние склада после раскроя можно найти на листе Остатки после раскроя. Вы писали, что алгоритм раскроя известен. Если Вы опишите его, мне будет интересно попробовать его реализовать (если только не много времени потребуется). Здравствуйте, Алексей Шмуйлович. Приложенного вами файлика не увидел.

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

Попытаюсь объяснить его так, как он видится и делается мною. На складе имеются заготовки опеределенной длины (перечень возможных размеров - 12 000мм, 9 000мм, 6 000мм). Кол-во заготовок роли не играет - считается, что их неограниченное колличество. Нужно из одной длины (допустим, 12 000мм) заготовки накроить детали заданной длинны и колличества (к примеру, 7950мм - 33шт., 8590мм - 22шт., 2543мм - 22шт., 2542мм - 22шт.).

Программа

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

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

В общем, обдумайте. Если сможете дать формализованный алгоритм, может быть переделаем и программку. А Вы на VBA совсем не программируете? К сожалению, на VBA не умею програмировать. Хотя есть начальные навыки программирования.

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

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

Труб

Самый эффективный способ - целочисленное линейное программирование. В качестве инструмента можно использовать Solver. Но здесь есть ряд ограничений - необходимо найти все варианты сложения исходных деталей, не превышающих размер заготовок (а вариантов может быть несколько тысяч или сотен тысяч). Ограничение Solver'a - 200 изменяемых ячеек. 'Жадный' алгоритм. У данного алгоритма есть вариации, основное достоинство - высокая скорость.

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

Программа Для Фотошопа

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