小编典典

哪种算法分配班次(离散优化问题)

algorithm

我正在开发一种应用程序,可以最佳地将轮班分配给医院的护士。我相信这是带有离散变量的线性规划问题,因此可能是NP难的问题:

  • 每天为每位护士(约15至20岁)分配一个班次
  • 少数(大约6个)不同的班次
  • 有很多约束和优化标准,涉及一天或员工,例如:
    • 每天每个班次必须分配最少人数
    • 某些班次重叠,因此如果有人进行中间班次,可以减少一个人早班
    • 有些人喜欢早班,有些人喜欢晚班,但是要获得更高的轮班工作报酬,需要最少的轮班变动。
    • 不允许一个人一天上班晚班,第二天上班早班(由于有最短的休息时间规定)
    • 满足分配的工作周时长(因人而异)

因此,基本上有大量变量(总共20 * 30 = 600),每个变量都可以使用少量离散值。

目前,我的计划是使用修改后的Min-
conflicts算法

  • 从随机分配开始
  • 具有适合每个人每天的健身功能
  • 选择适合度最差的人或一天
  • 随机选择当天/人的一项任务,并将其设置为可产生最佳适应性值的值
  • 重复此操作,直到达到最大迭代次数或在选定的日期/人中找不到任何改善

还有更好的主意吗?我有点担心它将陷入局部最优状态。我应该使用某种形式的模拟退火吗?还是不仅要考虑一次变量的变化,还要特别考虑两个人(当前手动算法的主要组成部分)之间的换档切换?我想避免针对当前约束条件调整算法,因为这些约束条件可能会发生变化。

编辑: 没有必要找到严格的最佳解决方案;目前,花名册是手动完成的,我可以肯定,大多数情况下结果是次优的-
应该不难做到。当然也必须进行短期调整和手动操作,但是我认为这不会成为问题。将过去的作业和手动作业标记为“固定”实际上可以通过减少解决方案空间来简化任务。


阅读 363

收藏
2020-07-28

共1个答案

小编典典

这是一个很难解决的难题。关于此主题的学术论文很多,尤其是在运筹学领域-
例如,参见护士名册论文2007-2008或仅谷歌“护士名册运筹学”。复杂度还取决于以下方面:解决多少天;护士可以做出什么样的“要求”;名册是“循环的”;它是一项长期计划还是需要处理诸如疾病和掉期等之类的短期名册“修复”?

您描述的算法是一种启发式方法。您可能会发现您可以对其进行调整,使其在一个特定的问题实例中正常工作,但是一旦“某些内容”更改,它就可能无法很好地工作(例如,局部最优,收敛性差)。

但是,根据您的特定业务需求,这种方法可能就足够了-例如,获得 最佳
解决方案有多重要,您所描述的问题大纲是否希望保持不变,潜在节省的资金(资金和资源)有多大,重要性如何?是护士对名册质量的认识,这项工作的预算是多少等。

2020-07-28