個別指導塾で振替が発生したとき、管理者が直面する問いは「どこに振替先を入れるか」ではない。
「確定済みの授業を崩さずに、振替先だけをどう探すか」だ。
 

この二つは問題の構造が根本から異なる。
前者は全体を再検討する問題であり、後者は確定済みの状態を前提として部分的に探索する問題だ。

なぜ確定済みの授業を崩してはいけないのか。
時間割が生徒・講師・保護者に共有された時点で、その配置は約束になっている。
振替対応のたびに確定済みの授業が動けば、その授業の生徒・講師・保護者にも連絡が必要になる。
1件の振替対応が連鎖的に複数件の再調整を引き起こす。
 

これが毎日3〜4件、多い月では60〜80件発生するとすれば、現場で運用することはできない。
確定済みの授業は固定したまま、振替先だけを探す必要があるのはこのためだ。

確定済みの授業を崩さずに振替先を探すとはどういう仕組みか。
生徒が振替申請を行うと、その操作内容が「振替要求」という状態情報としてシステムに記録される。
shiftect. for EDUCAはshiftect.(不変コア)の技術をもとに、この状態情報に基づいて元の授業枠と振替先候補枠のみを探索対象(変数)とし、それ以外の確定済み授業を全て前提条件(定数)として自動的に定義する。
他の時間帯の余剰ブースと空き講師から振替可能な授業枠が候補として提示される。
この時点での候補は仮状態であり、確定時に再度制約判定が行われる。
管理者は提示された候補を承認するだけであり、確定済みの授業が影響を受けることはない。

この仕組みが成立するのは、全体生成・再生成・自動振替が同一の制御構造で処理されているからだ。
全体生成では全リソースが探索対象になる。
振替処理では確定済みの授業が固定対象になり振替先だけが探索対象になる。
 

業務の状態に応じて探索対象と固定対象を自動的に切り替えるという制御の仕組みが、確定済みの授業を崩さない振替処理を可能にしている。