時間割編成問題のモデルで使う定数を、生データ timetable.csv から作成する課題である。以下の仕様に従い、定数ファイルと対応表を作成すること。
科目は「科目名+学年+学科」で1科目とみなす。例えばLHR は複数あるが、1年1学科のLHR と1年2学科のLHR は別科目とみなす。そのため科目数は timetable.csv のヘッダー行を除いた行数と等しい(270科目)。科目ID は行番号と一致させる。
教員名は匿名化のため「教員1」のように命名されている。「教員n」のn には特に意味はない。そのため教員ID を付ける場合には、教員列を上から順に読み、/ で分割して、初めて出現した教員名に 1, 2, 3, ... を付ける。教員名中の数字n は匿名化のためのラベルであり、ID として使わない。
例:
学年,クラス,科目名,教員,教室
1,1,LHR,教員1,235
1,1,保健/体育実技,教員6/教員7,235
1,1,英語,教員1/教員2,235
1,1,化学,教員5,2
この場合、教員ID は次のようになる。
ID,教員名
1,教員1
2,教員6
3,教員7
4,教員2
5,教員5
教室は特に規則なく命名されている。ただし、すべて数字となっている。教室ID は教員と同じ方法で出現順に付番すること。
a、h、d、m は timetable.csv から作成すること。
a.csv: 科目ID と教員ID の対応。複数教員の場合は行を分ける。h.csv: 科目ID と教室ID の対応。複数教室の場合は行を分ける。d.csv: 科目ごとの必要教員数。a.csv を科目ID ごとに数えたもの。m.csv: 科目ごとの必要教室数。h.csv を科目ID ごとに数えたもの。その他の定数は timetable.csv からは読み取れない。同じフォルダに置いてある b.csv、e.csv、g.csv を使うこと。
次の3つの対応表を作成すること。これがないと実験後、結果を時間割に戻せなくなる。
subject_map.csv: 科目ID と科目名の対応表teacher_map.csv: 教員ID と教員名の対応表room_map.csv: 教室ID と教室名の対応表timetable.csv の第1列は「学年」という名前だが、実際には学科(1〜4)が入っている。同様に第2列「クラス」には学年(1〜5)が入っている。b.csv などの係数ファイルの grd(学年)、dpm(学科)と突き合わせる際にはこの読み替えに注意すること。