总的来说,问题很简单:安排一大群员工每天负责一个人,在任何给定的一天,员工被分成 3 个池,每个员工都有休假要求,每个员工都有每周最多 2 类,等等。
我讨厌手动执行此操作,因为我的组织已经这样做了几个世纪。我喜欢做一些很酷的事情,比如遗传算法(例如 [1] http://www.sersc.org/journals/IJAST/vol14/1.pdf )。
是否有任何可靠的开源/免费替代品?这听起来也像是一个优化问题,我可以启动 C++、R 等来为此插入一些优化库吗?
谢谢
最佳答案
这是一个优化问题。奇怪的是,它被称为调度问题。 :-D 根据数据的大小,您可能需要采用元启发式算法,例如遗传算法、蚁群优化等,但我会从推出您自己的基于规则的启发式算法开始。
基本上,将规则定义为事物之间的关联(A 不能同时在休假和工作),或时间表上的条件(在任何给定时间只有三个人)。然后创建一个时间表,并将所有员工一一插入。如果在插入时违反了规则,则不要插入并选择另一个员工。
如果你做对了,这应该会提出一个有效但不是最佳的时间表,然后你可以做一些很酷的事情,比如定义运算符(交换、移动、3-交换),这会给你一个社区(可以通过运算符(operator)的应用程序到达的所有有效时间表)。然后你可以选择附近最好的时间表,然后重复。这是邻里血统。但是有很多基于社区的方法可供选择。我相信模拟退火适用于调度问题。
关于算法人员排类解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5181809/