指派授课问题
现有A、B、C、D四门课程,需由甲、乙、丙、丁四人讲授,并且规定:
每人只讲且必须讲1门课;每门课必须且只需1人讲。
四人分别讲每门课的费用示于表中:
课
费用
人
A
B
C
D
甲
2
10
9
7
乙
15
4
14
8
丙
13
14
16
11
丁
4
15
13
9
带包python代码:
from scipy.optimize importlinear_sum_assignmentimportnumpy as np#cost =np.array([[4,1,3],[2,0,5],[3,2,2]])
cost =np.array([
[2,10,9,7],
[15,4,14,8],
[13,14,16,11],
[4,15,13,9]])
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())#数组求和