我应该使用哪种算法来创建自动人员调度功能?


18

想象一下一个有几十个兼职员工的小型本地企业(在我的情况下是狗托儿所)。目标是自动创建每周员工计划。我的问题是针对该问题探索哪种算法方法。

需要牢记许多限制,主要是(1)人员配备和(2)每个班次的需求,不仅是每个班次需要多少员工,而且每个班次需要的技能(例如某个班次,您可能需要一个知道如何开车去接送狗的人,或者另一个需要知道如何给狗洗澡的人等等。

其他限制包括诸如避免或要求某些员工连任的事情-一方面可能是由于人格冲突,或者另一方面是由于渗透需要从高级到初级员工进行培训。

另外,还有一些偏好要考虑在内。有些工作人员更喜欢连续两天早上而不是星期一和星期四,等等。我们知道我们不能总是适应每个人的喜好。实际上,我们有一个层次结构,即员工在选择时会优先考虑。

我很想知道有一种方法可以将这个问题减少或表达为现有的,已经解决的算法。但是我不知道该探索哪种算法。哪种现有的特定算法最有前途?



3
顺便说一句,我从来没有找到一种算法可以解决这个问题,而不仅仅是过去的最简单的约束条件,而不仅仅是“让每个人都按时间表随机忽略任何其他约束条件,让它们根据需要进行交换或换班”。

4
有可用的完整的解决方案从JBoss Drools的网站:optaplanner.org -你需要编纂调度限制,比如每周最长工作时间等
BobDalgleish

我怀疑这与SAT问题等效,后者已知是NP完全的,但是毫无疑问,好的算法会得到合理的结果。
戴维·康拉德

Answers:


16

诸如局部搜索(禁忌搜索模拟退火后期验收)之类的算法可以很好地解决此类问题。

正如鲍勃建议的那样,如果您使用的是Java,请查看OptaPlanner(开源)。观看有关员工排班的视频。


3
您可以解释算法还是将链接添加到可以的地方?如果您添加链接,也请从页面中添加一些相关信息。
亚当·祖克曼

做完了 注意:许多内容也在Wikipedia上进行了说明。
Geoffrey De Smet 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.