#0
by Overr
Есть болванка длинной L Из нее пилятся детали длинной (A1, A2, A3, ..... An) Максимальное количество каждой детали (B1, B2, B3, .....Bn) Сколько видов деталей не известно (n - переменная, нужено общее решение) При этом болванки на все детали не хватает. Нужно определить как оптимально распилить болванку так, чтобы остаток от распилки был наименьшим. Хочу понять принцип решения этой задачи. если кто-нибудь кинет ссылку с примером, буду весьма благодарен.
#1
by Лефмихалыч
По честному - только полным перебором всех возможных вариантов. По нечестному - какие-нить генетические алгоритмы. Вариант задачи коммивояжера
#3
by Лефмихалыч
да хрен его разберет, как они называются - не помню, короче суть этих алгоритмов в том, чтобы заранее отбросить варианты, которые в некую... ОДЗ, чтоли?... не входят.
#4
by Overr
А точное название алгоритма который здесь приемлим не подскажите? Я его погуглю может соображу чего...
#6
by Mafoni
Вопрос 1 - можно ли с одной болванки выпилить разные детали ?? Если да то ты получиш следуе тебе надо найти минимально значение из следующих уравнений L - B1*A1 - B2*A2* - .... - Bn*An = Ost (где Ost - это остаток от болванки - причем он должен быть больше или равен нулю)
#9
by Nekto
В екселе есть сервис-поиск решения. Если в сервисе его нет, надо в сервис-надстройки его добавить. Там такая задача за 5 мин при владении этим инструментом.
#11
by Господин ПЖ
а все комбинации перебирать смысл есть? если остается огрызок в сантиметр, с самая малая деталь - 10 см?
#13
by Overr
Про ексель знаю. Пробовал. Правда нифега не получилось, он мне дробные значения выдавал. Как ему указать что решения должны быть целыми? Да и не совсем мне решение в екселе подходит, мне нужно алгоритм в 1Ске реализовать.
#14
by mrkorn
нормальные люди, всмысле технологи не занимаются этим... каждую заготовку режут на одинаковые части, это технологически проще
#15
by Overr
Огрызки сдаются в металолом, а цена на него в несколько раз ниже закупочной цены на болванки, так что крайне желательно получить огрызки как можно меньшего размера.
#17
by Overr
Используемые станки позволяют до начала распила задать сколько каких деталей напилить из этой болванки, на задание варианта распила у оператора уходит на пару тройку порядков меньше времени чем пилится сама болванка, так что технологической сложности не наблюдается.
#19
by ado
Если я не ошибаюсь, это вариация задачи о рюкзаке. Решений этой задачи можно нагуглить массу.
#24
by dk
не оптимальный, но шустрый и достаточно экономичный метод 1. отсортировать отрезки по убыванию 2. пилить сначала самые большие, потом меньше и так до тех пор пока остаток болванки не меньше самого мелкого отрезка.
#28
by ado
Ну, вообще от частного случая зависит, конечно. Вредставь себе ситуацию: балка 5 метров, А1 = 3м, А2 = 3 см. В1,В2 = очень много.
#30
by dk
Ну и получишь на каждую балку 1 шт. А1 + 66 шт. А2 потом пойдут либо все по А1, либо все по А2
#32
by ado
Написал уже в , что соврал. В общем, такой алгоритм не очень хорош, когда длины всех деталей до порядка сравнимы с длиной балки. Но, с другой стороны, в этом случае легко полный пербор сделать.
#33
by ado
Что не айс то? В случае твой алгоритм дает остаток 2 м., против 0.2 для оптимального решения.
#37
by ado
А причем тут эти примеры? Я привел пример L = 5, А1 = 3, А2 = 2.4, на котором твой алгоритм дает решение десятикратно хуже оптимального. Что в ЭТОМ примере не айс?
#38
by dk
Э, может я не догоняю. Но разве заранее не известно, что нужно столько-то деталей длиной А1 и столько-то деталей А2?
#44
by Overr
Всем спасибо за ответы. Моя задача, насколько я понял, действительно похожа на задачу про укладку рюкзака, если ценность предметов укладываемых в рюкзак приравнять к размеру детали (вес и ценность будут одинаковыми), но в по условиям задачи "Каждый предмет из множества можно выбирать бесконечное кол-во раз" а у меня максимальное количество деталей одного вида ограничено. Не совсем подходит... буду дальше искать. Зарание неизвестно, может быть и 1 (тогда собственно и нечего было бы заморачиваться, а может быть и 10 и 15) Верно.
#45
by Регистратор
Это классическая задача по расиливанию бюджета, решается интуитивно, а если не в целых числах то симплекс методом
#46
by Zmich
. Используй вариацию задачи о рюкзаке с возможностью единичного выбора предмета (см. ). В твоем случае возможность выбора не более B1 штук детали А1 надо просто контролировать тем, что в общем наборе находится ровно В1 как бы РАЗНЫХ (а на самом деле просто дубликатов) деталей А1.
#47
by Stepa86
Это задача о одномерном раскрое, вроде решается методом ветвей и границ, я даже как то лабораторные делал по ней (не себе)...
#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) и поднять (если удастся) метод (писал на Паскале под ДОС).
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- УТ 10.3 Как добавить Штрихкод в Ценник? Ответ.
- Передача двух параметров в форму списка справочника
- УПП. Как правильно отразить выпуск брака ?
- Проблема при установке сервера 1С предприятие на x64 винду
- Машиночитаемые формы
- Как получить пустое значение заданного типа?
- v7: тис+ crm = проблема с ключем
- Макет. Выравнивание по правому краю
- #ТаблицаОсновогоВидаОбъектаДоступа
- УПП Проблема с распределением материалов на выпуск
- А где в УТ разрешить проведение документов будущей датой? чтото нет этого т
- События формы, копирование строки таблицы
- Автоматическое подключение сетевых принтеров. Как включить?
- Как выгрузить отчет в лист Excel в существующей книге?
- классификатору использования рабочего времени
- Обороты по 41 счету
- Обработка Подбор Номенклатуры
- Восстановление БД
- Помогите идеей - перепроведение только по одному регистру
- Почему пропало поле _Description из SQL таблицы _Enum (перечисления) 1С 8.0