算法人员调度解决方案

Min*_*Kao 7 algorithm optimization scheduling

从大体上讲,这个问题很简单:安排工作人员组成的军队一个人每一天的覆盖,在任何一天的工作人员被分成3个游泳池,每个员工放假的规定,每个员工最多有2每周轮班等

我不喜欢手动这样做,因为它在我的组织已经完成了几个世纪.我喜欢像遗传算法那样做一些很酷的事情(例如[1] http://www.sersc.org/journals/IJAST/vol14/1.pdf).

那里有可靠的开源/免费替代品吗?这听起来像是一个优化问题,我可以启动C++,R等插入一些优化库吗?

谢谢

Tom*_*ald 7

这是一个优化问题.奇怪的是,它被称为调度问题.:-D根据数据的大小,您可能需要进行Metaheuristics,如遗传算法,蚂蚁群优化等,但我会从这里开始,通过滚动您自己的规则为基础的启发式.

基本上,将规则定义为事物之间的关联(人A不能同时在度假和工作中)或时间表上的条件(在任何给定时间只有三个人).然后创建一个计划,并逐个插入所有员工.如果插入规则被破坏,则不要插入并选择其他人员.

如果你这样做,这应该是一个有效但不太理想的时间表,你可以做一些很酷的事情,比如定义操作符(交换,移动,3交换),它会给你一个邻域(应用运营商可以达到的所有有效时间表).然后,您可以选择附近的最佳时间表,并重复.这是邻里血统.但是有很多基于社区的方法可供选择.我相信模拟退火在应用于调度问题时很好.


Mar*_*nke 6

您可以尝试使用OptaPlanner(之前称为Drools Planner),它基于Java和开源.