(57)【特許請求の範囲】
【請求項１】
ノードおよびノードを接続するリンクからなる道路ネットワークにおける任意の始点ノードから複数のノードを経由して始点ノードと異なる終点ノードに至る複数の経路からノード間の距離、移動時間等を与えるコストを最小にする経路の近似解を探索する巡回路探索装置であって、
始点ノードと終点ノードを結んだ線分に対して、始点ノードを通り前記線分に直交する始点ノード側垂線、および終点ノードを通り前記線分に直交する終点ノード側垂線をそれぞれ引き、前記始点ノード側垂線に対して終点ノードと反対側に存在するノードをまとめた始点側ノード群と、前記終点ノード側垂線に対して始点ノードと反対側に存在するノードをまとめた終点側ノード群と、始点ノード、終点ノード、始点側ノード群、終点側ノード群以外の中間ノード群とに分類するノード分類手段と、
始点から始点側ノード群の各ノードまでの角度を求める始点側ノード群角度算出手段と、
前記角度をソートし、始点ノードから角度の順に始点側ノード群の各ノードを結んで始点側巡回路を生成する始点側巡回路生成手段と、
終点から終点側ノード群の各ノードまでの角度を求める終点側ノード群角度算出手段と、
前記角度をソートし、終点ノードから角度の順に終点側ノード群の各ノードを結んで終点側巡回路を生成する終点側巡回路生成手段と、
始点と終点を結ぶ線分に対して前記中間ノード群の各ノードから垂線を下ろし、始点と終点を結ぶ線分と各垂線との交点が始点に近い方から順に中間ノード群の各ノードを結んで中間ノード群巡回路を生成する中間ノード群巡回路生成手段と、
前記始点側巡回路、中間ノード群巡回路および終点側巡回路の順に巡回路を結んで始点から終点までの巡回路を生成する全巡回路生成手段と
を有することを特徴とする巡回路探索装置。
【請求項２】
ノードおよびノードを接続するリンクからなる道路ネットワークにおける任意の始点ノードから複数のノードを経由して再び始点ノードに至る複数の経路からノード間の距離、移動時間等を与えるコストを最小にする経路の近似解を探索する巡回路探索装置であって、
巡回するすべてのノードを結んだ多角形の重心を求める重心算出手段と、
前記重心を中心として、始点から各ノードまでの角度を求める角度算出手段と、
前記角度をソートし、始点ノードから角度の小さい順に各ノードを結んで巡回路を生成する巡回路生成手段と
を有し、
前記巡回路生成手段は、
該巡回路生成手段により生成された巡回路を構成する各ノードにおいて、隣り合うノード間の角度が所定値より小さいノードをまとめて、グループを設定するグループ設定手段と、
該グループを構成する各ノードにおいて、前記ソート値が最も小さいものをグループ内始点とし、該始点から最も遠いノードをグループ内終点とするグループ内始点終点設定手段と、
前記グループ内始点とグループ内終点を結んだ線分に対して、グループ内始点を通り前記線分に直交する始点ノード側垂線、およびグループ終点を通り前記線分に直交する終点ノード側垂線をそれぞれ引き、前記始点ノード側垂線に対してグループ内終点と反対側に存在するノードをまとめたグループ内始点側ノード群と、前記終点ノード側垂線に対してグループ内始点と反対側にあるノードをまとめたグループ内終点側ノード群と、グループ内始点、グループ内終点、グループ内始点側ノード群、グループ内終点側ノード群以外のグループ内中間ノード群とに分類するグループ内ノード分類手段と、
グループ内始点からグループ内始点側ノード群の各ノードまでの角度を求めるグループ内始点側ノード群角度算出手段と、
前記角度をソートし、グループ内始点ノードから角度の順にグループ内始点側ノード群の各ノードを結んでグループ内始点側巡回路を生成するグループ内始点側巡回路生成手段と、
グループ内終点からグループ内終点側ノード群の各ノードまでの角度を求めるグループ内終点側ノード群角度算出手段と、
前記角度をソートし、グループ内終点ノードから角度の順にグループ内終点側ノード群の各ノードを結んでグループ内終点側巡回路を生成するグループ内終点側巡回路生成手段と、
グループ内始点とグループ内終点を結ぶ線分に対して前記グループ内中間ノード群の各ノードから垂線を下ろし、グループ内始点とグループ内終点を結ぶ線分と各垂線との交点がグループ内始点に近い方から順にグループ内中間ノード群の各ノードを結んでグループ内中間ノード群巡回路を生成するグループ内中間ノード群巡回路生成手段と、
前記グループ内始点側巡回路、グループ内中間ノード群巡回路およびグループ内終点側巡回路の順に巡回路を結んでグループ内始点からグループ内終点までの巡回路を生成するグループ内全巡回路生成手段と
を有することを特徴とする巡回路探索装置。
【請求項３】
前記始点側巡回路生成手段、前記終点側巡回路生成手段、および前記中間ノード群巡回路生成手段は、
これらの各手段により生成された各巡回路を構成する各ノードにおいて、所定の条件を満たすノードをまとめて、グループを設定するグループ設定手段と、
該グループを構成する各ノードにおいて、前記ソート値が最も小さいものをグループ内始点とし、該始点から最も遠いノードをグループ内終点とするグループ内始点終点設定手段と、
前記グループ内始点とグループ内終点を結んだ線分に対して、グループ内始点を通り前記線分に直交する始点ノード側垂線、およびグループ内終点を通り前記線分に直交する終点ノード側垂線をそれぞれ引き、前記始点ノード側垂線に対してグループ内終点と反対側に存在するノードをまとめたグループ内始点側ノード群と、前記終点ノード側垂線に対してグループ内始点と反対側にあるノードをまとめたグループ内終点側ノード群と、グループ内始点、グループ内終点、グループ内始点側ノード群、グループ内終点側ノード群以外のグループ内中間ノード群とに分類するグループ内ノード分類手段と、
グループ内始点からグループ内始点側ノード群の各ノードまでの角度を求めるグループ内始点側ノード群角度算出手段と、
前記角度をソートし、グループ内始点ノードから角度の順にグループ内始点側ノード群の各ノードを結んでグループ内始点側巡回路を生成するグループ内始点側巡回路生成手段と、
グループ内終点からグループ内終点側ノード群の各ノードまでの角度を求めるグループ内終点側ノード群角度算出手段と、
前記角度をソートし、グループ内終点ノードから角度の順にグループ内終点側ノード群の各ノードを結んでグループ内終点側巡回路を生成するグループ内終点側巡回路生成手段と、
グループ内始点とグループ内終点を結ぶ線分に対して前記グループ内中間ノード群の各ノードから垂線を下ろし、グループ内始点とグループ内終点を結ぶ線分と各垂線との交点がグループ内始点に近い方から順にグループ内中間ノード群の各ノードを結んでグループ内中間ノード群巡回路を生成するグループ内中間ノード群巡回路生成手段と、
前記グループ内始点側巡回路、グループ内中間ノード群巡回路およびグループ内終点側巡回路の順に巡回路を結んでグループ内始点からグループ内終点までの巡回路を生成するグループ内全巡回路生成手段とを有し、
前記始点側巡回路生成手段および前記終点側巡回路生成手段の前記グループ設定手段は、隣り合うノード間の角度が所定値より小さいノードをまとめて、グループを設定する手段を有し、
前記中間ノード群巡回路生成手段の前記グループ設定手段は、中間ノード群における各ノードから始点と終点を結ぶ線分に垂線を下ろした点の中で隣り合う点間の距離が所定値より小さいノードをまとめて、グループを設定する手段を有することを特徴とする請求項１記載の巡回路探索装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ノードおよびノードを接続するリンクからなる道路ネットワークにおける始点ノードから複数のノードを経由して終点ノードに至る複数の経路からノード間の距離、移動時間等を与えるコストを最小にする経路を探索する巡回路探索方法および装置に関し、例えば車載ナビゲーションシステム、パソコンなどでセールス、観光等のために複数地点を効率的に回る道順を探す道順案内システム、経路探索システム等に適用しうる巡回路探索装置に関する。
【０００２】
【従来の技術】
巡回路探索については、巡回セールスマン問題として従来から研究されており、ヒューリスティックスの確率的解析、ローカルサーチ、ラグランジュ双対法、分枝限定法、分枝カット法、ホップフィールド型ニューラルネットモデルによる方法等さまざまな方法が知られている。最新の巡回セールスマン問題の解法については、「Ｃｏｍｐｕｔｅｒ  Ｔｏｄａｙ」（１９９４年  ９月号Ｎｏ６３）、「巡回セールスマン問題への招待」（オペレーションズリサーチ、１９９４年  １〜  ３月号）等で紹介されている。
【０００３】
【発明が解決しようとする課題】
巡回セールスマン問題においては、最短巡回路解を実時間では見つけられないことが証明されており、近似解を求めることになる。方式の評価基準は、探索時間と見つかった経路の冗長度（最短順路と比べてどの程度長い経路になっているかを表わし、０％の場合最短路と同一であり、１０％の場合見つかった経路は最短路に比べて１０％長い経路である）になるが、両者には相関関係があり、探索時間を短縮すれば冗長度が大きくなり、冗長度を小さくすれば探索時間が長くなる。
【０００４】
例えば、最新の研究成果で探索時間が短く、かつ冗長度も小さい、リアルタイム性が最も高いといわれるホップフィールド型ニューラルネットモデルによる方法では、処理時間はワークステーションで０．１秒以下だが、冗長度は最短解に対して平均３７％となっている。また、一方で、平均冗長度が０％に近い方式もあるが、ワークステーションでの探索処理に数時間かかっている。観光等を考慮した場合、巡回ポイントは１０ポイント程度であるが、探索時間が短く冗長度の小さい解が要求される。更に観光地案内サービス等では、始点と終点が必ずしも同じではなく、始点と違う終点まで途中のポイントを経由して最短で巡回する経路の案内も必要になってくる。ホップフィールド型ニューラルネットモデル等の従来方式に比べ、より冗長度が小さく、かつ始点と終点が違う巡回路探索にも適用できる巡回路探索方式が望まれていた。
【０００５】
本発明は、上記に鑑みてなされたもので、その目的とするところは、ノードおよびノードを接続するリンクからなる道路ネットワークにおいて始点ノードから複数のノードを経由して終点ノードに至る経路を効率的に精度よく探索し得る巡回路探索装置を提供することにある。
【００２２】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の本発明は、ノードおよびノードを接続するリンクからなる道路ネットワークにおける任意の始点ノードから複数のノードを経由して始点ノードと異なる終点ノードに至る複数の経路からノード間の距離、移動時間等を与えるコストを最小にする経路の近似解を探索する巡回路探索装置であって、始点ノードと終点ノードを結んだ線分に対して、始点ノードを通り前記線分に直交する始点ノード側垂線、および終点ノードを通り前記線分に直交する終点ノード側垂線をそれぞれ引き、前記始点ノード側垂線に対して終点ノードと反対側に存在するノードをまとめた始点側ノード群と、前記終点ノード側垂線に対して始点ノードと反対側に存在するノードをまとめた終点側ノード群と、始点ノード、終点ノード、始点側ノード群、終点側ノード群以外の中間ノード群とに分類するノード分類手段と、始点から始点側ノード群の各ノードまでの角度を求める始点側ノード群角度算出手段と、前記角度をソートし、始点ノードから角度の順に始点側ノード群の各ノードを結んで始点側巡回路を生成する始点側巡回路生成手段と、終点から終点側ノード群の各ノードまでの角度を求める終点側ノード群角度算出手段と、前記角度をソートし、終点ノードから角度の順に終点側ノード群の各ノードを結んで終点側巡回路を生成する終点側巡回路生成手段と、始点と終点を結ぶ線分に対して前記中間ノード群の各ノードから垂線を下ろし、始点と終点を結ぶ線分と各垂線との交点が始点に近い方から順に中間ノード群の各ノードを結んで中間ノード群巡回路を生成する中間ノード群巡回路生成手段と、前記始点側巡回路、中間ノード群巡回路および終点側巡回路の順に巡回路を結んで始点から終点までの巡回路を生成する全巡回路生成手段とを有することを要旨とする。
【００２３】
請求項１記載の本発明にあっては、始点ノードと終点ノードを結んだ線に対して、始点ノードを通り前記線分に直交する始点ノード側垂線、および終点ノードを通り前記線分に直交する終点ノード側垂線をそれぞれ引いて、各ノードを始点側ノード群、終点側ノード群、中間ノード群に分類し、始点側ノード群の各ノードまでの角度の順に始点ノードから始点側ノード群の各ノードを結んで始点側巡回路を生成し、終点側ノード群の各ノードまでの角度の順に終点側ノード群の各ノードを結んで終点側巡回路を生成し、中間ノード群の各ノードを結んで中間ノード群巡回路を生成し、始点側巡回路、中間ノード群巡回路および終点側巡回路の順に巡回路を結んで始点から終点までの巡回路を生成する。
【００２６】
請求項２記載の本発明は、ノードおよびノードを接続するリンクからなる道路ネットワークにおける任意の始点ノードから複数のノードを経由して再び始点ノードに至る複数の経路からノード間の距離、移動時間等を与えるコストを最小にする経路の近似解を探索する巡回路探索装置であって、巡回するすべてのノードを結んだ多角形の重心を求める重心算出手段と、前記重心を中心として、始点から各ノードまでの角度を求める角度算出手段と、前記角度をソートし、始点ノードから角度の小さい順に各ノードを結んで巡回路を生成する巡回路生成手段とを有し、前記巡回路生成手段は、該巡回路生成手段により生成された巡回路を構成する各ノードにおいて、隣り合うノード間の角度が所定値より小さいノードをまとめて、グループを設定するグループ設定手段と、該グループを構成する各ノードにおいて、前記ソート値が最も小さいものをグループ内始点とし、該始点から最も遠いノードをグループ内終点とするグループ内始点終点設定手段と、前記グループ内始点とグループ内終点を結んだ線分に対して、グループ内始点を通り前記線分に直交する始点ノード側垂線、およびグループ内終点を通り前記線分に直交する終点ノード側垂線をそれぞれ引き、前記始点ノード側垂線に対してグループ内終点と反対側に存在するノードをまとめたグループ内始点側ノード群と、前記終点ノード側垂線に対してグループ内始点と反対側にあるノードをまとめたグループ内終点側ノード群と、グループ内始点、グループ内終点、グループ内始点側ノード群、グループ内終点側ノード群以外のグループ内中間ノード群とに分類するグループ内ノード分類手段と、グループ内始点からグループ内始点側ノード群の各ノードまでの角度を求めるグループ内始点側ノード群角度算出手段と、前記角度をソートし、グループ内始点ノードから角度の順にグループ内始点側ノード群の各ノードを結んでグループ内始点側巡回路を生成するグループ内始点側巡回路生成手段と、グループ内終点からグループ内終点側ノード群の各ノードまでの角度を求めるグループ内終点側ノード群角度算出手段と、前記角度をソートし、グループ内終点ノードから角度の順にグループ内終点側ノード群の各ノードを結んでグループ内終点側巡回路を生成するグループ内終点側巡回路生成手段と、グループ内始点とグループ内終点を結ぶ線分に対して前記グループ内中間ノード群の各ノードから垂線を下ろし、グループ内始点とグループ内終点を結ぶ線分と各垂線との交点がグループ内始点に近い方から順にグループ内中間ノード群の各ノードを結んでグループ内中間ノード群巡回路を生成するグループ内中間ノード群巡回路生成手段と、前記グループ内始点側巡回路、グループ内中間ノード群巡回路およびグループ内終点側巡回路の順に巡回路を結んでグループ内始点からグループ内終点までの巡回路を生成するグループ内全巡回路生成手段とを有することを要旨とする。
【００２７】
請求項２記載の本発明にあっては、各ノードを結んだ多角形の重心を求め、該重心を中心として、始点から各ノードまでの角度を求め、始点ノードから角度の小さい順に各ノードを結んで巡回路を生成し、巡回路を構成する各ノードにおいて、隣り合うノード間の角度が所定値より小さいノードをまとめて、グループを設定し、該グループを構成する各ノードに対して、請求項１記載の巡回路探索装置を適用したものである。
【００３０】
請求項３記載の本発明は、請求項１記載の発明において、前記始点側巡回路生成手段、前記終点側巡回路生成手段、および前記中間ノード群巡回路生成手段は、これらの各手段により生成された各巡回路を構成する各ノードにおいて、所定の条件を満たすノードをまとめて、グループを設定するグループ設定手段と、該グループを構成する各ノードにおいて、前記ソート値が最も小さいものをグループ内始点とし、該始点から最も遠いノードをグループ内終点とするグループ内始点終点設定手段と、前記グループ内始点とグループ内終点を結んだ線分に対して、グループ内始点を通り前記線分に直交する始点ノード側垂線、およびグループ内終点を通り前記線分に直交する終点ノード側垂線をそれぞれ引き、前記始点ノード側垂線に対してグループ内終点と反対側に存在するノードをまとめたグループ内始点側ノード群と、前記終点ノード側垂線に対してグループ内始点と反対側にあるノードをまとめたグループ内終点側ノード群と、グループ内始点、グループ内終点、グループ内始点側ノード群、グループ内終点側ノード群以外のグループ内中間ノード群とに分類するグループ内ノード分類手段と、グループ内始点からグループ内始点側ノード群の各ノードまでの角度を求めるグループ内始点側ノード群角度算出手段と、前記角度をソートし、グループ内始点ノードから角度の順にグループ内始点側ノード群の各ノードを結んでグループ内始点側巡回路を生成するグループ内始点側巡回路生成手段と、グループ内終点からグループ内終点側ノード群の各ノードまでの角度を求めるグループ内終点側ノード群角度算出手段と、前記角度をソートし、グループ内終点ノードから角度の順にグループ内終点側ノード群の各ノードを結んでグループ内終点側巡回路を生成するグループ内終点側巡回路生成手段と、グループ内始点とグループ内終点を結ぶ線分に対して前記グループ内中間ノード群の各ノードから垂線を下ろし、グループ内始点とグループ内終点を結ぶ線分と各垂線との交点がグループ内始点に近い方から順にグループ内中間ノード群の各ノードを結んでグループ内中間ノード群巡回路を生成するグループ内中間ノード群巡回路生成手段と、前記グループ内始点側巡回路、グループ内中間ノード群巡回路およびグループ内終点側巡回路の順に巡回路を結んでグループ内始点からグループ内終点までの巡回路を生成するグループ内全巡回路生成手段とを有し、前記始点側巡回路生成手段および前記終点側巡回路生成手段の前記グループ設定手段は、隣り合うノード間の角度が所定値より小さいノードをまとめて、グループを設定する手段を有し、前記中間ノード群巡回路生成手段の前記グループ設定手段は、中間ノード群における各ノードから始点と終点を結ぶ線分に垂線を下ろした点の中で隣り合う点間の距離が所定値より小さいノードをまとめて、グループを設定する手段を有することを要旨とする。
【００３１】
請求項３記載の本発明にあっては、始点側巡回路生成手段、終点側巡回路生成手段、中間ノード群巡回路生成手段により生成された各巡回路を構成する各ノードにおいて、所定の条件を満たすノードをまとめて、グループを設定するグループ設定手段と、該グループを構成する各ノードにおいて、請求項１記載の巡回路探索装置を適用したものである。
【００３４】
【発明の実施の形態】
以下、図面を用いて本発明の実施の形態について説明する。
【００３５】
図１は、一実施形態に係る巡回路探索方法を実施する巡回路探索装置の構成を示すブロック図である。同図に示す巡回路探索装置は、ノードおよびノードを接続するリンクからなる道路ネットワークにおける任意の始点ノードから複数のノードを経由して再び始点ノードに至る複数の経路からノード間の距離、移動時間等を与えるコストを最小にする経路を探索するものであり、すなわち始点と終点が同一の場合の巡回路探索装置であり、巡回するノード等の情報を入力する入力部１と、該入力部１から入力されたノード情報等に基づいて巡回路探索処理を実施する制御部３と、該制御部３で探索された巡回路を出力する出力部５と、制御部３における巡回路探索処理において発生した情報を一時的に格納するワークエリアを構成するワークメモリ７とから構成されている。
【００３６】
また、制御部３は、巡回するすべてのノードを結んだ多角形の重心を求める重心算出処理部９と、前記重心を中心として、始点から各ノードまでの角度を求める角度算出処理部１１と、前記角度をソートし、始点ノードから角度の小さい順に各ノードを結んで巡回路を生成する巡回路生成処理部１３とから構成されている。
【００３７】
次に、このように構成される巡回路探索装置の作用を図２に示すフローチャートに基づき図３を参照しながら説明する。
【００３８】
前記入力部１から巡回すべきノード情報が制御部３に入力されると、制御部３はこのノード情報をワークメモリ７に格納する。制御部３は、巡回すべきすべてのノード情報をワークメモリ７から読み出し、このノード情報を重心算出処理部９に供給する。重心算出処理部９は、該ノードのすべてを結んだ多角形の重心を算出してワークメモリ７に格納する（図２のステップＳ１１０）。
【００３９】
次に、角度算出処理部１１は、ワークメモリ７から巡回するすべてのノードおよび前記重心を読み出し、図３に示すように、該重心を中心として、始点ノードから各ノードまでの角度を算出してワークメモリ７に格納する（ステップＳ１２０）。この角度算出処理は、図３に示すように、重心と始点ノードを結ぶ線をＸ軸とし、このＸ軸の中心に重心を設定し、この重心を中心として各ノードがＸ軸に対してなす角度を０゜〜３６０゜の間で求める。
【００４０】
このように各ノードの角度が算出されると、次に巡回路生成処理部１３は、ワークメモリ７から巡回するすべてのノードおよび始点ノードからの角度を読み出し、この角度をソートし、始点ノードから各ノードを角度の小さい順に結んで再度始点ノードに戻る巡回路を形成し、この巡回路をワークメモリ７に格納するとともに、与えられた始点ノードおよび巡回ノード群に対する最短巡回路として出力部５から出力する（ステップＳ１３０）。
【００４１】
図４は、本発明の他の実施形態に係る巡回路探索方法を実施する巡回路探索装置の構成を示すブロック図である。
【００４２】
図４に示す巡回路探索装置は、ノードおよびノードを接続するリンクからなる道路ネットワークにおける任意の始点ノードから複数のノードを経由して始点ノードと異なる終点ノードに至る複数の経路からノード間の距離、移動時間等を与えるコストを最小にする経路を探索するものであり、すなわち始点と終点が異なる場合の巡回路探索装置であり、巡回するノード等の情報を入力する入力部２１と、該入力部２１から入力されたノード情報等に基づいて巡回路探索処理を実施する制御部２３と、該制御部２３で探索された巡回路を出力する出力部２５と、制御部２３における巡回路探索処理において発生した情報を一時的に格納するワークエリアを構成するワークメモリ２７とから構成されている。
【００４３】
また、制御部２３は、ワークメモリ２７から読み出した巡回する各ノードを、始点ノード近辺にある始点側ノード群と、終点ノード近辺にある終点側ノード群と、始点ノード、終点ノード、始点側ノード群、終点側ノード群以外の中間ノード群とに分類するノード分類処理部２９と、始点から始点側ノード群の各ノードまでの角度を求める始点側ノード群角度算出処理部３１と、前記角度をソートし、始点ノードから角度の順に始点側ノード群の各ノードを結んで始点側巡回路を生成する始点側巡回路生成処理部３３と、終点から終点側ノード群の各ノードまでの角度を求める終点側ノード群角度算出処理部３５と、前記角度をソートし、終点ノードから角度の順に終点側ノード群の各ノードを結んで終点側巡回路を生成する終点側巡回路生成処理部３７と、始点と終点を結ぶ線分に対して前記中間ノード群の各ノードから垂線を下ろし、始点と終点を結ぶ線分と各垂線との交点が始点に近い方から順に中間ノード群の各ノードを結んで中間ノード群巡回路を生成する中間ノード群巡回路生成処理部３９と、前記始点側巡回路、中間ノード群巡回路および終点側巡回路の順に巡回路を結んで始点から終点までの巡回路を生成する全巡回路生成処理部４１とから構成されている。
【００４４】
次に、このように構成される巡回路探索装置の作用を図５に示すフローチャートに基づき図６〜９を参照しながら説明する。
【００４５】
制御部２３は、巡回すべきすべてのノード情報をワークメモリ２７から読み出し、このノード情報をノード分類処理部２９に供給する。ノード分類処理部２９は、図６に示すように、始点ノード近辺にあるノードをまとめた始点側ノード群と、終点ノード近辺にあるノードをまとめた終点側ノード群と、始点ノード、終点ノード、始点側ノード群、終点側ノード群以外の残りのノード群をまとめた中間ノード群とに分類してワークメモリ２７に格納する（ステップＳ２１０）。
【００４６】
図６に示す具体的なノード分類処理では、例えば始点ノードと終点ノードを結んだ始点−終点接続線４−１に対して始点ノードおよび終点ノードをそれぞれ通り前記始点−終点接続線４−１に直交する始点ノード側垂線４−２および終点ノード側垂線４−３を引き、始点ノード側垂線４−２より終点ノードのない側にあるノードをまとめた始点側ノード群４−４と、終点ノード側垂線４−３より始点ノードのない側にあるノードをまとめた終点側ノード群４−５と、始点ノード、終点ノード、始点側ノード群、終点側ノード群以外の残りの各ノードをまとめた中間ノード群とに分類している。
【００４７】
なお、ノード分類処理は、上記に限定されるものでなく、始点ノード側垂線４−２、終点ノード側垂線４−３のような垂線以外にも始点ノード、終点ノードそれぞれから一定距離以内にあるノードを始点側ノード群、終点側ノード群に分類する等のように種々の方法がある。
【００４８】
以上のようにして、ノード分類処理が行われると、次に始点側ノード群角度算出処理部３１は、ワークメモリ２７から始点ノードおよび始点側ノード群４−４を読み出し、図７に示すように始点ノードから始点側ノード群４−４の各ノードまでの角度を求めてワークメモリ２７に格納する（ステップＳ２２０）。
【００４９】
図７では、始点ノード側垂線４−２をＸ軸とし、始点ノードを中心に設定し、始点側ノード群４−４の各ノードとＸ軸とのなす角度を０゜〜１８０゜の間で求めている。
【００５０】
次に、始点側巡回路生成処理部３３は、ワークメモリ２７から始点ノード、始点側ノード群４−４および前記角度を読み出し、該角度をソートし、始点ノードから角度の順に始点側ノード群の各ノードを結んで、図７に太い線で示すように始点側巡回路を生成してワークメモリ２７に格納する（ステップＳ２３０）。なお、角度のソートは図７に示すように角度の大きいノードから小さいノードに降順に行うが、逆に昇順に行ってもよい。
【００５１】
次に、終点側ノード群角度算出処理部３５は、ワークメモリ２７から終点ノードおよび終点側ノード群４−５を読み出し、図８に示すように終点ノードから終点側ノード群４−５の各ノードまでの角度を求めてワークメモリ２７に格納する（ステップＳ２４０）。
【００５２】
図８に示す角度算出処理では、終点ノード側垂線４−３をＸ軸とし、終点ノードを中心に設定し、終点側ノード群４−５の各ノードとＸ軸との間のなす角度を０゜〜１８０゜の間で求めている。
【００５３】
次に、終点側巡回路生成処理部３７は、ワークメモリ２７から終点ノード、終点側ノード群４−５および前記角度を読み出し、該角度をソートし、終点ノードから角度の順に終点側ノード群４−５の各ノードを結んで、図８に太い線で示すように終点側巡回路を生成してワークメモリ２７に格納する（ステップＳ２５０）。
【００５４】
角度のソートは、図８に示すように、角度の大きいノードから小さいノードに降順に行うが、逆に昇順に行ってもよい。
【００５５】
次に、中間ノード群巡回路生成処理部３９は、ワークメモリ２７から中間ノード群４−６を読み出し、この中間ノード群４−６をソートして順序付けを行い、この順序で中間ノード群の各ノードを結んで、図９に太い線で示すように中間ノード群巡回路を生成してワークメモリ２７に格納する（ステップＳ２６０）。
【００５６】
図９に示す中間ノード群巡回路の生成では、始点と終点を結ぶ始点−終点接続線４−１に対して各中間ノードから垂線を下ろし、該垂線と始点−終点接続線４−１との各交点が始点に近い方から順に中間ノード群の各ノードを太い線のように結んで、中間ノード群巡回路を生成している。
【００５７】
次に、全巡回路生成処理部４１は、ワークメモリ２７から始点側巡回路、中間ノード群巡回路および終点側巡回路を読み出し、始点側巡回路、中間ノード群巡回路、終点側巡回路の順に各経路間の距離が最小になるように各巡回路を結んで始点から終点までの巡回路を生成してワークメモリ２７に格納するとともに、出力部２５から出力する。
【００５８】
図１０は、本発明の更に他の実施形態に係る巡回路探索方法におけるグループ化処理を示すフローチャートである。
【００５９】
図１０に示す実施形態のグループ化処理は、ノードのソート方法を改良し、より巡回路の精度を高くするものであり、図１に示す実施形態の巡回路生成処理部１３および図４に示す実施形態の始点側巡回路生成処理部３３および終点側巡回路生成処理部３７における各巡回路生成処理においてソート順にノードを並べた後の並び順の変更処理として行うものである。
【００６０】
本実施形態の作用について図１０に示すフローチャートに基づき図１１および図１２を参照しながら説明する。
【００６１】
図１０の処理では、まずグループ算出処理が行われる（ステップＳ３１０）。このグループ算出処理では、ワークメモリ４７からノード群を読み出し、ソート値の隣り合うノード間の角度、距離などの値が所定値より小さいものを抽出し、図１１に示すように、１グループとしてまとめ、ワークメモリ４７に格納する。
【００６２】
図１１に示すグループ化処理は、始点と終点が異なる場合の中間ノード群に対して行ったものであり、隣り合うノード間の距離が小さいものをグループ化している。
【００６３】
始点と終点が同一の場合のグループ化処理では、例えば巡回するノード数Ｎに対して隣り合うノードの角度が
α（３６０／Ｎ）    （αは定数）
の場合にグループ化する。
【００６４】
始点と終点が異なる場合の始点側ノード群に対してのグループ化処理では、例えば、始点側ノード群のノード数Ｎに対して、隣り合うノードの角度が
α（３６０／（Ｎ−１））    （αは定数）
の場合にグループ化する。
【００６５】
始点と終点が異なる場合の終点側ノード群に対してのグループ化処理では、例えば、終点側ノード群のノード数Ｎに対して、隣り合うノードの角度が
α（３６０／（Ｎ−１））    （αは定数）
の場合にグループ化する。
【００６６】
始点と終点が異なる場合の中間ノード群に対してのグループ化処理では、例えば、中間ノード群のノード数Ｎに対して、始点と終点を結ぶ始点−終点接続線（４−１）に各中間ノード群のノードから下ろした垂線との交点（ノード垂線点）に対して、隣り合うノードとのノード垂線点間の距離が
【数１】
α（（始点と終点間の距離）／（Ｎ−１））    （αは定数）
の場合にグループ化する。なお、αは最も効率的な解が見つかるように設定すればよい。
【００６７】
以上のようにして、グループ化処理が行われると、次にグループ内巡回路生成処理が行われる（ステップＳ３２０）。このグループ内巡回路生成処理では、図１２に示すように、グループ内においてソート値が最も小さいものをグループ内始点とし、該グループ内始点からグループ内で最も遠いノードをグループ内終点とし、このグループ内の各ノードに対して、図１および図４に示した実施形態の巡回路探索方法を適用し、グループ内巡回路を生成し、グループ外で既にソート済みの前後のノードと接続するものである。
【００６８】
図１２に示すグループ内における始点および終点算出処理では、グループ内始点に対して最も遠いノード４がグループ内終点とされている。
【００６９】
【発明の効果】
以上説明したように、本発明によれば、請求項１記載の本発明にあっては、始点ノードと終点ノードを結んだ線に対して、始点ノードを通り前記線分に直交する始点ノード側垂線、および終点ノードを通り前記線分に直交する終点ノード側垂線をそれぞれ引いて、各ノードを始点側ノード群、終点側ノード群、中間ノード群に分類し、始点側ノード群の各ノードまでの角度の順に始点ノードから始点側ノード群の各ノードを結んで始点側巡回路を生成し、終点側ノード群の各ノードまでの角度の順に終点側ノード群の各ノードを結んで終点側巡回路を生成し、中間ノード群の各ノードを結んで中間ノード群巡回路を生成し、始点側巡回路、中間ノード群巡回路および終点側巡回路の順に巡回路を結んで始点から終点までの巡回路を生成するので、探索時間も従来方式の最短時間と同程度で、かつ精度のよい解を効率的に求めることができ、例えば観光地等を案内する観光案内システム、宅配便等における配達支援システム等のように探索時間と精度の両方が求められるシステムにおいても適用可能であり、これらのシステムの効率化が図られ、よりよいサービスを提供することができる。
【００７０】
また、本発明によれば、各ノードを結んだ多角形の重心を求め、該重心を中心として、始点から各ノードまでの角度を求め、始点ノードから角度の小さい順に各ノードを結んで巡回路を生成し、巡回路を構成する各ノードにおいて、隣り合うノード間の角度が所定値より小さいノードをまとめて、グループを設定し、該グループを構成する各ノードに対して、請求項１記載の巡回路探索装置を適用しているので、ノードのソート方法を改良し、巡回路の精度をより高くすることができる。
【００７１】
更に、本発明によれば、始点側巡回路生成手段、終点側巡回路生成手段、中間ノード群巡回路生成手段により生成された各巡回路を構成する各ノードにおいて、所定の条件を満たすノードをまとめて、グループを設定するグループ設定手段と、該グループを構成する各ノードにおいて請求項１記載の巡回路探索装置を適用しているので、ノードのソート方法を改良し、巡回路の精度をより高くすることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る巡回路探索方法を実施する巡回路探索装置の構成を示すブロック図である。
【図２】図１に示す巡回路探索装置の作用を示すフローチャートである。
【図３】図１に示す巡回路探索装置における角度算出処理を示す説明図である。
【図４】本発明の他の実施形態に係る巡回路探索方法を実施する巡回路探索装置の構成を示すブロック図である。
【図５】図４に示す巡回路探索装置の作用を示すフローチャートである。
【図６】図４に示す巡回路探索装置における始点側ノード群、終点側ノード群、中間ノード群への分割方法を示す説明図である。
【図７】図４に示す巡回路探索装置における始点側ノード群内の角度算出処理および巡回路生成処理を示す説明図である。
【図８】図４に示す巡回路探索装置における終点側ノード群内の角度算出処理および巡回路生成処理を示す説明図である。
【図９】図４に示す巡回路探索装置における中間ノード群内の巡回路生成処理を示す説明図である。
【図１０】本発明の更に他の実施形態の作用を示すフローチャートである。
【図１１】図１０に示す実施形態における中間ノード群に対するグループ化処理を示す説明図である。
【図１２】図１０に示す実施形態におけるグループ内における始点および終点算出処理を示す説明図である。
【符号の説明】
３，２３  制御部
９  重心算出処理部
１１  角度算出処理部
１３  巡回路生成処理部
２９  ノード分類処理部
３１  始点側ノード群角度算出処理部
３３  始点側巡回路生成処理部
３５  終点側ノード群角度算出処理部
３７  終点側巡回路生成処理部
３９  中間ノード群巡回路生成処理部
４１  全巡回路生成処理部
【図１】
0003596650.tif 000002
【図２】
0003596650.tif 000003
【図３】
0003596650.tif 000004
【図４】
0003596650.tif 000005
【図５】
0003596650.tif 000006
【図６】
0003596650.tif 000007
【図７】
0003596650.tif 000008
【図８】
0003596650.tif 000009
【図９】
0003596650.tif 000010
【図１０】
0003596650.tif 000011
【図１１】
0003596650.tif 000012
【図１２】
0003596650.tif 000013