2015-03-25 44 views
2

我工作几周以来,一个项目真的很有趣,但不幸的是一个非常复杂的背景。类布尔到布尔可满足性[多项式时间减少]最后部分

我已经问3个问题:

,我得到我的回答(再次感谢你@Amit)但现在到了最后的部分,谁将使这个项目可用:)

我现在可以管理:

  • N个时间间隔。
  • C课程。
  • T老师。
  • S房间。

我的约束是如下:

  • 教师2人不能在同一个房间在同一时间。
  • 2道菜不能在同一个房间同一时间。
  • 老师只能讲授特定的课程。
  • 有些课程只能在特定的时间间隔发生。

因此,这是现在,我的结果:

Illustration of my final output for now

但是这里来,我要补充的最后一部分:我要管理学生组,有以下限制:

  • 一个小组只有一些课程可以做。
  • 2+组可以在同一个房间在同一时间只对特定课程(例如像独断的课程)

同样,我成功了约束隔离开来,但我如何不知道将此约束转换为“时间间隔不应重叠”约束。

由于提前, 最好的问候,

回答

1

由于学生只能在一个地方一次:

讲座为连接到同一个学生群体不应该在时间上重叠的课程。

编辑:

应该有不同的学生群体重叠没有限制。如果你有这样的限制,你应该删除它!

约束在课程上。如果您为A课程安排讲座,那么对于参加课程A的学生小组而言,它可能不会与任何其他课程的讲座重叠。它也可能不会与由同一位老师举办的任何其他课程重叠。

因此,学生和课程之间有多对多的关系,教师和课程之间有多对多的关系。

你想为每门课程安排一些讲座,但没有老师和学生没有重叠讲课的限制。

关于

2+基团可以是在同一个房间中,同时只对特定课程(例如像独断当然)

如果基团可以不混合,那么它是不同的课程(即使主题可能相同)。因此,如果两个学生团体不能混用Java,那么您需要将它建模为两个独立课程,分别为Java group1Java group2

+0

问题是:在某些课程中(如排涝课程)2+组学生可以同时在同一个房间......这就是难点..:/ – 2015-03-25 15:03:01

+0

哦〜* - *这个表示法确实可以避免任何其他问题。 如果我有课程Java CM,这个课程必须安排在某个地方,并且2+个小组将参加它。 如果我有课程Java Grp1,那么它是一个不同于Java CM的课程... 这就是你的意思,对吗? – 2015-03-25 15:26:04

+0

是的。在您的系统中,真正的课程“Java 101”可能需要分成几个“课程”:所有学生都参加的讲座,以及“Java 101 - group1”和“Java 101 - group2'为小组讲课。 – 2015-03-25 15:32:05