Для оптимизации использования пространства в трёхмерных коробках можно использовать следующие подходы:
- Динамическое программирование. stackoverflow.com Если контейнер представляет собой сетку в виде параллелепипеда, и элементы помещаются точно в ячейки сетки, для представления переменной состояния можно использовать трёхмерный массив. stackoverflow.com В противном случае — более сложные структуры данных. stackoverflow.com
- Генетический алгоритм. cyberleninka.ru habr.com В качестве критерия оптимизации используется отношение полезного объёма, занимаемого блоками (с учётом образовавшихся между блоками пустот), к общему объёму контейнера. cyberleninka.ru Целью решения задачи является уменьшение пустот в области упаковки. cyberleninka.ru
- Метод покоординатного спуска (метод Гаусса-Зайделя). wmv.ivdon.ru Процесс решения разбивается на две части: моделирование плотного движения объектов в области размещения и формирование и изменение последовательности упаковываемых объектов. wmv.ivdon.ru
Также для уплотнения упаковки при формировании начальной популяции можно использовать эвристику: более крупные блоки удобнее размещать первыми, затем упаковывать меньшие блоки. habr.com