算法人员排类解决方案

标签 algorithm optimization scheduling

总的来说,问题很简单:安排一大群员工每天负责一个人,在任何给定的一天,员工被分成 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/

相关文章:

优化特定指令集的合取范式表达式的算法?

algorithm - 匈牙利算法和多重因素

flutter - cron插件和Flutter中的Timer.periodic之间的区别

javascript - 在 Javascript 中迭代对象属性的最快方法是什么?

go - 为什么从代码中调用 Setenv 不起作用?

algorithm - 了解 Cormen 邮局定位解决方案

python - 在 n*m 网格中找到所有可能的步行而不重复

algorithm - 简单代码及操作挑战(附图)

c# - 在字符串数组中查找下一个匹配项的索引和值

optimization - 使 D 程序更快的方法