最初に、英語は私の母国語ではないことを明確にしたいので、少し我慢してください :)
3D ビンのパッキング問題を 1 つのコンテナー (ナップザック) のみで解決しようとしていますが、目的関数の定式化に問題があります。コンテナーとパッケージのリストがあります。
容器:
- 幅
- 深さ
- 身長
- 容量
- 三次元行列
パッケージ:
- 幅
- 深さ
- 身長
- 位置 (X、Y、Z)
- 重さ
- 位置係数
各パッケージには、パッケージを積み込みたい位置を示す位置係数があります。係数は 1 から 5 の範囲です。1 はパッケージをコンテナの前に配置し、5 はコンテナの後ろに配置する必要があることを意味します。容器。
私の目的関数は、コンテナのスペースを最大化することであり、より大きな係数を持つパッケージはコンテナの後ろに、より小さな係数を持つパッケージはトラックの前に配置する必要があります。
スペースを最大化したい場合は、すべてのパッケージの体積の合計を最大化する必要がありますが、これを目的関数へのペナルティと組み合わせる必要があります。たとえば、係数 5 のパッケージが前面の位置にある場合コンテナの。
同じサイズのパッケージを一列に並べた例で何かを明確にしたい
- 後ろ 5 1 5 4 4 4 3 3 2 2 前
- 後ろ 5 5 4 4 4 3 3 2 1 2 前
最初の配布パケットでは、係数 1 のパッケージがコンテナーのほぼ背面にあることがわかりますが、2 番目の配布では、係数 1 のパッケージはあるべき位置 (前面) の近くに配置されているため、 2番目の分布の方が優れています。
問題は、パケットのサイズが異なり、任意の位置に配置できることです。あなたが私を助けてくれることを願っています:D!