特許第5789268号(P5789268)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許5789268-経路選択システム、方法及びプログラム 図000004
  • 特許5789268-経路選択システム、方法及びプログラム 図000005
  • 特許5789268-経路選択システム、方法及びプログラム 図000006
  • 特許5789268-経路選択システム、方法及びプログラム 図000007
  • 特許5789268-経路選択システム、方法及びプログラム 図000008
  • 特許5789268-経路選択システム、方法及びプログラム 図000009
  • 特許5789268-経路選択システム、方法及びプログラム 図000010
  • 特許5789268-経路選択システム、方法及びプログラム 図000011
  • 特許5789268-経路選択システム、方法及びプログラム 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5789268
(24)【登録日】2015年8月7日
(45)【発行日】2015年10月7日
(54)【発明の名称】経路選択システム、方法及びプログラム
(51)【国際特許分類】
   G01C 21/34 20060101AFI20150917BHJP
   G09B 29/10 20060101ALI20150917BHJP
   G09B 29/00 20060101ALI20150917BHJP
【FI】
   G01C21/34
   G09B29/10 A
   G09B29/00 F
【請求項の数】11
【全頁数】14
(21)【出願番号】特願2012-545672(P2012-545672)
(86)(22)【出願日】2011年11月8日
(86)【国際出願番号】JP2011075664
(87)【国際公開番号】WO2012070379
(87)【国際公開日】20120531
【審査請求日】2013年5月9日
(31)【優先権主張番号】特願2010-263649(P2010-263649)
(32)【優先日】2010年11月26日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】吉住 貴幸
【審査官】 島倉 理
(56)【参考文献】
【文献】 特開平11−094579(JP,A)
【文献】 特開2006−018443(JP,A)
【文献】 特開2004−205234(JP,A)
【文献】 特開2008−077636(JP,A)
【文献】 特開平09−022497(JP,A)
【文献】 特開2000−194984(JP,A)
【文献】 特開2009−002848(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01C 21/34
G09B 29/00
G09B 29/10
(57)【特許請求の範囲】
【請求項1】
コンピュータの処理により、経路を選択する方法であって、
記憶手段に、経路をエッジであらわし、経路の交点をノードであらわすグラフを用意するステップであって、各経路は、該経路を通過する所要時間を、交通量に応じて単調増加する区分線形の関数で近似されているステップと、
経路探索手段が、出発点と目的点の組である複数のリクエストに対して、前記記憶手段から前記グラフを読み出し、前記グラフ上で最短経路を探索して、得られた経路を、処理対象の経路の集合とするステップと、
ソルバ手段が、前記複数の出発点と目的点の組に対して、各々の出発点から目的点までの所要時間を最短所要時間で割った値の最大値の最小化という目的関数を解くステップと、
交通量を0として得られる経路の最小の所要時間を第1所要時間とし、前記目的関数を解いて得られた交通量を用いて算出される経路の所要時間を第2所要時間とした場合に、経路更新手段が、終了条件を満足していないことを条件に前記目的関数を解くステップを繰り返すステップ間に、各リクエストについて、前記第1所要時間が前記第2所要時間以上の経路と、現在より前の繰り返すステップで追加され前記目的関数を解く際に検討されたが前記最大値を最小化する経路として使われなかった経路とを、見込みのない経路として前記処理対象の経路の集合から取り除くとともに、新たな経路を前記処理対象の経路の集合に追加するステップを有する、
経路選択方法。
【請求項2】
「実際の所要時間/最短所要時間」が最大で、かつそのリクエストについての全ての候補経路の実際の所要時間が同じ前記リクエストをbottleneckRequestとし、それらの候補経路集合に含まれるエッジをbottleneckEdgeとし、ここで前記実際の所要時間とは、その時点での前記目的関数を解いて得られた交通量を用いて算出される所要時間であり、前記経路更新手段が、前記目的関数を解くステップを繰り返す間に、前記実際の所要時間を使い、前記bottleneckEdgeを使わない経路を探索して、前記処理対象の経路の集合に追加するステップを有する、請求項1に記載の経路選択方法。
【請求項3】
前記実際の所要時間を使い、前記bottleneckEdgeを使わない経路を探索するステップが経路をみつけられないことに応答して、前記ソルバ手段が、前記bottleneckEdgeを使う経路も含めて探索するステップを更に有する、請求項2に記載の経路選択方法。
【請求項4】
前記bottleneckEdgeを使う経路も含めて探索するステップが経路をみつけられないことに応答して、各非bottleneckRequestについて、その時点の解を悪くせずに交通量を増加させることができる経路がない場合、前記ソルバ手段が、前記実際の所要時間を使い、前記bottleneckEdgeを使わない経路を探索するステップをさらに有する、請求項3に記載の経路選択方法。
【請求項5】
前記実際の所要時間を使い、前記bottleneckEdgeを使わない経路を探索するステップが経路をみつけられないことに応答して、前記ソルバ手段が、前記bottleneckEdgeを使う経路も含めて探索するステップを有する、請求項4に記載の経路選択方法。
【請求項6】
前記リクエストが、出発点と目的点と需要量の組であり、前記ソルバ手段が、該出発点から該目的点に至る複数の経路の、該需要量における使用割合を出力する、請求項1乃至5いずれか1項に記載の経路選択方法。
【請求項7】
請求項1乃至3、及び6のいずれか1項に記載の経路選択方法の全ステップをコンピュータに実行させるための経路を選択するプログラム。
【請求項8】
コンピュータの処理により、経路を選択するシステムであって、
記憶手段と、
前記記憶手段に記憶され、経路をエッジであらわし、経路の交点をノードであらわすグラフであって、各経路は、該経路を通過する所要時間を、交通量に応じて単調増加する区分線形の関数で近似されているグラフと、
出発点と目的点の組である複数のリクエストに対して、前記グラフ上で最短経路を探索して、得られた経路を、処理対象の経路の集合とする手段と、
前記複数の出発点と目的点の組に対して、各々の出発点から目的点までの所要時間を最短所要時間で割った値の最大値の最小化という目的関数を解くソルバと、
交通量を0として得られる経路の最小の所要時間を第1所要時間とし、前記目的関数を解いて得られた交通量を用いて算出される経路の所要時間を第2所要時間とした場合に、前記ソルバが、終了条件を満足していないことを条件に前記目的関数を解く処理を繰り返す間に、各リクエストについて、前記第1所要時間が前記第2所要時間以上の経路と、現在より前の繰り返すステップで追加され前記目的関数を解く際に検討されたが前記最大値を最小化する経路として使われなかった経路とを、見込みのない経路として前記処理対象の経路の集合から取り除くとともに、新たな経路を前記処理対象の経路の集合に追加する手段とを有する、
経路選択システム。
【請求項9】
「実際の所要時間/最短所要時間」が最大で、かつそのリクエストについての全ての候補経路の実際の所要時間が同じ前記リクエストをbottleneckRequestとし、それらの候補経路集合に含まれるエッジをbottleneckEdgeとし、ここで前記実際の所要時間とは、その時点での前記目的関数を解いて得られた交通量を用いて算出される所要時間であり、前記目的関数を解くステップを繰り返す間に、前記実際の所要時間を使い、前記bottleneckEdgeを使わない経路を探索し、前記処理対象の経路の集合に追加する手段を更に有する、請求項8に記載の経路選択システム。
【請求項10】
前記実際の所要時間を使い、前記bottleneckEdgeを使わない経路を探索する手段が、経路をみつけられないことに応答して、前記bottleneckEdgeを使う経路も含めて探索する、請求項9に記載の経路選択システム。
【請求項11】
前記リクエストが、出発点と目的点と需要量の組であり、前記ソルバが、該出発点から該目的点に至る複数の経路の、該需要量における使用割合を出力する、請求項10記載の経路選択システム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、交通路などの経路を選択するためのシステム、方法及びプログラムに関する。
【背景技術】
【0002】
従来より、カーナビは、道路上の経路を探索して表示する機能をもつ。その処理のアルゴリズムは例えば、交差点をノード、道路をエッジとみなし、道路の長さを重みとする重み付きグラフに最短経路探索を行うものである。
【0003】
その際、カーナビを使って同時に経路探索する自動車は多数あり、各々の自動車が独立に最短経路を求めるので、複数の自動車の通行路の重なりを考えたとき、経路の特定のエッジの使用頻度が増加し、その部分で混雑が生じる。このとき、図1に示すように、各エッジにかかる時間は、交通量・通行量の増加に伴って急速に増加すると考えられる。
【0004】
自動車の場合、VICS(登録商標)(Vehicle Information and Communication System = 道路交通情報通信システム)等によって提供される渋滞情報を参照して、カーナビが迂回路を計算することができるが、多くの車両が同じ渋滞情報を参照すれば、結局、同様の迂回路を選ぶことになるので、図2に示すように、そちらでやはり渋滞が発生する。
【0005】
そこで、中央のサーバで、車両の集中による混雑の発生にまで配慮して、図3に示すように、多対多のルーティングをし、混雑の緩和を達成したいという要望がある。すなわち、混雑を相互に回避できれば、所要時間を短くできる可能性がある。しかし、多対多のルーティングを行う計算処理は一般的に、NP困難であり、合理的な時間の範囲内で解を得ることが困難である。
【0006】
特開2001−331564号公報は、輸送計画中の各輸送手段のルート決定を、それぞれの計画に必要な精度や計算時間によって最も適した計算方法で行うことで効率的な計画作成を実現するために、少なくとも入出力装置と処理装置と記憶装置を有し配送計画作成を行うシステムにおいて、工場、中継拠点、サプライヤなどの拠点の位置情報を入力する拠点情報登録ステップと、各輸送便が立ち寄る拠点や扱う荷物量を含む輸送便情報を入力する輸送便情報登録ステップと、輸送計画の要求精度や制限時間を含む目的情報を入力する条件登録ステップと、ルート作成に用いるアルゴリズムを選択するアルゴリズム選択ステップと、これらの情報から輸送便が回るべきルートを作成するルート作成ステップと、作成結果を出力する出力ステップからなる方法を開示する。
【0007】
特開2004−12312号公報は、再探索に要する時間を最初の探索よりも短くすることにより、全体の探索時間を短縮することを目的とするものであって、出発地から目的地までの経路のうち前記経路に付随するパラメータが最小となる第1の最少コスト経路を探索する第1の探索手段と、第1の最短経路を構成する各道路区間のパラメータに重み付けを行う重み付け手段と、第1の探索手段の計算データに基づいて特定の地図領域を制限領域として求める領域制限手段と、重み付けがなされた状態で出発地から目的地までの経路のうち前記経路に付随するパラメータが最小となる第2の最少コスト経路を、領域制限手段で求めた制限領域のみを経路探索の対象として探索する第2の探索手段とを備え、再探索時に前回探索の情報を利用して探索範囲を制限することにより、再探索に要する時間を低減する経路探索装置を開示する。
【0008】
特開2009−19932号公報は、経路探索空間が広い場合であっても、高速で最適な経路を探索可能な経路探索システムを提供するために、移動領域を複数の領域に分割する領域分割部と、領域分割部により分割された複数の領域に対応し、それぞれの領域の評価値を算出する複数の評価値算出部と、評価値算出部によって算出された評価値に基づいて経路を決定する経路決定部とを備え、評価値算出部が、近傍に存在する領域の評価値と、当該近傍領域から自領域までの移動コストに基づいて評価値を算出することを開示する。また、その段落0073には、「移動始点及び移動終点として指定する領域数が、多対一、一対多、多対多である場合においても本発明を応用することができる」と記載されている。
【0009】
しかし、上記どの従来技術も、素朴に解くと計算量が膨大になってしまう多対多の経路探索処理を合理的な計算量で求める技法については開示するものではない。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2001−331564号公報
【特許文献2】特開2004−12312号公報
【特許文献3】特開2009−19932号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
従って、この発明の目的は、多対多の経路探索処理を合理的な計算量で求める技法を提供することにある。
【0012】
この発明の他の目的は、複数の車両などの通行による混雑度を考慮した経路探索処理を合理的な計算量で求める技法を提供することにある。
【課題を解決するための手段】
【0013】
この発明においては、交通路をグラフで記述し、各エッジの所要時間を、単調増加する区分線形の関数で近似することで、交通量・通行量の増加に伴う混雑の発生がモデル化される。このモデルは、図1に示す混雑度と所要時間の関係の曲線の近似になっている。
【0014】
そこで、出発点と目的点を指示するカーナビなどからの情報をリクエストとすると、目的関数を、「全リクエストに亘る実際の所要時間を最短所要時間で割った値の最大値の最小化」とすることで、全ての車両を公平に扱うことができ、全体としても合理的にルーティングになる、というのが本発明の知見である。これは、整数値を取る変数と実数値を取る変数の両方を用いる混合整数計画問題(MIP)として記述することができ、所定のソルバで解くことができる。
【0015】
但し、MIPでの記述は、あらゆる経路を陽に列挙する必要があり、候補となる経路は、グラフのサイズに関して、一般に指数個存在するので、NP困難問題となって、現実的に解くことが困難である。
【0016】
本発明の1つの特徴によれば、候補経路は指数個存在するが、初期状態から、見込みのある経路を徐々に追加して反復してMIPを解くことで、候補経路数の爆発が抑えられる。
【0017】
本発明の別の特徴によれば、ある反復終了時点での実際の経路を使って新たな経路を探索することで、迂回路として利用価値の高い経路を優先して探索することができる。このとき、本発明の1つの側面によれば、最小コストがその時点で最良解以上の経路と、前反復で追加されたが使われなかった経路が、見込みのない経路として取り除かれる。
【0018】
本発明のさらに別の特徴によれば、MIPの計算の結果、出発地から目的地への複数の経路とその利用割合が得られ、その結果を用いて、混雑を緩和するような最適なルーティングが可能となる。
【0019】
本発明の更に別の特徴によれば、経路候補の更新の際には、前反復で使用された経路は必ず残すようにすることで、MIPにおいて前反復の解を初期値として利用することが可能となり、計算時間を大幅に短縮することが可能となる。
【発明の効果】
【0020】
この発明によれば、混合整数計画問題を用いつつ、見込みのない経路は取り除き、前反復で使用された経路は必ず残すようにして有望な値から反復計算を開始することで、合理的な計算量で多対多の経路を計算することができる。
【0021】
さらに、この発明によれば、各エッジの所要時間を、単調増加する区分線形の関数で近似することで、妥当な計算量で、混雑を緩和する望ましいルーティングが得られる。
【図面の簡単な説明】
【0022】
図1】交通量と所要時間の関係を示す図である。
図2】渋滞情報に従い、車両が回避する経路をとる様子を示す図である。
図3】車両が、適切に案内された経路をとる様子を示す図である。
図4】本発明を実施するためのハードウェア構成の一例のブロック図である。
図5】本発明を実施するための機能構成の一例のブロック図である。
図6】単調増加する区分線形の関数で近似する様子を示す図である。
図7】本発明に従い経路選択する処理のフローチャートを示す図である。
図8】本発明に従い経路選択する処理のフローチャートを示す図である。
図9】本発明の処理の出力の例を示す図である。
【発明を実施するための形態】
【0023】
以下、図面に基づき、この発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。尚、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことを理解されたい。
【0024】
図4を参照すると、本発明の一実施例に係るシステム構成及び処理を実現するためのコンピュータ・ハードウェアのブロック図が示されている。図1において、システム・パス402には、CPU404と、主記憶(RAM)406と、ハードディスク・ドライブ(HDD)408と、キーボード410と、マウス412と、ディスプレイ414が接続されている。CPU404は、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標) 4、Core(商標)2 Duo、Xeon(商標)、AMD社のAthlon(商標)などを使用することができる。主記憶406は、好適には、4GB以上の容量をもつものである。ハードディスク・ドライブ408は、大量の交通路グラフ・データを格納できるように、例えば、500GB以上の容量をもつものであることが望ましい。
【0025】
このようなハードウェア構成の好適な例の1つとして、IBM(R) System Xシリーズがあるが、これには限定されず、通常のパーソナル・コンピュータでも、本発明を実施可能である。
【0026】
ハードディスク・ドライブ408には、個々に図示しないが、オペレーティング・システムが、予め格納されている。オペレーティング・システムは、Linux(商標)、マイクロソフト社のWindows XP(商標)、Windows(商標)2000、Windows(商標)2008サーバ、アップルコンピュータのMac OS(商標)などの、CPU404に適合する任意のものでよい。
【0027】
ハードディスク・ドライブ408にはさらに、後述する、処理のメイン・ルーチン502、交通路グラフ・データ504、リクエスト・データ506、ソルバ508、経路探索モジュール510、及び経路更新モジュール512が格納されている。
【0028】
メイン・ルーチン502、ソルバ508、経路探索モジュール510、及び経路更新モジュール512は、C、C++、C#、Java(商標)などの既存のプログラミング言語処理系で作成され、システムの起動時、あるいは、必要に応じてオペレーティング・システムの働きで、メモリ406にロードされて実行される。
【0029】
ディスプレイ414は、好適には、液晶ディスプレイであり、例えば、XGA(4024×768の解像度)、またはUXGA(1600×1200の解像度)などの任意の解像度のものを使用することができる。ディスプレイ414は、図示しないが、本発明の処理プログラムを起動したり、停止したりするための操作画面を表示したり、交通路データや、交通路上の経路を表示したりするために使用される。
【0030】
次に、図5の機能ブロック図を参照して、本発明を実施するための論理的機能構成について説明する。図5において、メイン・ルーチン502は、全体の処理を統括するプログラムであり、操作画面(図示しない)をディスプレイ414に表示し、ユーザのキーボード410やマウス412の操作に応じて、処理を開始したり、停止したりする機能を有する。
【0031】
交通路グラフ・データ504は、交差点をノード、道路をエッジとするように交通路をグラフで記述し、各エッジの所要時間を、単調増加する区分線形の関数で近似することで、交通量・通行量の増加に伴う混雑の発生をモデル化した重み付きグラフ・データである。グラフをコンピュータ可読且つ、ハードディスクなどの媒体に保存可能な形式に表現するには、典型的には行列表現と、リスト表現があるが、この発明の目的のためには、どちらの形式でもよい。
【0032】
図6に、エッジの所要時間の区分線形性を示す。ここでxは、1時間あたりの車の通過台数のような交通量である。これは、図1に示すグラフの区分線形近似になっている。図示されているように、0<=x<x1の場合は所要時間t=a1x+b1、x1<=x<x2の場合は所要時間t=a2x+b2、x2<=xの場合は所要時間t=a3x+b3ような区分線形の関数が使用される。但し、ai > 0 (i = 1,2,3)である。ここでは3つだけの区間が図示されているが、これは一実施例に過ぎず、必要に応じて、任意の数と幅の区間をとることができる。このような区分線形の関数は、これには限定されないが、例えば、各エッジから指し示される、メモリ上のテーブルを参照する線形関数として実装することができる。すなわち、<=x1という交通量の値に対応して、{a1,b1}を返し、x1<=x<x2という交通量の値に対応して、{a2,b2}を返す等のように、テーブルが用意される。
【0033】
エッジ毎の区分線形近似を行うための{a1,b1}、{a2,b2}・・・のような係数群は、実際の道路の状態に従い決定する。すなわち、好適にはエッジの実際の長さに比例して、{ai,bi} (i = 1,2,3,...)という係数は決定されるが、上り坂の坂道では{ai,bi}はより大きく設定され、下り坂の坂道では{ai,bi}はより小さく設定される。カーブの曲率の大きい道路では{ai,bi}はより大きく設定される。車線の多い道路では{ai,bi}はより小さく設定され、幅が狭い道路では、{ai,bi}はより大きく設定される。舗装状態がよい道路では{ai,bi}はより小さく設定され、舗装状態がよくない道路では、{ai,bi}はより大きく設定される。
【0034】
好適な実施例では、各エッジにおいて、所要時間t = maxi{aix + bi} ここで、ai > 0と計算される。
【0035】
リクエスト・データ506は、{出発地、目的地、需要量}の集合として与えられる。このようなリクエスト・データは例えば、プローブカーデータを利用することにより、収集することができる。プローブカーデータを利用した交通データ収集技法は公知であり、例えば、特開2004−110458号公報、特開2004−156982号公報、特開2007−193705号公報、特開2004−241987号公報などを参照されたい。これらの技法によれば、所定の期間に、{出発地、目的地}の対毎に、その間を走った車両の台数が分かるので、その台数を需要量とし、{出発地、目的地、需要量}を需要量で降順ソートし、上位から所定の数の組をハードディスク・ドライブ408に保存するなどして、リクエスト・データ506を用意することができる。
【0036】
ソルバ508は、全リクエストに亘る、実際の所要時間/最短所要時間の最大値の最小化を目的関数とする、混合整数計画問題(MIP)として定式化された式を解くことにより、各リクエストに対して、複数のルートとその使用割合(実数)を出力として与える。好適なソルバは、これには限定されないが、IBM(R) ILOG CPLEXである。このMIPの定式化については、後でより詳細に説明する。
【0037】
経路探索モジュール510は、ダイクストラ法、A法など従来周知のアルゴリズムにより、重み付きグラフの経路探索を行う。あるいは、A法の改良版である、本出願に係る特開2008−157698号公報に記述されているアルゴリズムを使ってもよい。
【0038】
経路更新モジュール512は、計算量を減らすために適宜経路を除去し、あるいは有利な経路を追加する処理を行う。経路更新モジュール512が実行する処理については、図8のフローチャートを参照して、後で詳細に説明する。
【0039】
次に、図7及び図8のフローチャートを参照して、本発明の経路選択処理について説明する。
【0040】
図7では、メイン・ルーチン502は、ステップ702で、経路探索モジュール510を呼び出して、最小コスト経路、すなわち、各エッジで、所要時間t = maxi{aix + bi} の式でx = 0と置いた場合の、リクエスト・データ506における{出発地、目的地}の対における、出発地から目的地までの最短経路を探索する。
【0041】
ステップ704では、メイン・ルーチン502は、ソルバ508を呼び出して、その時点での候補経路の下で、混合整数計画問題(MIP)を解く。なお、ステップ704、ステップ706及びステップ708からなるループで、2回目以降は、前回の解を初期値とすることで、計算時間の短縮が可能である。
【0042】
次に、MIPの定式化について説明する。この定式化は、全リクエストに亘る、実際の所要時間/最短所要時間の最大値の最小化を目的関数とすることを意図している。交通路グラフ・データ504のノードの集合をV、エッジの集合をEとすると、グラフG = (V,E)であらわされる。そこで、図6の区分線形近似を参照すると、エッジe ∈ Eの移動にかかる所要時間は、交通量をxであらわしたとき、次の式であらわされる。
te(x) = maxi(aeix + bei) ただし、aei > 0
【0043】
一方、リクエストi (i = 1,...,k)は、以下の属性をもつ。
出発地点のノード: si ∈ V
目的地点のノード: gi ∈ V
需要量: di ∈ R, di > 0
【0044】
また、ノードsiからノードgiへのサイクルを含まない全ての経路の集合をPi*とする。すると、p ∈ Pi*は、以下のように、連結する辺の順列として表される。
p = (e1.e2....,e|p|)
ここで、|p|は、pをつなぐ辺の数である。
【0045】
そこで、交通量xが0の場合の、ノードsiからノードgiへの最小所要時間をTi*とする。すなわちTi*は、次式であらわされる。
【数1】


