1

私は optaplanner を初めて使用し、「同様の」問題を解決するために VRP の例を微調整しようとしていますが、いくつかの違いがあります。

中央デポ、n 人の顧客、および 1 台以上の車両のフリートがあります。

各顧客には特定の「最大容量」があります (すべての顧客で同じではありません)。

各車両も同様。

この問題の初期条件には、各顧客の「実際の容量」と「必要な容量」が含まれているため、次のようになります。

実際の容量は >=0 かつ <= 最大容量
必要な容量は >=0 かつ <= 最大容量です

「実際のデポ容量」は、デポで利用可能なアイテムの量です

各顧客が「希望する容量」を取得できるように、一部のアイテムを再配布したいと考えています。

(通常、ほとんどのアイテムは、ある顧客から別の顧客に再配布されます)

ハード制約は「最大容量」を超えることはできません ソフト制約は、車両の距離 (最小化) と「必要な容量」との差 (最小化) です。

顧客の需要が負の場合 (希望する容量 < 実際の容量をシミュレートするため) に VRP の例のデータ ファイルを生成することから始めましたが、車両の容量制限を満たすためにすべての顧客の要求を合計する drl の制約は、ここで必要なものではないことがすぐにわかります。

この問題は、VRP の例を変更する価値があるほど「似ている」と思いますか?

4

1 に答える 1

0

はい、OptaPlanner VRP の例 (サンプル GUI の有無にかかわらず) を使用して、これらのニーズに合わせてカスタマイズすることは間違いなく価値があります。OptaPlanner 6.0.0.CR1 以降、通常は来週リリースされる CR4 から開始します。VRP のシャドウ変数に関連するバグがある可能性があるため、CR3 は使用しないでください。

A) 仮定しましょうcustomerDemand = customerDesired - customerActual。これには、プラス (より多くのアイテムが必要) とマイナス (アイテムを取り除く必要) があります。

質問: 車両容量を検証するにはどうすればよいですか? 顧客ごとに変動するため、単純に合計することはできません。回答: Customer でシャドー変数( としましょうfreight) を使用して、車両が前の顧客から現在の顧客に輸送しているアイテムの数を計算します。これは、 TimewindowedCustomerの例arrivalTimeでの動作と非常によく似ています。次に、スコア制約ルールを使用して、すべての顧客が車両の最大容量を下回っていることを確認します。また、それはすべての顧客にあります。freightfreight>= 0

ここで、A) は車両がたくさんある場合にうまく機能します。アイテムが足りなくても、固定定数(不足アイテムの数)なので、ソフト制約をチェックしても意味がありません。customerDesiredスケジューリングする前に、その不足を顧客に公平に分散させ、それに応じて調整することもできます。

B) しかし、顧客の数に対して車両の数が十分でない場合、A) では不十分である可能性があります。配達/集荷を より少なくできるようにしてcustomerDemand、より柔軟にします (したがって、複雑になります:)。この場合、Customer には 2 つの本物の (=影ではない) 計画変数 (1 つだけではなく) がありdeliveryPickupます<= demand * 2

于 2013-09-14T12:06:18.857 に答える