2014-11-02 52 views
0

我只是想弄清楚,我应该在我的情况下使用哪种算法(员工排班)其中转移覆盖算法使用

说我有一个转变,其中n员工安排上移。默认情况下,他们根据其可用性安排在班次上。例如,我可以从下午1点到晚上11点进行调整,2名员工从下午1点到晚上9点工作。在这种情况下,在晚上9点到晚上11点之间没有保险范围。

我想调动员工,以便尽量扩大班次覆盖范围;例如在前面的例子中,我将从下午1点到9点有1名员工,另一名从下午3点到11点。

为了达到我已经有员工分配到班次的阶段,我使用了禁忌搜索算法,但在这种情况下,我认为会有更适合使用的东西?

谢谢!

+0

工人的特征是什么? – Beta 2014-11-02 14:45:42

+0

他们每天定义的可用性(例如,从上午8点到下午5点可用),他们可能会在我尝试优化覆盖范围的转换之前或之后进行其他一些转换。他们也有每周工作的最小/最大工作时间(但我现在可以忽略)。除此之外,没有什么会影响在同一班次上分配不同时间范围内的工作人员 – David 2014-11-02 14:51:08

+0

您可以在轮班时使用不在班次上的员工换班吗? – Beta 2014-11-02 15:24:43

回答

1

我会建议你自己创建一个蛮力算法。满足处理所有组合,然后拒绝不可能或不可取的组合。原因是你可能会在你的特定Shift系统上有自定义的警告。然后,您可以插入自己的因素(轮班之间的休息,从早到晚/晚班时间的班次,午夜班次或重叠班次,某些班次的员工付款,员工成本的降低等)......它有点像旅行推销员算法,尽管一些算法比其他算法更快或更优雅,但没有什么比蛮力更好,因为它们可以在过程中尽早消除组合。当你最终得到1个或更多的可行组合时,那么选择可以是任意的 - 但显然会影响未来的变化。

+0

是的,这是我的第一个想法,但我想要找到一个快速和优雅的解决方案......如果我真的找不到适合我需求的任何算法,那就是我最终会做的 – David 2014-11-02 14:53:24