私は3次元のビンパッキング問題に直面しており、現在、どのアルゴリズム/ヒューリスティックが現在最良の結果をもたらしているかについて、いくつかの予備調査を行っています。問題はNP難しいので、すべての場合に最適な解決策を見つけることは期待していませんが、私は疑問に思っていました:
1)最も正確なソルバーは何ですか?分枝限定法?妥当なコンピューティングリソースでどのような問題のインスタンスサイズを解決できると期待できますか?
2)最高のヒューリスティックソルバーは何ですか?
3)いくつかの実験を行うために、どのような既製のソリューションが存在しますか?
既製のソリューションに関しては、トラックの積み込みについて [〜#〜] maxloadpro [〜#〜] を確認してください。任意の長方形のボリュームをロードするように構成できる可能性がありますが、私はまだ試していません。一般に、3Dビンパッキング問題には、オブジェクトをさまざまな位置に回転できるという複雑さが加わります。そのため、特定の長さ、幅、高さのオブジェクトについては、各位置を表す3つの変数を効果的に作成する必要がありますが、使用するのは1つだけです。ソリューション。
一般に、スタンドアロンMIP定式化(または分枝限定法)は2dまたは3d問題ではうまく機能しませんが、制約プログラミングは2d問題の正確な解決策を生み出すことに成功しています。これをチェックしてください abstract 。論文を見ずに、同じサイズのビンの数を最小限に抑えようとしている問題の分解アプローチが好きです。 3Dの問題についてはそれほど多くの結果は見ていませんが、実装可能な結果があればお知らせください。
幸運を !
私は3つのさまざまなアルゴリズムをテストする プログラム を書きました。また、これは良い情報源です: ビンをパッキングする千の方法-2次元の長方形のビンパッキングへの実用的なアプローチ 。 2次元の長方形のビン用ですが、いつでも3Dに変換できます。
dbinpacking は、Nice視覚化で使用するAPIを公開する商用ソリューション(アルゴリズムではありません)です。それは提供します:
あなたの質問は次のようになります: dビンパッキングアルゴリズム
ただし、ローテーションを許可しないため、かなり良い結果を得ることができます。 FIRST-FIT-DECREASINGソリューションにもっと目を向けることをお勧めします。