微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

或使用工具根据工作量安排员工

如何解决或使用工具根据工作量安排员工

以下,每天(d)只有一名工人(w)可以工作。我想根据剩余的工作量/工作来安排工人。当前的解决方案将每天安排工人1或3,因为他们的工作量最大。假设每天工作将使工作量减少2,我想将其合并。这将导致工人1和3工作两天(工作量:6> 4> 2),工人2一天工作(5> 3)。我尝试将“ jobs_remaining”变量的值减为2(如果“有效”的话),但它不会像这样工作。

我想知道是否有可能在... (A)任何特定命令,及 (B)根据每天剩余工作排序: 第1天=工人1或3(剩余6名),第2天=工人1或3(剩余6名),第3天=工人2(剩余5名),第5天=工人1或3(剩余4名)

days = [1,2,3,4,5]
workers = [1,4]
jobs_to_do_by_worker = [6,5,6,2]

worked_array = [] 
for w,jobs_remaining in zip(workers,jobs_to_do_by_worker):
    for d in days:
        worked = model.NewBoolVar('name')
        model.Add(allocations[(w,d)] == 1).OnlyEnforceIf(worked)
        model.Add(allocations[(w,d)] != 1).OnlyEnforceIf(worked.Not())
        worked_array.append(worked * jobs_remaining)
        
        #### jobs_remaining = jobs_remaining-(worked * 2) ####
              
model.Maximize(sum(worked_array))

解决方法

因此,每天您都想在jobs_to_do_by_worker数组中选择一个值最大的索引,删除两个,然后重复?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。