時間割作成システム TimeAssignor

Ver.0.31 May 31st, 2001

Copyright(C)1998-2001 by Takao Doi




目次

  1. 作業の流れ
  2. データベース作成
  3. データ編集
  4. データテーブル
  5. データ設計のガイド
  6. インポートとエクスポート
   

  1. 自動割付
  2. 時間割作成の条件
  3. 時間割エディタ
  4. 各種設定
  5. 時間割プロジェクトファイル
  6. エラー



はじめに

TimeAssignor は学校の時間割を作成するシステムです。講師の都合、特別教室 等の資源、同時に行なうことのできない講義などの条件を考慮しながら、各講義 に実施時間を割り当てます。 時間割編成は、考慮すべき条件が多く、手間のかかる作業だとよく言われます。 TimeAssignor は次の特徴により時間割編成作業を手助けします。

[特徴]

●自動割付
各講義に制約条件に従って自動的に時間を割り付けます。
・制約伝播をベースとした効率的な探索による割付
・条件違反割付の部分修正
により時間割を手早く作成します。

●時間割エディタ
時間割をグラフィカルに編集する画面を持ちます。
編集画面では、人手による講義時間の変更、自動調整による条件違反の解消 を行なうことが出来ます。出来上がった時間割の一部を固定した後、自動調整を行な ったり、改めて自動割付処理を実行することができます。これにより自動割付と 人手による修正を交互に繰り返すことが可能となります。

●データベース
講義名などの基本データ、時間割の各種条件を導く式、時間割結果など TimeAssignor の 扱うデータは関係データベースのテーブルの形式に統一されています。 これにより、他システムとの間のデータの相互利用、SQLによる各種データの抽出な どの拡張性を持ちます。
テキストファイルやMicrosoft Accessのデータベースとの間でデータのインポート/エクスポートが可能です。


環境/構成

Windows 95 / 98 / NT4.0 / 2000 / Me 上で動作します。 インストール先フォルダには次のファイル、フォルダが出来ます。

 TimeAssignor.exe実行ファイル
 TimeAssignor.html このファイル
 Samplesサンプルデータ

また、プログラムファイルディレクトリ(標準では \Program Files)の下、
Common Files\Borland Shared\BDE にBorland データベースエンジンのファイルが作られます。


1. 作業の流れ

[流れ]

  1. データを入力する

    1. データベースを作成する
    2. データを入力する

      1. マスターデータを入力する
      2. 関係データを入力する

  2. 時間割を決定する

    1. 自動割付を実行する
    2. 自動割付結果の時間割を編集する
大きくはこのような作業の流れになりますが、それぞれの過程から前に戻って 修正、追加、削除を繰り返すことはもちろん可能です。

[データベース作成]

以降のフェーズで使用するデータベースを作成します。 データベース作成

[データ入力]

2種類のデータを入力します。 それぞれのデータはテーブルに格納されます。 データ編集  データ設計のガイド

[自動割付]

各課題の実施時間を TimeAssignor によって自動的に選びます。 その際できるだけ時間割作成の条件に合うよう 時間を決め、その後、 条件違反の箇所があれば違反を少なくするよう変更を試みます。 自動割付

[時間割の編集]

時間割エディタを使って時間割表の修正変更を 行ないます。 変更により条件違反が発生した場合など改めて自動調整することも可能です。


2. データベース作成

データベースは複数のファイルから作られます。 それらのファイルを作成するディレクトリ(フォルダ)を指定します。 既存のデータベースのディレクトリを指定する場合もあります。 データベースの作成、指定は次のメニューで行ないます。 データ入力処理や自動割付処理はデータベースにアクセスしながら処理を行なうので、 それらの処理を行なうには、新たなデータベースを作成するか、既存のデータベース を指定しておかなければなりません。
データベースは Paradox 7 という形式を持ちます。他の形式のデータベース、 ファイルからのインポートも可能です。


3. データ編集

