调度问题(班次规划),需要快速算法

时间:2015-10-27 17:31:49

标签: algorithm search scheduling depth-first-search constraint-programming

我有一个问题,我会解释,我不知道这是否是一个调度问题:

每天30或31天,我们希望将医生分配给有一些限制的班次:

每个医生必须分配到特定的天数(例如10或12)

每天我们需要特定数量的医生(例如,正常日子和医生的3名医生) 4周二和3

3 - 还有一些自定义约束:没有人可以连续2天或者在某些情况下可以停留3个

预定义的4个特殊日子,例如医生1-4必须留2个假期,医生5-8必须留1个假期。

5 - 最后表中的某些点是预定义的,例如,医生1想要留在第3位,并且不希望第5次换班。

...

我自己现在试图像CSP一样对待问题:

表[#doctors] [#days]。每个细胞可以是红绿色或白色 并进行dfs搜索:

1-start with choosing a cell to assign
2-assigning red or green if it is valid (in stochastic order) or backtrack if it is not valid
3-check if solution reached

O(2 ^(#days * #doctor))没有任何无效性预测

现在我的算法非常慢,我不知道是否可以更快地使用更好的函数来预测无效节点并更快地回溯,我只是很好的二进制约束CSP但它不是

我希望算法在大约10分钟或更短的时间内找到解决方案

针对此类问题的任何想法或更好的算法类?

非常感谢

0 个答案:

没有答案