(57)【特許請求の範囲】
【請求項１】
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
抽出された前記候補地点が複数である場合には、前記第３の処理で特定された前記第２の地点以外の、抽出された前記候補地点の中から第３の地点を特定する第５の処理と、
前記第１乃至第３の処理を繰り返すことで、前記第１の地点までの部分経路と前記第３の地点からの部分経路とを含む巡回路の他の候補を生成する第６の処理と、
を、コンピュータに実行させるためのプログラム。
【請求項２】
前記第２の処理が、前記移動コストが閾値未満のパレート解となる点に対応する候補地点を優先的に抽出する処理を含む
請求項１記載のプログラム。
【請求項３】
生成された前記巡回路の候補の中から、採用すべき巡回路を特定する第７の処理
を、さらに前記コンピュータに実行させるための請求項１又は２記載のプログラム。
【請求項４】
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうち前記移動コストが閾値未満のパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
を、コンピュータに実行させるためのプログラム。
【請求項５】
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
生成された前記巡回路の候補の中から、採用すべき巡回路を特定する第５の処理と、
を、コンピュータに実行させるためのプログラム。
【請求項６】
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
抽出された前記候補地点が複数である場合には、前記第３の処理で特定された前記第２の地点以外の、抽出された前記候補地点の中から第３の地点を特定する第５の処理と、
前記第１乃至第３の処理を繰り返すことで、前記第１の地点までの部分経路と前記第３の地点からの部分経路とを含む巡回路の他の候補を生成する第６の処理と、
を、コンピュータが実行する情報処理方法。
【請求項７】
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうち前記移動コストが閾値未満のパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
を、コンピュータが実行する情報処理方法。
【請求項８】
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
生成された前記巡回路の候補の中から、採用すべき巡回路を特定する第５の処理と、
を、コンピュータが実行する情報処理方法。
【請求項９】
複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部と、
前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部と、
前記複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、抽出された前記候補地点から前記第２の地点を特定する第３の処理とを繰り返すことで、前記複数の地点について巡回路の候補を生成し、抽出された前記候補地点が複数である場合には、前記第３の処理で特定された前記第２の地点以外の、抽出された前記候補地点の中から第３の地点を特定し、前記第１乃至第３の処理を繰り返すことで、前記第１の地点までの部分経路と前記第３の地点からの部分経路とを含む巡回路の他の候補を生成する生成部と、
を有する情報処理装置。
【請求項１０】
複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部と、
前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部と、
前記複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、特定された前記点のうち前記移動コストが閾値未満のパレート解となる点に対応する候補地点を抽出する第２の処理と、抽出された前記候補地点から前記第２の地点を特定する第３の処理とを繰り返すことで、前記複数の地点について巡回路の候補を生成する生成部と、
を有する情報処理装置。
【請求項１１】
複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部と、
前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部と、
前記複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、抽出された前記候補地点から前記第２の地点を特定する第３の処理とを繰り返すことで、前記複数の地点について巡回路の候補を生成する生成部と、
生成された前記巡回路の候補の中から、採用すべき巡回路を特定する特定部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、巡回路決定のための技術に関する。
【背景技術】
【０００２】
巡回セールスマン問題（Traveling Salesman Problem）は、例えばｎ個の都市（作業地点又は作業場所とも呼ぶ）と各都市間の距離を入力として、各都市を１度ずつ訪問して元に戻る巡回路の中で総移動距離が最小のものを得る問題である。この問題はＮＰ困難問題として知られており、組み合わせ最適化問題の中でも難しいとされる問題の代表格となっている。しかしながら、配送計画、基盤穿孔、鋼板の圧延計画など多くの応用を有するため、このような問題を何らかの方法で短時間で処理することが好ましい。
【０００３】
従来から知られている巡回路の決定方法には、総当たり法や動的計画法などで厳密に解く方法があるが、このような方法では、巡回地点の数に対して指数関数的に巡回路候補が増加するため、現実的な時間内に処理が完了しない場合がある。また、最適解に準ずる解を得る方法としては、最近近傍法といった方法もあるが、十分な精度の解が得られる保証はない。
【０００４】
最近近傍法では、適当な点から出発して、まだ訪問していない点で現在地点から最も近い点へ移動し、全ての点を訪問したら出発地点へ戻ることによって巡回路を構築する。
【０００５】
なお、多目的最適化問題を解くために、初期解を高速に求める手法により、初期パレート解を探索する初期パレート解探索部と、遺伝的アルゴリズム手法により、探索された初期パレート解を用いてパレート最適解集合を探索するパレート解集合探索部とを用いる手法が存在する。しかしながら、巡回セールスマン問題については触れられていない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３０４１３号公報
【特許文献２】特開２００６−１５２７６７号公報
【特許文献３】特開２０００−６７１２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本技術の目的は、一側面によれば、巡回路を高速に求める技術を提供することである。
【課題を解決するための手段】
【０００８】
本技術に係る情報処理方法は、（Ａ）複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって複数の地点のうち巡回順番が決定されていない地点の各々について、複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、第１の地点と当該候補地点との間の移動コストの値と、複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１のステップと、（Ｂ）特定された点のうちパレート解となる点に対応する候補地点を抽出する第２のステップと、（Ｃ）抽出された候補地点から第２の地点を特定する第３のステップと、（Ｄ）第１乃至第３のステップを繰り返すことで、複数の地点について巡回路の候補を生成する第４のステップとを含む。
【発明の効果】
【０００９】
巡回路を高速に求めることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１の実施の形態に係る情報処理装置の機能ブロック図である。
【図２】図２は、第１データ格納部に格納されるデータの一例を示す図である。
【図３】図３は、第２データ格納部に格納されるデータの一例を示す図である。
【図４】図４は、第１の実施の形態に係る処理フローを示す図である。
【図５Ａ】図５Ａは、第１の実施の形態の処理を説明するための図である。
【図５Ｂ】図５Ｂは、第１の実施の形態の処理を説明するための図である。
【図５Ｃ】図５Ｃは、第１の実施の形態の処理を説明するための図である。
【図５Ｄ】図５Ｄは、第１の実施の形態の処理を説明するための図である。
【図５Ｅ】図５Ｅは、第１の実施の形態の処理を説明するための図である。
【図５Ｆ】図５Ｆは、第１の実施の形態の処理を説明するための図である。
【図５Ｇ】図５Ｇは、第１の実施の形態の処理を説明するための図である。
【図５Ｈ】図５Ｈは、第１の実施の形態の処理を説明するための図である。
【図５Ｉ】図５Ｉは、第１の実施の形態の処理を説明するための図である。
【図６Ａ】図６Ａは、移動コストと第２コストとで張られる平面におけるパレート最適解を特定するための処理を説明するための図である。
【図６Ｂ】図６Ｂは、移動コストと第２コストとで張られる平面におけるパレート最適解を特定するための処理を説明するための図である。
【図６Ｃ】図６Ｃは、移動コストと第２コストとで張られる平面におけるパレート最適解を特定するための処理を説明するための図である。
【図７】図７は、第１の実施の形態における処理フローを示す図である。
【図８】図８は、第２の実施の形態に係る情報処理装置の機能ブロック図である。
【図９】図９は、第２の実施の形態に係る処理フローを示す図である。
【図１０Ａ】図１０Ａは、第２の実施の形態の処理を説明するための図である。
【図１０Ｂ】図１０Ｂは、第２の実施の形態の処理を説明するための図である。
【図１０Ｃ】図１０Ｃは、第２の実施の形態の処理を説明するための図である。
【図１０Ｄ】図１０Ｄは、第２の実施の形態の処理を説明するための図である。
【図１０Ｅ】図１０Ｅは、第２の実施の形態の処理を説明するための図である。
【図１０Ｆ】図１０Ｆは、第２の実施の形態の処理を説明するための図である。
【図１０Ｇ】図１０Ｇは、第２の実施の形態の処理を説明するための図である。
【図１０Ｈ】図１０Ｈは、第２の実施の形態の処理を説明するための図である。
【図１０Ｉ】図１０Ｉは、第２の実施の形態の処理を説明するための図である。
【図１１】図１１は、第２の実施の形態に係る処理フローを示す図である。
【図１２】図１２は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１１】
［実施の形態１］
本技術の第１の実施の形態に係る情報処理装置１０を、図１に示す。本実施の形態に係る情報処理装置１０は、第１データ格納部１１と、第２データ格納部１２と、生成部１３と、第３データ格納部１４と、選択部１５とを有する。第１データ格納部１１は、巡回すべき複数の地点のうち２地点の各組み合わせについて移動コスト（例えば距離又は移動時間など）のデータを格納している。第２データ格納部１２は、巡回すべき複数の地点の各々について予め定められた１又は複数のコストの値と、巡回すべき複数の地点の各々について評価に用いる値とを格納している。
【００１２】
生成部１３は、第１データ格納部１１及び第２データ格納部１２に格納されているデータを用いて巡回路候補を生成して第３データ格納部１４に格納する。選択部１５は、第１データ格納部１１及び第２データ格納部１２に格納されているデータを用いて、巡回路候補を評価して適切な巡回路を特定して、出力する。
【００１３】
次に、図２乃至図７を用いて情報処理装置１０の処理内容を説明する。説明をわかりやすくするために、地点Ａ乃至地点Ｄを巡回する場合を考える。図２に、第１データ格納部１１に格納されている移動コストのデータの一例を示す。具体的には、地点Ａ乃至地点Ｄの２地点の各組み合わせについて移動コスト値（例えば移動時間）が登録されるようになっている。本例では、地点Ａから地点Ｂへの移動コスト値と、地点Ｂから地点Ａへの移動コスト値とは同じ例を示しているが、異なる場合もある。また、図３に、第２データ格納部１２に格納されているコスト値のデータの一例を示す。具体的には、地点Ａ乃至地点Ｄの各々について、第２のコスト（例えば災害復旧における重要度など（低いほど重要度が高い））の値が登録されるようになっている。本例では、説明を簡単にするために１種類のコストを取り扱うが、複数のコストを取り扱う場合もある。
【００１４】
次に、図４及び図７の処理フローを説明する。生成部１３は、第１データ格納部１１及び第２データ格納部１２に登録されている巡回地点を、配列である残り地点リスト［０］に設定する（ステップＳ１）。上で述べた例では、図５Ａにおける（１）に示すように、残り地点リスト［０］＝Ａ，Ｂ，Ｃ，Ｄとなる。また、生成部１３は、第１データ格納部１１及び第２データ格納部１２に登録されている巡回地点を、配列であるパレートリスト［０］に設定する（ステップＳ３）。図５Ａにおける（２）に示すように、パレートリスト［０］＝Ａ，Ｂ，Ｃ，Ｄとなる。なお、巡回地点において開始地点が決まっている場合には、パレートリスト［０］に開始地点を設定すればよい。そして、生成部１３は、カウンタｉを１に初期化する（ステップＳ５）。
【００１５】
その後、生成部１３は、パレートリスト［ｉ−１］から１つの地点を選択し、配列である順路［ｉ］に設定する（ステップＳ７）。このステップの選択はどのように行っても良い。例えばパレートリスト［０］から地点Ａを選択して、図５Ａの（３）に示すように、順路［１］＝Ａと設定する。そして、生成部１３は、パレートリスト［ｉ−１］から、選択した地点を除去する（ステップＳ９）。地点Ａを選択した場合には、地点Ａを除去するので、図５Ａの（４）に示すように、パレートリスト［０］＝Ｂ，Ｃ，Ｄとなる。
【００１６】
さらに、生成部１３は、残り地点リスト［ｉ］に、残り地点リスト［ｉ−１］から選択地点を除去したものを設定する（ステップＳ１１）。地点Ａを選択した場合には、残り地点リスト［０］＝Ａ，Ｂ，Ｃ，Ｄから地点Ａを除去して、図５Ａの（５）に示すように、残り地点リスト［１］＝Ｂ，Ｃ，Ｄと設定する。そして、生成部１３は、残り地点リスト［ｉ］が空になったか判断する（ステップＳ１３）。空になった場合には端子Ａを介して図７の処理に移行する。
【００１７】
一方、残り地点リスト［ｉ］が空ではない場合には、生成部１３は、残り地点リスト［ｉ］に含まれる地点に対応する、コスト空間内の点を特定して、これらの点の中からパレート最適解を抽出し、抽出されたパレート最適解に対応する地点を、パレートリスト［ｉ］に設定する（ステップＳ１５）。
【００１８】
図５Ａの（５）の状態では、残り地点リスト［１］＝Ｂ，Ｃ，Ｄであり、移動コストと第２のコストで張られる平面（一般的には空間）における点を特定する。具体的には、先に順路として特定された地点Ａから地点Ｂへの移動コスト値＝１０（図２）と、地点Ｂの第２のコスト値＝５０（図３）とを第１データ格納部１１及び第２データ格納部１２から読み出せば、図６Ａに示す平面における点Ｘ１が特定される。同様に、地点Ａから地点Ｃへの移動コスト値＝３０（図２）と、地点Ｃの第２のコスト値＝２０（図３）とを第１データ格納部１１及び第２データ格納部１２から読み出せば、図６Ａに示す平面における点Ｘ３が特定される。さらに、地点Ａから地点Ｄへの移動コスト値＝２０（図２）と、地点Ｄの第２のコスト値＝５０（図３）とを第１データ格納部１１及び第２データ格納部１２から読み出せば、図６Ａに示す平面における点Ｘ２が特定される。パレート最適解は、コスト空間における非劣解である。図６Ａの場合には、第２コストの値が同一であるが移動コストが大きい点Ｘ２は、点Ｘ１より明らかに劣っているので、点Ｘ２はパレート最適解ではない。一方、第２のコストは小さいが移動コストは大きいので、点Ｘ３は点Ｘ１より劣っているとは言えない。逆も同様である。従って、点Ｘ３及び点Ｘ１は、パレート最適解である。従って、点Ｘ３に対応する地点Ｃと、点Ｘ１に対応する地点Ｂとが抽出されて、図５Ｂの（１）に示すように、パレートリスト［１］に設定される。
【００１９】
その後、生成部１３は、ｉを１インクリメントして（ステップＳ１７）、処理はステップＳ７に戻る。
【００２０】
上で述べた例では、パレートリスト［１］から地点Ｂを選択して、図５Ｂの（２）に示すように、順路［２］＝Ｂと設定する（ステップＳ７）。さらに、パレートリスト［１］から、選択地点Ｂを除去すると（ステップＳ９）、図５Ｂの（３）に示すように、パレートリスト［１］＝Ｃとなる。さらに、残り地点リスト［２］に、残り地点リスト［１］から選択地点Ｂを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｂの（４）に示すように、残り地点リスト［２］＝Ｃ，Ｄとなる。
【００２１】
このように残り地点リスト［２］は空ではないので、残り地点リスト［２］に含まれる地点Ｃ及び地点Ｄに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１５）。
【００２２】
図５Ｂの（４）の状態では、残り地点リスト［２］＝Ｃ，Ｄであり、移動コストと第２コストで張られる平面における点を特定する。具体的には、先に順路として特定された地点Ｂから地点Ｃへの移動コスト値＝３０（図２）と、地点Ｃの第２のコスト値＝２０（図３）とで、図６Ｂに示す平面における点Ｙ１が特定される。また、地点Ｂから地点Ｄへの移動コスト値＝１５（図２）と、地点Ｄの第２のコスト値＝５０（図３）とで、図６Ｂに示す平面における点Ｙ２が特定される。点Ｙ１及びＹ２のどちらも優れているとは言えないのでパレート最適解である。従って、点Ｙ１に対応する地点Ｃと、点Ｙ２に対応する地点Ｄとが抽出されて、図５Ｃの（１）に示すように、パレートリスト［２］に設定される。ここで、ｉが１インクリメントされて、ｉ＝３になる。
【００２３】
そして、パレートリスト［２］から地点Ｃを選択して、図５Ｃの（２）に示すように、順路［３］＝Ｃと設定する（ステップＳ７）。さらに、パレートリスト［２］から、選択地点Ｃを除去すると（ステップＳ９）、図５Ｃの（３）に示すように、パレートリスト［２］＝Ｄとなる。さらに、残り地点リスト［３］に、残り地点リスト［２］から選択地点Ｃを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｃの（４）に示すように、残り地点リスト［３］＝Ｄとなる。
【００２４】
このように残り地点リスト［３］は空ではないので、残り地点リスト［３］に含まれる地点Ｄに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１５）。但し、残り地点リスト［３］に１つしか地点が含まれない場合には、そのままパレート最適解に指定してよい。すなわち、図５Ｄの（１）に示すように、パレートリスト［３］＝Ｄとなる。ここで、ｉが１インクリメントされて（ステップＳ１７）、ｉ＝４となる。
【００２５】
そして、パレートリスト［３］から地点Ｄを選択して、図５Ｄの（２）に示すように、順路［４］＝Ｄと設定する（ステップＳ７）。さらに、パレートリスト［３］から、選択地点Ｄを除去すると（ステップＳ９）、図５Ｄの（３）に示すように、パレートリスト［３］＝φとなる。さらに、残り地点リスト［４］に、残り地点リスト［３］から選択地点Ｄを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｄの（４）に示すように、残り地点リスト［４］＝φとなる。このように処理すれば、残り地点リスト［４］が空になるので、端子Ａを介して図７の処理に移行する。
【００２６】
図７において、生成部１３は、順路のデータを巡回路候補としてコピーして、第３データ格納部１４に格納する（ステップＳ１９）。これによって、１つの巡回路候補が生成されたことになる。上の例では、Ａ，Ｂ，Ｃ，Ｄという巡回路候補が第３データ格納部１４に格納される。以下は、他の巡回路候補の可能性を探索するための処理である。
【００２７】
そして、生成部１３は、ｉを１デクリメントして（ステップＳ２１）、ｉが０になったか判断する（ステップＳ２３）。ｉ＝０でない場合には、生成部１３は、パレートリスト［ｉ−１］が空であるか判断する（ステップＳ２５）。空であればステップＳ２１に戻る。一方、空でなければ処理は端子Ｂを介して図４のステップＳ７に戻る。
【００２８】
上で述べた例では、ｉ＝３の場合、図５Ｃの（３）において、パレートリスト［２］＝Ｄであるから、図４のステップＳ７に戻る。
【００２９】
そして、パレートリスト［２］から地点Ｄを選択して、図５Ｅの（１）に示すように、順路［３］＝Ｄと設定する（ステップＳ７）。さらに、パレートリスト［２］から、選択地点Ｄを除去すると（ステップＳ９）、図５Ｅの（２）に示すように、パレートリスト［２］＝φとなる。さらに、残り地点リスト［３］に、残り地点リスト［２］（図５Ｂの（４））から選択地点Ｄを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｅの（３）に示すように、残り地点リスト［３］＝Ｃとなる。
【００３０】
このように残り地点リスト［３］は空ではないので、残り地点リスト［３］に含まれる地点Ｃに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１５）。但し、残り地点リスト［３］に１つしか地点が含まれない場合には、そのままパレート最適解に指定してよい。すなわち、図５Ｆの（１）に示すように、パレートリスト［３］＝Ｃとなる。ここで、ｉが１インクリメントされて（ステップＳ１７）、ｉ＝４となる。
【００３１】
そして、パレートリスト［３］から地点Ｃを選択して、図５Ｆの（２）に示すように、順路［４］＝Ｃと設定する（ステップＳ７）。さらに、パレートリスト［３］から、選択地点Ｃを除去すると（ステップＳ９）、図５Ｆの（３）に示すように、パレートリスト［３］＝φとなる。さらに、残り地点リスト［４］に、残り地点リスト［３］から選択地点Ｃを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｆの（４）に示すように、残り地点リスト［４］＝φとなる。このように処理すれば、残り地点リスト［４］が空になるので、端子Ａを介して図７の処理に移行する。
【００３２】
そして、図７のステップＳ１９では、第２の巡回路候補Ａ，Ｂ，Ｄ，Ｃが、第３データ格納部１４に格納される。
【００３３】
その後、ｉ＝３の場合、図５Ｅの（２）でパレートリスト［２］＝φになっているので、ｉを１デクリメントする（ステップＳ２１）。ｉ＝２の場合、図５Ｂの（３）に示すように、パレートリスト［１］＝Ｃとなっている。そこで図４のステップＳ７に戻る。
【００３４】
そして、パレートリスト［１］から地点Ｃを選択して、図５Ｇの（１）に示すように、順路［２］＝Ｃと設定する（ステップＳ７）。さらに、パレートリスト［１］から、選択地点Ｃを除去すると（ステップＳ９）、図５Ｇの（２）に示すように、パレートリスト［１］＝φとなる。さらに、残り地点リスト［２］に、残り地点リスト［１］（図５Ａの（５））から選択地点Ｃを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｇの（３）に示すように、残り地点リスト［２］＝Ｂ，Ｄとなる。
【００３５】
このように残り地点リスト［２］は空ではないので、残り地点リスト［２］に含まれる地点Ｂ及びＤに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１５）。
【００３６】
図５Ｇの（３）の状態では、残り地点リスト［２］＝Ｂ，Ｄであり、移動コストと第２コストで張られる平面における点を特定する。具体的には、先に順路として特定された地点Ｃから地点Ｂへの移動コスト値＝３０（図２）と、地点Ｂの第２のコスト値＝５０（図３）とを第１データ格納部１１及び第２データ格納部１２から読み出せば、図６Ｃに示す平面における点Ｚ１が特定される。また、地点Ｃから地点Ｄへの移動コスト値＝１５（図２）と、地点Ｄの第２のコスト値＝５０（図３）とを第１データ格納部１１及び第２データ格納部１２から読み出せば、図６Ｃに示す平面における点Ｚ２が特定される。点Ｄの方が移動コスト値が小さいので、点Ｄがパレート最適解となる。従って、点Ｚ２に対応する地点Ｄが抽出されて、図５Ｈの（１）に示すように、パレートリスト［２］に設定される。ここで、ｉが１インクリメントされて（ステップＳ１７）、ｉ＝３になる。
【００３７】
そして、パレートリスト［２］から地点Ｄを選択して、図５Ｈの（２）に示すように、順路［３］＝Ｄと設定する（ステップＳ７）。さらに、パレートリスト［２］から、選択地点Ｄを除去すると（ステップＳ９）、図５Ｈの（３）に示すように、パレートリスト［２］＝φとなる。さらに、残り地点リスト［３］に、残り地点リスト［２］（図５Ｇの（３））から選択地点Ｄを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｈの（３）に示すように、残り地点リスト［３］＝Ｂとなる。
【００３８】
このように残り地点リスト［３］は空ではないので、残り地点リスト［３］に含まれる地点Ｂに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１５）。但し、残り地点リスト［３］に１つしか地点が含まれない場合には、そのままパレート最適解に指定してよい。すなわち、図５Ｉの（１）に示すように、パレートリスト［３］＝Ｂとなる。ここで、ｉが１インクリメントされて（ステップＳ１７）、ｉ＝４となる。
【００３９】
そして、パレートリスト［３］から地点Ｂを選択して、図５Ｉの（２）に示すように、順路［４］＝Ｂと設定する（ステップＳ７）。さらに、パレートリスト［３］から、選択地点Ｂを除去すると（ステップＳ９）、図５Ｉの（３）に示すように、パレートリスト［３］＝φとなる。さらに、残り地点リスト［４］に、残り地点リスト［３］から選択地点Ｂを除去したものを設定する（ステップＳ１１）。すなわち、図５Ｉの（４）に示すように、残り地点リスト［４］＝φとなる。このように処理すれば、残り地点リスト［４］が空になるので、端子Ａを介して図７の処理に移行する。
【００４０】
そして、図７のステップＳ１９では、第３の巡回路候補Ａ，Ｃ，Ｄ，Ｂが、第３データ格納部１４に格納される。このような処理にてパレートリスト［１］まで空になる。なお、パレートリスト［０］にはＢ，Ｃ及びＤが設定されているので、開始地点を入れ替えた処理を実施することになる。開始地点がＡで固定の場合には、巡回路候補の生成が完了することになる。
【００４１】
図７の処理の説明に戻って、選択部１５は、第３データ格納部１４に格納されている巡回路候補を評価して、評価が最も高い巡回路候補を特定する（ステップＳ２７）。例えば、第１データ格納部１１に格納されている移動コスト値と、第２データ格納部１２に格納されている各地点の他の値（例えば優先度など）とを組み合わせて、各巡回路候補の評価値を算出する。
【００４２】
その後、選択部１５は、評価結果を、表示装置又は他のコンピュータなどに出力する（ステップＳ２９）。巡回路候補をそのまま出力する場合もある。
【００４３】
このような処理を実施することによって、パレート最適解をたどるような処理を実施しているので、少なくとも最近近傍法による巡回路を含む巡回路候補を得ることができる。但し、パレート最適解をたどるようにしているので、最近近傍法より好ましい巡回路候補を得ることができる。また、移動先の地点をパレート最適解で絞り込むため、総当り法などよりも高速に処理を行うことができる。
【００４４】
［実施の形態２］
第２の実施の形態に係る情報処理装置１００の機能ブロック図を図８に示す。
【００４５】
本実施の形態に係る情報処理装置１００は、第１データ格納部１１０と、第２データ格納部１２０と、巡回路候補生成部１３０と、第３データ格納部１４０と、巡回路選択部１５０とを有する。第１データ格納部１１０は、巡回すべき複数の地点のうち２地点の各組み合わせについて移動コスト（例えば距離又は移動時間など）のデータを格納している。第２データ格納部１２０は、巡回すべき複数の地点の各々について予め定められた１又は複数のコストの値と、巡回すべき複数の地点の各々について評価に用いる値とを格納している。
【００４６】
巡回路候補生成部１３０は、第１データ格納部１１０及び第２データ格納部１２０に格納されているデータを用いて巡回路候補を生成して第３データ格納部１４０に格納する。巡回路選択部１５０は、第１データ格納部１１０及び第２データ格納部１２０に格納されているデータを用いて、巡回路候補を評価して適切な巡回路を特定して、出力する。
【００４７】
次に、図９乃至図１１を用いて情報処理装置１００の処理内容を説明する。説明をわかりやすくするために、第１の実施の形態と同様に、地点Ａ乃至地点Ｄを巡回する場合を考える。そして、図２に示したようなデータが、第１データ格納部１１０に格納されているものとする。さらに、図３に示したようなデータが、第２データ格納部１２０に格納されているものとする。
【００４８】
巡回路候補生成部１３０は、第１データ格納部１１０及び第２データ格納部１２０に登録されている巡回地点を、配列である残り地点リスト［０］に設定する（図９：ステップＳ１０１）。上の例では、図１０Ａにおける（１）に示すように、残り地点リスト［０］＝Ａ，Ｂ，Ｃ，Ｄとなる。また、巡回路候補生成部１３０は、第１データ格納部１１０及び第２データ格納部１２０に登録されている巡回地点を、配列であるパレートリスト［０］に設定する（ステップＳ１０３）。図１０Ａにおける（２）に示すように、パレートリスト［０］＝Ａ，Ｂ，Ｃ，Ｄとなる。なお、巡回地点において開始地点が決まっている場合には、パレートリスト［０］に開始地点を設定すればよい。また、巡回路候補生成部１３０は、配列である選択済み地点リスト［０］に空を設定する（ステップＳ１０５）。図１０Ａにおける（３）に示すように、選択済み地点リスト［０］＝φと設定される。そして、巡回路候補生成部１３０は、カウンタｉを１に初期化する（ステップＳ１０７）。
【００４９】
その後、巡回路候補生成部１３０は、パレートリスト［ｉ−１］の要素から選択済み地点リスト［ｉ−１］の要素を除外したもの（｛パレートリスト［ｉ−１］−選択済み地点リスト［ｉ−１］｝と表すものとする）から１つの地点を選択し、配列である順路［ｉ］に設定する（ステップＳ１０９）。このステップにおける選択はどのように行っても良い。選択済み地点リスト［０］は空なので、パレートリスト［０］から例えば地点Ａを選択して、図１０Ａの（４）に示すように、順路［１］＝Ａと設定する。また、巡回路候補生成部１３０は、選択済み地点リスト［０］に、選択した地点を設定する（ステップＳ１１１）。地点Ａを選択した場合には、図１０Ａの（５）に示すように、選択済み地点リスト［０］＝Ａとなる。
さらに、巡回路候補生成部１３０は、残り地点リスト［ｉ］に、残り地点リスト［ｉ−１］から選択地点を除去したものを設定する（ステップＳ１１３）。地点Ａを選択した場合には、残り地点リスト［０］＝Ａ，Ｂ，Ｃ，Ｄから地点Ａを除去して、図１０Ａの（６）に示すように、残り地点リスト［１］＝Ｂ，Ｃ，Ｄと設定する。そして、巡回路候補生成部１３０は、残り地点リスト［ｉ］が空になったか判断する（ステップＳ１１５）。空になった場合には端子Ｃを介して図１１の処理に移行する。
【００５０】
一方、残り地点リスト［ｉ］が空ではない場合には、巡回路候補生成部１３０は、残り地点リスト［ｉ］に含まれる地点に対応する、コスト空間内の点を特定して、これらの点の中からパレートを抽出し、抽出されたパレート最適解に対応する地点を、パレートリスト［ｉ］に設定する（ステップＳ１１７）。このステップは、第１の実施の形態におけるステップＳ１５と同様である。
【００５１】
具体的には、図１０Ａの（６）の状態では、残り地点リスト［１］＝Ｂ，Ｃ，Ｄであり、移動コストと第２のコストで張られる平面（一般的には空間）における点を特定する。具体的には、先に順路として特定された地点Ａから地点Ｂへの移動コスト値＝１０（図２）と、地点Ｂの第２のコスト値＝５０（図３）とを第１データ格納部１１０及び第２データ格納部１２０から読み出せば、図６Ａに示す平面における点Ｘ１が特定される。同様に、地点Ａから地点Ｃへの移動コスト値＝３０（図２）と、地点Ｃの第２のコスト値＝２０（図３）とを第１データ格納部１１０及び第２データ格納部１２０から読み出せば、図６Ａに示す平面における点Ｘ３が特定される。さらに、地点Ａから地点Ｄへの移動コスト値＝２０（図２）と、地点Ｄの第２のコスト値＝５０（図３）とを第１データ格納部１１０及び第２データ格納部１２０から読み出せば、図６Ａに示す平面における点Ｘ２が特定される。図６Ａの場合には、点Ｘ３及び点Ｘ１が、パレート最適解である。従って、点Ｘ３に対応する地点Ｃと、点Ｘ１に対応する地点Ｂとが抽出されて、図１０Ｂの（１）に示すように、パレートリスト［１］に設定される。
【００５２】
その後、巡回路候補生成部１３０は、選択済み地点リスト［ｉ］に空を設定する（ステップＳ１１９）。図１０Ｂの（２）に示すように、選択済み地点リスト［１］＝φと設定される。次に巡回する地点の候補を正しく特定するためである。そして、巡回路候補生成部１３０は、ｉを１インクリメントして（ステップＳ１２１）、処理はステップＳ１０９に戻る。
【００５３】
上で述べた例では、パレートリスト［１］の要素から選択済み地点リスト［１］の要素を除外したものから地点Ｂを選択して、図１０Ｂの（３）に示すように、順路［２］＝Ｂと設定する（ステップＳ１０９）。さらに、選択済み地点リスト［１］に、選択地点Ｂを設定する（ステップＳ１１１）。そうすると、図１０Ｂの（４）に示すように、選択済み地点リスト［１］＝Ｂとなる。さらに、残り地点リスト［２］に、残り地点リスト［１］から選択地点Ｂを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｂの（５）に示すように、残り地点リスト［２］＝Ｃ，Ｄとなる。
【００５４】
このように残り地点リスト［２］は空ではないので、残り地点リスト［２］に含まれる地点Ｃ及びＤに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１１７）。
【００５５】
図１０Ｂの（５）の状態では、残り地点リスト［２］＝Ｃ，Ｄであり、移動コストと第２コストで張られる平面における点を特定する。具体的には、先に順路として特定された地点Ｂから地点Ｃへの移動コスト値＝３０（図２）と、地点Ｃの第２のコスト値＝２０（図３）とを第１データ格納部１１０及び第２データ格納部１２０から読み出せば、図６Ｂに示す平面における点Ｙ１が特定される。また、地点Ｂから地点Ｄへの移動コスト値＝１５（図２）と、地点Ｄの第２のコスト値＝５０（図３）とを第１データ格納部１１０及び第２データ格納部１２０から読み出せば、図６Ｂに示す平面における点Ｙ２が特定される。点Ｙ１及びＹ２のどちらも優れているとは言えないのでパレート最適解である。従って、点Ｙ１に対応する地点Ｃと、点Ｙ２に対応する地点Ｄとが抽出されて、図１０Ｃの（１）に示すように、パレートリスト［２］に設定される。また、図１０Ｃの（２）に示すように、選択済み地点リスト［２］を空に設定する（ステップＳ１１９）。ここで、ｉが１インクリメントされて（ステップＳ１２１）、ｉ＝３になる。
【００５６】
そして、パレートリスト［２］の要素から選択済み地点リスト［２］の要素を除外したものから地点Ｃを選択して、図１０Ｃの（３）に示すように、順路［３］＝Ｃと設定する（ステップＳ１０９）。さらに、選択済み地点リスト［２］に、選択地点Ｃを設定する（ステップＳ１１１）。そうすると、図１０Ｃの（４）に示すように、選択済み地点リスト［２］＝Ｃとなる。さらに、残り地点リスト［３］に、残り地点リスト［２］から選択地点Ｃを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｃの（５）に示すように、残り地点リスト［３］＝Ｄとなる。
【００５７】
このように残り地点リスト［３］は空ではないので、残り地点リスト［３］に含まれる地点Ｄに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１１７）。但し、残り地点リスト［３］に１つしか地点が含まれない場合には、そのままパレート最適解に指定してよい。すなわち、図１０Ｄの（１）に示すように、パレートリスト［３］＝Ｄとなる。また、図１０Ｄの（２）に示すように、選択済み地点リスト［３］を空に設定する（ステップＳ１１９）。ここで、ｉが１インクリメントされて（ステップＳ１２１）、ｉ＝４となる。
【００５８】
そして、パレートリスト［３］の要素から選択済み地点リスト［３］の要素を除外したものから地点Ｄを選択して、図１０Ｄの（３）に示すように、順路［４］＝Ｄと設定する（ステップＳ１０９）。さらに、選択済み地点リスト［３］に、選択地点Ｄを設定する（ステップＳ１１１）。そうすると、図１０Ｄの（４）に示すように、選択済み地点リスト［３］＝Ｄとなる。さらに、残り地点リスト［４］に、残り地点リスト［３］から選択地点Ｄを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｄの（５）に示すように、残り地点リスト［４］＝φとなる。このように処理すれば、残り地点リスト［４］が空になるので、端子Ｃを介して図１１の処理に移行する。
【００５９】
図１１において、巡回路候補生成部１３０は、順路のデータを巡回路候補としてコピーして、第３データ格納部１４０に格納する（ステップＳ１２３）。これによって、１つの巡回路候補が生成されたことになる。上の例では、Ａ，Ｂ，Ｃ，Ｄという巡回路候補が第３データ格納部１４０に格納される。以下は、他の巡回路候補の可能性を探索するための処理である。
【００６０】
そして、巡回路候補生成部１３０は、ｉを１デクリメントして（ステップＳ１２５）、ｉが０になったか判断する（ステップＳ１２７）。ｉ＝０でない場合には、巡回路候補生成部１３０は、パレートリスト［ｉ−１］の要素から選択済み地点リスト［ｉ−１］の要素を除外したもの（｛パレートリスト［ｉ−１］−選択済み地点リスト［ｉ−１］｝と表す）が空であるか判断する（ステップＳ１２９）。空であればステップＳ１２５に戻る。一方、空でなければ処理は端子Ｄを介して図９のステップＳ１０９に戻る。
【００６１】
上で述べた例では、ｉ＝３の場合、図１０Ｃの（１）と（４）において、｛パレートリスト［２］−選択済み地点リスト［２］｝＝Ｄであるから、図９のステップＳ１０９に戻る。
【００６２】
そして、｛パレートリスト［２］−選択済み地点リスト［２］｝から地点Ｄを選択して、図１０Ｅの（１）に示すように、順路［３］＝Ｄと設定する（ステップＳ１０９）。さらに、選択済み地点リスト［２］に選択地点Ｄを追加すると（ステップＳ１１１）、図１０Ｅの（２）に示すように、選択済み地点リスト［２］＝Ｃ，Ｄとなる。さらに、残り地点リスト［３］に、残り地点リスト［２］（図１０Ｂの（５））から選択地点Ｄを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｅの（３）に示すように、残り地点リスト［３］＝Ｃとなる。
【００６３】
このように残り地点リスト［３］は空ではないので、残り地点リスト［３］に含まれる地点Ｃに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１１７）。但し、残り地点リスト［３］に１つしか地点が含まれない場合には、そのままパレート最適解に指定してよい。すなわち、図１０Ｆの（１）に示すように、パレートリスト［３］＝Ｃとなる。さらに、図１０Ｆの（２）に示すように、選択済み地点リスト［３］に空が設定される（ステップＳ１１９）。ここで、ｉが１インクリメントされて（ステップＳ１２１）、ｉ＝４となる。
【００６４】
そして、｛パレートリスト［３］−選択済み地点リスト［３］｝から地点Ｃを選択して、図１０Ｆの（３）に示すように、順路［４］＝Ｃと設定する（ステップＳ１０９）。さらに、選択済み地点リスト［４］に、選択地点Ｃを追加する（ステップＳ１１１）。そうすると、図１０Ｆの（４）に示すように、選択済み地点リスト［４］＝Ｃとなる。さらに、残り地点リスト［４］に、残り地点リスト［３］から選択地点Ｃを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｆの（５）に示すように、残り地点リスト［４］＝φとなる。このように処理すれば、残り地点リスト［４］が空になるので、端子Ｃを介して図１１の処理に移行する。
【００６５】
そして、図１１のステップＳ１２３では、第２の巡回路候補Ａ，Ｂ，Ｄ，Ｃが、第３データ格納部１４０に格納される。
【００６６】
その後、ｉ＝３の場合、図１０Ｅの（２）及び図１０Ｃの（１）から、｛パレートリスト［２］−選択済み地点リスト［２］｝＝φになっているので、ｉを１デクリメントする（ステップＳ１２５）。ｉ＝２の場合、図１０Ｂの（１）及び（４）から、｛パレートリスト［１］−選択済み地点リスト［１］｝＝Ｃとなっている。そこで図９のステップＳ１０９に戻る。
【００６７】
そして、｛パレートリスト［１］−選択済み地点リスト［１］｝から地点Ｃを選択して、図１０Ｇの（１）に示すように、順路［２］＝Ｃと設定する（ステップＳ１０９）。さらに、選択済み地点リスト［１］に、選択地点Ｃを追加すると（ステップＳ１１１）、図１０Ｇの（２）に示すように、選択済み地点リスト［１］＝Ｂ，Ｃとなる。さらに、残り地点リスト［２］に、残り地点リスト［１］（図１０Ａの（６））から選択地点Ｃを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｇの（３）に示すように、残り地点リスト［２］＝Ｂ，Ｄとなる。
【００６８】
このように残り地点リスト［２］は空ではないので、残り地点リスト［２］に含まれる地点Ｂ及びＤに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１１７）。
【００６９】
図１０Ｇの（３）の状態では、残り地点リスト［２］＝Ｂ，Ｄであり、移動コストと第２コストで張られる平面における点を特定する。具体的には、先に順路として特定された地点Ｃから地点Ｂへの移動コスト値＝３０（図２）と、地点Ｂの第２のコスト値＝５０（図３）とを第１データ格納部１１０及び第２データ格納部１２０から読み出せば、図６Ｃに示す平面における点Ｚ１が特定される。また、地点Ｃから地点Ｄへの移動コスト値＝１５（図２）と、地点Ｄの第２のコスト値＝５０（図３）とを第１データ格納部１１０及び第２データ格納部１２０から読み出せば、図６Ｃに示す平面における点Ｚ２が特定される。点Ｚ２の方が移動コスト値が小さいので、点Ｚ２がパレート最適解となる。従って、点Ｚ２に対応する地点Ｄが抽出されて、図１０Ｈの（１）に示すように、パレートリスト［２］に設定される。さらに、図１０Ｈの（２）に示すように、選択済み地点リスト［２］は空に設定される（ステップＳ１１９）。ここで、ｉが１インクリメントされて（ステップＳ１２１）、ｉ＝３になる。
【００７０】
そして、｛パレートリスト［２］−選択済み地点リスト［２］｝から地点Ｄを選択して、図１０Ｈの（３）に示すように、順路［３］＝Ｄと設定する（ステップＳ１０９）。さらに、図１０Ｈの（４）に示すように、選択済み地点リスト［２］に選択地点Ｄを追加する（ステップＳ１１１）。さらに、残り地点リスト［３］に、残り地点リスト［２］（図１０Ｇの（３））から選択地点Ｄを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｈの（５）に示すように、残り地点リスト［３］＝Ｂとなる。
【００７１】
このように残り地点リスト［３］は空ではないので、残り地点リスト［３］に含まれる地点Ｂに対応する、コスト空間内の点を特定して、それらの点からパレート最適解を抽出する（ステップＳ１１７）。但し、残り地点リスト［３］に１つしか地点が含まれない場合には、そのままパレート最適解に指定してよい。すなわち、図１０Ｉの（１）に示すように、パレートリスト［３］＝Ｂとなる。さらに、図１０Ｉの（２）に示すように、選択済み地点リスト［３］を空に設定する（ステップＳ１１９）。ここで、ｉが１インクリメントされて（ステップＳ１２１）、ｉ＝４となる。
【００７２】
そして、｛パレートリスト［３］−選択済み地点リスト［３］｝から地点Ｂを選択して、図１０Ｉの（３）に示すように、順路［４］＝Ｂと設定する（ステップＳ１０９）。さらに、選択済み地点リスト［３］に、選択地点Ｂを追加すると、図１０Ｉの（４）に示すように、選択済み地点リスト［３］＝Ｂとなる。さらに、残り地点リスト［４］に、残り地点リスト［３］から選択地点Ｃを除去したものを設定する（ステップＳ１１３）。すなわち、図１０Ｉの（５）に示すように、残り地点リスト［４］＝φとなる。このように処理すれば、残り地点リスト［４］が空になるので、端子Ｃを介して図１１の処理に移行する。
【００７３】
そして、図１１のステップＳ１２３では、第３の巡回路候補Ａ，Ｃ，Ｄ，Ｂが、第３データ格納部１４０に格納される。このような処理にて｛パレートリスト［１］−選択済み地点リスト［１］｝まで空になる。なお、｛パレートリスト［０］−選択済み地点リスト［０］｝はＢ，Ｃ及びＤであるので、開始地点を入れ替えた処理を実施することになる。開始地点がＡで固定の場合には、巡回路候補の生成が完了することになる。
【００７４】
図１１の処理の説明に戻って、巡回路選択部１５０は、第３データ格納部１４０に格納されている巡回路候補を評価して、評価が最も高い巡回路候補を特定する（ステップＳ１３１）。例えば、第１データ格納部１１０に格納されている移動コスト値と、第２データ格納部１２０に格納されている各地点の他の値（例えば優先度など）とを組み合わせて、各巡回路候補の評価値を算出する。何らかの評価関数を用いても良い。
【００７５】
その後、巡回路選択部１５０は、評価結果を、表示装置又は他のコンピュータなどに出力する（ステップＳ１３３）。巡回路候補をそのまま出力するようにしても良い。
【００７６】
このような処理を実施することによって、パレート最適解をたどるような処理を実施しているので、少なくとも最近近傍法による巡回路を含む巡回路候補を得ることができる。但し、パレート最適解をたどるようにしているので、最近近傍法より好ましい巡回路候補を得ることができる。また、移動先の地点をパレート最適解で絞り込むため、総当り法などよりも高速に処理を行うことができる。
【００７７】
なお、ステップＳ１１７では、パレート最適解を全て抽出するような処理を行っていたが、例えば移動コストに重点を置いて、移動コストが閾値以下であるパレート最適解を抽出すれば、当該移動コストが閾値以下であるパレート最適解を優先的に選択するようにしても良い。
【００７８】
以上本技術の実施の形態を説明したが、本技術はこれに限定されない。例えば、機能ブロック図については、必ずしも実際のプログラムモジュール構成とは一致しない場合がある。また、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、並列実施しても良い。
【００７９】
さらに、上では１台のコンピュータで実施する例を示したが、例えば複数台のコンピュータで機能分担を行うようにしても良い。さらに、ネットワークを介して接続されるサーバなどでこのような処理を、同じくネットワークに接続されている端末装置からの要求に応じて実施し、処理結果についても端末装置に送信するようにしても良い。
【００８０】
なお、上で述べた情報処理装置１０及び１００は、コンピュータ装置であって、図１２に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００８１】
以上述べた本実施の形態をまとめると、以下のようになる。
【００８２】
本実施の形態に係る情報処理方法は、（Ａ）複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって複数の地点のうち巡回順番が決定されていない地点の各々について、複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、第１の地点と当該候補地点との間の移動コストの値と、複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、（Ｂ）特定された点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、（Ｃ）抽出された候補地点から第２の地点を特定する第３の処理と、（Ｄ）第１乃至第３の処理を繰り返すことで、複数の地点について巡回路の候補を生成する第４の処理とを含む。
【００８３】
このようにパレート解により次の巡回地点を絞り込むことで、高速に巡回路の候補を生成することができるようになる。また、パレート解を用いているので移動コストを含むコストの観点でより好ましい解が得られる。
【００８４】
なお、本実施の形態に係る情報処理方法は、抽出された候補地点が複数である場合には、第３の処理で特定された第２の地点以外の、抽出された候補地点の中から第３の地点を特定する第５の処理と、第１乃至第３の処理を繰り返すことで、第１の地点までの部分経路と第３の地点からの部分経路とを含む巡回路の他の候補を生成する第６の処理とをさらに含むようにしても良い。パレート解が複数存在する場合に、それらについて網羅的に巡回路候補を生成することができるようになる。
【００８５】
さらに、上で述べた第４の処理は、第２の地点の候補地点が１つである場合、当該候補地点を最終巡回地点に設定する処理を含むようにしてもよい。このような場合には処理を簡略化できる。
【００８６】
さらに、上で述べた第２の処理が、移動コストが閾値未満のパレート最適解を優先的に抽出する処理を含むようにしても良い。移動コストを重視する場合には、このような処理を行うようにしても良い。
【００８７】
さらに、本実施の形態に係る情報処理方法は、生成された巡回路の候補の中から、採用すべき巡回路を特定する第７の処理を実施するようにしても良い。例えば、最も評価が高い巡回路を特定すれば、より好ましい巡回路を得ることができるようになる。
【００８８】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【００８９】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９０】
（付記１）
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
を、コンピュータに実行させるためのプログラム。
【００９１】
（付記２）
抽出された前記候補地点が複数である場合には、前記第３の処理で特定された前記第２の地点以外の、抽出された前記候補地点の中から第３の地点を特定する第５の処理と、
前記第１乃至第３の処理を繰り返すことで、前記第１の地点までの部分経路と前記第３の地点からの部分経路とを含む巡回路の他の候補を生成する第６の処理と、
を、さらに前記コンピュータに実行させるための付記１記載のプログラム。
【００９２】
（付記３）
前記第４の処理が、
前記第２の地点の候補地点が１つである場合、当該候補地点を最終巡回地点に設定する処理
を含む付記１又は２記載のプログラム。
【００９３】
（付記４）
前記第２の処理が、前記移動コストが閾値未満のパレート最適解を優先的に抽出する処理を含む
付記１乃至３のいずれか１つ記載のプログラム。
【００９４】
（付記５）
生成された前記巡回路の候補の中から、採用すべき巡回路を特定する第７の処理
を、さらに前記コンピュータに実行させるための付記１乃至４のいずれか１つ記載のプログラム。
【００９５】
（付記６）
複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、
特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、
抽出された前記候補地点から前記第２の地点を特定する第３の処理と、
前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する第４の処理と、
を、コンピュータが実行する情報処理方法。
【００９６】
（付記７）
複数の地点のうち２地点の各組み合わせについての移動コストの値を格納する第１のデータ格納部と、
前記複数の地点の各々における１又は複数のコストの値を格納する第２のデータ格納部と、
前記複数の地点のうち巡回順番が決定された第１の地点の次に巡回する第２の地点の候補地点であって前記複数の地点のうち巡回順番が決定されていない地点の各々について、前記第１のデータ格納部から、前記第１の地点と当該候補地点との間の移動コストの値と、前記第２のデータ格納部から、当該候補地点の１又は複数のコストの値とを読み出し、移動コストと１又は複数のコストとで張られる空間における点を特定する第１の処理と、特定された前記点のうちパレート解となる点に対応する候補地点を抽出する第２の処理と、抽出された前記候補地点から前記第２の地点を特定する第３の処理と、前記第１乃至第３の処理を繰り返すことで、前記複数の地点について巡回路の候補を生成する生成部と、
を有する情報処理装置。
【符号の説明】
【００９７】
１０  情報処理装置
１１  第１データ格納部
１２  第２データ格納部
１３  生成部
１４  第３データ格納部
１５  選択部
１００  情報処理装置
１１０  第１データ格納部
１２０  第２データ格納部
１３０  巡回路候補生成部
１４０  第３データ格納部
１５０  巡回路選択部
【図１】
0005845716.tif 000002
【図２】
0005845716.tif 000003
【図３】
0005845716.tif 000004
【図４】
0005845716.tif 000005
【図５Ａ】
0005845716.tif 000006
【図５Ｂ】
0005845716.tif 000007
【図５Ｃ】
0005845716.tif 000008
【図５Ｄ】
0005845716.tif 000009
【図５Ｅ】
0005845716.tif 000010
【図５Ｆ】
0005845716.tif 000011
【図５Ｇ】
0005845716.tif 000012
【図５Ｈ】
0005845716.tif 000013
【図５Ｉ】
0005845716.tif 000014
【図６Ａ】
0005845716.tif 000015
【図６Ｂ】
0005845716.tif 000016
【図６Ｃ】
0005845716.tif 000017
【図７】
0005845716.tif 000018
【図８】
0005845716.tif 000019
【図９】
0005845716.tif 000020
【図１０Ａ】
0005845716.tif 000021
【図１０Ｂ】
0005845716.tif 000022
【図１０Ｃ】
0005845716.tif 000023
【図１０Ｄ】
0005845716.tif 000024
【図１０Ｅ】
0005845716.tif 000025
【図１０Ｆ】
0005845716.tif 000026
【図１０Ｇ】
0005845716.tif 000027
【図１０Ｈ】
0005845716.tif 000028
【図１０Ｉ】
0005845716.tif 000029
【図１１】
0005845716.tif 000030
【図１２】
0005845716.tif 000031