データ入力、編集はデータ編集画面で行ないます。
データ編集画面は、データ編集ボタン、または、[ファイル]-[データ編集]メニューにより 呼び出されます。
データ編集画面は三つのページからなります。 それそれデータテーブルと対応します。 マスターデータ用の各画面はマスターテーブルの6個のテーブルにそのまま対応します。
結果表示の各画面は出力テーブルの2個のテーブルにそのまま対応します。
関係データは12個の関係テーブルと次の一覧のように対応します。

画面テーブル
課題 課題の担当、課題の対象クラス、課題の分類
 課題の使用資源、課題の指定時間、課題の禁止時間
スタッフ スタッフの不可時間、スタッフの希望時間
固定時間割固定時間割
課題間の関係課題間の時間の関係、課題間の日の関係
区分間の関係非同時区分


以下、関係データの各画面の操作についていくつかの説明をします。


●課題

●スタッフ



●固定時間割

時間の決定した課題の時間を入れます。 この値は自動割付処理や自動調整処理で変更されません。



●課題間の関係



●区分間の関係




4. データテーブル

データテーブルの一覧を示します。
括弧の中に、項目名、または、項目名:データ形式 を並べています。

[マスターテーブル]

テーブル名項目:形式補足
課題課題コード:テキスト、課題名:テキスト授業、講義等
時間枠時間連番:整数、日連番:整数、時間名:テキスト 
スタッフスタッフコード:テキスト、スタッフ名:テキスト教師、講師等
クラスクラスコード:テキスト、クラス名:テキスト 
区分区分コード:テキスト、区分名:テキスト、排他 排他は、NO、ALL、OTHER、SAME のいずれか
資源資源コード:テキスト、資源名:テキスト、資源数:整数 特別教室等

[関係テーブル]

テーブル名項目:形式補足
課題の担当課題コード、スタッフコード 
課題の対象クラス課題コード、クラスコード 
課題の分類課題コード、区分コード 
課題の使用資源課題コード、資源コード、使用個数:整数 
課題の指定時間課題コード、時間連番 
課題の禁止時間課題コード、時間連番 
課題間の時間の関係 課題コード1、オペレータ、課題コード2、関係、差:整数 オペレータは今のところ - のみ
  関係は =、!= のいずれか
  = は「等しい」、!= は「等しくない」を意味する
課題間の日の関係 課題コード1、オペレータ、課題コード2、関係、差:整数 課題間の時間の関係と同様の形式
スタッフの不可時間スタッフコード、時間連番 
スタッフの希望時間スタッフコード、時間連番 
非同時区分区分コード1、区分コード2 
固定時間割課題コード、時間連番 

[出力テーブル]

テーブル名項目:形式補足
時間割結果課題コード、時間連番、状態 状態は ASSIGNED、UNDEF、CONFLICTED のいずれか
  ASSIGNED:割当成功、UNDEF:割当失敗
  CONFLICTED:割当てたが条件違反有
条件違反レポート違反した条件を示す文時間割結果にCONFLICTEDがある場合



5. データ設計のガイド

データテーブルは数種類ありますが、自動割付や時間割編集の最低限の実行に必要な テーブルは の二つです。
ただし、これだけでは時間枠内にたんに課題が並べられるだけとなります。 必要に応じて条件を加えます。条件はすべてテーブルに入力されたデータから 導かれます。条件には、講義とその担当者といった関係から自動的に抽出される 条件と、講義間の時間の関係などの明示的に指定する条件とがあります。

また課題の定義の仕方の特徴として、1課題は1時間単位しか持たない設計に制限 されています。複数時間を持つ講義は、複数個の「課題」に分け、分けられた課題 間の関係を「課題間の時間の関係」等で定義することによって表現します。
例えば体育実技Tを2時間単位連続で行なう場合、次のような表現が考えられます。 また、マスターデータの定義ではコードと名前を使うことが基本ですが、 コードを用いるのがわずらわしい場合にはコードを使わない設計も可能です。 例えば課題を定義する場合、 課題コード欄に課題名を使い、課題名の欄を空にすることで、実質的にはコードを 使わずにデータを定義することになります。


6. インポートとエクスポート

