PR

2331 AIで時間割を作る(2)

完成した時間割

 まず、完成した時間割のイメージです。会議などがあるので、クラスごとではなく、先生ごとの時間割になっています。先生の名前は、国語の先生が国あ、国い…、社会の先生が社あ、社い…としています。1Tとか2Rとかいうのはクラスです。グレーになっているのは、その先生は、その時間に授業ができない、という設定です。
 この記事での各画像はデータの一部です。またこの時間割はフィクションであり、実際の本校の時間割とは関係ありません。

さらにやっかいなのが、たとえば2時間目の1Tのように、○や●の印はさておき、国あ、国う、国おの3人の先生が1つのクラスを担当している場合。1時間目の英あ先生のように、一人の(実際には複数の)先生が1Tと1Rの2つのクラスをもつこともある。

条件となるデータの設計

戦略

 ということなので、たとえば、英あ先生の1Tと1Rの2クラスの授業を、クラスを別々に考えようとすると、「その時間に英あ先生の1Tのクラスに入っているから1Rには入れない」みたいなエラーがおこると困るのでクラスをベースとして時間割は作りにくい。
 同様に国あ、国う、国お3人の先生が同時に1Tの授業しているコマは「すでに国あ先生が授業をしているから国う、国お先生は入れない」みたいなエラーを起さないようにしたい。また、3人が授業を入れるということは、その時間に先生が3人ともあいていないといけないわけだ。なので実は先生をベースとしても時間割は作りにくいわけだ。

では、どうするか。授業コマをベースに時間割を組んでいくのだ。

 話を簡単にするためにすでに完成した時間割の金曜日の1~4時間目に使ったコマで、もう一度金曜日の1~4時間目の時間割を組むことを考える。授業コマをベースにするというのは、次のエクセル表を見るとわかると思う。
A,B列はコマの番号、CD列はクラス(最大2クラス)。そしてE~G列は先生(最大3人。会議の種類によっては最大8人だが今回は省略)

このずらっと並んだコマを1~4時間目の何時間目に入れるかを考えてもらうというわけだ。
ただし、
・同じ時間に一人の先生が2つのコマはもてない
・同じ時間に一つのクラスが2つのコマももてない
 (コマの中に各クラス4回ずつ登場するのでどのクラスも1~4時間目が埋まるはず)
・先生の都合の悪い時間(時間割表でグレーのところ)に授業を入れられない
という縛りがある。

そうしたら次に先生シートというのをつくる。先生ごとに、授業ができる時間は1、できない時間は0を入れておく。時間割を見ると、国あ先生は4時間目がグレーになっているのでそこを0とする。

そうしたら先ほどのコマの入っているシート(コマシートとよぼう)にH~K列を追加して、それぞれ1~4時間目のにその駒の授業ができるかどうかを入力する。たとえば、駒コード01の1Tの授業は国あ、国う、国おの3人の先生がいずれも1,つまり授業可能な時間ではないといけない。しかし、国あは4時間目は不可、ということなのでこのコマも4時間目は不可ということになる。
 このほか、この授業はこの時間に確定!というときに、その時間だけ1にしてそれ以外はすべて0にするという使い方もできる。

もちろんいちいちこれを計算しないといけないわけではない。そのためのエクセル(スプレッドシート)だ。コマシートのH2のセルには次のような計算式を入れた。

=XLOOKUP($E2,’先生シート’!$B$3:$B$51,’先生シート’!C$3:C$51,”該当なし”)*XLOOKUP($F2,’先生シート’!$B$3:$B$51,’先生シート’!C$3:C$51,1)*XLOOKUP($G2,’先生シート’!$B$3:$B$51,’先生シート’!C$3:C$51,1)

つまりどういうことか、3人の先生それぞれに●時間目は授業できる?と聞く。可能なら1、無理なら0が返ってくるので、3人の答えを掛け算する。つまり、一人でも0なら0、不可になる。なお、2人の先生で授業する場合の3人目や、1人で授業するときの2人目、3人目は1が返るようになっている。
 …ま、この操作もGeminiにやらせればよいといわれればそれまでなのだが、これくらいはエクセル(スプレッドシート)の関数でも十分対応可能なので、とりあえずこちらでやっておく。

AIによる割り当て作業

 そしていよいよGeminiの出番。このファイルを読ませて、「思考モード」で次のように指示。
 最初、3.6Flashでやったら、「私は言語モデルですので、そちらに対応できるようには設計されていません。」といけずな回答を得ました。。。

時間割を作ります。
エクセルで行ごとに一つの授業が入っています。
C,D列は対象のクラス、E,F,G列は先生の名前です。
H,I,J,Kはそれぞれ1,2,3,4時間目にその授業が入れられれば1、入れられなければ0となっています。
それぞれの授業を何時間目にすればよいでしょうか。何時間目の授業にするかをL列に入れてください。
もちろん同じクラス、あるいは同じ先生が、同じ時間に2つの授業をすることはできません。
最後の行は会議です。3人の先生があいている時間に入れてください。  

するとだ。1分もたたないうちに

全授業および最後の会議について、「クラスの重複禁止」「先生の重複禁止」「各時間の可能・不可(1/0)」のすべての制約を満たすL列(時間)の割り当て結果です。

と出してきた。コマシートにH列に何時間目にするかが返ってきたのだ!

 しかし、これでは時間割としてはとてもわかりづらい。「お前が始めた物語だろ」と言われればその通りなのですが。これを先生ごと、クラスごとの時間割に直す必要がります。けど、面倒。ということでまたお願い。

お前が始めた物語だろ – 進撃の巨人 | アル
進撃の巨人のコマ投稿です。この作品のコマは出版社や作者の方に許可を頂いているので誰でも自由に投稿できます。

進撃の巨人(22) (週刊少年マガジンコミックス)

新品価格
¥594から
(2026/8/21 02:02時点)

クラスごと、先生ごとに1,2,3,4時間目にどの授業がくるか表にしてください。

と投げると、クラス別時間割表、先生別時間割表を返してくれました。


すげー。
あとはこれを月火水木金の5日に拡大すればよいわけか。もちろんそうすると、きっと新しい問題が出てくるんだろうけど。

 とりあえず次は木、金曜日の2日分でやってみる。1日が2日になっただけでもいろいろ問題が起こりそう…。

コメント

タイトルとURLをコピーしました