Алгоритм заполнения объема

У меня есть коробка с некоторой длиной размера, шириной, высотой.

У меня есть предметы с разной длиной, шириной, высотой.

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

2 ответов


Это называется проблемой упаковки / резки бункера/рюкзака, и это NP трудно. В общем случае вы можете получить приблизительное решение только с помощью эвристики, см. например

http://en.wikipedia.org/wiki/Knapsack_problem

http://en.wikipedia.org/wiki/Bin_packing_problem

http://en.wikipedia.org/wiki/Cutting_stock_problem


это, возможно, на самом деле не ответ, но я считаю, что ответ заключается в том, что проблема неразрешима. Да, это версия проблемы с упаковкой. Но взгляните на исследования Эриха Фридмы в 2 измерениях: Кажется, проблема для прямоугольников одинакового размера в квадрате все еще не решена - Посмотрите на сложность некоторых из них решения!

http://www2.stetson.edu / ~efriedma / squinsqu/

http://www2.stetson.edu / ~efriedma / rigidrect/

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

и 3-d вариант, который выглядит только очень частично решена: http://www2.stetson.edu / ~efriedma / cubincub/

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