- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
似乎有大量关于循环(或“轮换”)劳动力调度问题的信息。我正在寻找一种算法,该算法将有助于生成不关心前一周的日程安排的员工轮类时间表。根据我的研究,这听起来像是一个非循环的劳动力调度问题。
基本上,我知道员工的空闲时间、他们的最短/最长工作时间以及他们要求的休假时间。有了这些信息,我想创建一个优化的时间表,以满足员工所需的可用性,同时满足每天所需的轮类次数。
有没有人对此有好的算法的提示?谢谢!
最佳答案
对于员工排类这样的解决方案有很多限制的问题,我更喜欢从不违反任何限制或尽可能接近限制的方法。 (一些方法如遗传交叉会违反约束,然后执行额外的操作来修复解决方案——这也是一种有效的方法,但你需要提防走入死胡同。)
两种方法都基于使用贪心算法。
第一种是使用半随机贪心算法;如果您有两个选择,那么通常您总是会选择局部最优的选择,但是使用半随机贪婪方法,您可能会选择非局部最优的选择。例如,选项一的权重为 5,选项二的权重为 2;通常您会选择选项一,但在这种情况下,您会使用随机数生成器并在 rand(5 + 2) 小于 5 时选择选项一,否则选择选项二。现在多次运行该算法并选择“最佳”解决方案。
第二种选择是从贪婪或半随机贪婪解开始,并使用局部搜索算法重新分配员工槽,以尝试改进解。例如,如果一名员工的工作时间少于他们期望的时间,则将占用对次优员工合法的位置的员工进行调动,并将次优员工分配给它,如果需要,继续搜索以重新分配被调动的员工。与第一个解决方案不同,如果您不小心,这个解决方案可能不会终止。
可以将这两种方法结合起来,使用半随机贪婪方法生成多个解决方案,然后进行局部搜索以改进最佳结果。
关于php - 非循环劳动力调度算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18152567/
我正在尝试使用私有(private)认知为 sagemaker 私有(private)劳动力构建 terraform 正在关注:https://registry.terraform.io/provid
我是一名优秀的程序员,十分优秀!