在我们公司,通过最小化造成的干扰,我们已经看到了显著的好处,但我们使用的暴力算法不能很好地处理大规模人员的日程安排(*)
我正在寻找的是是否有任何众所周知的算法可以在一组N个制造商和经理中最小化这种生产力干扰。
在我们的模型中,
- 有N个人。
- 每个人pi都是制造者(Mk)或经理(Mg)。
- 每个人都有一个日程安排si。
- 每个人的日程安排都长H小时。
- 一个日程安排包括一系列不重叠的时间段si=[h1, ..., hj]。
- 时间段可以是空闲的,也可以是忙碌的。两个相邻的空闲时间段等同于跨越两个时间段的单个空闲时间段。
- 每个人的生产力P是0到1之间的值。
- 制造者的生产力在最小化空闲时间段数时达到最大值。
- 制造者的生产力等于1 / (max[1,空闲时间段数])。
- 经理的生产力在最大化空闲时间总长时达到最大值,但他们更喜欢会议之间的长时间间隔而不是短暂的休息。
- 经理的生产力等于每个空闲时间段长度的比例的平方和。即,(h1/si)2 + (h2/si)2 + ... ,其中每个时间段都是空闲时间段。
- 目标:最大化团队的总生产力。
问题是如何决定如何安排涉及N个人的M个不同会议,每个参加会议的人必须将繁忙时间段放入他们的日程安排中,以使其不与任何其他繁忙时间段重叠。对于每个会议Mt,所有参与者的“繁忙”时间段的开始时间必须相同。
是否存在一种算法来解决这个问题或类似的问题?我的第一个想法是这看起来非常类似于碎片整理(最小化不同块的数量),并且有许多关于此的算法。但是碎片整理与调度没有太大关系。您有什么想法吗?
(*) 实际上,这并不是一个真正的问题,因为我们很少有一次性与超过5个人开会,因此可能性的范围很小。
[Mk(S), Mg(S)]
,用于计算制造商或经理在特定时间表下的幸福感。 - John Feminella