ある大学では、あらかじめ決められている6時限の中に25の授業を割り当てなければなりません。時間割りは生徒が登録する前に作らねばならないので、授業毎の実際の人数は不確実なものとなります。どの授業も1時限で終わるものとします。通常、この種の問題はgrouping解法で取扱うのですが、これらの授業の時間割りには多くの制約条件が伴っています。たとえば、生物学と化学を同じ時間帯にはおけません。これは、医学部予科の学生がこの学期の中で両方受けられるようにするためです。このような制約条件を満足させるためにはschedule解法を用います。この解法は、grouping解法に似ていますが、他の作業の前(あるいは後、期間中)に特定の作業を行わなければならない(または行ってはならない)といった制約条件が伴います。
|
|
classes.xls |
|
|
25の授業を6つの時間帯に、各授業に出席する生徒の人数の平均値が最小化されるように割り当てる |
|
|
Schedule |
|
|
全作業の長さが等しく、個々の時間帯のいずれにでも割り当てることが可能であるような、スケジュール問題。また、ある項目がどのグループに入るかについての制約があるようなグループ化問題 |

ファイルclasses.xlsのモデルは、多くの制約条件を伴う典型的なスケジュール問題を扱います。各授業の出席人数の範囲は、確率分布から与えられ、D8:D32に"Actual
Size"として入ります。セルC8:C32で、25の授業が6つの時間帯に割り振られます。使える教室は5つだけなので、1つの時間帯に6以上の授業を割り振ると最低1つの授業が開けないことになります。
セルL20:N28には、諸々の制約条件が入ります。その左側には制約の意味が書かれています。数字コードか英語の記述のどちらかを制約条件として使えます。
考えうる各スケジュールを評価しますが、これはa)開けない授業の数、b)授業が定員以上のため座席に座れない生徒の数、の両方を計算することによって行っています。bについて、RISKOptimizerは大規模な授業のすべてについて一遍に計算するのではなく、例えば1または2の大授業がある時間帯の中にあれば、大きい教室から使用されるようにしています。
セルJ11:M11は各時間帯にどれだけの授業が割り振られているのかを数えるために、エクセル関数のDCOUNTが使用されています。J12:M12には、各時間帯について教室を使えない授業の数が表示されます。また、そうした授業数の合計はセルL13に表示されます。
もし、授業に必要な座席数が実際の座席数を越える場合、J15:M15で座席のない生徒の数が各時間帯について計算され、その合計がL16に表示されます。セルG9には、この席の与えられない生徒数(L16)に、教室の無い授業の数(L13)を掛けた値を足した値が入ります。こうして、全ペナルティーを結合したセルを作り、その値が低いほどよい時間割であると判断できるようになります。
C8:C32を変えて、G9のペナルティーにおけるシミュレーション分布の平均が最小になるようにします。ここではSchedule解法を使います。この解法を使うとダイアログボックスの下方にある"Option"セレクションに関するオプションが多数現れます。time blocksの数を6にし、constraints cellsとしてK17:M25を選びます。