私は現在、大学の試験時間割スケジューリングのソリューションに取り組んでいます。遺伝的アルゴリズムの使用を考えていました。
今、私は簡単な例から始めました。これは、私がこれらすべてに慣れていないため、何が起こっているのかを把握するためです。この例では、10 件の試験、6 人の学生、および 6 つの利用可能な時間枠があります。[3 1 4 1 3 5 5 6 4 2]
タイムスロットを表す 1 ~ 6 の値を持つビット文字列に 10 の位置があるような染色体を表しています。例: -スロットなど...
ここで、各学生が受けている試験を表す次の配列があるとします。
int[][] students_exams =
{
{3, 1, 2, 5, 8}, // student 1
{10, 4, 5, 7}, // student 2
{1, 2, 3, 6}, // student 3
{2, 7, 4, 5}, // student 4
{1, 6, 2, 10}, // student 5
{8, 9, 1, 3} // student 6
};
この情報を [nxn] 行列として効率的に表現するにはどうすればよいでしょうか。ここで、n は試験の数 (この場合は 10) で、M[i][j]は試験 i と試験 j を受ける学生の数に等しくなります。
使用できるデータ構造はありますか、それとも各試験を他の試験と比較してインクリメント カウンターを使用する必要がありますか? 考えてみれば、現実の学生数や試験の数に対して効率的ではないと思うからです。
論文や参考文献を紹介していただければ、大変助かります。
ありがとう