python - 最大限度地分散所有护士的调度

标签 python or-tools

    model.Maximize(
        sum(shift_requests[n][d] * shifts[( n, d)] for n in all_nurses
            for d in all_days))

很好奇我如何将上面的内容(针对轮类请求进行优化)更改为下面的内容,这将优化价差。我正在尝试尽可能地分散作业。想法?

    model.Maximize(
        np.std(shifts[( n, d)] for n in all_nurses
            for d in all_days))

最佳答案

您可以尝试以下方法

您有一个 bool 值列表:b(i) 表示 2 个工作日之间的平均跨度大于或等于 i

  1. 您需要确保 b(i) 变量之间的一致性:b(i) => b(i-1)

  2. 如果护士 n 在 d 天工作,并且 b(i) 为 true,则 work[n, d + i - 1] 为 false。全部编码为 model.AddBoolOr(work[n, d].Not(), b(i).Not(), work[n, d + i - 1].Not()]相关的ndi

  3. 在 b(i) 为真时最大化 i。一个粗略的解决方案就是 model.Maximize(sum(b(i)))。也许这可以改进。

关于python - 最大限度地分散所有护士的调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206476/

相关文章:

python - 我如何通过 telethon API 向我的联系人发送消息 python telegram

python - 我可以在 Restplus 模型旁边添加用户定义的错误消息吗?

c++ - 为什么ortools maxflow示例程序在我尝试时无法计算maxflow?

python - 以特定格式提取 Excel 数据作为 python 文件的输入

python - 计算调度问题中的雇用天数

Python,如何将输出发送到文件和终端

python - 使用Python套接字的RFID(低级命令)

python-3.x - or-tools 卡住并忽略超时

python - 模块未找到错误 : No module named 'distutils.core'