テキストファイルまたはMicrosoft Accessデータベース(MDBファイル、MDEファイル) からデータをインポートし、TimeAssignorのデータベースに格納することが可能です。
逆にTimeAssignorのデータベースの内容をエクスポートし、テキストファイルまたは Microsoft Accessデータベースに保存することが可能です。 ここでテキストファイルはコンマ「,」区切りのCSV形式です。


処理はそれぞれ次のメニューから行ないます。

   [ファイル]-[データのインポート]
   [ファイル]-[データのエクスポート]

インポート元やエクスポート先にテキスト形式を選択した場合、各テーブルが一つのファイルに対応します。 インポート時にファイルの指定欄を空白にすれば対応するテーブルは空になります。 エクスポート時にファイルの指定欄を空白にすれば対応するテーブルはファイルに出力されません。
MDB形式を選択した場合は Microsoft Access(または、JETデータベースエンジン) がインストールされていなけれは実行できません。


7. 自動割付

自動割付機能は時間割を自動的に作成します。つまり各課題の時間を自動的 に選択します。その際時間割作成の条件に従って、 できるだけ条件に合う よう時間を決めます。結果は「時間割結果」と「条件違反レポート」 の二つのテーブルに出力されます。
処理は二つのフェーズからなります。
  1. 時間の割付
  2. 条件違反の修正
[実行]-[自動割付]メニュー、または、自動割付ボタンにより起動します。
以下、[実行]メニューの各サブメニューについて説明します。

自動割付

時間割を自動作成する。

固定時間割のチェックのみ

「固定時間割」テーブルで 指定された時間割のチェックを行います。指定された割り当ての変更や 新たな割当ては行ないません。
チェック結果を「時間割結果」と「条件違反レポート」に出力します。 「時間割結果」では各課題に ASSIGNED、UNDEF、CONFLICTED のいずれか の状態情報が付けられます。条件違反があれば「条件違反レポート」に 出力されます。

時間割結果の編集

時間割エディタを開きます。


8. 時間割作成の条件

自動割付処理を実行すると、下に示した条件を満たした上で、クラス毎時間毎に 課題がバランスよく散らばるように、時間割の作成が試みられます。 各条件はテーブルに入力されたデータに基づきます。



9. 時間割エディタ

時間割エディタは [実行]-[時間割結果の編集] メニューにより呼び出されます。
時間割エディタにより、自動割付や手作業で作られた時間割の修正変更を グラフィカルに行なうことが可能です。
時間割エディタでは、表形式で時間割が表示されます。横軸がクラス、縦軸が時間 を示します。時間軸の一番下つまり最下行は時間未割付の課題の欄となります。
課題の時間の変更は課題をマウスで移動(ドラッグ&ドロップ)することで行ないます。
課題の表示される枠の色によりその課題の状態が分かります。

 通常
 条件違反がある
 固定されている
 薄い赤 固定されていて条件違反がある
 選択されている

自動調整により未割付や条件違反の解消が試みられます。
固定された課題は、自動調整や、改めて自動割付を行なった際に時間が変更されません。

マウス操作、画面上部のメインメニュー、右クリックにより現れるポップアップ メニューの選択により各種作業を行ないます。

移動

マウスを使って課題をドラッグ&ドロップすることで時間を変更する ことができます。
またポップアップメニューの時間解除により未割付の欄(最下行)に移動 します。

固定

固定した課題は移動できず、自動調整の際にも時間の変更は行われません。
課題の固定化、固定解除はポップアップメニューから行ないます。

選択

マウスのクリックで課題を選択します。ShiftキーやControlキーを押しな がらクリックすることで複数の課題の選択が可能です。

プロパティ

ポップアップメニューのプロパティを選択すると各課題に関する情報が 表示されます。

自動調整

条件違反を持つ課題の時間の変更、未割付の課題の時間割付を試みます。
[編集]-[自動調整]メニューを選ぶことにより実行します。

時間割表(CSV形式)の作成

CSV形式で時間割表を保存します。CSV形式なので、Microsoft Excelや Lotus1-2-3といった表計算ソフトを使っての表示、編集、印刷に適して います。
[ファイル]-[時間割表(CSV形式)の作成]メニューを選ぶことにより実行 します。

保存

