员工排队算法

时间:2008-10-16 05:17:35

标签: algorithm scheduling rostering

我们正在为员工排班系统开展一些R& D,我知道有一些建议的算法,如模因算法等,但我在网上找不到任何其他信息。

有没有人知道任何研究期刊,或那些更好地解释这些算法的伪代码?

谢谢, 德万

5 个答案:

答案 0 :(得分:11)

这是一份有用的文件:

Memetic Algorithms for Nurse Rostering (pdf)

它包含一些理论和伪代码。

调度问题是NP难的,通常使用遗传算法(GA)来解决 您可以从维基百科article

开始学习GA

答案 1 :(得分:6)

您可能还想看一种名为“模拟退火”的技术。与遗传算法一样,这使用评估函数来确定候选解决方案的质量 - 但候选者的生成往往更简单。每种类型的算法在某些情况下都能提供更好的结果 - 从简短的谷歌调查来看,它感觉遗传具有优势,但退火将更快实施。

这是一份比较文件(针对不同的域,而非调度):   http://www.ee.utulsa.edu/~tmanikas/Pubs/gasa-TR-96-101.pdf

我们在大型调度应用程序中使用了模拟退火,它确实运行良好。

说实话,如果员工人数少于40人,我建议给出名单的直观表示,并让用户最终确定时间表。也许您会使用算法来生成候选计划,然后让用户使用它。您仍然可以使用评估功能来检查用户的工作,并提供有关其解决方案有多好的反馈。

答案 2 :(得分:1)

在制定名册时间表时要考虑很多问题,因此aku关于遗传算法的提示是最好的。

您需要一个好的评估函数来确定此类算法的名单质量,您可以而且应该考虑以下内容(但不限于此):

  • 您是否已使用此名册解决了工作量问题? (即你是否有足够的人在工作?)
  • 如果没有,你能忍受后果吗? (对于医院来说,你可能不得不推迟一天15分钟的午餐,以便有足够的人可以使用它,或者只是稍微拖出它)
  • 是一个的名单,考虑到每个人的轮班稳定性,他们休假的日子,他们是否有规律地度过周末
  • 是名册合法吗?考虑到当地法规之类的事情,规范诸如在一个班次和另一个班次之间必须经过多长时间(停机时间),每个人在给定间隔(日,周,月)内工作多少的事情。

答案 3 :(得分:0)

我在前一段时间看过these家伙的一张名册。

答案 4 :(得分:-1)

或者使用OR;)