本文简要介绍 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。