Алгоритм упаковки 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.