免責事項:この記事は従って、ブロガーオリジナル記事です。CC BY-SA 4.0の著作権契約を、再現し、元のソースのリンクと、この文を添付してください。
はじめに:最近では、それは手計算で、ハンガリーのアルゴリズムを使用することは明らかである、ソリューションの割り当て問題について多くを見つけるために、Baiduの上で、興味を持って、アナログ、デジタルの準備と割り当て問題を参照して、様々なブログのすべての種類は非常に詳細な、おそらくあなたは、特定の原則(人々が自分のBaiduのを理解することはできません)を認識しているが、基本的なアルゴリズムが見つからない、正しいと検証することは困難です。可能性のある、それは(ホイール、怠惰を再作成する必要はありません)時間を節約するために、まだ見つけることができない、多くのブログや何かを見つけるために、そこに任意のライブラリ機能を実現することが可能ですのpythonを探したかったです。0-1割り当て問題は、プログラミングについて考えている、線形計画は、怒って、またscipy.optimize公式ウェブサイトを通じて直接見て使用scipy.optimizeライブラリ関数です。または公式サイト無敵ああ。騒ぎ、サンプルのオーバーヘッド行列を見て:
その後、肉眼、それは単純で、選択された第二列、第二列の第一行[413] [205]選択された最初の行2、3行目[322]までを第3列2を選択し、次にコストが5です。次いで、パイソンとの溶液を、次いでscipy.optimize.linear_sum_assignment使用の(cost_matrix)機能。直接コードに添付:
-
scipy.optimize
インポート
linear_sum_assignment
-
-
コスト= np.array([[ 4、 1、 3 ]、[ 2、 0、 5 ]、[ 3、 2、 2 ]])
-
row_ind、col_ind = linear_sum_assignment(コスト)
-
プリント(row_ind)コストマトリックスに対応する#1行インデックス
-
プリント(col_ind)行インデックスに対応OptimalAssignment列インデックス#
-
(コスト[row_ind、col_ind])を印刷各列のインデックスは、アレイが形成されて、最適な割り当て抽出列インデックスの#要素
-
印刷(コスト[row_ind、col_ind] .SUM()) #合計する配列
そして、出力結果:
-
[0 1 2]
-
[1 0 2]
-
[1 2 2]
-
5
インデックスは言っていません0から始まり、またはターン1の発言は、公式サイトでは無敵です!役員はその後、カフェ、この機能に掲載
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.linear_sum_assignment.html#scipy.optimize.linear_sum_assignment
上記。
免責事項:この記事は従って、ブロガーオリジナル記事です。CC BY-SA 4.0の著作権契約を、再現し、元のソースのリンクと、この文を添付してください。