dougai2427 2013-08-09 17:41
浏览 69
已采纳

非循环劳动力调度算法

There seems to be a large amount of information about Cyclic (or "Rotating") Workforce Scheduling problems. I am searching for an algorithm that will help generate a schedule of employee shifts that does not care what the previous week's schedule looked like. From my research, this sounds like a non-cyclic workforce scheduling problem.

Essentially, I have the employee's availability, their min/max hours, and their requested time off. With that information, I want to create an optimized schedule that caters to the employee's desired availability while also meeting the number of required shifts for each day.

Does anyone have tips on a good algorithm for this purpose? Thanks!

  • 写回答

1条回答 默认 最新

  • douzhang5121 2013-08-09 22:24
    关注

    For problems like employee scheduling where there are a lot of constraints on the solution, I prefer approaches that never violate any constraints, or as near as possible. (Some approaches such as genetic crossover will violate constraints and then perform additional operations to fix the solution - this is also a valid approach, but you need to beware of going down a blind alley.)

    Two approaches are based on using a greedy algorithm.

    The first is to use a semi random greedy algorithm; if you have two choices then ordinarily you would always select the locally optimal choice, but with a semi random greedy approach you introduce the possibility of selecting the choice that isn't locally optimal. For example choice one has a weight of 5 and choice two has a weight of 2; ordinarily you would select choice one, but in this case you would use a random number generator and select choice one if rand(5 + 2) is less than 5, else select choice two. Now run the algorithm several times and take the "best" solution.

    The second option is to start with a greedy or semi random greedy solution, and to use a local search algorithm to reassign employee slots in an attempt to improve the solution. For example, if an employee has fewer than their desired hours then bump an employee occupying a slot that's legal for the sub optimal employee and assign the sub optimal emoloyee to it, continuing the search to reassign the bumped employee if need be. Unlike the first solution, this one may not terminate if you're not careful.

    The two approaches can be combined, generating several solutions with the semi random greedy approach and then conducting local searches to improve the best results.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题