【0046】
このとき、Ti*は、Pi*の全要素を陽に列挙しないでも、各辺e ∈ Eのコストをte(0)とし、例えば、経路探索モジュール510を呼び出して、最短経路探索アルゴリズムなどを実行することで求めることができる。
【0047】
また、リクエストiの候補経路集合Pi*の要素に適当に順番を付け、Pi*のj番目(j = 1,...,|Pi*|)の経路をpijであらわすことにする。また、Lを十分大きな正の定数とし、yijを、リクエストiの候補経路jを使用するかどうかをあらわす、0-1の整数変数である。以上の定義を用いて、混合整数計画問題は、以下のように定式化される。
【数2】



ここで、s.t. (such that)以下が、制約式をあらわしている。
【0048】
この混合整数計画問題を解いた結果得られるxijは、リクエストiにおけるj番目の経路の交通量をあらわす。すなわち、xij/diが、リクエストiにおけるj番目の経路の使用割合となる。この使用割合は、例えば、図9で、出発地1から、目的地1への複数の経路それぞれに関連付けられたパーセンテージとして示すものである。
【0049】
次にステップ706では、メイン・ルーチン502は、終了条件を満足したかどうかを判断する。ここで終了条件とは例えば、計算時間が事前に設定した時間を超えた、あるいは、反復回数が、所定回数を超えた、などである。
【0050】
メイン・ルーチン502は、終了条件を満足したと判断すると、処理を終了する。その時点で、リクエスト毎の出発地から目的地への複数の経路と、その経路毎の使用割合が得られる。
【0051】
メイン・ルーチン502が、ステップ706で、終了条件を満足していないと判断すると、処理は、ステップ708に進み、そこで、メイン・ルーチン502は、経路更新モジュール512を呼び出して、候補経路の更新処理を行う。候補経路の更新処理とは、使われなかった経路や有望でない経路を削除し、有望とみなされる経路を追加する処理であり、図8のフローチャートを参照して、後で詳細に説明する。
【0052】
ステップ708で候補経路が更新された後、ステップ704では、その更新された候補経路に基づき、ソルバ508によって、再びMIPが解かれることになる。
【0053】
次に、図8のフローチャートを参照して、経路更新モジュール512の処理を説明する。すなわち、ステップ802で、経路更新モジュール512は、各リクエストについて、以下のような経路を、見込みがない経路として取り除く。
・最小コストが、その時点で、最良解以上の経路。ここで最小コストとは、交通量x = 0とした場合のコストである。
・前反復で追加されたが、使われなかった経路。ここで、使われなかった経路というのは、ステップ704におけるソルバ508での計算結果における、変数yijの値が0であることによって判別される。
このように経路を取り除く処理によって、候補経路数の爆発を抑えることができる。
【0054】
ステップ804では、経路更新モジュール512は、“実際の所要時間/最短所要時間”が最大で、かつ全ての候補経路の実際の所要時間が同じリクエストをbottleneckRequestとし、それらの候補経路集合に含まれるエッジをbottleneckEdgeとする。すなわち、経路更新モジュール512は、各反復の結果から、ボトルネックとなっているリクエスト、及びbottleneckEdgeの集合を特定する。すなわち、目的関数値を決定しているリクエストをbottleneckRequestと定義し、そのリクエストの候補経路に含まれるエッジをbottleneckEdgeと定義している。
【0055】
ステップ806では、経路更新モジュール512は、各bottleneckRequestについて、以下の条件を満たす、コストが現状の最良解未満の経路を探索する。
・現状のコストを使い、bottleneckEdgeを使わない経路を探索する。
・見つからなければ、現状のコストを使い、bottleneckEdgeを使う経路も含めて探索する。
こうして見つかった経路は、新たに追加される。すなわち、追加すると目的関数値が下がる経路、あるいは、下がる可能性が高い経路を効率的に追加することが可能となる。
【0056】
ステップ808では、経路更新モジュール512は、ステップ806で、候補経路が見つかったかどうかを判断する。もし見つかったのなら、図8で示すサブルーチンを抜けて、図7のステップ704に戻る。
【0057】
ステップ808で、経路更新モジュール512が、候補経路が見つからなかったと判断すると、ステップ810で、経路更新モジュール512は、各非bottleneckRequestについて、その時点の解を悪くせずにフロー、すなわち交通量を増加させることができる経路がない場合、以下の条件の経路を探索する。
・現状のコストを使い、bottleneckEdgeを使わない経路を探索する。
・見つからなければ、bottleneckEdgeを使う経路も含めて探索する。
こうして見つかった経路は、新たに追加される。その後、図8で示すサブルーチンを抜けて、図7のステップ704に戻る。
【0058】
ステップ810のような処理を行うのは、ボトルネックとなっていないリクエストについても、候補経路を追加することで目的関数値が向上することもあるからである。このとき、以下の条件を満たす候補経路を持つリクエストについては、いかなる経路を追加しても目的関数値の向上は図れないことが分かる。
・その候補経路のいかなるエッジもbottleneckEdgeではなく、かつ、その経路自体が現在の目的関数値を決定している経路ではない。
【0059】
なお、この条件は、エッジのコスト関数として狭義に単調増加するコスト関数を使うことが前提となっている。すなわち、所要時間の関数の"ax + b"に関して、"a >= 0" ではなく "a > 0" としてある。
【0060】
図7のフローチャートに戻って、ステップ704でのMIPの計算の後、ステップ706で終了条件を満足したと判定されると、各リクエスト毎の複数の経路と、その個々の経路の使用割合が返される。
【0061】
こうして得られた多対多の出発地と目的地の間の望ましい経路と、望ましい経路の使用割合が得られると、車両の交通路においては、通勤時間帯などの恒常的・定常的な渋滞の緩和、恒常的に渋滞が発生する施設周辺のルーティング、などの応用が考えられる。
【0062】
また、群集の誘導として、イベント会場などでの効率のよい群衆の誘導経路の立案、ビル火災時などにおける効率的な避難経路の立案などの応用もありえる。
【0063】
なお、特定の実施例に従い本発明を説明してきたが、例示されているハードウェア構成は一例であって、マルチプロセッサ環境、ネットワーク接続のクラウドコンピューティング環境など、任意のハードウェア環境で使用可能である。
【符号の説明】
【0064】
402 システム・パス
404 CPU
406 メモリ
406 主記憶
408 ハードディスク・ドライブ
410 キーボード
412 マウス
414 ディスプレイ
502 メイン・ルーチン
504 交通路グラフ・データ
506 リクエスト・データ
508 ソルバ
510 経路探索モジュール
512 経路更新モジュール
図1
図2
図3
図4
図5
図6
図7
図8
図9