我正在开发一种应用程序,可以最佳地将轮班分配给医院的护士。我相信这是带有离散变量的线性规划问题,因此可能是NP难的问题:
因此,基本上有大量变量(总共20 * 30 = 600),每个变量都可以使用少量离散值。
目前,我的计划是使用修改后的Min- conflicts算法
还有更好的主意吗?我有点担心它将陷入局部最优状态。我应该使用某种形式的模拟退火吗?还是不仅要考虑一次变量的变化,还要特别考虑两个人(当前手动算法的主要组成部分)之间的换档切换?我想避免针对当前约束条件调整算法,因为这些约束条件可能会发生变化。
编辑: 没有必要找到严格的最佳解决方案;目前,花名册是手动完成的,我可以肯定,大多数情况下结果是次优的- 应该不难做到。当然也必须进行短期调整和手动操作,但是我认为这不会成为问题。将过去的作业和手动作业标记为“固定”实际上可以通过减少解决方案空间来简化任务。
这是一个很难解决的难题。关于此主题的学术论文很多,尤其是在运筹学领域- 例如,参见护士名册论文2007-2008或仅谷歌“护士名册运筹学”。复杂度还取决于以下方面:解决多少天;护士可以做出什么样的“要求”;名册是“循环的”;它是一项长期计划还是需要处理诸如疾病和掉期等之类的短期名册“修复”?
您描述的算法是一种启发式方法。您可能会发现您可以对其进行调整,使其在一个特定的问题实例中正常工作,但是一旦“某些内容”更改,它就可能无法很好地工作(例如,局部最优,收敛性差)。
但是,根据您的特定业务需求,这种方法可能就足够了-例如,获得 最佳 解决方案有多重要,您所描述的问题大纲是否希望保持不变,潜在节省的资金(资金和资源)有多大,重要性如何?是护士对名册质量的认识,这项工作的预算是多少等。