説明

ルート算出システム、サーバ、ルート算出方法、プログラム、記録媒体

【課題】複数の目的地ごとに積載する負荷を考慮し、最適なルートを算出するルート算出システム等を提供する。
【解決手段】サーバ10は、始点、目的地、交点の各ノードが距離を重みとするリンクで接続されたグラフに対して、各目的地の最短経路を求め、目的地への最短経路をグループ化し、グループごとに、最大積載量を考慮したルートを抽出する。そして、サーバ10は、グループ内の全目的地の合計負荷が制限負荷を超えない場合に、自宅から遠い順に目的地を経由するルートを抽出し、制限を超える場合に、自宅から遠い順に制限負荷内で目的地を経由するルートを繰り返し抽出する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の目的地を経由するルートを算出するルート算出システム等に関する。
【背景技術】
【0002】
近年、自動車などの移動体の道案内を行うナビゲーション技術が提案され、予め、CD−ROMなどに記録された道路情報に基づき、目的地までの最適なルートを探索し、地図上に表示するナビゲーション・システムが普及している(例えば、特許文献1)。
【0003】
特許文献1は、ユーザに所望の複数の地点を選択させ、その複数の地点に行く最適なコースを自動的に計算し、地図上などに画面表示する装置を提案している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−83757号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1において提案されている装置は、複数の目的地を距離的に最短になるように回るルートを算出するものであり、目的地での買い物等による荷物の積載については考慮していない。
すなわち、自転車、自動車、徒歩等で複数の目的地に行き、買い物をするような状況を考慮していない。このような状況においては、荷物が載りきらない、または持ちきれないという場合があり、特許文献1の装置では、最適なルートを算出することができない。ユーザは、自らが荷物の積載を考慮してルート検索を繰り返し、分担する人数や、自宅へ戻る回数を導き出す必要があった。
【0006】
本発明は、上記の問題を鑑みてなされたものであり、その目的は、複数の目的地ごとに積載する負荷を考慮し、最適なルートを算出するルート算出システム等を提供することである。
【課題を解決するための手段】
【0007】
前述した目的を達するために第1の発明は、サーバとユーザ端末とがネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるルート算出システムであって、前記サーバは、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第1のルート抽出手段と、前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第2のルート抽出手段と、を具備することを特徴とするルート算出システムである。
【0008】
第1の発明により、複数の目的地ごとに積載する負荷を考慮し、最適なルートを算出することが可能になる。
【0009】
また、第1の発明における前記サーバは、前記ユーザ端末に、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を入力させることによって、前記重み付きグラフを形成するグラフ形成手段、を更に具備することが望ましい。
これによって、ユーザは、所望の重み付きグラフを形成させ、最適なルートを算出させることができる。
【0010】
第2の発明は、ユーザ端末とネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるサーバであって、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第1のルート抽出手段と、前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第2のルート抽出手段と、を具備することを特徴とするサーバである。
【0011】
第3の発明は、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるルート算出方法であって、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出工程と、前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成工程と、前記グループ形成工程により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第1のルート抽出工程と、前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第2のルート抽出工程と、を含むことを特徴とするルート算出方法である。
【0012】
第4の発明は、コンピュータを、第2の発明のサーバとして機能させるためのプログラムである。
【0013】
第5の発明は、コンピュータを、第2の発明のサーバとして機能させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体である。
【発明の効果】
【0014】
本発明により、複数の目的地ごとに積載する負荷を考慮し、最適なルートを算出するルート算出システム等を提供することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の実施形態に係る重み付きグラフ例11の説明図
【図2】本発明の実施形態に係るルート算出システム1の構成例
【図3】サーバ10および端末(21、23)のハードウエア構成図
【図4】ルート算出システム1の処理の流れを示すフローチャート
【図5】各目的地の最短経路データの説明図
【図6】各目的地の最短経路のグループ化の説明図
【図7】積載可能な場合のプログラムの処理(S207)の流れを示すフローチャート
【図8】積載可能な場合のプログラムの処理(S207)を説明する図
【図9】積載不可能な場合のプログラムの処理(S208)の流れを示すフローチャート
【図10】積載不可能な場合のプログラムの処理(S208)を説明する図
【発明を実施するための形態】
【0016】
以下、図面に基づいて本発明の好適な実施形態について説明する。
図1は、本発明の実施形態における重み付きグラフ11の例の説明図である。
【0017】
図1に示すように、重み付きグラフ11は、ノードと、距離を重みとするリンクから成るルート探索用のグラフである。
図1に示される重み付きグラフ11は、一例であり、始点ノードとなる自宅ノードと、複数の目的地ノードである店1〜店8のノードと、自宅ノードと目的地ノード間で通過する交差点ノード(交差点1〜交差点3)から成る。各ノードを接続するリンクに付された数字は、重みである距離の値であり、例えば、自宅ノードと店1ノード間のリンクの重み(距離)は「5」、店1ノードと店2ノード間のリンクの重み(距離)は「10」である。重みは、距離に限ることはなく、例えば、所要時間であってもよい。
【0018】
また、図1に示すように、各店(店1〜店8)には、店で購入する購入物の負荷(重さや大きさ)が予め定義されており、例えば、W、2W、3Wの目安量で表わす。負荷は、実際の容量や重さのデータであってもよい。
【0019】
本実施形態のルート探索問題は、自宅ノードから、すべての目的地ノードで買い物をして、自宅ノードへ戻るルートを探索することである。ここで、条件として、負荷の合計が予め定めた制限負荷(例えば、4W)を超えないようにルートを探索する。
例えば、自転車で買い物に行く場合を想定すると、ある一定以上の荷物は載せられないので、その最大の積載量(例えば、4W)を制限負荷とする。この制限負荷の値はユーザが設定するようにすればよい。
【0020】
図1に示すようなルート探索用の重み付きグラフ11は、自宅から店への買い物ルート用に限ることはなく、種々の用途のルート探索用に使用することが可能である。例えば、粗大ごみ収集を例とすると、ゴミ収集センターを自宅ノードとし、特定の日に粗大ごみ収集を申し込んだ人の家を店ノードとし、各家が出す粗大ごみの大きさをノードの負荷とすればよい。
その他、宅配便の集配経路のルート探索用にも使用することが可能である。
【0021】
重み付きグラフ11は、例えば、パーソナルコンピュータ等のディスプレイに表示された地図上でユーザが自宅や店等の位置を指示することによりノードを決定し、各ノード間にある道をリンクとし、その道のりを重みとすることにより作成することができる。また、交差点ノードは、ユーザが自宅や店のノードと同様に指定してもよいし、店ノードおよび自宅ノードを結ぶ道のりの間にある交差点を交差点ノードとしてもよい。
【0022】
次に、本発明の実施形態に係るルート算出システム1の構成を説明する。
図2は、ルート算出システム1の構成を示すブロック図である。
【0023】
図2に示すように、本実施形態に係るルート算出システム1は、ユーザの端末(21、23)とサーバ10がネットワーク30を介して接続された構成である。
サーバ10は、本実施形態に係る後述するルート算出プログラムを記憶する。サーバ10は、ルート算出プログラムを実行することによって、ルート算出処理を行う。端末(21、23)は、例えば、パーソナルコンピュータ等であり、インターネット等のネットワーク30を介してサーバ10にアクセスする。
【0024】
尚、端末(21、23)にルート算出プログラムを記憶させて、端末(21、23)がルート算出プログラムを実行することによって、ルート算出処理を行うことも可能である。この場合、サーバ10は不要である。
【0025】
図3は、サーバ10のハードウエア構成例を示す図である。
図3に示すように、サーバ10は、例えば、CPU101、メモリ102、記憶部103、表示部104、入力部105、出力部106、通信部107がシステムバス108を介して接続されて構成される。
【0026】
CPU(Central Processing Unit)101は、演算装置(四則演算や比較演算等)や、ハードウエアやソフトウエアの動作制御を行う。
【0027】
メモリ102は、RAM及びROM等のメモリである。RAM(Random Access Memory)は、ROM(Read Only Memory)や記憶部103から読み出されたOS(Operating System)やアプリケーションプログラム等を記憶し、CPU101の主メモリやワークエリアとして機能する。
【0028】
記憶部103は、各種データを記憶する装置であり、例えば、ハードディスク装置である。記憶部103には、CPU101が実行するプログラム、プログラム実行に必要なデータ、OS等が格納される。
後述するルート算出システム1のプログラムは記憶部103に格納され、メモリ102のRAM(主メモリ)にロードされ、CPU101により実行される。
【0029】
表示部104は、表示装置であり、例えば、CRTモニタ、液晶パネル等のディスプレイ装置である。表示部104は、コンピュータのビデオ機能を実現するたまえの論理回路(ビデオアダプタ等)を有する。
【0030】
入力部105は、各種データの入力装置であり、例えば、キーボードや、マウス等のポインティングデバイス等である。出力部106は、各種データの出力装置であり、例えば、プリンタである。各種メディアとのデータ入出力を行うドライブ装置を入力部105及び出録部106として用いることもできる。
【0031】
通信部107は、ネットワーク30を介して端末(21、23)等の外部装置と接続・通信する通信制御装置である。例えば、TCP/IPを用いたインターネット通信が可能である。サーバ10は、この通信部107により、ネットワーク30を介して端末(21、23)と通信可能に接続される。
システムバス108は、各装置間の制御信号、データ信号等の授受を媒介する経路である。
【0032】
端末(21、23)のハードウエア構成も、サーバ10のハードウエア構成と同様である。
【0033】
次に、ルート算出システム1の処理について説明する。以下では、サーバ10がルート算出プログラムを実行するものとする。
図4は、ルート算出システム1の処理の流れを示すフローチャートである。
【0034】
ユーザが端末(21、23)からネットワーク30を介してサーバ10にアクセスすると、サーバ10は、ルート算出プログラムを起動し、まず、端末(21、23)に、始点(自宅)、複数の目的地(店)、通過点(交差点)の各ノードと、各目的地(店)での負荷(荷物)を入力させ、図1に示したような重み付きグラフ11を作成する(ステップS201)。また、サーバ10は、端末(21、23)に、積載できる最大積載量を制限負荷として入力させる。
【0035】
例えば、端末(21、23)のディスプレイ画面に地図を表示させ、各ノードの位置を端末(21、23)のマウス等のポインティングデバイスで指示させることにより各ノードを入力させる。
この各ノードの位置入力を受けて、サーバ10は、各ノードを結ぶ地図上の道をリンクとし、その道の道のり(または所要時間)をリンクの重みとする重み付きグラフ11を生成する。
【0036】
作成した重み付きグラフ11は、例えば、各ノードのノード名と、各ノードの各リンクのリンク先のノード名と、各リンクの重み(道のりまたは所要時間)と、各ノードの負荷より成り、作成された重み付きグラフ11のデータとしてサーバ10の記憶部103に格納される。
【0037】
次に、サーバ10は、記憶部103に格納された重み付きグラフ11のデータを元に、経路探索アルゴリズムにより、自宅ノードから各目的地ノードへの探索経路を求め、記憶部103に格納する(ステップS202)。
経路探索アルゴリズムとしては、例えば、ダイクストラ法等の周知のアルゴリズムを使用することができるので、ここでは詳述しない。
【0038】
図5は、経路探索アルゴリズムによって求められ、記憶部103に格納された各目的地(ノード)への最短経路データ300の例である。図1の重み付きグラフ11についての各目的地最短経路データである。
各目的地の最短経路データ300は、目的地301、負荷303、最短経路305等から成る。
図5に示すように、図1に示した重み付きグラフ11の目的地301は、店1〜店8であり、負荷303は、各目的地(店)での買い物量(W、2W、3W)である。図5では、負荷303はW〜3Wの目安量で示しているが、実際の容量や重さのデータであってもよい。
【0039】
最短経路305は、自宅ノードから、各目的地ノードである各店までの最短経路であり、S202の経路探索アルゴリズムによって求められたものである。
例えば、店1の最短経路は、「自宅」−「店1」であり、店7の最短経路は、「自宅」−「店2」−「交差点1」−「交差点2」−「店7」である。
【0040】
次に、サーバ10は、各目的地ノードのうち、同じ経路を含む目的地ノードをグループ化する(S203)。
図6(a)は、各目的地の最短経路のグループ化の説明図である。
グループ化の手順の手順は次の通りである。
【0041】
まず、各目的地への最短経路において、同じ経路のノードに印を付ける。
すなわち、目的地301が「店2」〜「店8」の最短経路305は、すべて「店2」を通過点とするので、最短経路305の「店2」に「1」という印を付ける。
印「1」を付けたノードの次のリンク先を探索すると、目的地301の「店3」、「店7」、「店8」は、更に、「交差点1」を通過点とするので、最短経路305の「交差点1」に「2」という印を付ける。同様に、目的地301の「店4」〜「店6」は、「店2」の後に「店4」を通過点とするので、最短経路305の「店4」に「3」という印を付ける。
【0042】
印「2」を付けた目的地301が「店3」、「店7」、「店8」の各ノードは、次のノードが、それぞれ、「店3」、「交差点2」、「店8」と異なるので、それ以上、印は付かない。
また、印「3」をつけた目的地301が「店4」〜「店6」の各ノードも、次のノードが、それぞれ、「無し」、「交差点3」、「店6」と異なるので、それ以上、印は付かない。
【0043】
印が付かなくなるまで、以上の作業を繰り返し、同じ印が付いた目的地301を同一グループとする。
すなわち、目的地ノードが「店3」、「店7」、「店8」の最短経路は、「自宅」−「店2」−「交差点1」という同じ経路を通過するので、グループ化し、例えば、「グループ1」とする。
また、目的地ノードが「店4」、「店5」、「店6」の最短経路は、「自宅」−「店2」−「店4」という同じ経路を通過するので、グループ化し、例えば、「グループ2」とする。
【0044】
図6(a)において、グループ番号g311は、グループの番号を示し、各目的地301のグループ番号g311が記憶部103に格納される。また、これ以降の処理で使用するために、グループ内の順序(グループ内順r)313を付して、これも記憶部103に格納する。
すなわち、目的地「店3」はg=1、r=1、目的地「店7」はg=1、r=2、目的地「店8」はg=1、r=3、目的地「店4」はg=2、r=1、目的地「店5」はg=2、r=2、目的地「店6」はg=2、r=3というようにデータが格納される。
【0045】
また、図6(b)に示すように、グループ化の処理で抽出されたグループのグループ数G(図1の重み付きグラフ11の場合G=2)を記憶部103に格納しておく。
また、図6(c)に示すように、各グループ番号gにグループ化された目的地ノードの数(ルート数Rg)も、これ以降の処理のために記憶部103に格納しておく。すなわち、上記の例の場合、グループ1のルート数R1、グループ2のルート数R2ともに「3」が格納される。
【0046】
また、図6(d)に示すように、S201で端末(21、23)から入力された制限負荷(最大積載量)Bmaxの値も記憶部103に格納される。上記の例では、Bmax=4Wとする。
【0047】
以上の処理(ステップS203)により、目的地ノードのグループが決定され、以降の処理により、各グループについて最適なルートが算出される。
サーバ10は、まず、g←1として、グループ1の処理を始める(ステップS204)。
【0048】
サーバ10は、グループg内の目的地(店)と通過する目的地(店)の負荷を合計し合計負荷Bを求める(ステップS205)。
上記の例では、グループ1(g=1)の目的地「店3」、「店7」、「店8」と通過する目的地「店2」の負荷303の合計負荷Bは「4W」である。
【0049】
次に、サーバ10は、合計負荷Bと最大積載量(制限負荷)Bmaxの値を比較する(ステップS206)。
そして、合計負荷Bが最大積載量Bmax以下である場合(ステップS206のYes)には、積載可能な場合のプログラム(ステップS207)によりルート算出を行い、合計負荷Bが最大積載量Bmaxを超える場合(ステップS206のNo)には、積載不可能な場合のプログラム(ステップS208)によりルート算出を行う。
積載可能な場合のプログラム(ステップS207)および積載不可能な場合のプログラム(ステップS208)については後述する。
【0050】
ステップS207およびステップS208の処理後、次のグループについてのルート算出を行うためにgの値を1インクリメントし(ステップS209)、gの値がグループ数G以下の場合にはステップS205〜ステップS210の処理を繰り返す。
【0051】
例えば、グループ2(g=2)の場合は、ステップS205において合計負荷Bを算出すると「6W」となり、ステップS206において、合計負荷Bが最大積載量(制限負荷)Bmaxの値を上回るため、ステップS206のNoとなり、積載不可能な場合のプログラム(ステップS208)が実行される。
【0052】
以下、積載可能な場合のプログラム(ステップS207)および積載不可能な場合のプログラム(ステップS208)について説明する。
図7は、積載可能な場合のプログラムの処理の流れを示すフローチャート、図8は、積載可能な場合の処理の説明図である。
【0053】
まず、積載可能な場合のプログラムの処理(ステップS207)について、上記の重み付きグラフ11のグループ1(g=1)を例に説明する。
【0054】
サーバ10は、まず、グループg(g=1)内の重なっている部分を取り出しSgとして格納する(ステップS401)。
すなわち、図8(a)に示すように、上記のグループ1の場合、「自宅」−「店2」−「交差点1」がグループ1内の同一の経路であり、この経路をグループ1の重なる部分S1(320)として記憶部103に格納する。
【0055】
次に、サーバ10は、グループg内の各ルートrについて処理するために、r←1とする(ステップS402)。すなわち、グループg内の1番目のルート(r=1)を取りだす。
上記の例では、グループ1(g=1)の目的地ノード「店3」(r=1)のルートを取りだす。
【0056】
次に、サーバ10は、取りだした1番目のルートにおいて、目的地ノードから自宅までのルートで通過する目的地(店)で買い物をするものとして、店の状態表340を購入済みを示す「済」とする(ステップS403)。
図8(b)は、店の状態表340を示す図であり、記憶部103にデータとして格納される。
上記のグループ1の目的地ノード「店3」のルート1では、「店3」および「店2」を通過するので、店の状態表340の「店2」および「店3」を「済」にする。
【0057】
次に、サーバ10は、ルート1の最終目的地からグループgの重なっている経路部分Sgまでの距離Drを算出し、重なっている経路部分Sgまでの途中経路TRrとともに記憶部103の途中距離・経路350に格納する(ステップS404)。
【0058】
図8(c)は、途中距離・経路350の説明図である。
途中距離・経路350は、ルート番号r351、重なっている経路部分Sgまでの距離Dr353、重なっている経路部分Sgまでの途中経路TRr355から成る。
上記の例の場合、ルート1(r=1)の重なっている経路部分Sgまでの経路TR1は「店3」−「交差点1」であり、その距離D1=1とともに途中距離・経路350として記憶部103に格納される。
【0059】
次に、サーバ10は、グループg内の他のルートについて処理するためにrを1インクリメントする(ステップS405)。
そして、グループg内のルートrの最終目的地から、重なっている経路部分Sgまでの距離Dr353と、その途中経路TRr355を記憶部103の途中距離・経路350に格納する(ステップS406)。
図8(c)に示すように、グループ1のルート2(r=2)の重なっている経路部分Sgまでの経路TR2は「店7」−「交差点2」−「交差点1」であり、その距離D2=2+5=7とともに途中距離・経路350として記憶部103に格納される。
【0060】
次に、サーバ10は、途中経路TRrに含まれる目的地(店)について、店の状態表340を、購入済みを示す「済」にする(ステップS407)。
すなわち、図8(b)の店の状態表340に示すように、グループ1のルート2(r=2)の途中経路TR2に含まれる「店7」について、店の状態表340を「済」にする。
【0061】
サーバ10は、rの値がグループ内のルート数Rgよりも小さい場合には(ステップS408のYes)、グループ内のすべてのルートrについてステップS405〜ステップS407の処理を繰り返す。
すなわち、図8(c)に示すように、グループ1のルート3(r=3)についても、重なっている部分Sgまでの経路TR3(「店8」−「交差点1」)と、その距離D3=8が求められ、途中距離・経路350として記憶部103に格納し(ステップS406)、途中経路TR3に含まれる「店8」について、店の状態表340を「済」にする。
【0062】
サーバ10は、ステップS408においてrの値がルート数Rg以上になった場合、すなわち、グループg内のすべてのルートrについての途中距離・経路350の値の格納が完了したら(ステップS408のNo)、途中距離・経路350を参照し、距離Dr353が大きい順にTRr355を取りだして並べ、最後に重なっている経路部分Sgと結合して、グループgのルート候補BRg330として格納して、処理を終了する(ステップ409)。
【0063】
図8(c)の途中距離・経路350を参照すると、距離Dr353が大きい順は、ルート3、ルート2、ルート1の順であり、その順に途中経路を並べる。すなわち、TR3−TR2−TR1である。これと、重なっている経路部分S1を結合して、図8(d)に示す経路をグループ1のルート候補BR1330として記憶部103に格納する。
グループ1のルート候補BR1は、「店8」−「交差点1」−「店7」−「交差点2」−「交差点1」−「店3」−「交差点1」−「店2」−「自宅」となる。
【0064】
次に、積載不可能な場合のプログラム(ステップS208)について、上記の重み付きグラフ11のグループ2(g=2)を例に説明する。
図9は、積載不可能な場合のプログラムの処理の流れを示すフローチャート、図10は、積載不可能な場合の処理の説明図である。
【0065】
サーバ10は、グループg内の各ルートrについて処理するために、r←1とする(ステップS501)。rの値は、1〜グループg内のルート数であるRgまでインクリメントされ、順次、ルート算出処理が実行される。
【0066】
次に、サーバ10は、グループgのなかでr番目に遠い目的地(店)のルートを抽出し、第rのルート候補BRgrとして記憶部103に格納する(ステップS502)。また、第rのルート候補BRgrの目的地ノードの数をJとする。
【0067】
すなわち、図6(a)の各目的地の最短経路をグループ化したデータ310から、グループ2(g=2)に含まれる目的地301「店4」、「店5」、「店6」のなかで、始点ノード「自宅」から最も遠い目的地301を求める。
始点ノード「自宅」からの距離は、「店4」が12、「店5」が21、「店6」が18なので、「店5」が最も遠い目的地であり、第1のルート候補BR21(600)として、図10(a)に示すように、「店5」から「自宅」へのルートである「店5」−「交差点3」−「店4」−「店2」−「自宅」が格納される。
また、このルートの目的地(店)は「店5」と「店4」と「店2」であり、目的地ノードの数であるJを3とする。
【0068】
次に、サーバ10は、店の状態表340について、ルート候補BRgrのなかの最も遠い目的地(店)を「済」にする(ステップS503)。
すなわち、第1のルート候補BR21の最も遠い目的地(店)である「店5」の買い物をするものとして、図10(b)に示すように、店の状態表340の「店5」を「済」にする。
【0069】
そして、サーバ10は、当該最も遠い目的地(店)の負荷を合計負荷Bとする(ステップS504)。
すなわち、合計負荷Bに「店5」の負荷「3W」を入れる。
【0070】
次に、サーバ10は、ルート候補BRgrの経路にあるJ個の目的地(店)で荷物(負荷)が積載できるかを判断するため、変数jに1を入れる(ステップS505)。
そして、ルート候補BRgrにおいて始点ノード(自宅)からj番目の目的地(店)を探索する(ステップ506)。
ここでは、j=1なので、始点ノードから1番目の目的地(店)である「店2」が抽出される。
【0071】
次に、サーバ10は、抽出されたj番目の目的地(店)について店の状態表340が「済」か否かを判断する(ステップS507)。
「済」ならば(ステップS507のYes)、既にj番目の目的地(店)を経由して荷物(負荷)を積載するルートが算出されていることになり、ステップS511に進む。
上記の例では、始点ノードから1番目の目的地(店)である「店2」の状態表340は「済」であり、ステップS511に進む。
【0072】
一方、店の状態表340において、j番目の目的地(店)が「済」でないならば(ステップS507のNo)、サーバ10は、抽出されたj番目の目的地(店)の負荷を合計負荷Bに加え、合計負荷Bとする(ステップS508)。
【0073】
次に、サーバ10は合計負荷Bが最大積載量Bmax以下か否かを判断する(ステップS509)。
合計負荷Bが最大積載量Bmax以下の場合(ステップS509のYes)、サーバ10は、j番目の目的地(店)での荷物(負荷)を積載可能であると判断し、店の状態表340でj番目の目的地(店)の状態を「済」にする(ステップS510)。
【0074】
次に、サーバ10は、変数jを1インクリメントし(ステップS511)、jがJ−1以下ならば(ステップS512のYes)、ステップS506に戻る。すなわち、ルート候補BRgr内の次の目的地(店)での荷物が積載可能か判断する処理を行う。
上記の例では、j=2となり、ステップS509において、始点ノード(自宅)から2番目の目的地である「店4」が抽出され、ステップS507において、店の状態表340において、「店4」が「済」でないと判断される(ステップ507のNo)。そして、ステップS508において、合計負荷Bに「店4」の負荷(2W)が付加され、合計負荷Bは5Wとなり、ステップS509において、合計負荷Bが最大積載量Bmax(4W)を超えていると判断される(ステップS509のNo)。
【0075】
ステップS509において、合計負荷Bが最大積載量Bmaxを超える場合(ステップS509のNo)、このルートBRgrではもう荷物(負荷)を積載できないと判断し、ステップS513に進む。
サーバ10は、店の状態表340において、グループgの全ての目的地(店)の状態が「済」になっているか否かを判断する(ステップS513)。
グループgの全ての目的地(店)の状態が「済」(ステップS513のYes)ならば処理を終了する。
【0076】
グループgの全ての目的地(店)の状態が「済」でない場合(ステップS513のNo)、サーバ10は、グループgについて他のルートの算出処理を行うため、変数rの値を1インクリメントし(ステップS514)、変数rがグループjのルート数Rg以下ならば(ステップS515のYes)、ステップS502に戻り、処理を繰り返す。
変数Rがグループgのルート数Rgを超えた場合(ステップS515のNo)には、処理を終了する。
【0077】
上記の例では、ステップS513において、グループ2(g=2)の目的地である「店4」と「店6」の店の状態が「済」ではないので(ステップS513のNo)、サーバ10は、rを1インクリメントしてr=2とし(ステップS514)、rの値がグループ2のルート数R2の3以下なので、ステップS502に戻る。
【0078】
ステップS502では、グループ2内で2番目に遠い目的地である「店6」を抽出し、そのルート(「店6」−「店4」−「店2」−「自宅」)を図10(c)に示すように、第2のルートBR22(610)として記憶部103に格納する。このルートBR22(610)に含まれる目的地(店)の数Jは3である。
次に、ステップS503において、ルートBR22(610)で最も遠い目的地である「店6」について、店の状態表340を「済」にし、ステップS504において、合計負荷Bを「店6」の負荷「W」とする。
【0079】
次に、j=1とし(ステップS505)とし、ステップS506において、始点ノード(自宅)から1番目の目的地「店2」を抽出し、ステップS507において、「店2」の状態が「済」であると判断する(ステップS507のYes)。
ステップS511に進み、変数jの値を1インクリメントしj=2とし、ステップS506に戻る。
【0080】
ステップS506において、始点ノード(自宅)から2番目の目的地「店4」を抽出し、ステップS507において、「店4」の状態が「済」でないと判断(ステップS507のNo)し、ステップS508において、合計負荷Bに2番目の目的地である「店4」の負荷「2W」を付加する。これによって、合計負荷Bは「3W」となる。
ステップS509において、合計負荷Bが最大積載量Bmax(「4W」)以下と判定し(ステップS509のYes)、ステップS510によって、図10(d)に示すように、「店4」の状態を「済」とする。
【0081】
ステップS511において、変数jの値がインクリメントされ「3」になるが、ステップS512において、jの値がJ−1(=2)より大きくなり(ステップS512のNo)、ステップS513において、店の状態表340の、グループ2の全ての目的地(店)である「店4」、「店5」、「店6」が全て「済」であり(ステップS513のYes)、処理を終了する。
【0082】
以上の処理により、上記の例のグループ1のように、グループ内の全ての目的地ノードの負荷(荷物)を積載可能な場合のルート算出処理(図4のステップS207)、および、上記の例のグループ2のように、グループ内の全ての目的地ノードの負荷(荷物)が最大積載量を超える場合のルート算出処理(図4のステップS208)が完了する。
【0083】
図4のステップS209に戻り、サーバ10は、すべてのグループgについて処理を行うために、変数gの値を1インクリメントし、gの値がグループ数G以下である場合には(ステップS210のYes)、ステップS205に戻り、ステップS205〜S210の処理を繰り返す。
【0084】
変数gの値がグループ数Gを超えた場合には(ステップS210のNo)、サーバ10は、店の状態表340を検索し、「済」でない目的地(Mi;i=1、・・・I)を検出する(ステップS211)。以下の処理では、グループに含まれない目的地(店)のルート抽出を行う。
上記の例では、図10(d)に示すように、「店1」が「済」ではないので、「店1」がM1となり、I=1である。
【0085】
サーバ10は、Miが含まれるルートをBRG+iとして、記憶部103に格納する。
上記の例では、「店1」が含まれるルートである「店1」−「自宅」がBR3(700)(G=2、i=1)として、図10(e)に示すように格納される。
【0086】
次に、サーバ10は、ステップS211で検出された「済」でないすべての目的地(店)のルートを抽出するため、変数iを1インクリメントし、iの値がI以下ならばステップS213〜S215の処理を繰り返す。
【0087】
全ての目的地(店)についてのルートを抽出したら(ステップS215のNo)、記憶部103に格納されているすべての候補ルートBRを出力し(ステップS216)、処理を終了する。
【0088】
図10(f)に示すように、以上の処理で算出されたルート候補BR1、BR21、BR22、BR3が荷物の積載を考慮して抽出されたルートとなる。
この場合、始点ノードである自宅から最短経路で最初の目的地ノード(店)へ行き、複数の目的地ノード(店)で負荷(荷物)を積載しながら始点ノード(自宅)へ戻るものとする。
【0089】
以上の処理により、複数の目的地において、積載する負荷(荷物)を考慮しながら始点ノードに戻るルートを算出することが可能になる。
【0090】
以上、添付図面を参照しながら本発明にかかるルート算出システム等の好適な実施形態について説明したが、本発明はかかる例に限定されない。当業者であれば、特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0091】
1………ルート算出システム
10………サーバ
11………重み付きグラフ
21、23………端末
30………ネットワーク

【特許請求の範囲】
【請求項1】
サーバとユーザ端末とがネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるルート算出システムであって、
前記サーバは、
前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、
前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、
前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第1のルート抽出手段と、
前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第2のルート抽出手段と、
を具備することを特徴とするルート算出システム。
【請求項2】
前記サーバは、
前記ユーザ端末に、前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を入力させることによって、前記重み付きグラフを形成するグラフ形成手段、
を更に具備することを特徴とする請求項1に記載のルート算出システム。
【請求項3】
ユーザ端末とネットワークを介して接続され、ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるサーバであって、
前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出手段と、
前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成手段と、
前記グループ形成手段により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第1のルート抽出手段と、
前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第2のルート抽出手段と、
を具備することを特徴とするサーバ。
【請求項4】
ノードとリンクから成る経路探索用道路ネットワークにおいて、始点ノードから、複数の目的地ノードおよび交点ノードを経由し、前記目的地ノードでは、前記目的地ノードごとに予め定めた負荷を、前記負荷の合計が予め定めた制限負荷を超えないように積載して、前記始点ノードに戻る最適ルートを求めるルート算出方法であって、
前記始点ノードと、前記複数の目的地ノードと、前記交点ノードと、前記目的地ノードの前記負荷と、前記制限負荷を含み、距離を重みとしたリンクで接続された重み付きグラフについて、前記始点ノードから前記複数の目的地ノードまでの最短経路を求める最短経路算出工程と、
前記最短経路に同じ経路を含む前記目的地ノードのグループを作成するグループ形成工程と、
前記グループ形成工程により作成された前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超えない場合に、前記始点ノードから、前記グループに含まれる前記目的地ノードのなかで前記最短経路が最長の前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出する第1のルート抽出工程と、
前記グループに含まれる前記目的地ノードの前記負荷の合計が前記制限負荷を超える場合に、前記始点ノードから、前記最短経路が最も長い前記グループに含まれる前記目的地ノードに行き、前記最短経路の長い順に、前記負荷の合計が前記制限負荷を超えない範囲で前記目的地ノードを経由し、前記始点ノードに戻るルートを抽出し、前記グループ内の全ての前記目的地ノードを経由するまで、前記始点ノードから、未経由の前記目的地ノードのうち前記最短経路が最も長い順に、前記負荷の合計が前記制限負荷を超えない範囲で未経由の前記目的地ノードを経由し、前記始点ノードに戻るルートの抽出を繰り返す第2のルート抽出工程と、
を含むことを特徴とするルート算出方法。
【請求項5】
コンピュータを、請求項3に記載のサーバとして機能させるためのプログラム。
【請求項6】
コンピュータを、請求項3に記載のサーバとして機能させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−154822(P2012−154822A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2011−14722(P2011−14722)
【出願日】平成23年1月27日(2011.1.27)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】