代码流程
例如,n个人干n项工作的指派问题,如何让总的开销最小。
首先知道其代价矩阵:
from scipy.optimize import linear_sum_assignment
cost =np.array([[4,1,3],[2,0,5],[3,2,2]])
row_ind,col_ind=linear_sum_assignment(cost)
print(row_ind)#开销矩阵对应的行索引
print(col_ind)#对应行索引的最优指派的列索引
print(cost[row_ind,col_ind])#提取每个行索引的最优指派列索引所在的元素,形成数组
print(cost[row_ind,col_ind].sum())#数组求和
==============
[0 1 2] # 第0个人,第1个人,第2个人。
[1 0 2]# 第1件事, 第0件事, 第2件事。(与上面对应)
#第0个人干第1项工作,第1个人干第0项工作,第2个人干第2项工作。代价最小。
计算工作量:[1 2 2]=5
速算流程
步骤: