加重二部マッチング問題の高速アルゴリズム


8

私は一連の持っているのエージェントとのセットのタスクを、と私は、コストが最小となるように正確に一つのタスクに各エージェントを割り当てる必要があります。一部のエージェントは一部のタスクと互換性がありません。n

私のハンガリーアルゴリズムの実装では、行列を解くのに約1分かかります。禁止された割り当てについては、コストをに設定しました。(私の問題には常に実行可能な解決策が存在します)。640×640

また、CPLEXでバイナリプログラムとして設定しました。同じ問題を解決するには約9秒かかります。BIPモデルでは、これらの変数を省略して、禁止されている割り当てを完全に除外します。

CPLEXでネットワークモデルとして設定することはまだ検討していませんが、それが次のステップになる可能性があります。ただし、CPLEXとの通信にはパフォーマンスコストがかかるため、専用アルゴリズムを使用するとパフォーマンスが向上するはずです。

この2部マッチングの問題は、別の反復検索アルゴリズム内のカーネルであるため、可能な限り高速に実行する必要があります。

この場合、ハンガリーのアルゴリズムよりも優れた実装可能なアルゴリズムはありますか?または、このカーネルのパフォーマンスを向上させる方法について他に提案はありますか?


余談ですが、2部マッチングは最小最大フローと非常に関連性が高く、動的な状況にあり、元のグラフは2回の連続した反復であまり変化しないため、おそらく関連性のあるものを見つけることができますこの質問と回答に沿ったあなたの仕事。
2014

@Saeed、ありがとうございます。以前の反復からの情報を最初の実行可能なソリューションとして使用して、最小コストのネットワークとして表すことを検討しました。
Ozzah 2014

回答:


7

2部構成のマッチングには、オークションベースのアルゴリズムの1つを試すことができます。(たとえば、ここで単純なバリアントを説明する講義ノートを参照してください:https : //staff.fnwi.uva.nl/nswalton/Notes/Bertsekas_Auction.pdfしかし、より多くの最適化が可能です)。

これらのアルゴリズムは、必ずしも最悪の場合の実行時間を持っているとは限りませんが、非常に単純な操作のみを必要とするため、実際には効率的であり、並列化が可能です。(そして、それらは最もよく知られている最悪のケースの実行時間を回復するための基礎として使用できます。http//agtb.wordpress.com/2009/07/13/auction-algorithm-for-bipartite-matching/を参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.