2015-03-25 42 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