禁忌搜索:如何实现 "employee working in pairs" 约束
Tabu search : how to implement "employee working in pairs" constraint
我正在开发一个自动化的员工排班应用程序,使用带约束的 Tabu 搜索。
我已经有很多工作限制(员工的最短工作时间、每班所需的员工人数、不得一起工作的员工……)。
自动规划器在每次迭代(adding/removing/swapping 名员工)中尝试不同的移动,评估所有生成的解决方案的约束(每次移动 1 个解决方案)并选择惩罚最小的解决方案。
我现在正在尝试实施约束,例如 "if employee A is scheduled on the shift, then employee B must also be scheduled on that same shift"。
我的问题是我不知道如何实现它。
假设当前的举措是安排员工 A 在无人值守的班次 S 上。如果我尝试创建的约束被评估,那么该解决方案将立即受到惩罚,因为员工 A 被安排在没有员工的 S 上B. 因此,这个解决方案可能永远不会被选中,即使它是一个很好的解决方案并且员工 A 或 B 都不会上班。
有人知道吗?
谢谢
一些建议:
无人值班的惩罚应大于未配对朋友的惩罚。
您可以进行模拟退火 - 这样有时会接受惩罚的瞬间增加。
您可以进行不同类型的移动 - adds/removes 更多人更喜欢 "friends" 一起移动的移动。
我正在开发一个自动化的员工排班应用程序,使用带约束的 Tabu 搜索。
我已经有很多工作限制(员工的最短工作时间、每班所需的员工人数、不得一起工作的员工……)。
自动规划器在每次迭代(adding/removing/swapping 名员工)中尝试不同的移动,评估所有生成的解决方案的约束(每次移动 1 个解决方案)并选择惩罚最小的解决方案。
我现在正在尝试实施约束,例如 "if employee A is scheduled on the shift, then employee B must also be scheduled on that same shift"。
我的问题是我不知道如何实现它。
假设当前的举措是安排员工 A 在无人值守的班次 S 上。如果我尝试创建的约束被评估,那么该解决方案将立即受到惩罚,因为员工 A 被安排在没有员工的 S 上B. 因此,这个解决方案可能永远不会被选中,即使它是一个很好的解决方案并且员工 A 或 B 都不会上班。
有人知道吗?
谢谢
一些建议:
无人值班的惩罚应大于未配对朋友的惩罚。
您可以进行模拟退火 - 这样有时会接受惩罚的瞬间增加。
您可以进行不同类型的移动 - adds/removes 更多人更喜欢 "friends" 一起移动的移动。