1

我正在做一个个人项目,我需要一些帮助才能将我的想法直接用于调度算法。

想象一下你正在主持一个会议:

  • 与会者需要被自动分配到全天 8 个可能的研讨会中的 6 个,以及 3 个可能的讲座中的 2 个。
  • 与会者只能参加一次研讨会或讲座(没有预定的重复)。
  • 中午大家都去吃午饭。
  • 与会者应在午餐前休息一次,午餐后休息一次。
  • 研讨会时长 30 分钟,讲座时长 60 分钟。
  • 讲座仅在上午 9 点、上午 11 点、下午 1 点和下午 3 点提供,否则与会者将在研讨会或休息时间进行。

理想情况下,基本时间表将是两种变体之一(唯一的区别是他们参加的讲座和时间):

  • 上午 9 点 - 中午:3 场研讨会、休息和讲座(A 或 B)
  • 下午 1 点 - 下午 4 点:3 场研讨会、休息和讲座(B 或 C)

或者

  • 上午 9 点 - 中午:讲座(A 或 B)、休息、3 个工作坊
  • 下午 1 点 - 下午 4 点:讲座(B 或 C)、休息、3 个工作坊

我有一个员工列表,我可以根据需要构建“会话”信息表。但最后我需要能够遍历员工,找出一个时间表,然后将其存储起来,以便我们以后打印。

你会怎么做?我非常乐意详细介绍其他限制/要求。

4

1 回答 1

0

由于我们想要的时间表类型的参数相当简单:

  • 上午 9 点 - 中午:3 场研讨会、休息和讲座(A 或 B)下午 1 点
  • 下午 4 点:3 场研讨会、休息和讲座(B 或 C)

或者

  • 上午 9 点 - 中午:讲座(A 或 B)、休息、3 个工作坊
  • 下午 1 点 - 下午 4 点:讲座(B 或 C)、休息、3 个工作坊

这意味着我们可以生成的排列数量有限。我们解决这个问题的方法是为每个排列生成一个示例时间表(在我们的例子中,它大约有 16 个不同的时间表),然后打印足够的副本并在员工到达时随机分发它们。

于 2019-03-28T18:00:53.030 回答