以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
図1は、本実施の形態に係る勤務計画作成装置100の構成を示すブロック図である。
図1において、勤務計画作成装置100は、複数の日を対象として勤務時間が予め定められた勤務を複数の勤務者に割り当てる装置であり、データベース101、入力部102、設定部103、選択部104、出力部105を備える。本実施の形態では、勤務計画作成装置100が(1つの)月(複数の日の一例)を対象として飛行時間(勤務時間の一例)が予め定められた航空機への乗務を勤務として複数のクルー(コクピットクルーあるいは運航乗務員のことであり、複数の勤務者の一例)に割り当てるものとする。ここで、乗務とは、1日における1便以上のフライトの組み合わせであり、望ましくは、クルーの主基地(クルーが通勤する空港のこと)を出発するフライトで始まり、主基地に到着するフライトで終わるものであるとする。例えば、空港Aを出発して空港Bに到着するフライトと、空港Bを出発して空港Aに到着するフライトとの組み合わせを、1つの乗務(勤務)として定義することができる。また、例えば、空港Aを出発して空港Bに到着するフライトと、空港Bを出発して空港Cに到着するフライトと、空港Cを出発して空港Aに到着するフライトとの組み合わせを、1つの乗務(勤務)として定義することができる。
なお、勤務計画作成装置100が勤務の割り当て対象とする期間は、月に限らず、(1つの)週、複数の週、複数の月、(1つの)年、複数の年、あるいは、その他任意の複数の日であってよい。また、勤務計画作成装置100が割り当てる勤務は、航空機への乗務に限らず、地上勤務も含むクルーの勤務全体であってもよいし、列車やバスといった航空機以外の移動体への乗務であってもよいし、移動体への乗務以外の勤務であってもよい。勤務計画作成装置100が勤務の割り当て対象とする勤務者は、勤務計画作成装置100がどのような勤務を割り当てるかによって異なる。例えば、勤務計画作成装置100が移動体への乗務を割り当てるのであれば、その移動体の乗務員(例えば、運転手)が割り当て対象となる。また、本実施の形態のように、勤務計画作成装置100が航空機への乗務を割り当てるのであっても、クルーに限らず、CA(キャビンアテンダントあるいは客室乗務員のことである)が割り当て対象となってもよい。
勤務計画作成装置100は、処理装置191、記憶装置192、入力装置193、出力装置194等のハードウェアを備える。ハードウェアは勤務計画作成装置100の各部によって利用される。例えば、処理装置191は、勤務計画作成装置100の各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。記憶装置192は、そのデータや情報を記憶するために利用される。また、入力装置193は、そのデータや情報を入力するために、出力装置194は、そのデータや情報を出力するために利用される。
データベース101は、勤務情報111等を記憶装置192により記憶する。これらの情報の内容については後述する。また、入力部102、設定部103、選択部104、出力部105の動作については後述する。
図2は、勤務計画作成装置100のハードウェア構成の一例を示す図である。
図2において、勤務計画作成装置100は、コンピュータであり、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
勤務計画作成装置100は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置191の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、HDD920(Hard・Disk・Drive)と接続され、これらのハードウェアデバイスを制御する。HDD920の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ、あるいは、その他の記録媒体が用いられてもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、HDD920は、不揮発性メモリの一例である。これらは、記憶装置192の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置193の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置194の一例である。
通信ボード915は、LAN(Local・Area・Network)等に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネットに接続されていても構わない。LAN、WAN、インターネットは、ネットワークの一例である。
HDD920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やHDD920等の記録媒体に記憶される。RAM914やHDD920等の記録媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、HDD920の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図3は、勤務計画作成装置100の動作(本実施の形態に係る勤務計画作成方法、本実施の形態に係るプログラムの処理手順)を示すフローチャートである。
図3のステップS101において、設定部103は、ある月のそれぞれの日を対象日とし、n人(nは2以上の整数)のクルーC1〜Cnのそれぞれについて、月の初日から対象日までの日数を変数xとする一次関数y=ax+b(aは0より大きい実数、bは0以上の実数)を用いて対象日までの目標勤務時間Tを処理装置191により設定する。ここで、目標勤務時間Tは、月の初日から対象日までの飛行時間を累計した累計勤務時間Uの目標値である。例えば、設定部103は、月の初日を対象日としたとき、y=a+bとなるため、n人のクルーC1〜Cnのそれぞれについて、対象日までの目標勤務時間Tを全て(a+b)時間に設定する。また、例えば、設定部103は、月の15日を対象日としたとき、y=15a+bとなるため、n人のクルーC1〜Cnのそれぞれについて、対象日までの目標勤務時間Tを全て(15a+b)時間に設定する。
なお、ステップS101において、設定部103は、クルーごとに異なる関数を用いてもよい。また、ステップS101において、設定部103は、月の初日から対象日までの日数を変数とする関数として、一次関数以外の関数(例えば、ステップ関数)を用いてもよい。また、設定部103は、月のそれぞれの日に対応付けて目標勤務時間を予め記憶装置192により記憶しておき、関数を用いる代わりに、対象日に対応する目標勤務時間を記憶装置192から読み出し、それを対象日までの目標勤務時間Tとして設定してもよい。また、設定部103は、月の全ての日を対象日とする代わりに、クルーごとに、月の稼働日のみを対象日として、対象日までの目標勤務時間Tを設定してもよい。この場合、後述するステップS102以降でも、クルーごとに、月の稼働日のみを対象日とする。具体的な例については、後述する。
図3のステップS102において、入力部102は、月内の任意の日を対象日とし、n人のクルーC1〜Cnから、対象日に勤務を割り当てるクルーを指定する操作を入力装置193によりユーザ等から受け付ける。そして、入力部102は、その操作によって指定されたクルーについて、対象日に割り当てられた勤務をデータベース101に記憶された勤務情報111に追加する。ここで、勤務情報111は、n人のクルーC1〜Cnのそれぞれについて、割り当て済の勤務を示す情報である。
なお、ステップS102では、ステップS101で設定部103により設定された対象日までの目標勤務時間Tを超えるような勤務の割り当ても許容する。
ステップS102において、対象日に2つ以上の勤務が計画されている場合、入力部102は、それらの勤務のうち、任意の勤務を対象とし、n人のクルーC1〜Cnから、対象日に、その対象とした勤務を割り当てるクルーを指定する操作をユーザ等から受け付ける。
ステップS102は、省略しても構わない。
図3のステップS103において、選択部104は、月の初日から末日までを順番に対象日とする。対象日の勤務(対象日に2つ以上の勤務が計画されている場合は少なくとも1つの勤務)が未割り当てであれば、ステップS104に進む。対象日の勤務が割り当て済であって、対象日が月の末日でなければ、対象日の次の日を対象日とする。対象日の勤務が割り当て済であって、対象日が月の末日であれば、ステップS107に進む。
図3のステップS104において、選択部104は、n人のクルーC1〜Cnのそれぞれについて、データベース101に記憶された勤務情報111から、対象日に(未割り当ての)勤務を割り当てた場合の対象日までの累計勤務時間Uを処理装置191により算出する。具体的には、選択部104は、n人のクルーC1〜Cnのそれぞれについて、対象日の勤務より前の勤務で、データベース101に記憶された勤務情報111が示す割り当て済の勤務の飛行時間を合計し、さらに、その結果に対象日の勤務の飛行時間を加算して、対象日までの累計勤務時間Uを求める。
なお、ステップS104において、選択部104は、所定の条件が満たされているクルーについては、累計勤務時間Uの算出を省略してもよい。即ち、勤務の割り当て対象に関して、任意の制限事項を加えてもよい。この場合、累計勤務時間Uの算出が省略された(制限事項に該当する)クルーは、対象日の勤務の割り当て対象外となる。ここで、上記の所定の条件としては、例えば、以下のようなものが挙げられる。
・対象日が休暇取得日として予め設定されている。
・勤務連続日数が所定の閾値以上である。
・対象日に別の勤務が割り当て済である。
・割り当てようとしている勤務が直前の勤務から一定時間(例えば、14時間)空いていない。
・直前の勤務が特定の勤務Aであって、割り当てようとしている勤務が直前の勤務Aから一定時間(例えば、20時間)空いていない。
・直前の勤務が特定の勤務A、割り当てようとしている勤務が特定の勤務Bであって、割り当てようとしている勤務Bが直前の勤務Aから一定時間(例えば、10時間)空いていない。
・直前の勤務の場所と、割り当てようとしている勤務の場所とが同じでない。
図3のステップS105において、選択部104は、n人のクルーC1〜Cnのそれぞれについて、ステップS104で算出した対象日までの累計勤務時間UとステップS102で設定部103により設定された対象日までの目標勤務時間Tとを処理装置191により比較する。そして、選択部104は、n人のクルーC1〜Cnのそれぞれについて、対象日までの累計勤務時間Uが対象日までの目標勤務時間Tを超えるかどうかを処理装置191により判定する。
図3のステップS106において、選択部104は、n人のクルーC1〜Cnから、対象日に勤務を割り当てるクルーとして、ステップS105で対象日までの累計勤務時間Uが対象日までの目標勤務時間Tを超えないと判定したクルーを処理装置191により選択する。そして、選択部104は、選択したクルーについて、対象日に割り当てた勤務をデータベース101に記憶された勤務情報111に追加し、ステップS103に戻る。
なお、ステップS106において、対象日に2つ以上の勤務が計画されている場合、そのうちの1つを選択部104が勤務情報111に追加した後も、未割り当ての勤務が残っていれば、対象日が月の末日であるかどうかに関わらず、ステップS103に戻る。そして、同じ対象日の別の勤務を対象にステップS103〜S106が実行される。
ステップS106において、選択部104は、ステップS105で対象日までの累計勤務時間Uが対象日までの目標勤務時間Tを超えないと判定したクルーが2人以上いる場合、任意の方法を用いて、そのうちの1人を選択する。例えば、選択部104は、対象日までの累計勤務時間Uから、対象日までの目標勤務時間Tを減算した値(ここでは、0又は負の値となる)が最小となるクルーを選択する。これにより、月内における勤務の平準化が可能となる。該当する(上記値が最小となる)クルーが複数いる場合、選択部104は、さらに、他の基準に従って1人のクルーを選択する。あるいは、選択部104は、1人のクルーをランダムに選択する。あるいは、選択部104は、ユーザ等に1人のクルーを指定させる。この場合、まず、出力部105が、候補となる2人以上のクルーを出力装置194により一覧表示する。入力部102が、そのうちの1人を指定する操作を入力装置193によりユーザ等から受け付ける。そして、選択部104が、その操作によって指定されたクルーを選択する。
ステップS106において、選択部104は、ステップS105で対象日までの累計勤務時間Uが対象日までの目標勤務時間Tを超えないと判定したクルーが1人もいない場合も、任意の方法を用いて、1人のクルーを選択する。前述したように、例えば、選択部104は、対象日までの累計勤務時間Uから、対象日までの目標勤務時間Tを減算した値(ここでは、正の値となる)が最小となるクルーを選択する。これにより、月内における勤務の平準化が可能となる。該当する(上記値が最小となる)クルーが複数いる場合、選択部104は、さらに、他の基準に従って1人のクルーを選択する。あるいは、選択部104は、1人のクルーをランダムに選択する。あるいは、選択部104は、ユーザ等に1人のクルーを指定させる。
ステップS105及びS106において、選択部104は、対象日までの累計勤務時間Uが対象日までの目標勤務時間Tを超えないクルーを選択する代わりに、対象日までの累計勤務時間Uから、対象日までの目標勤務時間Tを減算した値が最小となるか又は所定の閾値以下となるクルーを選択してもよい。あるいは、選択部104は、別の基準に従ってクルーを選択してもよい。
図3のステップS107において、出力部105は、データベース101に記憶された勤務情報111を参照して、月内のn人のクルーC1〜Cnの乗務スケジュール(勤務計画の一例)をカレンダー形式等で出力装置194により出力する。
なお、ステップS101〜107が実行される順序は、適宜変更して構わない。例えば、ステップS101がステップS102の後に実行されても構わない。あるいは、ステップS101がステップS103及びS105の間で実行されても構わない。この場合、ステップS101はステップS104と同様に対象日ごとに実行される。即ち、ステップS104で、選択部104が、ステップS103の対象日までの累計勤務時間Uを算出するのと同様に、ステップS101では、設定部103が、ステップS103の対象日までの目標勤務時間Tを設定する。
以下では、ステップS101〜107の動作の具体例について説明する。
この例では、勤務計画作成装置100が2011年9月における3人のクルーC1〜C3の乗務スケジュールを作成する。2011年9月は、毎日、飛行時間が6時間の勤務W1と、飛行時間が4時間の勤務W2との2つが計画されているものとする。
また、この例では、ステップS101の関数y=4xが、3人のクルーC1〜C3に対して共通に設定されているものとする。
図4は、この例におけるクルーC1への勤務の割り当てを示すグラフである。図5は、この例におけるクルーC2への勤務の割り当てを示すグラフである。図6は、この例におけるクルーC3への勤務の割り当てを示すグラフである。
図4〜図6において、縦軸は飛行時間の累積値、横軸は2011年9月1日からの日数(x)を示している。直線グラフ(y=4x)は、2011年9月1日〜30日における各クルーの目標勤務時間T(それぞれの日までの飛行時間の累積値の目標値)を表す。棒グラフは、2011年9月1日〜30日のそれぞれにて各クルーに割り当て済の勤務を表す。棒グラフの上辺から下辺までの高さは、対応する日に割り当てられた勤務の飛行時間を表し、棒グラフの上辺の高さ(位置)は、対応する日までに割り当てられた勤務の飛行時間の累積値を表す。
ステップS101において、設定部103は、図4〜図6に示すように、関数y=4xを用いて2011年9月1日〜30日におけるクルーC1〜C3の目標勤務時間Tを設定する。2011年9月1日までのクルーC1〜C3の目標勤務時間Tは4×1=4時間、2011年9月2日までのクルーC1〜C3の目標勤務時間Tは4×2=8時間、・・・、2011年9月30日までのクルーC1〜C3の目標勤務時間Tは4×30=120時間となる。
図7及び図8は、この例における勤務情報111を示す図である。
図7及び図8において、勤務情報111は、クルー(クルーの識別子)、日付、勤務(勤務の識別子)、便(クルーが乗務する1つ以上の便に関する情報)、飛行時間(クルーが乗務する便の飛行時間の合計)等のデータを格納するテーブルとしてデータベース101に記憶されている。
ステップS102において、入力部102は、2011年9月1日に勤務W1を割り当てるクルーとして、例えばクルーC1を指定する操作をユーザから受け付ける。そして、入力部102は、図7の(1)に示すように、その操作によって指定されたクルーC1について、2011年9月1日に割り当てられた勤務W1をデータベース101に記憶された勤務情報111に追加する。
ステップS103において、選択部104は、2011年9月1日を対象日として、ステップS104に進む。
ステップS104において、選択部104は、データベース101に記憶された勤務情報111から、2011年9月1日に未割り当ての勤務W2を割り当てた場合の2011年9月1日までのクルーC1〜C3の累計勤務時間Uを算出する。このとき、2011年9月1日の勤務W1がクルーC1に割り当てられているため、選択部104は、2011年9月1日の勤務W1と勤務W2との両方が同じクルーに割り当て可能か(例えば、時間が重複していないか)を判定し、可能だと判定した場合のみ、2011年9月1日に勤務W2を割り当てた場合の2011年9月1日までのクルーC1の累計勤務時間Uを算出する。2011年9月1日に勤務W2を割り当てた場合の2011年9月1日までのクルーC1の累計勤務時間Uは、2011年9月1日の勤務W1の飛行時間と勤務W2の飛行時間との合計、即ち、6+4=10時間となる。一方、2011年9月1日に勤務W2を割り当てた場合の2011年9月1日までのクルーC2,C3の累計勤務時間Uは、2011年9月1日の勤務W2の飛行時間、即ち、4時間となる。なお、選択部104は、対象日の別の勤務が既に割り当てられているクルーについては、無条件に勤務を割り当てない、即ち、対象日までの累計勤務時間Uを算出しないこととしてもよい。
ステップS105において、選択部104は、クルーC1〜C3のそれぞれについて、ステップS104で算出した2011年9月1日までの累計勤務時間UとステップS102で設定部103により設定された2011年9月1日までの目標勤務時間Tとを比較する。2011年9月1日に勤務W2を割り当てた場合の2011年9月1日までのクルーC1の累計勤務時間Uは10時間であり、2011年9月1日までのクルーC1の目標勤務時間Tである4時間より長い。一方、2011年9月1日に勤務W2を割り当てた場合の2011年9月1日までのクルーC2,C3の累計勤務時間Uは4時間であり、2011年9月1日までのクルーC2,C3の目標勤務時間Tである4時間より短い。
ステップS106において、出力部105は、2011年9月1日までの累計勤務時間Uが2011年9月1日までの目標勤務時間Tを超えていないクルーC2,C3を画面上で一覧表示する。入力部102は、例えばクルーC2を指定する操作をユーザから受け付ける。選択部104は、その操作によって指定されたクルーC2を、2011年9月1日に勤務W2を割り当てるクルーとして選択する。選択部104は、図7の(2)に示すように、選択したクルーC2について、2011年9月1日に割り当てた勤務W2をデータベース101に記憶された勤務情報111に追加する。そして、ステップS103に戻る。なお、このステップS106では、例えば、選択部104が、クルーC2,C3のいずれかをランダムに選択してもよい。
ステップS103において、選択部104は、2011年9月1日の勤務W1,W2の全てが割り当て済であるため、2011年9月2日を対象日として、ステップS104に進む。
ステップS104において、選択部104は、データベース101に記憶された勤務情報111から、2011年9月2日に勤務W1を割り当てた場合の2011年9月2日までのクルーC1〜C3の累計勤務時間Uを算出する。2011年9月1日の勤務W1がクルーC1に割り当てられているため、2011年9月2日に勤務W1を割り当てた場合の2011年9月2日までのクルーC1の累計勤務時間Uは、6+6=12時間となる。2011年9月1日の勤務W2がクルーC2に割り当てられているため、2011年9月2日に勤務W1を割り当てた場合の2011年9月2日までのクルーC2の累計勤務時間Uは、4+6=10時間となる。2011年9月2日に勤務W1を割り当てた場合の2011年9月2日までのクルーC3の累計勤務時間Uは、6時間となる。
ステップS105において、選択部104は、クルーC1〜C3のそれぞれについて、ステップS104で算出した2011年9月2日までの累計勤務時間UとステップS102で設定部103により設定された2011年9月2日までの目標勤務時間Tとを比較する。2011年9月2日に勤務W1を割り当てた場合の2011年9月2日までのクルーC1の累計勤務時間Uは12時間であり、2011年9月2日までのクルーC1の目標勤務時間Tである8時間より長い。2011年9月2日に勤務W1を割り当てた場合の2011年9月2日までのクルーC2の累計勤務時間Uは10時間であり、2011年9月2日までのクルーC2の目標勤務時間Tである8時間より長い。2011年9月2日に勤務W1を割り当てた場合の2011年9月2日までのクルーC3の累計勤務時間Uは6時間であり、2011年9月2日までのクルーC3の目標勤務時間Tである8時間より短い。
ステップS106において、選択部104は、2011年9月2日までの累計勤務時間Uが2011年9月2日までの目標勤務時間Tを超えていないクルーC3を選択する。選択部104は、図7の(3)に示すように、選択したクルーC3について、2011年9月2日に割り当てた勤務W1をデータベース101に記憶された勤務情報111に追加する。そして、ステップS103に戻る。
ステップS103において、選択部104は、2011年9月2日の勤務W2が割り当てられていないため、引き続き2011年9月2日を対象日として、ステップS104に進む。
ステップS104において、選択部104は、データベース101に記憶された勤務情報111から、2011年9月2日に勤務W2を割り当てた場合の2011年9月2日までのクルーC1〜C3の累計勤務時間Uを算出する。2011年9月1日の勤務W1がクルーC1に割り当てられているため、2011年9月2日に勤務W2を割り当てた場合の2011年9月2日までのクルーC1の累計勤務時間Uは、6+4=10時間となる。2011年9月1日の勤務W2がクルーC2に割り当てられているため、2011年9月2日に勤務W2を割り当てた場合の2011年9月2日までのクルーC2の累計勤務時間Uは、4+4=8時間となる。2011年9月2日の勤務W1がクルーC3に割り当てられているため、2011年9月2日に勤務W2を割り当てた場合の2011年9月2日までのクルーC3の累計勤務時間Uは、6+4=10時間となる。
ステップS105において、選択部104は、クルーC1〜C3のそれぞれについて、ステップS104で算出した2011年9月2日までの累計勤務時間UとステップS102で設定部103により設定された2011年9月2日までの目標勤務時間Tとを比較する。2011年9月2日に勤務W2を割り当てた場合の2011年9月2日までのクルーC1,C3の累計勤務時間Uは10時間であり、2011年9月2日までのクルーC1,C3の目標勤務時間Tである8時間より長い。2011年9月2日に勤務W2を割り当てた場合の2011年9月2日までのクルーC2の累計勤務時間Uは8時間であり、2011年9月2日までのクルーC2の目標勤務時間Tである8時間と同じである。
ステップS106において、選択部104は、2011年9月2日までの累計勤務時間Uが2011年9月2日までの目標勤務時間Tを超えていないクルーC2を選択する。選択部104は、図7の(4)に示すように、選択したクルーC2について、2011年9月2日に割り当てた勤務W2をデータベース101に記憶された勤務情報111に追加する。そして、ステップS103に戻る。
ステップS103において、選択部104は、2011年9月2日の勤務W1,W2の全てが割り当て済であるため、2011年9月3日を対象日として、ステップS104に進む。
ステップS104において、選択部104は、データベース101に記憶された勤務情報111から、2011年9月3日に勤務W1を割り当てた場合の2011年9月3日までのクルーC1〜C3の累計勤務時間Uを算出する。2011年9月3日に勤務W1を割り当てた場合の2011年9月3日までのクルーC1の累計勤務時間Uは、6+6=12時間となる。2011年9月3日に勤務W1を割り当てた場合の2011年9月3日までのクルーC2の累計勤務時間Uは、4+4+6=14時間となる。2011年9月3日に勤務W1を割り当てた場合の2011年9月3日までのクルーC3の累計勤務時間Uは、6+6=12時間となる。
ステップS105において、選択部104は、クルーC1〜C3のそれぞれについて、ステップS104で算出した2011年9月3日までの累計勤務時間UとステップS102で設定部103により設定された2011年9月3日までの目標勤務時間Tとを比較する。2011年9月3日に勤務W1を割り当てた場合の2011年9月3日までのクルーC1,C3の累計勤務時間Uは12時間であり、2011年9月3日までのクルーC1,C3の目標勤務時間Tである12時間と同じである。2011年9月3日に勤務W1を割り当てた場合の2011年9月3日までのクルーC2の累計勤務時間Uは14時間であり、2011年9月3日までのクルーC2の目標勤務時間Tである12時間より長い。
ステップS106において、出力部105は、2011年9月3日までの累計勤務時間Uが2011年9月3日までの目標勤務時間Tを超えていないクルーC1,C3を画面上で一覧表示する。入力部102は、例えばクルーC1を指定する操作をユーザから受け付ける。選択部104は、その操作によって指定されたクルーC1を、2011年9月3日に勤務W1を割り当てるクルーとして選択する。選択部104は、図8の(5)に示すように、選択したクルーC1について、2011年9月3日に割り当てた勤務W1をデータベース101に記憶された勤務情報111に追加する。そして、ステップS103に戻る。なお、このステップS106では、例えば、選択部104が、クルーC1,C3のいずれかをランダムに選択してもよい。
ステップS103において、選択部104は、2011年9月3日の勤務W2が割り当てられていないため、引き続き2011年9月3日を対象日として、ステップS104に進む。
ステップS104において、選択部104は、データベース101に記憶された勤務情報111から、2011年9月3日に勤務W2を割り当てた場合の2011年9月3日までのクルーC1〜C3の累計勤務時間Uを算出する。2011年9月3日に勤務W2を割り当てた場合の2011年9月3日までのクルーC1の累計勤務時間Uは、6+6+4=14時間となる。2011年9月3日に勤務W2を割り当てた場合の2011年9月3日までのクルーC2の累計勤務時間Uは、4+4+4=12時間となる。2011年9月3日に勤務W2を割り当てた場合の2011年9月3日までのクルーC3の累計勤務時間Uは、6+4=10時間となる。
ステップS105において、選択部104は、クルーC1〜C3のそれぞれについて、ステップS104で算出した2011年9月3日までの累計勤務時間UとステップS102で設定部103により設定された2011年9月3日までの目標勤務時間Tとを比較する。2011年9月3日に勤務W2を割り当てた場合の2011年9月3日までのクルーC1の累計勤務時間Uは14時間であり、2011年9月3日までのクルーC1の目標勤務時間Tである12時間より長い。2011年9月3日に勤務W2を割り当てた場合の2011年9月3日までのクルーC2の累計勤務時間Uは12時間であり、2011年9月3日までのクルーC2の目標勤務時間Tである12時間と同じである。2011年9月3日に勤務W2を割り当てた場合の2011年9月3日までのクルーC3の累計勤務時間Uは10時間であり、2011年9月3日までのクルーC3の目標勤務時間Tである12時間より短い。
ステップS106において、選択部104は、2011年9月3日までの累計勤務時間Uから、2011年9月3日までの目標勤務時間Tを減算した値(ここでは、−2時間)が最小となるクルーC3を選択する。選択部104は、図8の(6)に示すように、選択したクルーC3について、2011年9月3日に割り当てた勤務W2をデータベース101に記憶された勤務情報111に追加する。そして、ステップS103に戻る。なお、このステップS106では、例えば、選択部104が、クルーC2,C3のいずれかをランダムに選択したり、ユーザ等に指定させたりしてもよい。
これ以降、同様に、ステップS103〜S106が繰り返し実行され、図4〜図6に示すように、2011年9月4日〜30日のそれぞれの勤務W1,W2がクルーC1〜C3に割り当てられる。そして、その結果がデータベース101に記憶された勤務情報111に反映される。
図9は、この例におけるクルーC1の乗務スケジュールを示す図である。図10は、この例におけるクルーC2の乗務スケジュールを示す図である。図11は、この例におけるクルーC3の乗務スケジュールを示す図である。
ステップS107において、出力部105は、図9〜図11に示すように、データベース101に記憶された勤務情報111を参照して、2011年9月のクルーC1〜C3の乗務スケジュールをカレンダー形式で出力する。
なお、この例と同一の条件下において、図9〜図11に示した乗務スケジュールと異なる勤務の割り当て方も可能である。即ち、図9〜図11に示したものとは別の乗務スケジュールを作成することもできる。また、この例では、毎日、飛行時間が6時間の勤務W1と、飛行時間が4時間の勤務W2との2つが計画されているものとしたが、計画されている勤務の数や飛行時間が日ごとに異なっていても、本実施の形態を適用することができる。
上記のように、ステップS101において、設定部103は、複数の日のそれぞれを対象日とし、複数の勤務者のそれぞれについて、複数の日の初日から対象日までの勤務時間を累計した累計勤務時間の目標値を目標勤務時間として設定する。これにより、一定の期間内において、どのようなペースで各勤務者に勤務させるかを任意に決めることができる。本実施の形態では、設定部103が、複数の勤務者のそれぞれについて、複数の日の初日から対象日までの日数を変数とする関数を用いて対象日までの目標勤務時間を設定するため、一定の期間内において、確実かつ容易に勤務を平準化することができる。
また、ステップS103〜S106において、選択部104は、複数の日の初日から末日までを順番に対象日とする。対象日の勤務が未割り当てであれば、選択部104は、複数の勤務者のそれぞれについて、データベース101に記憶された勤務情報111から、対象日に勤務を割り当てた場合の対象日までの累計勤務時間を算出する。選択部104は、算出した対象日までの累計勤務時間と設定部103により設定された対象日までの目標勤務時間とを比較する。選択部104は、その比較結果に基づいて、複数の勤務者から、対象日に勤務を割り当てる勤務者を選択する。そして、選択部104は、選択した勤務者について、対象日に割り当てた勤務をデータベース101に記憶された勤務情報111に追加する。これにより、各勤務者に勤務させるペース(設定部103で任意に決めたもの)に合わせた勤務の割り当てを容易かつ効率よく行うことが可能となる。
ここで、前述したステップS101〜107の動作の具体例において、月の全ての日を対象日とする代わりに、クルーごとに、月の稼働日のみを対象日とする変形例について説明する。なお、前述した例と重複する点については、説明を省略する場合がある。
この例では、クルーC1に対して、ステップS101の関数y=5x+2が設定されているものとする。クルーC2,C3に関しては説明を省略する。
図12及び図13は、この例におけるクルーC1への勤務の割り当てを示すグラフである。
図12において、縦軸は飛行時間の累積値、横軸は2011年9月におけるクルーC1の最初の稼働日からの稼働日の日数(x)を示している。直線グラフ(y=5x+2)は、2011年9月のクルーC1の稼働日におけるクルーC1の目標勤務時間T(それぞれの日までの飛行時間の累積値の目標値)を表す。棒グラフは、2011年9月におけるクルーC1のそれぞれの稼働日にてクルーC1に割り当て済の勤務を表す。図13は、図12の稼働日を暦日に展開したものである。つまり、図13において、縦軸は飛行時間の累積値、横軸は2011年9月1日からの暦日の日数を示している。折れ線グラフは、2011年9月1日〜30日におけるクルーC1の目標勤務時間T(それぞれの日までの飛行時間の累積値の目標値)を表す。棒グラフは、2011年9月1日〜30日のそれぞれにてクルーC1に割り当て済の勤務を表す。
ステップS101において、設定部103は、図12に示すように、関数y=5x+2を用いて2011年9月の稼働日におけるクルーC1の目標勤務時間Tを設定する。言い換えれば、設定部103は、図13に示すように、2011年9月のカレンダーから非稼働日を削除し、残った稼働日を暦日の昇順に並べ、初日を第1日、最終日を第m日とするとき、a×m+bが予め定められたクルーC1の月内合計勤務時間の目標値となるようにa,bを定め、第1日の目標勤務時間Tをa×1+bとし、非稼働日までの目標勤務時間Tを直前の稼働日までの目標勤務時間Tと等しくし、非稼働日が先行する稼働日を持たない場合は目標勤務時間Tを0時間とする関数を用いて、2011年9月1日〜30日におけるクルーC1の目標勤務時間Tを設定する。2011年9月1日(稼働日)までのクルーC1の目標勤務時間Tは5×1+2=7時間、2011年9月2日(非稼働日)までのクルーC1の目標勤務時間Tは7時間、・・・、2011年9月30日(稼働日)までのクルーC1の目標勤務時間Tは5×30+2=102時間となる。なお、説明は省略するが、設定部103は、同様に、2011年9月の稼働日におけるクルーC2,C3の目標勤務時間Tを設定する。
ステップS102において、入力部102は、2011年9月1日に勤務W1を割り当てるクルーとして、例えばクルーC1を指定する操作をユーザから受け付ける。そして、入力部102は、その操作によって指定されたクルーC1について、2011年9月1日に割り当てられた勤務W1をデータベース101に記憶された勤務情報111に追加する。
ステップS103〜S106において、選択部104は、2011年9月1日〜30日を順番に対象日とする。対象日の勤務が未割り当てであれば、選択部104は、クルーC1〜C3のうち、対象日が稼働日となっているクルーについて、データベース101に記憶された勤務情報111から、対象日に勤務を割り当てた場合の対象日までの累計勤務時間Uを算出する。選択部104は、算出した対象日までの累計勤務時間Uと設定部103により設定された対象日までの目標勤務時間Tとを比較する。選択部104は、その比較結果に基づいて、対象日が稼働日となっているクルーから、対象日に勤務を割り当てるクルーを選択する。そして、選択部104は、選択したクルーについて、対象日に割り当てた勤務をデータベース101に記憶された勤務情報111に追加する。これにより、図12及び図13に示すように、2011年9月におけるクルーC1のそれぞれの稼働日に勤務W1又はW2がクルーC1に割り当てられる。クルーC2,C3についても同様である。
ステップS107において、出力部105は、データベース101に記憶された勤務情報111を参照して、2011年9月のクルーC1〜C3の乗務スケジュールをカレンダー形式で出力する。
この例によれば、稼働日に着目したクルーの月内の勤務負荷の平準化、クルー間の勤務負荷の平準化を達成できる。ここで、前月の月内合計勤務時間が長いクルーについては、当月の月内合計勤務時間の目標値を小さくする等により、月間の勤務負荷の平準化を図ることもできる。また、月内合計勤務時間の目標値は、例えば、「所定の標準値」(クルー又はクルーの種別ごとに異なっていてもよいし、月ごとに異なっていてもよい)×2−「前月の月内合計勤務時間」=「当月の月内合計勤務時間の目標値」といった形で定めることができる。
実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
図14は、本実施の形態に係る勤務計画作成装置100の構成を示すブロック図である。
図14において、勤務計画作成装置100の構成は、図1に示した実施の形態1のものと同様であるが、本実施の形態では、データベース101が、勤務情報111のほか、属性情報112を記憶装置192により記憶する。属性情報112は、n人のクルーC1〜Cnのそれぞれについて、クルーの種別(所定の属性の一例)を示す情報である。クルーの種別には、一般、シニア、飛行時間制限者がある。シニアは、月内で乗務できる時間(即ち、月間の飛行時間の目標値)が一律に制限されている。飛行時間制限者は、月内で乗務できる時間が個別に制限されている。
以下、図3を用いて、勤務計画作成装置100の動作について説明する。
図3のステップS101において、設定部103は、データベース101に記憶された属性情報112によって示されるクルーの種別が共通するクルーごとに、共通の関数を用いて目標勤務時間Tを設定する。具体的には、設定部103は、データベース101に記憶された属性情報112を参照し、n人のクルーC1〜Cnのそれぞれが一般、シニア、飛行時間制限者のいずれに該当するかを判定する。そして、設定部103は、月内のそれぞれの日を対象日とし、一般のクルーについて、月の初日から対象日までの日数を変数xとする一次関数y=a1x+b1(a1は0より大きい実数、b1は0以上の実数)を用いて対象日までの目標勤務時間Tを処理装置191により設定する。また、設定部103は、月内のそれぞれの日を対象日とし、シニアのクルーについて、月の初日から対象日までの日数を変数xとするシニアのクルー用の一次関数y=a2x+b2(a2は0より大きい実数、b2は0以上の実数)を用いて対象日までの目標勤務時間Tを処理装置191により設定する。このとき、例えば、a1>a2とする。また、設定部103は、月内のそれぞれの日を対象日とし、飛行時間制限者について、月の初日から対象日までの日数を変数xとする飛行時間制限者ごとの一次関数y=a3x+b3(a3は0より大きい実数、b3は0以上の実数)を用いて対象日までの目標勤務時間Tを処理装置191により設定する。このとき、a3、b3は、飛行時間制限者ごとに個別に設定される。
図3のステップS102以降の動作については、実施の形態1のものと同様である。
なお、本実施の形態において、属性情報112が、クルーの種別以外の属性を示す情報であってもよい。この場合も、設定部103は、データベース101に記憶された属性情報によって示される属性が共通するクルーごとに、共通の関数を用いて目標勤務時間Tを設定する。
本実施の形態によれば、一定の期間内において、勤務者の属性に応じたペースで各勤務者に勤務させるような勤務計画を容易かつ効率よく作成することが可能となる。
実施の形態3.
本実施の形態について、主に実施の形態1との差異を説明する。
本実施の形態では、月内の連続する2日以上の期間の勤務の組み合わせが勤務パターンとして予め定められている。例えば、空港Aを出発して空港Bに到着するフライトを1日目の勤務とし、空港Bを出発して空港Aに到着するフライトを2日目の勤務とし、これら2日間の勤務の組み合わせを、1つの勤務パターンとして定義することができる。また、例えば、空港Aを出発して空港Bに到着するフライトを1日目の勤務とし、フライトはないが、空港Bの近辺に滞在することを2日目の勤務とし、空港Bを出発して空港Aに到着するフライトを3日目の勤務とし、これら3日間の勤務の組み合わせを、1つの勤務パターンとして定義することができる。なお、1日単位で割り当てられる勤務を、1つの勤務パターン(1日のみの勤務パターン)として定義してもよい。
本実施の形態に係る勤務計画作成装置100の構成は、図1に示した実施の形態1のものと同様である。
以下、図3を用いて、勤務計画作成装置100の動作について説明する。
図3のステップS101及びS102の動作については、実施の形態1のものと同様である。
図3のステップS104において、選択部104は、対象日から始まる期間の勤務パターンが未割り当てであれば、その期間を対象期間とする。選択部104は、n人のクルーC1〜Cnのそれぞれについて、データベース101に記憶された勤務情報111から、対象期間に(未割り当ての)勤務パターンを割り当てた場合の対象期間が終わる日までの累計勤務時間Uを処理装置191により算出する。具体的には、選択部104は、n人のクルーC1〜Cnのそれぞれについて、対象期間の勤務パターンより前の勤務(勤務パターンの一部であるものを含む)で、データベース101に記憶された勤務情報111が示す割り当て済の勤務の飛行時間を合計し、さらに、その結果に対象期間の勤務パターンの飛行時間を加算して、対象期間が終わる日までの累計勤務時間Uを求める。
図3のステップS105において、選択部104は、n人のクルーC1〜Cnのそれぞれについて、ステップS104で算出した対象期間が終わる日までの累計勤務時間UとステップS102で設定部103により設定された対象期間が終わる日までの目標勤務時間Tとを処理装置191により比較する。そして、選択部104は、n人のクルーC1〜Cnのそれぞれについて、対象期間が終わる日までの累計勤務時間Uが、対象期間が終わる日までの目標勤務時間Tを超えるかどうかを処理装置191により判定する。
なお、ステップS105において、対象期間が2つの月をまたがる可能性がある。即ち、対象期間が終わる日が次の月の日である場合がある。そのため、ステップS102において、設定部103は、必要に応じて次の月の初日から数日間を対象に、n人のクルーC1〜Cnの目標勤務時間Tを設定しておくものとする。
図3のステップS106において、選択部104は、n人のクルーC1〜Cnから、対象期間に勤務パターンを割り当てるクルーとして、ステップS105で対象期間が終わる日までの累計勤務時間Uが、対象期間が終わる日までの目標勤務時間Tを超えないと判定したクルーを処理装置191により選択する。このとき、該当する(累計勤務時間Uが目標勤務時間Tを超えない)クルーが2人以上いるか、あるいは、1人もいない場合、選択部104は、実施の形態1と同様に、任意の方法を用いて、1人のクルーを選択する。そして、選択部104は、選択したクルーについて、対象期間に割り当てた勤務パターンをデータベース101に記憶された勤務情報111に追加し、ステップS103に戻る。
図3のステップS107の動作については、実施の形態1のものと同様である。
以下では、ステップS101〜107の動作の具体例について説明する。
この例では、勤務計画作成装置100が2011年9月における3人のクルーC1〜C3の乗務スケジュールを作成する。2011年9月は、毎週火〜金曜日(1日,2日,6日〜9日、13日〜16日,20日〜23日,27日〜30日)に、4日間の勤務パターンP1が計画されているものとする。また、毎週木曜日(1日,8日,15日,22日,29日)に、飛行時間が4時間の勤務W1、毎週土曜日及び日曜日(3日,4日,10日,11日,17日,18日,24日,25日)に、飛行時間が6時間の勤務W2、毎週水曜日(7日,14日,21日,28日)に、飛行時間が8時間の勤務W3が計画されているものとする。さらに、4日ごと(2日〜4日,6日〜8日,10日〜12日,14日〜16日,18日〜20日,22日〜24日,26日〜28日,30日)に、3日間の勤務パターンP2が計画されているものとする。勤務パターンP1は、1日目及び4日目に12時間のフライトがあり、2日目及び3日目はフライトがないという勤務パターンである。勤務パターンP2は、1日目に6時間のフライト、2日目に2時間のフライト、3日目に8時間のフライトがあるという勤務パターンである。
また、この例では、ステップS101の関数y=4xが、3人のクルーC1〜C3に対して共通に設定されているものとする。
図15は、この例におけるクルーC1への勤務の割り当てを示すグラフである。図16は、この例におけるクルーC2への勤務の割り当てを示すグラフである。図17は、この例におけるクルーC3への勤務の割り当てを示すグラフである。
図4〜図6と同様に、図15〜図17において、縦軸は飛行時間の累積値、横軸は2011年9月1日からの日数(x)を示している。直線グラフ(y=4x)は、2011年9月1日〜30日における各クルーの目標勤務時間T(それぞれの日までの飛行時間の累積値の目標値)を表す。棒グラフは、2011年9月1日〜30日のそれぞれにて各クルーに割り当て済の勤務又は勤務パターンを表す。棒グラフの上辺から下辺までの高さは、対応する日又は期間に割り当てられた勤務又は勤務パターンの飛行時間を表し、棒グラフの上辺の高さ(位置)は、対応する日までに割り当てられた勤務又は勤務パターンの飛行時間の累積値を表す。
ステップS101において、設定部103は、図15〜図17に示すように、関数y=4xを用いて2011年9月1日〜30日におけるクルーC1〜C3の目標勤務時間Tを設定する。2011年9月1日までのクルーC1〜C3の目標勤務時間Tは4×1=4時間、2011年9月2日までのクルーC1〜C3の目標勤務時間Tは4×2=8時間、・・・、2011年9月30日までのクルーC1〜C3の目標勤務時間Tは4×30=120時間となる。
図18は、この例における勤務情報111を示す図である。
図18において、勤務情報111は、クルー(クルーの識別子)、日付、勤務パターン(勤務パターンの識別子)、勤務(1つ以上の勤務の識別子)、便(図示していない)、飛行時間(クルーが乗務する便の飛行時間の合計)等のデータを格納するテーブルとしてデータベース101に記憶されている。ここで、勤務情報111の勤務パターンは、1日単位で割り当てられる勤務については空データ(図では「−」と表記する)となるものとする。なお、前述したように、1日単位で割り当てられる勤務も1つの勤務パターン(1日のみの勤務パターン)として定義する場合には、1日単位で割り当てられる勤務についても、勤務情報111の勤務パターンが記録されることになる。
ステップS102において、入力部102は、2011年9月1日及び2日に勤務パターンP1(実際には2011年8月30日から始まる)を割り当てるクルーとして、例えばクルーC1を指定する操作をユーザから受け付ける。そして、入力部102は、図18の(1)に示すように、その操作によって指定されたクルーC1について、2011年9月1日及び2日に割り当てられた勤務パターンP1をデータベース101に記憶された勤務情報111に追加する。
なお、ここで説明する2011年9月を対象とした勤務パターンの割り当てと同様に、2011年8月を対象とした勤務パターンの割り当てが既に行われていれば、ステップS102において、クルーC1に2011年9月1日及び2日の勤務パターンP1を割り当てる処理(勤務情報111の更新)は不要である。つまり、データベース101に記憶された勤務情報111にて、前月から月をまたぐ勤務パターンが既に割り当て済であれば、その情報を利用することができる。
ステップS103において、選択部104は、2011年9月1日を対象日として、ステップS104に進む。
ステップS104において、選択部104は、データベース101に記憶された勤務情報111から、2011年9月1日に未割り当ての勤務W1を割り当てた場合の2011年9月1日までのクルーC2,C3の累計勤務時間Uを算出する。このとき、2011年8月30日〜2011年9月2日の勤務パターンP1がクルーC1に割り当てられているため、選択部104は、2011年9月1日に勤務W1を割り当てた場合の2011年9月1日までのクルーC1の累計勤務時間Uは算出しなくてよい。2011年9月1日に勤務W1を割り当てた場合の2011年9月1日までのクルーC2,C3の累計勤務時間Uは、2011年9月1日の勤務W1の飛行時間、即ち、4時間となる。
ステップS105において、選択部104は、クルーC2,C3のそれぞれについて、ステップS104で算出した2011年9月1日までの累計勤務時間UとステップS102で設定部103により設定された2011年9月1日までの目標勤務時間Tとを比較する。2011年9月1日に勤務W1を割り当てた場合の2011年9月1日までのクルーC2,C3の累計勤務時間Uは4時間であり、2011年9月1日までのクルーC2,C3の目標勤務時間Tである4時間と同じである。
ステップS106において、出力部105は、2011年9月1日までの累計勤務時間Uが2011年9月1日までの目標勤務時間Tを超えていないクルーC2,C3を画面上で一覧表示する。入力部102は、例えばクルーC2を指定する操作をユーザから受け付ける。選択部104は、その操作によって指定されたクルーC2を、2011年9月1日に勤務W1を割り当てるクルーとして選択する。選択部104は、図18の(2)に示すように、選択したクルーC2について、2011年9月1日に割り当てた勤務W1をデータベース101に記憶された勤務情報111に追加する。そして、ステップS103に戻る。なお、このステップS106では、例えば、選択部104が、クルーC2,C3のいずれかをランダムに選択してもよい。
ステップS103において、選択部104は、2011年9月1日の勤務W1が割り当て済であるため、2011年9月2日を対象日として、ステップS104に進む。
ステップS104において、選択部104は、データベース101に記憶された勤務情報111から、2011年9月2日〜4日に勤務パターンP2を割り当てた場合の2011年9月4日までのクルーC2,C3の累計勤務時間Uを算出する。このとき、2011年8月30日〜2011年9月2日の勤務パターンP1がクルーC1に割り当てられているため、選択部104は、2011年9月2日〜4日に勤務パターンP2を割り当てた場合の2011年9月4日までのクルーC1の累計勤務時間Uは算出しなくてよい。2011年9月2日〜4日に勤務パターンP2を割り当てた場合の2011年9月4日までのクルーC2の累計勤務時間Uは、4+16=20時間となる。2011年9月2日〜4日に勤務パターンP2を割り当てた場合の2011年9月4日までのクルーC3の累計勤務時間Uは、16時間となる。
ステップS105において、選択部104は、クルーC2,C3のそれぞれについて、ステップS104で算出した2011年9月4日までの累計勤務時間UとステップS102で設定部103により設定された2011年9月4日までの目標勤務時間Tとを比較する。2011年9月2日〜4日に勤務パターンP2を割り当てた場合の2011年9月4日までのクルーC2の累計勤務時間Uは20時間であり、2011年9月4日までのクルーC2の目標勤務時間Tである16時間より長い。2011年9月2日〜4日に勤務パターンP2を割り当てた場合の2011年9月4日までのクルーC3の累計勤務時間Uは16時間であり、2011年9月4日までのクルーC3の目標勤務時間Tである16時間と同じである。
ステップS106において、選択部104は、2011年9月4日までの累計勤務時間Uが2011年9月4日までの目標勤務時間Tを超えていないクルーC3を選択する。選択部104は、図18の(3)に示すように、選択したクルーC3について、2011年9月2日〜4日に割り当てた勤務パターンP2をデータベース101に記憶された勤務情報111に追加する。そして、ステップS103に戻る。
これ以降、同様に、ステップS103〜S106が繰り返し実行され、図15〜図17に示すように、2011年9月3日〜30日の勤務W1〜W3及び勤務パターンP1,P2がクルーC1〜C3に割り当てられる。そして、その結果がデータベース101に記憶された勤務情報111に反映される。
図19は、この例におけるクルーC1の乗務スケジュールを示す図である。図20は、この例におけるクルーC2の乗務スケジュールを示す図である。図21は、この例におけるクルーC3の乗務スケジュールを示す図である。
ステップS107において、出力部105は、図19〜図21に示すように、データベース101に記憶された勤務情報111を参照して、2011年9月のクルーC1〜C3の乗務スケジュールをカレンダー形式で出力する。
なお、この例と同一の条件下において、図19〜図21に示した乗務スケジュールと異なる勤務の割り当て方も可能である。即ち、図19〜図21に示したものとは別の乗務スケジュールを作成することもできる。
本実施の形態によれば、勤務パターンの割り当ても可能となるため、利便性が向上する。
実施の形態4.
実施の形態1〜3では、勤務時間を評価指標として対象日に勤務を割り当てるクルーを選択しているが、勤務時間以外の評価指標を用いても構わない。
例えば、飛行距離を評価指標として用いることができる。
この場合、設定部103は、複数の日のそれぞれを対象日とし、複数のクルーのそれぞれについて、複数の日の初日から対象日までの飛行距離を累計した累計値の目標値を設定する。選択部104は、複数の日の初日から末日までを順番に対象日とする。対象日の勤務が未割り当てであれば、選択部104は、複数のクルーのそれぞれについて、データベース101に記憶された勤務情報111から、対象日に勤務を割り当てた場合の対象日までの飛行距離の累計値を算出する。選択部104は、算出した対象日までの飛行距離の累計値と設定部103により設定された対象日までの目標値とを比較する。選択部104は、その比較結果に基づいて、複数のクルーから、対象日に勤務を割り当てるクルーを選択する。具体的には、選択部104は、算出した対象日までの飛行距離の累計値が設定部103により設定された対象日までの目標値を超えないクルーを選択する。そして、選択部104は、選択したクルーについて、対象日に割り当てた勤務をデータベース101に記憶された勤務情報111に追加する。これにより、実施の形態1と同様に、各クルーに勤務させるペース(設定部103で任意に決めたもの)に合わせた勤務の割り当てを容易かつ効率よく行うことが可能となる。
また、例えば、休日数を評価指標として用いることができる。
この場合、設定部103は、複数の日のそれぞれを対象日とし、複数のクルーのそれぞれについて、複数の日の初日から対象日までの休日数を累計した累計値の目標値を設定する。選択部104は、複数の日の初日から末日までを順番に対象日とする。対象日の勤務が未割り当てであれば、選択部104は、複数のクルーのそれぞれについて、データベース101に記憶された勤務情報111から、対象日に勤務を割り当てた場合の対象日までの休日数の累計値を算出する。選択部104は、算出した対象日までの休日数の累計値と設定部103により設定された対象日までの目標値とを比較する。選択部104は、その比較結果に基づいて、複数のクルーから、対象日に勤務を割り当てるクルーを選択する。具体的には、選択部104は、算出した対象日までの休日数の累計値が設定部103により設定された対象日までの目標値を下回らないクルーを選択する。そして、選択部104は、選択したクルーについて、対象日に割り当てた勤務をデータベース101に記憶された勤務情報111に追加する。これにより、実施の形態1と同様に、各クルーに勤務させるペース(設定部103で任意に決めたもの)に合わせた勤務の割り当てを容易かつ効率よく行うことが可能となる。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、2つ以上を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つを部分的に実施しても構わない。あるいは、これらの実施の形態のうち、2つ以上を部分的に組み合わせて実施しても構わない。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。