3種類のテーブル、「時間割結果」「固定時間割」「条件違反レポート」 を保存します。「固定時間割」には固定状態にある灰色の課題が保存さ れます。
[ファイル]-[保存]メニューを選ぶことにより実行します。


10. 各種設定

[設定]メニューを通して各種設定を行ないます。

メモリ

各種作業領域の大きさを設定します。実行中に各種領域不足のエラー が出る場合ここの数値を大きくします。逆に大きくし過ぎると、メモ リが確保できない、というエラーが出るので小さくします。

戦略

「時間割当失敗課題の扱い」で、割当失敗課題を UNDEF にするか CONFLICTED にするかを切り替えます(データテーブル参照)
「割当探索巾」、「調整巾」、「調整試行数」は 自動割付自動調整の実行に関するパラメータです。通常は変更しません。


11. 時間割プロジェクトファイル

時間割プロジェクトファイル(標準拡張子 ttp)はTimeAssignorの各設定項目を保存 しておくファイルです。
[ファイル]メニューを通して時間割プロジェクトファイルを作成したり読み込んだり することができます。
時間割プロジェクトファイルをダブルクリックすると現れる アプリケーション選択ダイアログで TimeAssignor.exe を選択することによって、 その時間割プロジェクトファイルを開いた状態のTimeAssignorを起動することも可能です。


12. エラー

TimeAssignorは数種類のエラーを報告します。 メモリ領域不足等のエラーの他、データ内容にかかわるエラーとして、条件の矛 盾により時間の割付不可能な課題がある場合に「条件式を満たしません」という メッセージを出すエラーがあります。
一方、矛盾してるかどうか分からないが、満足の行く解の得られなかった場合は 出力データに UNDEF や CONFLICTED が出てきます。UNDEF と CONFLICTED の どちらを出すかは選択可能です(各種設定参照)。
なお、固定時間割の範囲内だけでも条件違反がある場合、自動割付処理や自動調 整処理では「固定時間割に矛盾があります」というエラーになります。


サンプルデータ

4種類のサンプルデータを添付しています。 サンプルデータを実行するには、それぞれの時間割プロジェクトファイルを開きます。
短大時間割 MDB版、試験682、試験2419ではさらに次の操作が必要です。
  1. 新しいデータベースの作成
  2. インポート
    短大時間割 MDB版ではMDBファイルを、試験682と試験2419ではテキストファイルをインポートする。
    [ファイル]-[データのインポート]メニューを通してファイル指定ダイアローグを呼び出すと 必要なファイル名は既に設定されているのでOKボタンを押す。


短大時間割、短大時間割MDB版

2学年8クラスの短大の半期の時間割です。 二つの形式を用意してますが内容は同じものです。

試験682、試験2419

学生の選択を考慮した試験の時間割です。同じ学生が選択している試験を同じ 時間には実施しないという条件で、各試験課題に時間を割り当てます。
この条件を TimeAssignor 上で次のように表現しています。


履歴

1998/06/30 Ver.0.10 ・初版
1999/05/07Ver.0.11・時間割表(CSV形式)作成機能追加
1999/08/25Ver.0.20・時間割結果の編集機能追加
  ・GUIまわり諸々
2000/06/21Ver.0.30・データベース編集機能内蔵
2001/05/31Ver.0.31・インポート・エクスポート機能のAccess 2000対応



使用・再配布・移植・改良について

本プログラムは、著作権を放棄していないいわゆる「フリーソフトウェア」 です。以下の条件に従って、自由に使用していただいてかまいません。
  1. 著作権表示を変更しないこと。
  2. このファイル(TimeAssignor.html)も同時に配布すること。
  3. 改変を加えたとき(移植・改良など)には、改変者の氏名(ペンネーム )・連絡先などとともに、変更が加えられていることを明示すること。
  4. このプログラムを使用したことによって生じた損害は、全く保証しない。
  5. 作者は、このプログラムに不備があっても、それを訂正する義務を負わない。
  6. 雑誌・商品などに添付して再配布する場合には、少なくとも1か所に 著作権表示を印刷(タイプ)すること。なお、意図的にバックアップを禁止 している(コピープロテクトされている)ソフトとの同時配布は原則 として禁止する。