Алгоритм заполнения объема
У меня есть коробка с некоторой длиной размера, шириной, высотой.
У меня есть предметы с разной длиной, шириной, высотой.
есть ли существующий алгоритм, который может определить лучшие элементы для использования внутри коробки?
2 ответов
Это называется проблемой упаковки / резки бункера/рюкзака, и это NP трудно. В общем случае вы можете получить приблизительное решение только с помощью эвристики, см. например
http://en.wikipedia.org/wiki/Knapsack_problem
это, возможно, на самом деле не ответ, но я считаю, что ответ заключается в том, что проблема неразрешима. Да, это версия проблемы с упаковкой. Но взгляните на исследования Эриха Фридмы в 2 измерениях: Кажется, проблема для прямоугольников одинакового размера в квадрате все еще не решена - Посмотрите на сложность некоторых из них решения!
http://www2.stetson.edu / ~efriedma / squinsqu/
http://www2.stetson.edu / ~efriedma / rigidrect/
(проблема ставится несколько иначе, т. е. как лучше расположить определенное количество предметов, чтобы занять наименьшее пространство, в отличие от выбора каких предметов. Но я ожидаю, что ваша проблема сводится к итерации такого рода вычислений над несколькими комбинациями объектов.)
и 3-d вариант, который выглядит только очень частично решена: http://www2.stetson.edu / ~efriedma / cubincub/
предположительно, ваш лучший выбор-эвристика, как предлагает Андерс, хотя она почти наверняка будет неоптимальной почти для каждой проблемы. Интересно, что большинство оптимальных решений, по-видимому, очень нерегулярные, так что вы, вероятно, не найти их.