Алгоритм упаковки 3D bin
Я ищу детерминированную реализацию для любого алгоритма упаковки 3D bin, т. е. для упаковки многих маленьких и разных кубоидов внутри одного или многих больших. Решение может отличаться от оптимального.
Он должен быть написан на C, с++, Ява, c#, установить IronPython, IronRuby или любой другой язык может bin в от .Net код.
Я нашел этот алгоритм C http://www.diku.dk/hjemmesider/ansatte/pisinger/3dbpp.c, но он не вращает cuboids, чтобы найти лучшую подгонку. Я в порядке, не вращая их вверх ногами, но горизонтальное вращение должно быть возможным.
4 ответов
Я написал приближенный алгоритм для случая, который вы описываете, т. е. 3D прямоугольные коробки, с ортогональным вращением, в C++. Результаты и алгоритм можно найти в опубликованной статье: http://www.cs.ukzn.ac.za/publications/erick_dube_507-034.pdf
обратился wknechtel / 3d-bin-pack код C для javascript. Можно легко портировать на C#.
https://github.com/keremdemirer/3dbinpackingjs
вы можете запустить примеры вычислений из index.html
file и просмотрите сгенерированный отчет. pack1.js
файл содержит приложение и алгоритм. Я не уверен, как работает алгоритм, но результаты удовлетворяют для расчетов упаковки.
эта проблема NP-жесткая. Ваш лучший выбор-аппроксимационный алгоритм (пока гениальный человек не решит любую проблему NP или очень удачливый парень не наткнется на решение.) К сожалению, я не знаю хорошо известных алгоритмов аппроксимации для этой проблемы.
проект Java с открытым исходным кодом с поддержкой наибольшей площади Fit First: 3d-bin-контейнер-упаковка
вращается в 2D или 3D.