複数日の割り当て問題


10

割り当て問題に帰着できる問題があります。(前の質問で、その方法を見つけました。)

つまり、エージェントのセットとタスクのセットT、およびコスト関数c i j があることを意味します。総コストが最小になるように割り当てを見つける必要があります。ATc(i,j)

ハンガリーのアルゴリズムは、少なくともにおける最適解を見つけることができます。いいですね。O(n4)

私の新しい問題は:与えられた日数があります。私は毎日の割り当て問題を解決する必要があるので、すべてのタスクが毎日実行され、エージェントが同じタスクを2回実行することはありません

私が試した内容:ハンガリーのアルゴリズムを毎日個別に実行し、前日の結果に基づいて可能な組み合わせの数を制限できます。しかし、これにより、後日、実現可能な解決策を見つけることが不可能になる可能性が最も高いいくつかの日に問題が発生します。

別のアイデアは、ローカル検索を何らかの方法で統合して、前日に行われた決定を変更することです。でも、これに頼ることはできないと思います。

私が直面しなければならない問題のインスタンスはどこかにあります。コストマトリックスC i j には、同じ値が多数含まれます(たとえば、ほとんどが1または無限大で、2または3しかありません)。したがって、ハンガリーのアルゴリズムでは、1日のさまざまな最適解を作成するための多くのスペースがあります。|A|=|T|=500C(i,j)

問題の適切な解決策を見つけるためのアイデアやアドバイスを喜んで提供します。前もって感謝します。


1
これはすばらしい質問です。最小コストフロー、ホールの結婚定理、最大二部マッチングを使用することをお勧めします。
Peter Shor、

回答:


6

多項式時間でこれを行う方法があります。アルゴリズムをスケッチします(逆の順序で...最初にステップ2を実行し、次にステップ1を実行します)。

  1. nk(i,j)kkknk

  2. nkstk0k0ij1c(i,j)01(i,j)1

最小コストのフローを解決できるアルゴリズムはたくさんあります。これは線形計画法の特別なケースです。サイズの問題については、私がスケッチするアルゴリズムは多項式時間だけでなく、実用的でもあるはずです。


最後の質問:ステップ2の最小コストフローアルゴリズム(最初はサイクルキャンセルを選択しました)が最適なソリューションを提供します。ステップ1の最大マッチングアルゴリズムはそれを行います。これは必ずしもソリューション全体が最適であることを意味しますか?なぜなら、問題はNP-Completeだと私は推測したからです。
Patrick Schmidt、

1
ソリューション全体が最適です。これは、組み合わせ最適化コースで割り当てるのに適した質問です。それは、あなたがそれを実行できることはいくぶん意外なことだからです。
Peter Shor、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.