员工排班算法
我们正在着手对员工排班系统进行一些研发,我知道有一些建议的算法,例如模因算法等,但我在网上找不到任何其他信息。
有谁知道任何研究期刊或伪代码可以更好地解释这些算法?
谢谢, 德万
We are embarking on some R&D for a staff rostering system, and I know that there are some suggested algorithms such as the memetic algorithm etc., but I cannot find any additional information on the web.
Does anyone know any research journals, or pseudocode out there which better explains these algorithms?
Thanks,
Devan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这是一个有用的文档:
护士排班的模因算法 (pdf)
它包含一些理论和伪代码。
调度问题是 NP 难题,通常使用遗传算法 (GA) 来解决。
您可以从维基百科文章开始学习遗传算法
Here is a useful document:
Memetic Algorithms for Nurse Rostering (pdf)
It contains a little bit of theory and pseudo-code.
Scheduling problem is NP-hard and usually being solved using genetic algorithms (GA).
You can start learning GA from Wikipedia article
您可能还想了解一种称为“模拟退火”的技术。 与遗传算法一样,它使用评估函数来确定候选解决方案的质量 - 但候选解决方案的生成往往更简单。 每种类型的算法在某些情况下都会给出更好的结果 - 从谷歌的一项简短调查来看,感觉遗传算法具有优势,但退火会更快地实现。
这是一个比较论文(针对不同的领域,而不是调度):
http://www.ee.utulsa.edu/ ~tmanikas/Pubs/gasa-TR-96-101.pdf
我们在大型调度应用程序中使用了模拟退火,并且效果良好。
老实说,如果员工数量少于 40 人左右,我建议提供花名册的可视化表示,并让用户最终确定时间表。 也许您会使用一种算法来生成一个候选时间表,然后让用户使用它。 您仍然可以使用评估功能来检查用户的工作并就他们的解决方案的好坏提供反馈。
You may also want to look at a technique called "simulated annealing". Like genetic algorithms, this uses an evaluation function to determine the quality of candidate solutions - but the generating of the candidates tends to be simpler. Each type of algorithm gives better results in certain circumstances - from a brief Google survey it feels like genetic has the edge, but annealing will be quicker to implement.
Here is a comparison paper (for a different domain, not scheduling):
http://www.ee.utulsa.edu/~tmanikas/Pubs/gasa-TR-96-101.pdf
We have used simulated annealing in a large scheduling application and it did work well.
To be honest, if the volume of staff is less than about 40, I would recommend giving a visual representation of the roster and letting the user finalise the schedule. Perhaps you would use an algorithm to produce a candidate schedule to start with, and then let the user play with it. You could still use the evaluation function to check the user's work and give feedback on how good their solution is.
在设置名册时间表时需要考虑很多很多问题,因此 aku 关于遗传算法的建议是最好的。
您需要一个良好的评估函数来确定此类算法的名册质量,并且您可以而且应该考虑以下内容(但不限于):
There are many many many issues to consider when setting up a roster schedule, so aku's tip about genetic algorithms is the best one.
You need a good evaluation function to determine the quality of the roster for such an algorithm, and you can, and should, consider things like the following (but not limited to):
不久前我读到了 CSIRO 的一篇排班算法论文。
更新的链接 - https ://web.archive.org/web/20140204021235/http://www.cmis.csiro.au/or/rostering/railtex.htm
I read a rostering algo paper by CSIRO a while back.
Updated link - https://web.archive.org/web/20140204021235/http://www.cmis.csiro.au/or/rostering/railtex.htm
或者使用 OR ;)
Or by using OR ;)