Помогите в решение задачи #349199


#0 by Overr
Есть болванка длинной L Из нее пилятся детали длинной (A1, A2, A3, ..... An) Максимальное количество каждой детали (B1, B2, B3, .....Bn) Сколько видов деталей не известно (n - переменная, нужено общее решение) При этом болванки на все детали не хватает. Нужно определить как оптимально распилить болванку так, чтобы остаток от распилки был наименьшим. Хочу понять принцип решения этой задачи. если кто-нибудь кинет ссылку с примером, буду весьма благодарен.
#1 by Лефмихалыч
По честному - только полным перебором всех возможных вариантов. По нечестному - какие-нить генетические алгоритмы. Вариант задачи коммивояжера
#2 by PR
Не генетические, а эмпирические
#3 by Лефмихалыч
да хрен его разберет, как они называются - не помню, короче суть этих алгоритмов в том, чтобы заранее отбросить варианты, которые в некую... ОДЗ, чтоли?... не входят.
#4 by Overr
А точное название алгоритма который здесь приемлим не подскажите? Я его погуглю может соображу чего...
#5 by zenik
Если не ошибаюсь, то оно:
#6 by Mafoni
Вопрос 1 - можно ли с одной болванки выпилить разные детали ?? Если да то ты получиш следуе тебе надо найти минимально значение из следующих уравнений L - B1*A1 - B2*A2* - .... - Bn*An = Ost (где Ost - это остаток от болванки - причем он должен быть больше или равен нулю)
#7 by Overr
Перебором могу, но в некоторых случаях может очень долго считаться.
#8 by Overr
детали можно пилить разные сколько каких угодно в пределах их максимального количества.
#9 by Nekto
В екселе есть сервис-поиск решения. Если в сервисе его нет, надо в сервис-надстройки его добавить. Там такая задача за 5 мин при владении этим инструментом.
#10 by Overr
+6 Это все понятно. Непонятно как это решить :)
#11 by Господин ПЖ
а все комбинации перебирать смысл есть? если остается огрызок в сантиметр, с самая малая деталь - 10 см?
#12 by Лефмихалыч
по этому я про "нечестный" вариант и упомянул
#13 by Overr
Про ексель знаю. Пробовал. Правда нифега не получилось, он мне дробные значения выдавал. Как ему указать что решения должны быть целыми? Да и не совсем мне решение в екселе подходит, мне нужно алгоритм в 1Ске реализовать.
#14 by mrkorn
нормальные люди, всмысле технологи не занимаются этим... каждую заготовку режут на одинаковые части, это технологически проще
#15 by Overr
Огрызки сдаются в металолом, а цена на него в несколько раз ниже закупочной цены на болванки, так что крайне желательно получить огрызки как можно меньшего размера.
#16 by Nekto
Там ограничения есть в поиске решений. Выбираешь ячейку, ставишь целое.
#17 by Overr
Используемые станки позволяют до начала распила задать сколько каких деталей напилить из этой болванки, на задание варианта распила у оператора уходит на пару тройку порядков меньше времени чем пилится сама болванка, так что технологической сложности не наблюдается.
#18 by Nekto
А чем вариант перебора не нравится, не такие-то и большие данные, чтобы изощряться?
#19 by ado
Если я не ошибаюсь, это вариация задачи о рюкзаке. Решений этой задачи можно нагуглить массу.
#20 by Serjant
Сколько заготовок разных размеров?
#22 by Господин ПЖ
задача о распилке рюкзака? О_о
#23 by ado
Ну, собственно, распил, это процесс обратный укладыванию.
#24 by dk
не оптимальный, но шустрый  и достаточно экономичный метод 1. отсортировать отрезки по убыванию 2. пилить сначала самые большие, потом меньше и так до тех пор пока остаток болванки не меньше самого мелкого отрезка.
#25 by ado
Очень не оптимальный ...
#26 by dk
хм, есть практика применения или сравнения?
#27 by Прозревший
Перебор если деталей мало. Другие методы если перебор не подходит.
#28 by ado
Ну, вообще от частного случая зависит, конечно. Вредставь себе ситуацию: балка 5 метров, А1 = 3м, А2 = 3 см. В1,В2 = очень много.
#29 by ado
+ Хотя нет, вру, здесь как раз все хорошо будет. Плохо будет если, скажем, А2 = 2.4 м.
#30 by dk
Ну и получишь на каждую балку 1 шт. А1 + 66 шт. А2 потом пойдут либо все по А1, либо все по А2
#31 by dk
Тоже не айс вариант :) думай дальше
#32 by ado
Написал уже в , что соврал. В общем, такой алгоритм не очень хорош, когда длины всех деталей до порядка сравнимы с длиной балки. Но, с другой стороны, в этом случае легко полный пербор сделать.
#33 by ado
Что не айс то? В случае твой алгоритм дает остаток 2 м., против 0.2 для оптимального решения.
#34 by dk
а если не торопиться с выводами?
#35 by ado
Брррр ... поясни? Может и правда туплю под вечер?
#36 by dk
разбери на примерах 2 А1 + 5 А2 3 А1 + 2 А2
#37 by ado
А причем тут эти примеры? Я привел пример L = 5, А1 = 3, А2 = 2.4, на котором твой алгоритм дает решение десятикратно хуже оптимального. Что в ЭТОМ примере не айс?
#38 by dk
Э, может я не догоняю. Но разве заранее не известно, что нужно столько-то деталей длиной А1 и столько-то деталей А2?
#39 by ado
Не столько-то и столько-то, а не более стольки-то и не более стольки-то.
#40 by ado
+ По крайней мере автор так сформулировал.
#41 by dk
Тогда какая-то неформализованная задачка получается количество болванок - ограниченно?
#42 by ado
"количество болванок - ограниченно?" По условию вроде как одна ...
#43 by dk
ндя, я тогда вообще мимо :)
#44 by Overr
Всем спасибо за ответы. Моя задача, насколько я понял, действительно похожа на задачу про укладку рюкзака, если ценность предметов укладываемых в рюкзак приравнять к размеру детали (вес и ценность будут одинаковыми), но в по условиям задачи "Каждый предмет из множества можно выбирать бесконечное кол-во раз" а у меня максимальное количество деталей одного вида ограничено. Не совсем подходит... буду дальше искать. Зарание неизвестно, может быть и 1 (тогда собственно и нечего было бы заморачиваться, а может быть и 10 и 15) Верно.
#45 by Регистратор
Это классическая задача по расиливанию бюджета, решается интуитивно, а если не в целых числах то симплекс методом
#46 by Zmich
. Используй вариацию задачи о рюкзаке с возможностью единичного выбора предмета (см. ). В твоем случае возможность выбора не более B1 штук детали А1 надо просто контролировать тем, что в общем наборе находится ровно В1 как бы РАЗНЫХ (а на самом деле просто дубликатов) деталей А1.
#47 by Stepa86
Это задача о одномерном раскрое, вроде решается методом ветвей и границ, я даже как то лабораторные делал по ней (не себе)...
#48 by Overr
Благодарю, попробую попробую этим методом порешать, пример вроде нашел...
#49 by Михаил Козлов
1. Аналог задачи о рюкзаке. В подавляющем числе случаев неплохо решается "жадным" алгоритмом (см.24). 2. Метод ветвей и границ не даст сокращения перебора, т.к. коэффициенты целевой функции и ограничения (по длине) совпадают. 3. Можно попробовать решать с помощью производящей функции: f(x) = ПРОИЗВЕДЕНИЕ(1+x^Ai+x^2Ai+...+x^Bi*Ai) Если раскрыть скобки и привести подобные члены, то коэффициент при x^L даст число решений уравнения: СУММА(Ai*xi)=L при ограничениях 0<=xi<=Bi, xi - целое. Может быть работоспособен, когда Ai - соизмеримые, не слишком большие числа. 4. Занимался раскроем рулонов металла на продольно-поперечных станках. Есть соображения по вашей задаче (метод ветвей и границ после некоторого препроцессинга), немного в иной постановке, а именно: минимизировать количество болванок при условии выполнения задания (B1,В2,...,Bn). На реальных задачах раскроя выход был около 98%. Если дело стоящее, готов обсудить (тел. 980-2417) и поднять (если удастся) метод (писал на Паскале под ДОС).
#50 by Overr
Спасибо за предложение. Задача уже решена. Работает вполне приемлемо :)
#51 by Михаил Козлов
Написали бы хоть, как решаете.
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С