以下、図面を参照しつつ、本発明に係る種々の実施の形態について詳細に説明する。なお、図面全体において同一符号を付された構成要素は、同一構成及び同一機能を有するものとする。
実施の形態1.
図1は、本発明に係る実施の形態1であるスケジューリング装置1の概略構成を示すブロック図である。このスケジューリング装置1は、N個(Nは2以上の整数)の移動体Z1〜ZNに対して、予め決められた制約条件を満たす共有リソースの使用予定時刻τ1〜τNをそれぞれ割り当てることによりスケジュールを生成する機能を有するものである。
移動体Z1〜ZNは、たとえば、交通システムにおける航空機、船舶または車両などの構成要素とすることができる。共有リソースは、複数の移動体Z1〜ZNがスケジュールで定められた順番で使用する同一の共有領域である。共有リソースとしては、たとえば、航空機の場合は、滑走路または航路上の特定空域が挙げられ、船舶の場合は、複数の船舶が出入りする港湾が挙げられ、車両の場合は、複数経路の合流点が挙げられる。交通システムでは、複数の移動体がその種の同一の共有領域を移動に用いることが多い。
以下、移動体Z1〜ZNによる共有リソースの使用態様として、移動体Z1〜ZNによる共有リソースの「通過」を想定する。この場合、スケジューリング装置1は、移動体Z1〜ZNに対して、予め決められた制約条件を満たす共有リソースの通過予定時刻τ1〜τNをそれぞれ割り当てることによりスケジュールを生成する。ただし、本発明に係る共有リソースの使用態様は「通過」に限定されるものではない。
図2Aは、5つの移動体Z1〜Z5が右方に移動し、共有リソースRSで合流する状況を示す図である。また、図2Bは、共有リソースRSに対して設定されたスケジュールの一例を説明するための図である。図2Bの例では、5つの移動体Z1,Z5,Z3,Z2,Z4がこの順番でそれぞれ通過予定時刻τ1,τ5,τ3,τ2,τ4に共有リソースRSを通過するようにスケジュールが定められている。
スケジュールの作成に際しては、予め決められた制約条件を満たす必要がある。本実施の形態における制約条件は、以下の第1の制約及び第2の制約を含む。第2の制約は、安全性の確保を目的としたものである。
・第1の制約:移動体Z1〜ZNにそれぞれ共有リソースの通過可能時間帯(使用可能時間帯)が割り当てられており、通過予定時刻τ1〜τNはそれぞれ対応する通過可能時間帯の範囲内の時刻に設定される。
・第2の制約:共有リソースを通過する移動体Z1〜ZNの移動体間の時間的または空間的な間隔が、予め決められた規定間隔以上となるように制約される。よって、時間的な間隔の制約を課す場合であれば、移動体Z1〜ZNのうちの或る移動体Znが共有リソースを通過した後、規定間隔に対応する時間帯が経過するまで次の移動体は共有リソースを通過することができない。共有リソースを通過することができない時間帯は、移動体Znに対する前後の移動体のカテゴリに依存して定まるものとする。移動体Z1〜ZNが航空機の場合、移動体のカテゴリは、たとえば、機体のサイズ、または、航空機の到着・出発区分(到着または出発のいずれか一方を表す区分)に基づいて設定されればよい。或る航空機(先行機)が滑走路を使用してから、次の航空機(後続機)がその滑走路を使用することが可能となるまでの時間は、先行機のカテゴリと後続機のカテゴリとの組み合わせに応じて設定することが可能である。以下、第2の制約を「規定間隔制約」とも呼ぶこととする。
図1に示されるように、本実施の形態のスケジューリング装置1は、複数のスケジュール候補を生成し且つ各スケジュール候補の評価値を算出する最適化部10と、この最適化部10による最適化処理を制御する最適化制御部11と、最適化部10で生成された複数のスケジュール候補の中から高い評価値を有するスケジュール候補をスケジュールとして選択するスケジュール選択部12と、データ編集処理部13と、表示部15及び操作入力部16などの外部機器に接続されたインタフェース部14とを備えて構成されている。
インタフェース部14は、表示部15及び操作入力部16に接続されている。表示部15は、たとえば、液晶表示パネルまたは有機EL表示パネルなどの画像表示デバイスである。インタフェース部14は、スケジューリング装置1により生成されたスケジュールを表示部15に表示させることが可能である。また、インタフェース部14は、外部通信機器との間で通信データを送受信する通信機能をも有するので、スケジューリング装置1により生成されたスケジュールを外部通信機器に送信することができる。
また、操作入力部16は、ユーザによる操作入力を受け付ける入力ボタン及び入力キーを有している。データ編集処理部13は、インタフェース部14を介してユーザによる操作入力を受け付け、この操作入力に応じてデータ格納部20に格納されている各種データの設定値を編集可能とする機能を有する。具体的には、データ編集処理部13は、表示部15にデータ編集用画面を表示させることができる。ユーザは、そのデータ編集用画面を視認しつつ操作入力部16を操作してデータ編集処理部13に情報を入力することが可能である。
最適化部10は、図1に示されるように、移動体情報記憶部21,スケジュール記憶部22及び制約条件記憶部23を含むデータ格納部20と、複数のスケジュール候補を生成してこれらスケジュール候補をデータ格納部20内のスケジュール記憶部22に記憶させるスケジューリング処理部30と、スケジューリング処理部30に与えるべき移動体識別子の初期順列を生成する初期順列生成部31とを備えている。最適化部10は、更に、スケジュール記憶部22に記憶されているスケジュール候補を基に構成される移動体識別子の順列(以下「順列候補」ともいう。)から部分列を選択する部分列選択部32と、移動体のカテゴリを基準としてその部分列を並べ替えることで当該順列候補を新たな順列に変換する順列変換部33とを備えている。
最適化制御部11は、最適化部10による最適化処理を制御する機能を有している。具体的には、最適化制御部11は、最適化の終了判定を行うことができる。スケジュール選択部12は、最適化が終了した時点で評価値の高いスケジュールを選択し、当該選択されたスケジュールをインタフェース部14経由で表示部15に出力することができる。あるいは、スケジュール選択部12は、当該選択されたスケジュールをインタフェース部14経由で外部通信機器に送信することもできる。
データ格納部20においては、移動体情報記憶部21は、スケジューリング対象となる移動体Z1〜ZNの識別子(以下「移動体識別子」ともいう。)、移動体Z1〜ZNのそれぞれのカテゴリ、及び、共有リソースの通過可能時間帯を含む移動体情報が予め記憶されている領域である。図3は、移動体情報の一例をテーブル形式で示す図である。図3に示されるように、移動体情報記憶部21には、移動体識別子ID1〜ID5,…と、移動体のカテゴリF1〜F5,…と、共有リソースの通過可能時間帯T1a,T1c,…,T5a,T5c,…とが記憶されている。図3において、通過可能時間帯Tiaは、i番目の移動体Ziの移動体識別子IDiに対応して設けられた時刻tiaから時刻tibまでの通過可能時間帯を意味し、通過可能時間帯Ticは、移動体識別子IDiに対応して設けられた時刻ticから時刻tidまでの時間帯を意味する。
1つの移動体識別子IDiに対して単数または複数の通過可能時間帯を設定することが可能である。図4Aは、移動体Ziに対して設定された単一の通過可能時間帯Tiaの例を示す図であり、図4Bは、移動体Ziに対して設定された3つの通過可能時間帯Tia,Tic,Tieの例を示す図である。スケジューリング処理部30は、上記した第1の制約に従い、移動体Ziに対して、図4Aの通過可能時間帯Tiaの範囲内、または図4Bの通過可能時間帯Tia,Tic,Tidの範囲内の通過予定時刻τiを割り当てる必要がある。
共有リソースの通過可能時間帯は、たとえば、移動体の現在位置、移動体のとり得る速度、移動体の現在位置から共有リソースに至るまでにとり得る経路、及び、移動体の燃料残量といった複数の要素によって決めることができる。移動体が航空機の場合に当該移動体が待機旋回可能な空域があるときは、図4Bに示したように、複数の通過可能時間帯Tia,Tic,Tieを設定することができる。なお、後述する各移動体の遅延量の評価のために、通過可能時間帯全体の下限時刻(最早時刻)が基準時刻として使用される。図4A及び図4Bの場合、基準時刻はtiaである。
スケジュール記憶部22は、移動体Z1〜ZNの順序を定める移動体識別子ID1〜IDNの配列である順列を記憶するとともに、スケジューリング処理部30により生成されるスケジュール候補及びその評価値の組み合わせを示すスケジュール情報を記憶するための領域である。
制約条件記憶部23は、上記した第2の制約すなわち規定間隔制約に関する制約情報が予め記憶されている領域である。図5Aは、制約情報の一例をテーブル形式で示す図であり、図5Bは、先行移動体Zjと後続移動体Zkとの間の規定間隔Δ(j,k)を概略的に示す図である。スケジューリング処理部30は、規定間隔制約に従い、共有リソースを通過する際の移動体間に規定間隔以上の時間間隔を設ける必要がある。図5Aは、先行移動体のカテゴリと後続移動体のカテゴリとの組み合わせに対応する規定間隔の設定値を示している。本実施の形態の移動体は、ヘビー(Hv)、ミディアム(Md)及びライト(Lt)という3種類のカテゴリのいずれかに分類される。図5Aによれば、先行移動体Zjがヘビーに分類され、後続移動体Zkがライトに分類されている場合、スケジューリング処理部30は、これら先行移動体Zj及び後続移動体Zkにそれぞれ割り当てるべき通過予定時刻τj,τk間に120以上の時間間隔を空けなければならない。航空機の場合、規定間隔の具体的な値は、たとえば、カテゴリに属する機体により発生する後方乱気流の持続時間、及び、後方乱気流が機体に及ぼす影響の大きさに基づいて設定することが可能である。
なお、制約条件記憶部23においては、図5Aに示した制約情報の他に、たとえば、特定の共有リソースについて移動体間で一律に設定されるべき時間間隔などの制約が記憶されていてもよい。
初期順列生成部31は、移動体情報記憶部21からスケジューリング対象の移動体Z1〜ZNの移動体情報の供給を受けると、この移動体情報に基づいて移動体識別子ID1〜IDNの順序付き配列である初期順列を生成し、この初期順列のデータをスケジュール記憶部22に記憶させる。初期順列は、移動体Z1〜ZNによる共有リソースの通過順序を暫定的に定める配列である。たとえば、5個の移動体Z1,Z5,Z3,Z2,Z4がこの順番で共有リソースを通過する場合の初期順列は、たとえば、{ID1,ID5,ID3,ID2,ID4}という移動体識別子の順序付き配列で構成される。
前述のとおり、各移動体に割り当てられている共有リソースの通過可能時間帯には幅があり、また、移動体間で共有リソースの通過可能時間帯が重複する場合がある。初期順列生成部31は、先着順方式で初期順列を生成することができる。具体的には、初期順列生成部31は、以下の第1の方法及び第2の方法のうち予め定められたいずれか一方の方法で初期順列を生成することができる。
・第1の方法:共有リソースの通過可能時間帯の下限時刻(図4A及び図4Bの例の場合、最早時刻)の順序で移動体識別子の初期順列を生成する方法。
・第2の方法:共有リソースの通過可能時間帯の上限時刻(図4A及び図4Bの例の場合、最遅時刻)の順序で移動体識別子の初期順列を生成する方法。
なお、ユーザは、データ編集処理部13の機能を利用して初期順列を編集することができる。具体的には、ユーザは、操作入力部16を操作してスケジュール記憶部22に記憶されている初期順列を編集することが可能である。
スケジューリング処理部30は、スケジュール記憶部22から初期順列または後述する新たな順列を入力順列として取得し、移動体Z1〜ZNに対して上記制約条件を満たす通過予定時刻の割り当てを当該入力順列の順番で実行することによりスケジュール候補を生成するとともに、このスケジュール候補の評価値を算出する。生成されたスケジュール候補とその評価値の組は、スケジュール記憶部22に記憶される。スケジュール候補の具体的な生成方法については後述する。
なお、上記第1の制約及び第2の制約(規定間隔制約)だけでなく、第1の制約及び第2の制約以外の第3の制約が制約条件記憶部23に記憶されている場合には、スケジューリング処理部30は、第1〜第3の制約を満たすスケジュール候補を生成してもよい。
スケジュール候補の評価値E(p)(pは、スケジュール候補の識別番号)は、たとえば、複数の移動体Z1〜ZNのそれぞれの遅延量δp(1)〜δp(N)の総和の逆数として算出することができる。たとえば、n番目の移動体Znに割り当てられている通過可能時間帯全体の下限時刻を基準時刻tR(n)とするとき、移動体Znの遅延量δp(n)は、次式(1)によって定義可能である。
δp(n)=τn−tR(n) (1)
また、評価値E(p)は、たとえば、次式(2)によって与えられる。
E(p)=1/{δp(1)+…+δp(N)+ε} (2)
ここで、εは、微少な正の実数である。なお、式(2)の評価値E(p)は、遅延量δp(1)〜δp(N)の総和の逆数で表現されているが、これに限定されるものではない。遅延量の逆数1/{δp(1)+ε}〜1/{δp(N)+ε}の総和が評価値E(p)として算出されてもよい。
スケジュール候補は、評価値E(p)が高いほど、高い評価を有する良い候補であるということができる。
また、公平性を評価するために、共有リソースへの先着順(たとえば、共有リソースの通過可能時間帯内の基準時刻の順、具体的には、その下限時刻または上限時刻のいずれかの順)を基準とした移動体Z1〜ZNの追い越し発生数に基づいて評価値E(p)が算出されてもよい。スケジューリング処理部30が、或る入力順列に基づいてp番目のスケジュール候補を生成するとき、n番目の移動体Znの追い越し発生数Op(n)は、先着順の順列と、p番目のスケジュール候補を基に構成される順列候補との間の移動体Znの順位の下降数または上昇数として定義可能である。たとえば、先着順の順列と順列候補との間に以下の関係が成立するものと考える。
・先着順の順列={ID1,ID2,ID3,ID4,ID5}(tR(1)<tR(2)<tR(3)<tR(4)<tR(5))
・順列候補={ID1,ID3,ID4,ID5,ID2}(τ1<τ3<τ4<τ5<τ2)
この場合、先着順の順列と順列候補との間の移動体Znの順位の下降数を追い越し発生数Op(n)として定義すれば、移動体Z2は、3つの移動体Z3,Z4,Z5に追い越されているので、移動体Z2の順位の下降数は「3」である。移動体Z1,Z3,Z4,Z5は追い越されていないので、これら移動体Z1,Z3,Z4,Z5の追い越し発生数Op(1),Op(3),Op(4),Op(5)は零である。よって、追い越し発生数の総和は「3」となる。なお、先着順の順列と順列候補との間の移動体Znの順位の上昇数を追い越し発生数Op(n)として定義した場合も、同様の結果が得られる。
スケジュール候補は、追い越し発生数の総和が低いほど、公平性が高く、評価が高いものとすることが好ましい。追い越し発生数の総和または最大値をOpで表すとき、たとえば、次式(3)に基づいて評価値E(p)を算出することができる。
E(p)=1/{δp(1)+…+δp(N)+Op+ε} (3)
部分列選択部32は、部分列選択処理を実行する。すなわち、部分列選択部32は、スケジュール記憶部22から一のスケジュール候補を取得し、このスケジュール候補を基に構成される順列候補から部分列を選択する。順列変換部33は、部分列選択部32で選択された部分列に対して順列変換処理を実行する。すなわち、順列変換部33は、部分列選択部32で選択された部分列を、当該部分列に対応する移動体のカテゴリを基準として予め定められた規則に従って並べ替えることにより、順列候補を新たな順列に変換する。その新たな順列はスケジュール記憶部22に記憶される。
スケジューリング処理部30は、順列変換部33で生成された新たな順列をスケジュール記憶部22から読み出し、この新たな順列に対してスケジュール生成処理を実行する。すなわち、スケジューリング処理部30は、スケジュール記憶部22から当該新たな順列を入力順列として取得し、移動体Z1〜ZNの1つ1つに対して上記制約条件を満たす通過予定時刻の割り当てを当該入力順列の順番で実行することによりスケジュール候補を生成するとともに、このスケジュール候補の評価値を算出する。生成されたスケジュール候補とその評価値の組は、スケジュール記憶部22に記憶される。
更に、部分列選択部32は、スケジュール記憶部22から一のスケジュール候補を取得して部分列選択処理を実行する。次いで、順列変換部33は、部分列選択部32で選択された部分列に対して順列変換処理を実行して新たな順列を生成する。その新たな順列はスケジュール記憶部22に記憶される。このようにして、スケジューリング処理部30、部分列選択部32及び順列変換部33は、スケジュール生成処理、部分列選択処理及び順列変換処理を反復して実行することにより、複数のスケジュール候補とこれらの評価値とを生成することができる。
スケジュール選択部12は、スケジュール記憶部22に蓄積された複数のスケジュール候補の中から最大の評価値を有するスケジュール候補をスケジュールとして選択し、このスケジュールをインタフェース部14に出力する。インタフェース部14は、このスケジュールを表示部15に表示させ、あるいは、リクエストを発した外部通信機器に送信することができる。
次に、本実施の形態のスケジューリング装置1の動作について詳細に説明する。図6は、スケジューリング装置1による最適化処理であるスケジューリングの手順の一例を概略的に示すフローチャートである。スケジューリング処理部30は、インタフェース部14に入力された操作入力または通信データのいずれかに含まれるリクエストを検出すると、このリクエストに応じて、移動体情報記憶部21から初期順列生成部31に移動体情報を供給することにより図6のスケジューリングを開始させる。
図6を参照すると、初期順列生成部31は、移動体情報記憶部21から供給された移動体情報に基づいて初期順列を生成する(ステップST10)。初期順列は、以下のような配列であると仮定する。
初期順列={IDa[1],IDa[2],…,IDa[N]}
ここで、tR(a[i])<tR(a[i+1])の関係が成立する。a[i]は、移動体識別子IDa[i]に一意に対応する番号(以下「移動体番号」という。)であり、1〜Nの範囲内の整数である。また、iは、初期順列における移動体識別子IDa[i]の順位を示す順序番号であり、1〜Nの範囲内の整数である。スケジュール生成処理の開始時点では、全ての移動体Za[1]〜Za[N]に対して通過予定時刻τa[1]〜τa[N]が未割当ての状態にある。
次に、スケジューリング処理部30は、その初期順列を入力順列として使用するスケジュール生成処理を実行する(ステップST11)。図7は、ステップST11のスケジュール生成処理の手順の一例を示すフローチャートである。
図7を参照すると、スケジューリング処理部30は、入力順列の順番に基づき、スケジューリング対象の移動体Za[1]〜Za[N]の中から、通過予定時刻τa[i]が未だ割り当てられていない移動体Za[i]を1つ選択する(ステップST31)。ここで、「移動体Za[i]を選択する」ことは、入力順列における移動体識別子IDa[1]〜IDa[N]の中から当該入力順列の順番に従って移動体識別子IDa[i]を1つ選択することを意味する。ステップST31が最初に実行されるとき、入力順列の中で最も順番の早い(すなわち最も順位の高い)移動体識別子IDa[i=1]が選択される。次いで、スケジューリング処理部30は、移動体情報記憶部21及び制約条件記憶部23から制約条件を取得する(ステップST32)。すなわち、スケジューリング処理部30は、移動体情報記憶部21から、共有リソースの通過可能時間帯に関する第1の制約のデータを取得し、制約条件記憶部23から規定間隔制約のデータを取得する(ステップST32)。
次に、スケジューリング処理部30は、ステップST31で選択された移動体Za[i]に対して当該制約条件を満たす通過予定時刻τa[i]の割り当てを試みる(ステップST33)。言い換えれば、スケジューリング処理部30は、当該制約条件を満たしつつ、選択された移動体Za[i]の時間軸への割り当てを試みる(ステップST33)。具体的には、制約条件を満たす通過可能時間帯内の最早時刻が当該移動体の通過予定時刻τa[i]として割り当てられる。その理由は、移動体Za[i]の遅延量を最小化するためである。ステップST33が最初に実行されるとき、先行して通過予定時刻が割り当てられた移動体が存在しないので、上記した第1の制約及び第2の制約のうち、共有リソースの通過可能時間帯に関する第1の制約のみが制約条件として使用される。
移動体Za[i]に対する通過予定時刻τa[i]の割り当てが成功しなかった場合(ステップST34のNO)、スケジューリング処理部30は、スケジュール生成が失敗したとの判定結果をインタフェース部14に出力する(ステップST37)。インタフェース部14は、この判定結果を表示部15に表示させる。その後、図6のステップST13に処理が移行する。
一方、ステップST33にて移動体Za[i]に対する通過予定時刻τa[i]の割り当てが成功した場合(ステップST34のYES)、スケジューリング処理部30は、全ての移動体Za[1]〜Za[N]に対する通過予定時刻τa[1]〜τa[N]の割り当てが成功したか否かを判定する(ステップST35)。全ての移動体Za[1]〜Za[N]に対する割り当てが未だ成功していない場合(ステップST35のNO)、スケジューリング処理部30は、順序番号iをi+1にインクリメントして次の移動体Za[i]を選択する(ステップST31)。その後、ステップST32〜ST34が実行される。
ステップST33では、通過予定時刻τa[j](j<i)が割り当てられた移動体Za[j]が既に存在するので、スケジューリング処理部30は、上記第1の制約及び規定間隔制約の双方の制約を満たす通過予定時刻τa[i]の割り当てを試みる(ステップST33)。
最終的に、全ての移動体Za[1]〜Za[N]に対する通過予定時刻τa[1]〜τa[N]の割り当てが成功した場合(ステップST35のYES)、スケジューリング処理部30は、それら割り当てにより生成されたスケジュール候補をスケジュール記憶部22に出力する(ステップST36)。
以上に説明したように、図7のスケジュール生成処理によれば、スケジューリング処理部30は、移動体Za[1]〜Za[N]に対して、制約条件を満たす通過予定時刻τa[i]の割り当てを入力順列の順番で実行することによりスケジュール候補を生成している。
図8A〜図8Eは、移動体Z1〜Z3に割り当てられた通過予定時刻τ1〜τ3のいくつかの例を示す図である。図8A〜図8Eの例では、入力順列は{ID1,ID2,ID3}の配列で構成されるものとする。よって、最初は、図8Aに示されるように、移動体Z1に通過予定時刻τ1が割り当てられる。このとき、共有リソースの通過可能時間帯T1a,T1cが割り当て可能時間帯P1a,P1cとなる。通過予定時刻τ1は、これら割り当て可能時間帯P1a,P1c内の最早時刻に設定される。
次に、図8Bに示されるように、移動体Z2に通過予定時刻τ2が割り当てられる。このとき、通過予定時刻τ1の割り当てが既に完了しているので、時刻τ1から後ろ方向に規定間隔Δ(1,2)以内の範囲内に通過予定時刻τ2を設定することができない。図8Bの例では、割り当て可能時間帯P2aは、通過可能時間帯T2aとなる。通過予定時刻τ2は、この割り当て可能時間帯P2a内の最早時刻に設定される。
次に、図8Cに示されるように、移動体Z3に通過予定時刻τ3が割り当てられる。このとき、移動体Z1,Z2に対する通過予定時刻τ1,τ2の割り当てが既に完了しているので、時刻τ1から後ろ方向に規定間隔Δ(1,3)以内の範囲内、時刻τ1から前方向に規定間隔Δ(3,1)以内の範囲内、時刻τ2から後ろ方向に規定間隔Δ(2,3)以内の範囲内、及び、時刻τ2から前方向に規定間隔Δ(3,2)以内の範囲内に通過予定時刻τ3を設定することができない。よって、割り当て可能時間帯P3a,P3cは、通過可能時間帯T3a,T3cの中の制約された時間帯となる。通過予定時刻τ3は、これら割り当て可能時間帯P3a,P3c内の最早時刻に設定される。
図8D及び図8Eは、図8Cの場合とは異なる範囲に通過可能時間帯T3a,T3cが存在する場合の通過予定時刻τ3を示す図である。また、図9A〜図9Cは、図8A〜図8Eの場合の入力順列とは異なる入力順列が与えられた場合に移動体Z1〜Z3に割り当てられた通過予定時刻τ1〜τ3の例を示す図である。図9A〜図9Cの例では、入力順列は{ID3,ID2,ID1}の配列で構成されているものとする。よって、移動体Z3,Z2,Z1の順番で通過予定時刻τ3,τ2,τ1が割り当てられる。
さて、図7に示したスケジュール生成処理は、入力順列の順番に従い、制約条件下で可能な限り最早の時刻を通過予定時刻として移動体に割り当てる処理であるから、入力順列の順番と、スケジュール候補を基に構成される順列候補の順番(割り当てられた通過予定時刻の順番)とが互いに類似したものとなる性質がある。上記のとおり、初期順列は先着順方式で生成されるので、特にスケジュール候補の評価値に公平性を評価する指標値(たとえば、上記した追い越し発生数)が組み込まれている場合には、スケジュール生成対象となる入力順列について、基本的に前記の性質が成り立つと考えられる。ただし、図8C及び図8Eに示したように、入力順列の順番と順列候補の順番とは、必ずしも一致するものではない。
なお、入力順列の順番と順列候補の順番とが互いに一致するとの制約が採用されてもよい。この制約は、たとえば、上記ステップST33において、割り当てられるべき通過予定時刻τa[i]を、割り当て済みの全ての通過予定時刻τa[j](j<i)の後の時間帯に限定することにより実現することができる。このように、入力順列の順番と、スケジュール候補を基に構成される順列候補の順番とを互いに一致させるスケジューリングを行うことにより、人間にとって理解しやすいスケジュールを生成することができる。
次に、図6を参照すると、上記したスケジュール生成処理(ステップST11)の実行後、スケジューリング処理部30は、当該生成されたスケジュール候補の評価値を算出する(ステップST13)。評価値の算出方法は上述したとおりである。なお、スケジュール生成が失敗してスケジュール候補が存在しない場合には、評価値は算出されないものとする。
その後、スケジューリング処理部30は、最適化を終了するか否かを判定する(ステップST14)。具体的には、たとえば、スケジューリング処理部30で生成されたスケジュール候補の数が予め定められた設定値を超えたとの条件(以下、条件Aという。)が成立したときにスケジューリング処理部30は最適化終了と判定すればよい(ステップST14のYES)。あるいは、スケジューリングの処理時間が予め定められた設定時間を超えたとの条件(以下、条件Bという。)が成立したときにスケジューリング処理部30は最適化終了と判定してもよい(ステップST14のYES)。あるいは、ステップST13で算出された評価値が或る規定の基準値を満足したとの条件(以下、条件Cという。)が成立したときにスケジューリング処理部30は最適化終了と判定してもよい(ステップST14のYES)。あるいは、これらの条件A〜Cのうちの2以上の条件の組み合わせが成立したときにスケジューリング処理部30は最適化終了と判定することもできる。最適化終了との判定がなされたとき、ステップST20に処理が移行する。
一方、最適化を終了しないとの判定がなされた場合(ステップST14のNO)、新たな順列を生成する処理が実行される(ステップST15〜ST17)。具体的には、部分列選択部32が、スケジュール記憶部22から一のスケジュール候補を取得し、このスケジュール候補を基に移動体識別子の順列候補を構成する(ステップST15)。ここで、部分列選択部32は、スケジュール記憶部22に記憶されている単数または複数のスケジュール候補の中から最大の評価値を有するスケジュール候補を選択することが好ましい。その理由は、評価値が高いスケジュール候補に基づいて新たな順列を生成することにより、より評価値の高いスケジュール候補を得ることが期待できるためである。ステップST15で構成された順列候補は、以下のような配列であると想定する。
順列候補={IDb[1],IDb[2],…,IDb[N]}(τb[i]<τb[i+1])
ここで、b[i]は、移動体識別子IDb[i]に一意に対応する移動体番号であり、1〜Nの範囲内の整数である。iは、順列候補における移動体識別子IDb[i]の順位を示す順序番号であり、1〜Nの範囲内の整数である。
次に、部分列選択部32は、順列候補に対して部分列選択処理を実行する(ステップST16)。この部分列選択処理では、部分列選択部32は、当該順列候補から、移動体識別子の連続的な配列である部分列を選択する。この部分列は、当該部分列を構成する複数の移動体識別子に対応する複数の通過可能時間帯のすべてが重複する配列である。言い換えれば、その部分列は、当該部分列を構成する複数の移動体識別子に対応する複数の通過可能時間帯のすべてが同一時間帯(以下「重複通過可能時間帯」ともいう。)を共有する配列である。
図10及び図11は、実施の形態1に係る部分列選択処理(ステップST16)の手順の例を概略的に示すフローチャートである。図10のフローチャートと図11のフローチャートとは、結合子C1,C2を介して相互に接続されている。図12は、当該順列候補、移動体のカテゴリ及び通過可能時間帯の間の対応関係の一例をテーブル形式で示す図である。図12に示されるように、当該順列候補を構成する各移動体識別子に対して、移動体のカテゴリ(Hv,MdまたはLt)と移動体可能時間帯とが関連付けられている。
図10を参照すると、先ず、部分列選択部32は、当該順列候補に対応する移動体Zb[1]〜Zb[N]の中から、指定されたカテゴリに属する移動体Zb[i]を確率的に選択する(ステップST41)。ここで、たとえば、図5Aに示した規定間隔制約が使用される場合には、カテゴリとしてヘビー(Hv)を指定することが適切である。理由を以下に説明する。図5Aから分かるように、ヘビー以外の異種カテゴリ(ミディアム及びライト)に属する移動体については、その異種カテゴリに属する移動体とヘビーに属する移動体との間の先行及び後続の位置関係によって規定間隔が大きく変わる。具体的には、ヘビーに属する移動体が先行移動体である場合、これ以外の場合と比べて、移動体間の規定間隔を大きくする必要があるため、他の条件が同じであれば、遅延量の大きなスケジュール候補が生成される可能性が高い。この場合、後述する部分列の並べ替え(図6のステップST17)によって、ヘビーに属する移動体の順位(すなわち、ヘビーに属する移動体の移動体識別子の順序番号)が変化すると、スケジュール候補の遅延量が大きく変化する可能性が高い。このようにスケジュールの最適化において遅延量を大きく変化させるスケジュール候補に絞って探索を行うことにより、効率の良い探索が可能になることが期待できる。
なお、本実施の形態では、指定されたカテゴリに属する移動体Zb[i]の選択は確率的になされているが(ステップST41)、これに限定されるものではない。予め定めたルールに基づいて移動体Zb[i]の選択が決定論的に行われてもよい。たとえば、部分列選択部32は、順列候補に対し、最初の部分列選択処理の実行時は、指定されたカテゴリに属する移動体の中で先頭から1番目の移動体を選択し、2回目の部分列選択処理の実行時には、指定されたカテゴリに属する移動体の中で先頭から2番目の移動体を選択し、3回目の部分列選択処理の実行時には、指定されたカテゴリに属する移動体の中で先頭から3番目の移動体を選択し、・・・とのルールを使用することが考えられる。
次に、部分列選択部32は初期設定を行う(ステップST42,ST43)。具体的には、部分列選択部32は、重複通過可能時間帯を移動体Zb[i]の通過可能時間帯に設定し(ステップST42)、また、重複移動体リストを、移動体Zb[i]のみが登録されているリストに設定する(ステップST43)。ここで、「重複移動体リストに移動体が登録されている」とは、重複移動体リストに当該移動体の移動体識別子が登録されていることとを意味する。なお、重複通過可能時間帯及び重複移動体リストは作業用のデータである。
以下、部分列選択部32は、重複通過可能時間帯が空集合とならない範囲内で、できるだけ長い部分列を構成する重複移動体リストを探す。そこで、まずは、部分列選択部32は、順列候補において順序番号iが増大する方向へ、重複移動体リストを可能な限り伸ばすことを試みる(ステップST44〜ST52)。
すなわち、部分列選択部32は、移動体番号cをb[i+1]に設定し(ステップST44)、当該順列候補に対応する移動体Zb[1]〜Zb[N]の中に移動体Zcが存在するか否かを判定する(ステップST45)。移動体Zcが存在すると判定された場合(ステップST45のYES)、部分列選択部32は、重複通過可能時間帯と、移動体Zcの通過可能時間帯(移動体Zcに割り当てられている通過可能時間帯)との間の時間軸上で重複する共通部分の検出を試みる(ステップST46)。共通部分が存在する場合(ステップST47のYES)、部分列選択部32は、重複通過可能時間帯を当該共通部分に設定し(ステップST48)、重複移動体リストに移動体Zcを追加登録する(ステップST49)。
そして、部分列選択部32は、順序番号iをi+1にインクリメントし(ステップST51)、部分列の長さが予め設定された上限に到達したか否かを判定する(ステップST52)。ここで、部分列の長さは、重複移動体リストに登録されている移動体の個数、言い換えれば、重複移動体リストに登録されている移動体の移動体識別子の個数と一致する。部分列の長さが上限に到達したと判定された場合(ステップST52のYES)、部分列選択部32は、処理負荷軽減のため、部分列の長さをこれ以上に延伸することを中止し、ステップST69に処理を移行させる。一方、部分列の長さが上限に到達していないと判定された場合(ステップST52のNO)、ステップST44に処理が戻る。
上記ステップST45で移動体Zcが存在しないと判定された場合(ステップST45のNO)、あるいは、ステップST47で共通部分が存在しないと判定された場合(ステップST47のNO)、図11のステップST61に処理が移行する。この場合は、部分列選択部32は、順列候補において順序番号iが減少する方向へ、重複移動体リストを可能な限り伸ばすことを試みる(図11のステップST61〜ST68)。
すなわち、部分列選択部32は、移動体番号cをb[i−1]に設定し(ステップST61)、当該順列候補に対応する移動体Zb[1]〜Zb[N]の中に移動体Zcが存在するか否かを判定する(ステップST62)。移動体Zcが存在すると判定された場合(ステップST62のYES)、部分列選択部32は、重複通過可能時間帯と、移動体Zcの通過可能時間帯(移動体Zcに割り当てられている通過可能時間帯)との間の時間軸上で重複する共通部分の検出を試みる(ステップST63)。共通部分が存在する場合(ステップST64のYES)、部分列選択部32は、重複通過可能時間帯を当該共通部分に設定し(ステップST65)、重複移動体リストに移動体Zcを追加登録する(ステップST66)。
そして、部分列選択部32は、順序番号iをi−1にデクリメントし(ステップST67)、部分列の長さが予め設定された上限に到達したか否かを判定する(ステップST68)。部分列の長さが上限に到達したと判定された場合(ステップST68のYES)、部分列選択部32は、処理負荷軽減のため、部分列の長さをこれ以上に延伸することを中止し、図10のステップST69に処理を移行させる。一方、部分列の長さが上限に到達していないと判定された場合(ステップST68のNO)、ステップST61に処理が戻る。
上記ステップST62で移動体Zcが存在しないと判定された場合(ステップST62のNO)、あるいは、ステップST64で共通部分が存在しないと判定された場合(ステップST64のNO)、図10のステップST69に処理が移行する。
最終的に、ステップST69では、部分列選択部32は、重複移動体リストに登録されている移動体の移動体識別子の配列を部分列として選択する(ステップST69)。その後は、図6のスケジューリングに処理が戻る。
図13は、同一の重複通過可能時間帯OTaを共有する通過可能時間帯Tb[3],Tb[4],Tb[5],Tb[6]の例を示す図である。図13に示されるように、移動体Zb[3],Zb[4],Zb[5],Zb[6]については、通過可能時間帯Tb[3],Tb[4],Tb[5],Tb[6]のすべてが互いに重複する。しかしながら、通過可能時間帯Tb[2],Tb[7]は、重複通過可能時間帯OTaを共有しない。よって、図13の場合、部分列は、{IDb[3],IDb[4],IDb[5],IDb[6]}の配列で構成される。
たとえば、図13に示す通過可能時間帯を有する順列候補に対し、図10のステップST41でヘビーに属する移動体Zb[3]が選択された場合を考える。この場合、ステップST44〜ST52が実行されることにより、重複移動体リストには、移動体Zb[3],Zb[4],Zb[5],Zb[6]が登録される(ステップST49)。その後、重複通過可能時間帯と移動体Zb[7]の通過可能時間帯との共通部分が空集合になるので(ステップST47のNO)、図11のステップST61に処理が移行する。その後のステップST64で、重複通過可能時間帯と移動体Zb[2]の通過可能時間帯との共通部分が空集合になる(ステップST64のNO)。したがって、最終的に、部分列選択部32は、重複移動体リストに登録されている移動体Zb[3],Zb[4],Zb[5],Zb[6]の移動体識別子IDb[3],IDb[4],IDb[5],IDb[6]の配列を部分列として選択する(ステップST69)。
図6を参照すると、部分列選択処理(ステップST16)の実行後は、順列変換部33は、移動体のカテゴリを基準として予め定められた規則に基づいて当該部分列を並べ替えることにより当該順列候補を新たな順列に変換する(ステップST17)。具体的には、順列変換部33は、当該部分列を、同種のカテゴリに分類されている2つ以上の移動体を連続的に順序付けする配列に並べ替えることができる。ここで、順列変換部33は、予め定められたカテゴリの順序で当該部分列を並べ替えることが好ましい。
図14Aは、図12に示した順列候補から選択された部分列PSの一例を示す図である。図14B及び図14Cは、部分列PSの並べ替えにより生成された部分列PS1,PS2の例を示す図である。図14B及び図14Cに示される部分列PS1,PS2では、同種のカテゴリ(Hv)に属する移動体の移動体識別子IDb[3],IDb[5]が連続的に順序付けられている。また、図14Bでは、予め定められたカテゴリの順序(Lt→Hv→Md)で移動体識別子IDb[4],IDb[3],IDb[5],IDb[6]が配列されている。一方、図14Cでは、予め定められたカテゴリの他の順序(Lt→Md→Hv)で移動体識別子IDb[4],IDb[6],IDb[3],IDb[5]が配列されている。ここで、同種のカテゴリに属する移動体の移動体識別子の前後関係は入れ替えられない。
図5Aに示した規定間隔制約が使用される場合には、異種のカテゴリに属する移動体の移動体識別子が連続して配列されると、移動体間の規定間隔の総和が大きくなる傾向がある。そのため、同種のカテゴリに属する移動体の移動体識別子が連続的に順序付けされるように部分列を並べ替えることにより、遅延量の小さなスケジュールが得られやすくなることが期待できる。その理由は、前述したとおり、スケジュール生成対象となる入力順列について、その入力順列の順番と順列候補の順番とが違いに類似したものとなるためである。また、カテゴリの好適な順序が先験情報として予め分かっている場合、その好適な順序を指定して部分列を並べ替えることにより、更に遅延量の小さなスケジュールが得られる可能性が高くなると期待される。
たとえば、図5Aに示した規定間隔制約が適用される場合、ヘビーに属する先行移動体とライトに属する後続移動体間の規定間隔は120、ライトに属する先行移動体とヘビーに属する後続移動体間の規定間隔は60、ヘビーに属する先行移動体とミディアムに属する後続移動体間の規定間隔は120であることから、図14Aに示す部分列PSについては、規定間隔の総和は300となる。一方、並べ替え後の部分列PS1については、規定間隔の総和は270となる。また、並べ替え後の部分列PS2については、規定間隔の総和は210となる。このように、並べ替え前の部分列PSについての規定間隔の総和300と比較して、並べ替え後の部分列PS1,PS2についての規定間隔の総和は減少するので、スケジュール候補の遅延量が小さくなる可能性が高いと期待することができる。
上記したステップST16では、部分列選択部32は、図10及び図11の部分列選択処理を、ステップST41で選択する移動体を変更しつつ複数回繰り返し実行してもよい。また、部分列選択部32は、上記した部分列選択処理だけでなく、複数種の部分列選択処理(たとえば、本実施の形態に係る部分列選択処理と後述する実施の形態2に係る部分列選択処理)を実行してもよい。また、ステップST17では、順列変換部33は、複数の方法で部分列の並べ替えを実行してもよい。これにより、複数の新たな順列を生成することが可能となる。
図6を参照すると、上記ステップST17の実行後は、ステップST11に処理が移行する。このとき、スケジューリング処理部30は、ステップST17で生成された単数または複数の新たな順列を入力順列として使用するスケジュール生成処理を実行する(ステップST11)。次いで、ステップST13〜ST17が実行される。
最適化終了との判定がなされたとき(ステップST14のYES)、ステップST20の判定処理が実行される。スケジュール選択部12は、スケジュール記憶部22の中にスケジュール候補が存在しないと判定した場合には(ステップST20のNO)、上記スケジューリングを終了する。一方、スケジュール選択部12は、スケジュール記憶部22の中に少なくとも1つのスケジュール候補が存在すると判定した場合には(ステップST20のYES)、スケジュール記憶部22に記憶されているスケジュール候補の中から最大評価値を有するスケジュールを選択する(ステップST21)。ここで、最大評価値を有するスケジュールのみならず、比較的評価値の高いスケジュールも併せて選択されてよい。スケジュール選択部12は、選択されたスケジュールをインタフェース部14に出力する。
なお、上記したスケジュール生成処理(ステップST11)から、新たな順列を生成する処理(ステップST17)までの処理が一定回数反復されても評価値が改善されない場合には、最適化制御部11は、更なる処理を反復しても評価値の改善は望めないと判定することができる。この場合、初期順列生成部31は、初期順列を新たに生成してもよい。この新たに生成された初期順列について、スケジュール生成処理(ステップST11)から、新たな順列を生成する処理(ステップST17)までの処理が反復して実行されることが好ましい。あるいは、ユーザはデータ編集処理部13の機能を利用して、比較的評価値の高いスケジュール候補に対応する順列候補を修正することにより、初期順列を新たに生成してもよい。具体的には、ユーザは、操作入力部16を操作して、スケジュール記憶部22に記憶されている評価値の高い上位のスケジュール候補を選択し、当該スケジュール候補に対応する順列候補を編集することで新たな初期順列を生成することが可能である。このとき、データ編集処理部13は、複数のスケジュール候補が評価値の昇順または降順でソートされた状態を表す編集用画像を表示部15に表示させることができる。ユーザは、その編集用画像に基づき、評価値の高い上位のスケジュール候補を簡便に選択することができる。
上記スケジューリング装置1のハードウェア構成は、たとえば、ワークステーションまたはメインフレームなどのCPU(Central Processing Unit)内蔵のコンピュータで実現可能である。あるいは、スケジューリング装置1のハードウェア構成は、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはFPGA(Field−Programmable Gate Array)などのLSI(Large Scale Integrated circuit)により実現されてもよい。
図15は、スケジューリング装置1のハードウェア構成例である情報処理装置1HWの構成を概略的に示すブロック図である。図15の例では、情報処理装置1HWは、CPU40cを含むプロセッサ40、メモリ41、記録媒体42、表示インタフェース部43、入力インタフェース部44及び通信インタフェース部45で構成されている。プロセッサ40、記録媒体42、表示インタフェース部43、入力インタフェース部44及び通信インタフェース部45は、バス回路などの信号路46を介して相互に接続されている。プロセッサ40は、メモリ41を作業用メモリとして利用して、記録媒体42から読み出されたスケジューリング用のコンピュータプログラムを実行することにより、本実施の形態のスケジューリングを実現することが可能である。
プロセッサ40は、最適化制御部11、スケジュール選択部12、データ編集処理部13、スケジューリング処理部30、初期順列生成部31、部分列選択部32及び順列変換部33のそれぞれの機能を実現するハードウェアである。また、インタフェース部14の機能は、表示インタフェース部43、入力インタフェース部44及び通信インタフェース部45によって実現可能である。表示インタフェース部43は表示部15と接続され、入力インタフェース部44は操作入力部16と接続されている。また、通信インタフェース部45は、外部通信機器と通信可能である。データ格納部20は、記録媒体42により実現可能である。記録媒体42としては、たとえば、HDD(ハードディスクドライブ)またはSSD(ソリッドステートドライブ)などの不揮発性メモリを使用することができる。
次に、以上に説明した実施の形態1のスケジューリング装置1の効果について説明する。本実施の形態のスケジューリング装置1は、スケジュール候補に基づいて構成される移動体識別子の順列候補から部分列を選択し、移動体のカテゴリを基準として当該部分列を並べ替えることで当該順列候補を新たな順列に変換している。スケジューリング処理部30は、初期順列及び当該新たな順列を入力順列として複数のスケジュール候補を生成し且つこれらスケジュール候補の評価値を算出する。スケジュール選択部12は、これら複数のスケジュール候補の中から評価値の高いスケジュール候補をスケジュールとして選択することができる。したがって、本実施の形態のスケジューリング装置1は、評価の高いスケジュールが得られる方向に絞って複数のスケジュール候補を生成することができるので、従来技術と比べると、無駄な探索を行うことなく効率の良い最適化処理を実行することができる。
また、図10及び図11の部分列選択処理の際、すべての通過可能時間帯が互いに重複する時間帯(重複通過可能時間帯)が存在するように部分列が選択されるので、新たな順列の生成(図6のステップST17)において当該部分列がどのように並び替えられたとしても、遅延量の少ない良好なスケジュールを得る可能性を高くすることができる。
また、図10及び図11の部分列選択処理の際、部分列の長さに上限が設けられているので(ステップST52,ST68)、部分列の長さが過度に長大にならない。これにより、当該部分列に対応するスケジュールが生成不可能となる可能性を抑制することができる。
また、図10及び図11の部分列選択処理の際、予め定めたカテゴリに属する移動体を含む部分列が選択される(ステップST41)。そのため、先験情報に基づき、先行移動体及び後続移動体の位置関係によって遅延量が大きく変化するカテゴリ(たとえば、ヘビー)を設定しておくことにより、遅延量が大きく変化するスケジュール候補が生成される可能性を高くすることができる。したがって、そのような方向に絞って効率の良いスケジューリングを行うことが可能となる。
また、ステップST17で新たな順列が生成される際、順列変換部33は、ステップST16で選択された部分列を、同種のカテゴリに分類されている移動体を連続的に順序付けする配列に並べ替えることができる。これにより、当該新たな順列に関する規定間隔の総和が小さくなる傾向を得ることができ、遅延量の小さなスケジュールを得る可能性を高くすることができる。更に、順列変換部33は、予め定められたカテゴリの順序で当該部分列を並べ替えることができるので、先験情報に基づきカテゴリの適切な順序を設定しておけば、当該新たな順列に関する規定間隔の総和が小さくなる傾向を得ることができる。これにより、更に遅延量の小さなスケジュールを得る可能性を高くすることができる。
また、初期順列生成(図6のステップST10)の際、通過可能時間帯の下限時刻の順番または通過可能時間帯の上限時刻の順番で先着順に初期順列が生成される。この初期順列の順番で制約条件を満たす通過予定時刻の割り当てが実行されるため、公平性の高いスケジュールを生成することができる。
また、スケジュール候補の評価値は、各移動体に割り当てられている通過可能時間帯全体の下限時刻を基準として算出されるので、遅延量の小さなスケジュールを得ることができる。更に、スケジュールの評価値が、先着順を基準とした移動体間の追い越し発生数に基づいて算出される場合には、移動体に対して公平性の高いスケジュールを得ることができる。
そして、入力順列の順番とスケジュール候補を基に構成される順列候補の順番とが互いに一致するとの制約が採用される場合には、入力順列の順番と順列候補の順番とを互いに一致させるスケジューリングを行うことにより、予め定めた規則を反映したスケジュールが得られる可能性が大きくなる。また、付随的な効果として、人間にとって理解しやすいスケジュールを生成することもできる。
実施の形態2.
次に、本発明に係る実施の形態2について説明する。図16は、実施の形態2に係る部分列選択処理の手順の一例を示すフローチャートである。本実施の形態のスケジューリング装置の構成は、図10及び図11に示した部分列選択処理に代えて、図16に示した部分列選択処理を実行する点を除いて、上記実施の形態1のスケジューリング装置1の構成と同じである。このため、以下、図1の符号を参照しつつ、本実施の形態に係る部分列選択処理について説明する。
本実施の形態の部分列選択部32は、図6のステップST15で構成された順列候補に対して部分列選択処理を実行する。この部分列選択処理では、部分列選択部32は、当該順列候補から、移動体識別子の連続的な配列である部分列を選択する。本実施の形態では、この部分列は、当該部分列を構成する複数の移動体識別子に対応する複数の通過可能時間帯のすべてが必ずしも重複している必要はない。本実施の形態の部分列は、当該部分列を構成する複数の移動体識別子のうち隣接する移動体識別子に対応する通過可能時間帯が互いに重複する配列である。
本実施の形態の部分列選択部32は、互いに隣接する移動体識別子に対応する通過可能時間帯が互いに重複する範囲内で、できるだけ長い部分列を構成する重複移動体リストを探す。
図16を参照すると、先ず、部分列選択部32は、上記ステップST41と同様に、当該順列候補に対応する移動体Zb[1]〜Zb[N]の中から、指定されたカテゴリに属する移動体Zb[i]を確率的に選択する(ステップST71)。次に、部分列選択部32は、重複移動体リストを、移動体Zb[i]のみが登録されているリストとして設定する(ステップST72)。なお、重複移動体リストは作業用のデータである。
次に、部分列選択部32は、当該順列候補に対応する移動体Zb[1]〜Zb[N]の中に移動体Zb[i+1]が存在するか否かを判定する(ステップST73)。移動体Zb[i+1]が存在すると判定された場合(ステップST73のYES)、部分列選択部32は、互いに隣接して順位付けされている移動体Zb[i],Zb[i+1]の通過可能時間帯の間の時間軸上で重複する共通部分の検出を試みる(ステップST74)。共通部分が存在する場合(ステップST75のYES)、部分列選択部32は、重複移動体リストに移動体Zb[i+1]を追加登録する(ステップST76)。
その後、部分列選択部32は、順序番号iをi+1にインクリメントし(ステップST77)、ステップST73に処理を移行させる。ここで、上記実施の形態1の場合と同様に、部分列選択部32は、部分列の長さが予め設定された上限に到達したか否かを判定し、部分列の長さが上限に到達している場合には、ステップST78に処理を移行させてもよい。
上記ステップST73で移動体Zb[i+1]が存在しないと判定された場合(ステップST73のNO)、あるいは、ステップST75で共通部分が存在しないと判定された場合(ステップST75のNO)、部分列選択部32は、重複移動体リストに登録されている移動体の移動体識別子の配列を部分列として選択する(ステップST78)。その後は、図6のスケジューリングに処理が戻る。
図17は、互いに隣接する移動体識別子の通過可能時間帯が重複する状況の一例を概略的に示す図である。図17の例では、通過可能時間帯Tb[3],Tb[4]が互いに重複し、通過可能時間帯Tb[4],Tb[5]が互いに重複し、通過可能時間帯Tb[5],Tb[6]が互いに重複している。一方、通過可能時間帯Tb[2],Tb[3]は互いに重複せず、通過可能時間帯Tb[6],Tb[7]も互いに重複しない。このとき、本実施の形態の部分列選択処理では、移動体Zb[3],Zb[4],Zb[5],Zb[6]の移動体識別子IDb[3],IDb[4],IDb[5],IDb[6]の配列が部分列として選択される。
たとえば、図17に示す通過可能時間帯を有する順列候補に対し、図16のステップST71でヘビーに属する移動体Zb[3]が選択された場合を考える。この場合、ステップST73〜ST77が実行されることにより、重複移動体リストには、移動体Zb[3],Zb[4],Zb[5],Zb[6]が登録される(ステップST76)。その後、通過可能時間帯Tb[6],Tb[7]間の共通部分が空集合になるので(ステップST75のNO)、ステップST78に処理が移行する。
以上に説明したように実施の形態2では、部分列選択処理の際、順列候補において互いに隣接する移動体識別子の通過可能時間帯が互いに重複するように部分列が選択される。したがって、遅延量の少ない良好なスケジュールを得る可能性を高くすることができる。
実施の形態3.
次に、上記実施の形態1の変形例である実施の形態3について説明する。図18は、実施の形態3に係るスケジューリングの手順の一例を示すフローチャートである。本実施の形態のスケジューリングの手順は、図6のステップST15に代えて図18のステップST15Jを使用する点を除いて、上記実施の形態1に係るスケジューリングの手順と同じである。また、本実施の形態のスケジューリング装置の構成は、図6に示したスケジューリングに代えて、図18に示したスケジューリングを実行する点を除いて、上記実施の形態1のスケジューリング装置1の構成と同じである。このため、以下、図1の符号を参照しつつ、本実施の形態に係るスケジューリングについて説明する。
ステップST15Jにおいて、本実施の形態の部分列選択部32は、スケジュール生成処理(ステップST11)で使用された入力順列をスケジュール記憶部22から取得する(ステップST15J)。そして、順列候補ではなく、その入力順列に対して部分列選択処理を実行する(ステップST16)。ここで、部分列選択部32は、スケジュール記憶部22に記憶されている単数または複数のスケジュール候補の中から最大の評価値を有するスケジュール候補に対応する入力順列を選択することが好ましい。その理由は、評価値が高いスケジュール候補に基づいて新たな順列を生成することにより、より評価値の高いスケジュール候補を得ることが期待できるためである。このようにスケジューリング処理部30は、複数のスケジュール候補を生成し且つこれらスケジュール候補の評価値を算出することができる。スケジュール選択部12は、これら複数のスケジュール候補の中から評価値の高いスケジュール候補をスケジュールとして選択することが可能である。したがって、本実施の形態も、上記実施の形態1と同様の効果を奏することができる。
なお、実施の形態1に係る部分列選択処理(図10及び図11)に代えて上記実施の形態2に係る部分列選択処理(図16)が使用されてもよい。
実施の形態4.
次に、本発明に係る実施の形態4について説明する。図19は、本発明に係る実施の形態4のスケジューリング装置1Aの概略構成を示すブロック図である。このスケジューリング装置1Aの構成は、上記実施の形態1の最適化部10に代えて図19の最適化部10Aを有する点を除いて、上記実施の形態1のスケジューリング装置1の構成と同じである。
本実施の形態の最適化部10Aは、図19に示されるように、移動体情報記憶部21,スケジュール記憶部22、制約条件記憶部23及び好適情報記憶部24を含むデータ格納部20と、複数のスケジュール候補を生成してこれらスケジュール候補をデータ格納部20内のスケジュール記憶部22に記憶させるスケジューリング処理部30と、スケジューリング処理部30に与えるべき移動体識別子の初期順列を生成する初期順列生成部31とを備えている。最適化部10Aは、更に、スケジュール記憶部22に記憶されているスケジュール候補を基に構成される順列候補から部分列を選択する部分列選択部32Aと、好適情報記憶部24に記憶されている好適情報及び移動体のカテゴリを基準としてその部分列を並べ替えることで当該順列候補を新たな順列に変換する順列変換部33Aとを備えている。
この最適化部10Aの構成は、実施の形態1の部分列選択部32及び順列変換部33に代えて部分列選択部32A及び順列変換部33Aを有する点、及び好適情報記憶部24を有する点を除いて、上記実施の形態1の最適化部10の構成と同じである。
本実施の形態の部分列選択部32Aは、順列候補の中から、予め設定された一定数の移動体の移動体識別子からなる部分列を選択する。言い換えれば、部分列選択部32Aは、順列候補の中から、予め設定された所定の長さを有する部分列を選択するものである。たとえば、部分列の長さとして5が指定された場合、部分列選択部32Aは、当該順列候補に対応する移動体Zb[1]〜Zb[N]の中から、指定されたカテゴリに属する移動体Zb[i]を1つ確率的に選択し、更に、当該移動体Zb[i]を含み且つ連続的に順序付けされた5つの移動体の移動体識別子の配列を部分列として選択することができる。
好適情報記憶部24には、複数種のカテゴリにそれぞれ割り当てられた移動体数の組み合わせと、カテゴリの好適な順序との間の対応関係を定める好適情報が記憶されている。好適情報は、たとえばルックアップテーブルの形で記憶されていればよい。好適情報の詳細については後述する。順列変換部33Aは、その好適情報を探索して当該好適情報の中から当該部分列に合致する移動体数の組み合わせに対応するカテゴリの好適な順序を見つけ出し、当該見つけ出された好適な順序で当該部分列を並べ替えることができる。
図20は、実施の形態4に係る最適化処理であるスケジューリングの手順の一例を概略的に示すフローチャートである。図20のフローチャートは、図6のステップST16,ST17に代えてステップST16A,ST18,ST19を有する点を除いて、図6
のフローチャートと同じである。
図20を参照すると、部分列選択部32Aは、ステップST15で構成された順列候補から、予め定められた一定数の長さの部分列を選択する(ステップST16A)。具体的には、部分列選択部32Aは、当該順列候補に対応する移動体Zb[1]〜Zb[N]の中から、指定されたカテゴリに属する移動体Zb[i]を確率的に選択し、更に、当該移動体Zb[i]を含み且つ連続的に順序付けされた一定数の移動体の移動体識別子の配列を部分列として選択することができる。
次に、順列変換部33Aは、好適情報記憶部24から好適情報を取得し(ステップST18)、この好適情報に基づいて当該部分列を並べ替えることにより順列候補を新たな順列に変換する(ステップST19)。図21は、カテゴリにそれぞれ割り当てられた移動体数の組み合わせとカテゴリの好適な順序との対応関係の一例をルックアップテーブル形式で示す図である。図21には、ヘビー(Hv),ミディアム(Md)及びライト(Lt)にそれぞれ割り当てられた移動体数の組み合わせ(2,2,1)と、これに対応する複数のカテゴリの好適な順序(Lt→Md→Md→Hv→Hv及びHv→Hv→Md→Md→Lt)とが示されている。
図22Aは、図12に示した順列候補から選択された部分列PSaの一例を示す図である。図22B及び図22Cは、部分列PSaの並べ替えにより生成された部分列PSa1,PSa2の例を示す図である。図22Bでは、好適情報に含まれるカテゴリの好適な順序の1つ(Hv→Hv→Md→Md→Lt)で移動体識別子IDb[3],IDb[5],IDb[6],IDb[7],IDb[4]が配列されている。一方、図22Cでは、好適情報に含まれるカテゴリの好適な順序の他の1つ(Lt→Md→Md→Hv→Hv)で移動体識別子IDb[4],IDb[6],IDb[7],IDb[3],IDb[5]が配列されている。ここで、同種のカテゴリに属する移動体の移動体識別子の前後関係は入れ替えられない。これらのカテゴリの好適な順序は、その順序に対応する規定間隔の総和が小さくなるように事前に計算されて設定されたものである。
たとえば、図5Aに示した規定間隔制約が使用される場合には、図22Aに示す部分列PSaについては、規定間隔の総和は360となる。一方、図22Bに示す部分列PSa1については、規定間隔の総和は330となる。このように、カテゴリの好適な順序を適用することにより、元の部分列PSaについての規定間隔の総和360と比較して、規定間隔の総和が減少するので、スケジュール候補の遅延量が小さくなる可能性が高いと期待することができる。
移動体のカテゴリに依存して定まる規定間隔制約が図5Aに示す比較的単純なものであれば、実施の形態1の場合と同様に、ステップST16Aで選択された部分列を、同種のカテゴリに分類されている移動体を連続的に順序付けする配列に並べ替えることによって新たな順列が生成されればよい。しかしながら、移動体のカテゴリの複雑化により規定間隔制約が複雑化する場合には(たとえば、滑走路における航空機のスケジューリングにおいて、移動体のカテゴリが「到着・出発区分」と、「ヘビー」,「ミディアム」または「ライト」との組み合わせで指定される場合)、移動体のカテゴリの好適な順序を単純な規則で表現することが困難になり得る。このような場合には、移動体のカテゴリの好適な順序をルックアップテーブルの形式で保存して使用する方法が適切である。
また、移動体のカテゴリの好適な順序をルックアップテーブルの形式で保存して使用する場合、移動体数に制限がないと、好適情報のサイズが膨大なものになる可能性がある。このような場合、演算効率の低下が生ずるおそれがある。そこで、本実施の形態の部分列選択部32Aは、順列候補の中から所定の長さを有する部分列を選択している(ステップST16A)。これにより、好適情報のサイズの増大が回避されるので、演算効率の低下を抑制することができる。
なお、気象などの状況の変化に応じて移動体のカテゴリの好適な順序が変わる場合も想定される。そのような場合、ユーザはデータ編集処理部13の機能を使用することができる。ユーザは、操作入力部16を操作して好適情報記憶部24の内容を編集することが可能である。また、ユーザは、予め、カテゴリの好適な順序を定める複数パターンの好適情報を用意し、データ格納部20に格納しておくことが可能である。ユーザは、操作入力部16を操作してそれら複数パターンの中から任意の1パターンの好適情報を選択することができる。あるいは、最適化制御部11が状況に変化に合わせてそれら複数パターンの中から1パターンの好適情報を自動的に選択できるように最適化部10が構成されてもよい。
上記ステップST19の実行後は、ステップST11に処理が移行する。このとき、スケジューリング処理部30は、ステップST19で生成された単数または複数の新たな順列を入力順列として使用するスケジュール生成処理を実行する(ステップST11)。次いで、ステップST13〜ST15,ST16A,ST18,ST19が実行される。最適化終了との判定がなされたとき(ステップST14のYES)、ステップST20の判定処理が実行される。スケジュール選択部12は、スケジュール記憶部22に記憶されているスケジュール候補の中から最大評価値を有するスケジュールを選択することができる(ステップST21)。ここで、最大評価値を有するスケジュールのみならず、比較的評価値の高いスケジュールも併せて選択されてよい。スケジュール選択部12は、選択されたスケジュールをインタフェース部14に出力する。
以上に説明したように実施の形態4のスケジューリング装置1Aでは、順列変換部33Aは、カテゴリの好適な順序を定める好適情報記憶部24を利用して部分列を並べ替えて新たな順列を生成することができる。そのため、先験情報に基づき、カテゴリの好適な順序が適切に好適情報記憶部24に設定されていれば、新たな順列における規定間隔の総和が小さくなるので、遅延量の小さなスケジュールを得る可能性を高くすることが可能となる。
また、図20の部分列選択処理(ステップST16A)の際、部分列選択部32Aは、順列候補の中から、予め決められた一定数の移動体の移動体識別子からなる部分列を選択する。これにより、複数種のカテゴリに割り当てられる移動体数の組み合わせの数が限定されるため、好適情報のサイズを小さくすることができる。また、部分列の並べ替えに関する規則が少なくて済むので、効率的なスケジューリングが可能となる。
更に、データ編集処理部13は、インタフェース部14を介して入力された情報に基づき、好適情報を更新する機能を有している。これにより、状況変化に対して臨機応変に好適情報記憶部24の内容を変更することが可能となる。
実施の形態5.
次に、上記実施の形態4の変形例である実施の形態5について説明する。図23は、実施の形態5に係るスケジューリングの手順の一例を示すフローチャートである。本実施の形態のスケジューリングの手順は、図20のステップST15に代えて図23のステップST15Jを使用する点を除いて、上記実施の形態4に係るスケジューリングの手順と同じである。また、本実施の形態のスケジューリング装置の構成は、図20に示したスケジューリングに代えて、図23に示したスケジューリングを実行する点を除いて、上記実施の形態4のスケジューリング装置1Aの構成と同じである。このため、以下、図19の符号を参照しつつ、本実施の形態に係るスケジューリングについて説明する。
ステップST15Jにおいて、本実施の形態の部分列選択部32Aは、スケジュール生成処理(ステップST11)で使用された入力順列をスケジュール記憶部22から取得する(ステップST15J)。そして、順列候補ではなく、その入力順列から部分列を選択する(ステップST16A)。このような場合でも、スケジューリング処理部30は、複数のスケジュール候補を生成し且つこれらスケジュール候補の評価値を算出することができる。スケジュール選択部12は、これら複数のスケジュール候補の中から評価値の高いスケジュール候補をスケジュールとして選択することが可能である。したがって、本実施の形態も、上記実施の形態4と同様の効果を奏することができる。
実施の形態6.
次に、本発明に係る実施の形態6について説明する。本実施の形態は、上記実施の形態4の変形例である。図24は、本発明に係る実施の形態6のスケジューリング装置1Bの概略構成を示すブロック図である。このスケジューリング装置1Bの構成は、上記実施の形態4の最適化部10Aに代えて図24の最適化部10Bを有する点を除いて、上記実施の形態4のスケジューリング装置1Aの構成と同じである。
本実施の形態の最適化部10Bは、図24に示されるように、移動体情報記憶部21,スケジュール記憶部22、制約条件記憶部23、好適情報記憶部24及び不適情報記憶部25を含むデータ格納部20と、複数のスケジュール候補を生成してこれらスケジュール候補をデータ格納部20内のスケジュール記憶部22に記憶させるスケジューリング処理部30と、スケジューリング処理部30に与えるべき移動体識別子の初期順列を生成する初期順列生成部31とを備えている。最適化部10Bは、更に、スケジュール記憶部22に記憶されているスケジュール候補を基に構成される順列候補から部分列を選択する部分列選択部32Aと、好適情報記憶部24に記憶されている好適情報、不適情報記憶部25に記憶されている不適情報及び移動体のカテゴリを基準としてその部分列を並べ替えることで当該順列候補を新たな順列に変換する順列変換部33Bとを備えている。
この最適化部10Bの構成は、実施の形態4の順列変換部33Aに代えて順列変換部33Bを有する点、及び不適情報記憶部25を有する点を除いて、上記実施の形態4の最適化部10Aの構成と同じである。
不適情報記憶部25には、複数種のカテゴリにそれぞれ割り当てられた移動体数の組み合わせと、カテゴリの不適な順序との間の対応関係を定める不適情報が記憶されている。不適情報は、たとえばルックアップテーブルの形で記憶されていればよい。不適情報の詳細については後述する。順列変換部33Bは、上記実施の形態4の順列変換部33Aと同様に、好適情報を探索して当該好適情報の中から当該部分列に合致する移動体数の組み合わせに対応するカテゴリの好適な順序を見つけ出し、当該見つけ出された好適な順序で当該部分列を並べ替えることができる。また、順列変換部33Bは、不適情報を探索して当該不適情報の中から当該部分列に合致する移動体数の組み合わせに対応するカテゴリの不適な順序を見つけ出し、当該見つけ出された不適な順序以外の順序で当該部分列を並べ替えることができる。
図25は、実施の形態6に係る最適化処理であるスケジューリングの手順の一例を概略的に示すフローチャートである。図25のフローチャートは、図20のステップST18,ST19に代えてステップST18B,ST19Bを有する点を除いて、図20のフローチャートと同じである。図25を参照すると、ステップST16Aで部分列が選択された後、順列変換部33Bは、好適情報記憶部24及び不適情報記憶部25から好適情報及び不適情報を取得し(ステップST18B)、これら好適情報及び不適情報に基づいて当該部分列を並べ替えることにより順列候補を新たな順列に変換する(ステップST19B)。
図26は、カテゴリにそれぞれ割り当てられた移動体数の組み合わせとカテゴリの不適な順序との対応関係の一例をルックアップテーブル形式で示す図である。図26には、ヘビー(Hv),ミディアム(Md)及びライト(Lt)にそれぞれ割り当てられた移動体数の組み合わせ(2,2,1)と、これに対応する複数のカテゴリの不適な順序(Hv→Lt→Hv→Md→Md、Hv→Md→Hv→Lt→Md及びMd→Hv→Md→Hv→Lt)とが示されている。これらのカテゴリの不適な順序は、その順序に対応する規定間隔の総和が大きくなるように事前に計算されて設定されたものである。
たとえば、図5Aに示した規定間隔制約が使用される場合には、図26に示す不適な順序のいずれについても、この順序で移動体が配列された場合の規定間隔の総和は360となる。このように、順列変換部33Bは、図26に規定された不適な順序とならないよう部分列を並び替えることにより、規定間隔の総和が増大することを回避できるので、スケジュール候補の遅延量が小さくなる可能性が高いと期待することができる。
このような不適情報と上記好適情報を利用して、順列変換部33Bは、以下の手順ζ1〜ζ3に従って部分列を並べ替えることができる(ステップST19B)。
・手順ζ1:順列変換部33Bは、好適情報を探索して、この好適情報の中から、移動体のカテゴリにそれぞれ割り当てられた移動体数の組み合わせに対応する好適な順序を見つけ出すことができた場合は、当該好適な順序に基づいて部分列を並べ替える。
・手順ζ2:手順ζ1で好適な順序を見つけ出すことができなかった場合、順列変換部33Bは、不適情報を探索して、この不適情報の中から、当該部分列に合致する移動体数の組み合わせに対応するカテゴリの不適な順序を見つけ出すことができた場合は、当該不適な順序以外の順序で当該部分列を並べ替える。
・手順ζ3:手順ζ2で不適な順序を見つけ出すことができなかった場合、順列変換部33Bは、当該部分列を、同種のカテゴリに属する移動体が連続的に順序付けられるように並べ替える。
以上に説明したように実施の形態6のスケジューリング装置1Bでは、順列変換部33Bは、カテゴリの不適な順序を定める不適情報記憶部25を利用して部分列を並べ替えて新たな順列を生成することができる。そのため、先験情報に基づき、カテゴリの不適な順序が不適情報記憶部25に設定されていれば、新たな順列における規定間隔の総和が大きくなることを回避することができるので、遅延量の小さなスケジュールを得る可能性を高くすることが可能となる。
また、移動体のカテゴリの不適な順序をルックアップテーブルの形式で保存して使用する場合、移動体数に制限がないと、不適情報のサイズが膨大なものになる可能性がある。このような場合、演算効率の低下が生ずるおそれがある。そこで、本実施の形態の部分列選択部32Aは、順列候補の中から所定の長さを有する部分列を選択している(ステップST16A)。これにより、不適情報のサイズの増大が回避されるので、演算効率の低下を抑制することができる。
なお、気象などの状況の変化に応じて移動体のカテゴリの不適な順序が変わる場合も想定される。そのような場合、ユーザはデータ編集処理部13の機能を使用することができる。ユーザは、操作入力部16を操作して不適情報記憶部25の内容を編集することが可能である。また、ユーザは、予め、カテゴリの不適な順序を定める複数パターンの不適情報を用意し、データ格納部20に格納しておくことが可能である。ユーザは、操作入力部16を操作してそれら複数パターンの中から任意の1パターンの不適情報を選択することができる。あるいは、最適化制御部11が状況に変化に合わせてそれら複数パターンの中から1パターンの不適情報を自動的に選択できるように最適化部10が構成されてもよい。
更に、データ編集処理部13は、インタフェース部14を介して入力された情報に基づき、不適情報を更新する機能を有している。これにより、状況変化に対して臨機応変に不適情報記憶部25の内容を変更することが可能となる。
実施の形態7.
次に、上記実施の形態6の変形例である実施の形態7について説明する。図27は、実施の形態7に係るスケジューリングの手順の一例を示すフローチャートである。本実施の形態のスケジューリングの手順は、図25のステップST15に代えて図27のステップST15Jを使用する点を除いて、上記実施の形態6に係るスケジューリングの手順と同じである。また、本実施の形態のスケジューリング装置の構成は、図25に示したスケジューリングに代えて、図27に示したスケジューリングを実行する点を除いて、上記実施の形態6のスケジューリング装置1Bの構成と同じである。このため、以下、図24の符号を参照しつつ、本実施の形態に係るスケジューリングについて説明する。
ステップST15Jにおいて、本実施の形態の部分列選択部32Aは、スケジュール生成処理(ステップST11)で使用された入力順列をスケジュール記憶部22から取得する(ステップST15J)。そして、順列候補ではなく、その入力順列から部分列を選択する(ステップST16A)。ここで、部分列選択部32は、スケジュール記憶部22に記憶されている単数または複数のスケジュール候補の中から最大の評価値を有するスケジュール候補に対応する入力順列を選択することが好ましい。その理由は、評価値が高いスケジュール候補に基づいて新たな順列を生成することにより、より評価値の高いスケジュール候補を得ることが期待できるためである。このようにスケジューリング処理部30は、複数のスケジュール候補を生成し且つこれらスケジュール候補の評価値を算出することができる。スケジュール選択部12は、これら複数のスケジュール候補の中から評価値の高いスケジュール候補をスケジュールとして選択することが可能である。したがって、本実施の形態も、上記実施の形態6と同様の効果を奏することができる。
以上、図面を参照して本発明に係る種々の実施の形態について述べたが、これら実施の形態は本発明の例示であり、これら実施の形態以外の様々な形態を採用することもできる。たとえば、上記実施の形態1〜7は、主に航空機のスケジューリングを例に挙げて説明されていたが、これに限定されるものではない。船舶などの他の種類の移動体の場合にも、複数の移動体が同一領域を使用して移動する状況があれば、本発明の構成を同様に適用することが可能である。
また、実施の形態1のスケジューリング装置1と同様に、実施の形態4,6のスケジューリング装置1A,1Bも、ワークステーションまたはメインフレームなどのCPU内蔵のコンピュータで実現可能である。あるいは、スケジューリング装置1A,1Bのハードウェア構成は、DSP、ASICまたはFPGAなどのLSIにより実現されてもよい。更に、スケジューリング装置1A,1Bは、図15に示した情報処理装置1HWにより構成可能である。
なお、本発明の範囲内において、上記実施の形態1〜7の自由な組み合わせ、各実施の形態の任意の構成要素の変形、または各実施の形態の任意の構成要素の省略が可能である。