これは私が長い間頭に浮かんだ問題です。教師とプログラマーの息子である私は、早い段階でそれを思いつきました...しかし、私はまだそれに対する解決策を見つけていません。
これが問題です。いくつかの制約を使用して、学校のタイムスケジュールを作成する必要があります。これらは一般的に2つのカテゴリに分けられます。
健全性チェック
- 教師は2つのクラスを同時に教えることはできません
- 生徒は同時に2つのレッスンに従うことはできません
- 一部の教師は、週の間に少なくとも1日休む必要があります
- 曜日はすべてタイムテーブルでカバーする必要があります
- 被験者Xは毎週正確にまあまあの時間を持っている必要があります
- ..。
環境設定
- 各教師のスケジュールは可能な限りコンパクトにする必要があります(つまり、教師は1日中、可能であれば一時停止せずに1日中すべての時間作業する必要があります)
- 休日のある教師は、どの日に好みを表現できる必要があります
- アルバイトをしている教師は、学校の一日の初めと終わりのどちらで働くかという好みを表現できる必要があります。
- ..。
さて、解決策を見つけられなかった(そしてその間に1つか2つのことを学んだ...)数年後、私はこれがNP困難な問題のように聞こえることに気づきました。
NP困難として証明されていますか?
誰かがこのことをクラックする方法についてのアイデアを持っていますか?
この質問を見て、私はこの問題について、そしてこの場合に遺伝的アルゴリズムが使用できるかどうかについて考えさせられました。ただし、健全性チェックのルールを維持しながら可能性を変更することはかなり困難です。また、互換性のない要件を区別する方法もわかりません。
問題をより適切に特定するための小さな補遺。これは、すべての生徒が異なるクラス(たとえば、1年目のセクションA)に関連付けられ、教師がクラス間を移動するイタリアの学校スタイルの教室に適用されます。同じクラスのすべての生徒は同じスケジュールを持っており、どのレッスンに参加するかを選択することはできません。