本文簡要介紹 python 語言中 scipy.optimize.linear_sum_assignment
的用法。
用法:
scipy.optimize.linear_sum_assignment()#
解決線性和分配問題。
- cost_matrix: 數組
二分圖的成本矩陣。
- maximize: 布爾(默認值:假)
如果為真,則計算最大權重匹配。
- row_ind, col_ind: 數組
一組行索引和一個對應的列索引,給出最佳分配。分配的成本可以計算為
cost_matrix[row_ind, col_ind].sum()
。行索引將被排序;在平方成本矩陣的情況下,它們將等於numpy.arange(cost_matrix.shape[0])
。
參數 ::
返回 ::
注意:
線性和分配問題 [1] 也稱為二分圖中的最小權重匹配。問題實例由矩陣 C 說明,其中每個 C[i,j] 是匹配第一個部分集合(a‘worker’)的頂點 i 和第二個集合(a‘job’)的頂點 j 的成本。目標是找到一個完整的工人分配到最低成本的工作。
形式上,讓 X 是一個布爾矩陣,其中 iff 行 i 分配給列 j。那麽最優分配有成本
其中,在矩陣 X 為正方形的情況下,每一行恰好分配給一列,每一列恰好分配給一行。
此函數還可以解決成本矩陣為矩形的經典分配問題的推廣。如果它的行多於列,則不需要將每一行分配給一列,反之亦然。
此實現是修改後的Jonker-Volgenant 算法,沒有初始化,在參考文獻中說明。 [2]。
參考:
[2]DF克勞斯。關於實現二維矩形分配算法。IEEE 航空航天和電子係統匯刊, 52(4):1679-1696, 2016 年 8 月,DOI:10.1109/TAES.2016.140952
例子:
>>> import numpy as np >>> cost = np.array([[4, 1, 3], [2, 0, 5], [3, 2, 2]]) >>> from scipy.optimize import linear_sum_assignment >>> row_ind, col_ind = linear_sum_assignment(cost) >>> col_ind array([1, 0, 2]) >>> cost[row_ind, col_ind].sum() 5
相關用法
- Python SciPy optimize.line_search用法及代碼示例
- Python SciPy optimize.linprog_verbose_callback用法及代碼示例
- Python SciPy optimize.linprog用法及代碼示例
- Python SciPy optimize.least_squares用法及代碼示例
- Python SciPy optimize.leastsq用法及代碼示例
- Python SciPy optimize.lsq_linear用法及代碼示例
- Python SciPy optimize.rosen_der用法及代碼示例
- Python SciPy optimize.rosen用法及代碼示例
- Python SciPy optimize.shgo用法及代碼示例
- Python SciPy optimize.minimize_scalar用法及代碼示例
- Python SciPy optimize.root用法及代碼示例
- Python SciPy optimize.fmin用法及代碼示例
- Python SciPy optimize.NonlinearConstraint用法及代碼示例
- Python SciPy optimize.KrylovJacobian用法及代碼示例
- Python SciPy optimize.toms748用法及代碼示例
- Python SciPy optimize.bracket用法及代碼示例
- Python SciPy optimize.milp用法及代碼示例
- Python SciPy optimize.diagbroyden用法及代碼示例
- Python SciPy optimize.bisect用法及代碼示例
- Python SciPy optimize.isotonic_regression用法及代碼示例
- Python SciPy optimize.golden用法及代碼示例
- Python SciPy optimize.brute用法及代碼示例
- Python SciPy optimize.newton用法及代碼示例
- Python SciPy optimize.fsolve用法及代碼示例
- Python SciPy optimize.Bounds用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.optimize.linear_sum_assignment。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。