2

一部の企業には、大きな木製パネルが付属しています。これらのパネルは、必要な部分にカットされます。たとえば本棚を作るには、大きなパネルからピースを切り取る必要があります。ほとんどの場合、ピッグパネルは100%から使用されず、一部の損失、一部の残りのピースがあり、使用できません。そのため、損失を最小限に抑えるために、大きなパネルに別々のピースを配置する最適なレイアウトを見つける必要があります。これは「二次元矩形ビンパッキング問題」と呼ばれるものだと思います。

今、それはますます面白くなっています。

すべてのパネルが同じというわけではありません。トーンがわずかに異なる場合があります。理想的な本棚は、1 つのパネルまたは同じ色調の複数のパネルからすべてカットされたピースで作られています。しかし、本棚はさまざまな品質で製造できます (理想的なもの、トーンの異なる 1 つのピース、2 つのピース、3 つの異なる色のプレートを使用するなど...)。各品質には独自の価格があります。(品質が高いほど高価です)。

現在、いくつかの木製パネルの在庫があり、いくつかの家具 (例: 100 本の本棚) をリクエストしています。目標は、利益を最大化することです (たとえば、理想的な品質のものと、材料の損失を低く抑えるために品質の低いものを作成するなど)。

この問題を解決するには?それをビンパッキング問題と組み合わせる方法は?そしてヒント、論文/記事をいただければ幸いです。整数線形計画法を使用して一部の関数と不等式を最小化/最大化できることは知っていますが、これを解決する方法が本当にわかりません。

(実際のシーンを考慮しないでください。たとえば、理想的なものだけを作成するのが最善である場合...想像してみてください。残りの材料からの損失は、1 cm^2 あたり X のお金であり、Y は特定の製品品質の価格であり、 X と Y は「任意」にすることができます)

4

1 に答える 1

2

これらの問題がどのように解決されるのか、そしてなぜあなたの問題が特に難しいのかについての考えを与えることができます.

典型的な最適化問題では、設定された数の変数 (長さなど) に関して関数 (エネルギーなど) を最大化または最小化します。たとえば、蓄積されたエネルギーを最小限に抑えるには、ばねの長さをどのくらいにする必要があります。答えは、バネの平衡長という数字だけです。もう 1 つの例は、「利益を最大化するために製品をどのくらいの価格に設定すればよいか」です。(高すぎると誰も何も買わないでしょう。安すぎると費用をまかなえなくなります。) 繰り返しますが、答えは単なる数字、つまり最適な価格です。そのような最適化は、通常の計算で処理されます。

はるかに難しい最適化問題は、答えが数値ではなく、形状などの関数である場合です。例としては、重力ポテンシャル エネルギーを最小化するために、ぶら下がっている鎖がどのような形状になるかということです。または: 利益を最大化するには、これらのボードからどのような形に切り取ればよいでしょうか? このタイプの問題は、非常に難しい変分法を使用して解決されます。

いずれにせよ、最適化問題を数値的に解く場合、従うべき基本的な手順がいくつかあります。最初に、関数を定義する必要があります。たとえば、いくつかの変数「cuts」に関して最大​​化し、その他のパラメーター「params」を固定して、利益 (cuts,params) を定義する必要があります。「params」には、所有している木材の量や種類、さまざまな種類の家具の価値などの情報が保存されます。

2 番目のステップは、カットの最適なセットを推測することです。これを cuts_guess と呼びます。これを行うには、手持ちの備品を使用して実際に作成できる家具のセットを提案するアルゴリズムを考え出す必要があります。たとえば、各ボードから少なくとも 1 つの本棚を作成できる場合、それが木材の最適な使用方法の最初の推測になります。

3 番目のフェーズは最適化です。初期化のために、cuts_best=cuts_guess と Profit_best=profit_guess=profit(cuts_guess, params) を設定します。次に、「カット」に小さな疑似ランダムな変更を加え、利益が増減するかどうかを確認する (アルゴリズム) が必要です。見つけた最高のカットのセットと、それに対応する利益を記録します。通常、可能性の最大数を探索し、悪い選択に「行き詰まらない」ようにするために、ランダム性が含まれている場合が最善です。「モンテカルロ アルゴリズム」を検索すると、この例が見つかります。

とにかく、これはすべてあなたの問題にとって非常に難しいでしょう. 変数の推測 (長さなど) を導き出す方法と、その推測を変更する方法 (長さを少し増減するなど) は簡単です。ボードにカットアウトを配置する方法や、小さな変更を加える方法を「推測」する方法はまったく明白ではありません。

于 2013-03-24T03:23:19.773 に答える