python线性规划(linear programming)与分配问题(assignment problem)—— linear_sum_assignment的使用

scipy.optimize.linear_sum_assignment(cost_matrix)

标记
https://blog.csdn.net/weixin_39548859/article/details/120276651
https://blog.csdn.net/qq_51570094/article/details/124020861
请转到上面原文链接,我这里只是要用 标记一下

**场景:指派问题是那些派完成任务效率最高的人去完成任务的问题。在生活中经常遇到这样的问题,某单位需完成n项任务,恰好有n个人可承担这些任务。由于每人的专长不同,各人完成任务不同(或所费时间),效率也不同。于是产生应指派哪个人去完成哪项任务,使完成n项任务的总效率最高(或所需总时间最小 **)。这类问题称为指派问题或分派问题。

下图:如3表示第1个人完成任务a的时间或者效率,8表示第1个人完成b任务的时间或者效率
在这里插入图片描述

c = [[3,8,6,9,5], [7,5,12,9,19], [7,10,9,10,6], [4,6,2,12,8], [9,9,6,15,11]]
c = np.array(c)
''''
array([[ 3,  8,  6,  9,  5],
       [ 7,  5, 12,  9, 19],
       [ 7, 10,  9, 10,  6],
       [ 4,  6,  2, 12,  8],
       [ 9,  9,  6, 15, 11]])
'''
# 这个函数求的是最小值问题   所以有时需要取倒数或者1-值 转化为求最小值问题
name_id,work_id=optimize.linear_sum_assignment(c)
print(c[name_id,work_id ].sum())
print(name_id,work_id)
'''
29
name_id [0 1 2 3 4] 
一一对应的
work_id [0 3 4 2 1]

即第一个人分配做a工作
'''

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值