【发布时间】:2017-06-18 18:24:50
【问题描述】:
我得到了一个包含列的员工日程表的 csv:
employee ID, first last name, sunday schedule, monday schedule, ... , saturday schedule
每位员工 1 周的时间表。我附上了部分 csv 文件的屏幕截图。整个文件大约有 300 行。
我需要根据员工的日程安排(地点无关紧要)生成 15 人的团队,以便每个团队的员工拥有彼此最接近的日程安排。我尝试过的伪代码:
将 csv 文件解析为调度数组(我自己的结构定义)
将具有相同确切时间表的员工匹配到团队中(创建约 5 个完整团队,20 - 25 个半满团队,留下约 50 个与任何人都不匹配的时间表)
对于 i = 1 到 14,对于规模为 i 的团队的每个成员,找到具有最接近时间表的团队(作为一个整体)并将该成员添加到该团队。团队规模达到 15 人后,将其标记为“完成”。
这有点奏效,但绝对没有给我最好的团队。我的问题是有人知道更好的方法吗?伪代码或只是一般的想法会有所帮助,谢谢。
编辑:这是一个比较公式的例子 比较基于代理计划之间的半小时块差异。特工 25 的得分是 16,因为他与特工 23 和 24 相差 8 个半小时。根据每个人的得分相加,团队的总分是 32。
并非所有座席每天工作 8 小时,而且许多座席有不同的休息日,这对他们的“亲密度”得分影响最大。此外,一些座席在某一天的日程安排与他们的正常日程安排不同。例如,一位代理可能在周一上午 7 点至下午 3 点工作,但在周二至周五上午 8 点至下午 4 点工作。
【问题讨论】:
-
您如何定义“最佳团队”?
-
当每个团队的员工彼此的日程安排差异最小时。
-
@mrogers:这是真正的问题。一旦你有了指标,你就可以开始优化了。
-
定义“他们的日程安排中的最小差异”
-
你能把你的代码贴在这里吗?
标签: c# algorithm schedule c#-7.0