Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
Подскажите, пожалуйста, где можно почитать про задачу bin packing. Имеются бревна длины , надо выпилить кусков длины , используя наименьшее количество бревен.
Желательно пошаговый алгоритм для последующей реализации. Спасибо!
Rasool
Re: Исследование операций, задача bin packing.
13.11.2010, 12:14
Задачей одномерной упаковки (bin packing problem) активно занимались на нашей кафедре, в частности, научная школа Элиты Александровны Мухачевой. Есть подход с точки зрения линейного программирования (симплекс-метод), про него можно прочитать в книге "Математическое программирование" авторов Мухачева, Рубинштейн. Википедия дает следующую ссылку по Bin Packing Problem с алгоритмом "первый подходящий": http://en.wikipedia.org/wiki/Bin_packing
Rasool
Re: Исследование операций, задача bin packing.
14.11.2010, 18:08
Есть монография "Задачи двумерной упаковки в контейнеры: новые подходы к разработке методов локального поиска оптимума / А.С.Мухачева, А.Ф.Валеева, В.М. Картак, Москва, МАИ, 2004. 193 с. ISBN 5-7035-1413-4. Там рассматривается и случай одномерной упаковки.
_Student
Re: Исследование операций, задача bin packing.
14.11.2010, 18:53
Мне нужен тот алгоритм, где с помощью симплекс-метода считается, находится решение, но если оно не целое, то рассматривается два случая (округление вверх, округление вниз) и т.д. до того, как найдётся целое решение. Это, видимо, можно прочитать в книге "Математическое программирование" авторов Мухачева, Рубинштейн, да? А Вы, Rasool, могли кинуть ссылку на эту книгу?
mserg
Re: Исследование операций, задача bin packing.
22.11.2010, 14:59
В задаче нужно указать, от какого бревна нужно отпиливать конкретный кусок. Прямая постановка такой проблемы как задачи линейного программирования – очень плохая идея. Задача становится очень громоздкой и возникает множество симметричных решений, а оптимум обычно вообще не находится.
Поэтому используется метод генерации столбца, который использует понятия варианта разрезания. Это особая разновидность симплекс-метода, которая дает нецелые решения. (См. в интернете «метод генерации столбца»). Методом ветвей и границ можно его доработать до нужного Вам решения.
_Student
Re: Исследование операций, задача bin packing.
23.11.2010, 23:02
mserg, мне как раз-таки нужен тот алгоритм, который Вы описали. Но хотелось бы почитать про него что-нибудь очень подробное, потому что я плохо представляю, как его реализовать.
mserg
Re: Исследование операций, задача bin packing.
25.11.2010, 09:57
Можно еще поискать Column Generation – должно найтись. Но, честно говоря, эта тема больше подходит для кандидатской работы. Существование пошагового описания решения этой задачи крайне маловероятно. Надо что-то упростить. Например, если куски соразмерны размеру бревна, то можно перечислить все возможные варианты разрезания и составить задачу линейного программирования. Если таких вариантов не велико (скажем, не более 10000), то вряд ли будут проблемы. Потом воспользоваться готовым пакетом, например lp_solve или Excel (там есть численные методы, в том числе линейное программирование). Пакет сам, используя метод ветвей и границ, найдет оптимальное решение.