大学の時間割を生成するアルゴリズムを実装する必要があります。私は多くのアルゴリズムを検索して見つけました。しかし、ここに問題があります。週ごとではなく、学期全体の時間割を生成するアルゴリズムが必要です。また、コースのパーツの定義済みの順序も考慮する必要があります。たとえば、演習 1 は講義 2 の後、講義 3 の前にする必要があります。何か提案はありますか?
ありがとう。
更新:
次の厳しい制約があります:
H1: 任意の時間帯に各部屋に 1 つのコース部分のみが割り当てられます。
H2: 部屋はすべての参加学生を収容でき、イベントに必要なすべての機能を満たします。
H3: 同時に複数のコースに参加する生徒はいません (少なくとも必須のコース)
。 H4: 同時に複数のコース部分を教える教師はいません。
ソフト制約は次のとおりです。
S1: コースの一部は、講師にとって都合の悪い時間帯に割り当てられるべきではありません。
S2: 教師のクラス間のギャップは最小限にする必要があります。
S3: 生徒のクラス間のギャップは最小限にする必要があります。
S4: クラスは、講師の好み (曜日と時間帯) を満たす必要があります。
S5: コースのパーツは、順序を事前に定義するようにスケジュールする必要があります。
例:
コース「ソフトウェアアーキテクチャ」
Week No Course Room Course Part Day Time
--------+---------+-------+--------------+----------+-----
Week 1: SA 435 Lecture 1 Wednesday 8.15-11
Week 2: SA 435 Lecture 2 Wednesday 8.15-11
Week 3: SA 47 Lab 1 Monday 13-15
Week 3: SA 436 Lecture 3 Wednesday 11-14
Week 4: SA 243 Exercise 1 Monday 13-15
Week 5: SA 436 Lecture 4 Wednesday 8.15-11