IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社熊谷組の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023128623
(43)【公開日】2023-09-14
(54)【発明の名称】巡回ルート作成装置
(51)【国際特許分類】
   G05D 1/02 20200101AFI20230907BHJP
   G01C 21/26 20060101ALI20230907BHJP
【FI】
G05D1/02 H
G01C21/26 P
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022033088
(22)【出願日】2022-03-04
(71)【出願人】
【識別番号】000001317
【氏名又は名称】株式会社熊谷組
(74)【代理人】
【識別番号】100141243
【弁理士】
【氏名又は名称】宮園 靖夫
(72)【発明者】
【氏名】冨樫 淳輝
【テーマコード(参考)】
2F129
5H301
【Fターム(参考)】
2F129AA02
2F129EE54
5H301CC03
5H301CC06
5H301DD01
5H301DD05
(57)【要約】
【課題】複数のエリアを移動体に巡回させるための効率的な巡回ルートを作成可能な巡回ルート作成装置を提供する。
【解決手段】本発明に係る巡回ルート作成装置は、複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置であって、各移動対象領域内での巡回パターンを設定するための巡回パターン設定手段と、各移動対象領域を一巡する巡回ルートを作成するために各移動対象領域間での巡回順を設定するための巡回順設定手段とを備えたことを特徴とする。
【選択図】図59
【特許請求の範囲】
【請求項1】
複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置であって、
各移動対象領域内での巡回パターンを設定するための巡回パターン設定手段と、
各移動対象領域を一巡する巡回ルートを作成するために各移動対象領域間での巡回順を設定するための巡回順設定手段とを備えたことを特徴とする巡回ルート作成装置。
【請求項2】
巡回パターン設定手段は、各移動対象領域内での巡回パターンを、予め決められた所定の複数の巡回パターンの中から選択して設定することを特徴とする請求項1に巡回ルート作成装置。
【請求項3】
巡回パターン設定手段及び巡回順設定手段は、
各移動対象領域を一巡する巡回ループを作成する巡回ループ作成手段と、
作成された巡回ループの経路を移動体で移動させる場合の移動コストを算出する移動コスト算出手段と、
作成された巡回ループを形成する移動対象領域間ルートのうち最も移動コストの大きい移動対象領域間ルートを削除して、削除した移動対象領域間ルートのルート終端が繋がれていた移動対象領域を巡回ルートのスタート領域とし、かつ、削除した移動対象領域間ルートのルート始端が繋がれていた移動対象領域を巡回ルートのゴール領域とした各移動対象領域を一巡する巡回ルートを作成する巡回ルート作成手段とを備えたことを特徴とする請求項1又は請求項2に記載の巡回ルート作成装置。
【請求項4】
巡回ループ作成手段は、移動対象領域毎に巡回情報を設定することにより巡回ループを作成し、
巡回情報は、各移動対象領域毎に設定される自己の移動対象領域内の巡回パターンの情報と次に進む移動対象領域の情報とで構成された組み合わせ情報であることを特徴とする請求項3に記載の巡回ルート作成装置。
【請求項5】
巡回ループ作成手段は、
移動対象領域毎に巡回情報を設定することにより巡回ループを作成するとともに、作成した巡回ループの巡回情報を変更した巡回ループを作成する処理を繰り返すことを特徴とする請求項4に記載の巡回ルート作成装置。
【請求項6】
巡回ルート作成手段は、
巡回ループの巡回情報を変更した今回の巡回ループに基づいて作成した今回の巡回ルート、及び、巡回ループの巡回情報を変更する前の前回の巡回ループに基づいて作成された前回の巡回ルートのうち、どちらの巡回ルートを残すかを判定する判定手段を備えたことを特徴とする請求項5に記載の巡回ルート作成装置。
【請求項7】
巡回ルート作成手段は、
巡回ループの巡回情報を変更した今回の巡回ループに基づいて作成した今回の巡回ルートの移動コストと、巡回ループの巡回情報を変更する前の前回の巡回ループに基づいて作成された前回の巡回ルートの移動コストとを比較して、移動コストの小さい巡回ルートを残す判定手段を備えたことを特徴とする請求項5に記載の巡回ルート作成装置。
【請求項8】
複数の移動対象領域の位置情報に基づいて画面上に対象となる複数の移動対象領域の画像を表示させる表示制御手段を備え、
表示制御手段が、画面上に表示された各移動対象領域に対する巡回パターンを、予め決められた所定の複数の巡回パターンの中から選択して巡回パターン設定手段に指示するための巡回パターン設定ガイド画像を画面上に表示する機能を備え、
巡回パターン設定手段は、巡回パターン設定ガイド画像を介して指定の移動対象領域に対する巡回パターンを指定した場合に、指定された巡回パターンを指定の移動対象領域内の巡回パターンとして設定することを特徴とする請求項1乃至請求項4のいずれか一項に記載の巡回ルート作成装置。
【請求項9】
複数の移動対象領域の位置情報に基づいて画面上に対象となる複数の移動対象領域の画像を表示させる表示制御手段を備え、
表示制御手段が、画面上に表示された各移動対象領域間での巡回順を巡回順設定手段に指示するための巡回順設定ガイド画像を画面上に表示する機能を備え、
巡回順設定手段は、巡回順設定ガイド画像を介して移動対象領域間での巡回順を指定した場合に、当該移動対象領域間での巡回順を指定の巡回順に設定することを特徴とする請求項1乃至請求項4のいずれか一項に記載の巡回ルート作成装置。
【請求項10】
請求項1乃至請求項7のいずれか一項に記載の手段により実現される巡回ルート自動作成機能、及び、請求項8又は請求項9に記載の手段により実現される巡回ルート手動作成機能のうち、どちらの作成機能で巡回ルートを作成させるかを選択させる選択手段を備えたことを特徴とする巡回ルート作成装置。
【請求項11】
作成された巡回ルート上で移動体を巡回させる場合の移動体の移動コストを画面上に表示する移動コスト表示手段を備えたことを特徴とする請求項1乃至請求項10のいずれか一項に記載の巡回ルート作成装置。
【請求項12】
移動対象領域は、XY座標情報に基づいて区画された領域であり、
移動対象領域内の巡回パターンは、X軸に沿ってジグザグに進むX方向巡回パターン、又は、Y軸に沿って進むジグザグなY方向巡回パターンであり、
X方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とする第1パターン、移動開始位置をX座標最小値Y座標最小値の位置とする第2パターン、移動開始位置をX座標最大値Y座標最大値の位置とする第3パターン、移動開始位置をX座標最大値Y座標最小値の位置とする第4パターンであり、
Y方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とする第5パターン、移動開始位置をX座標最大値Y座標最大値の位置とする第6パターン、移動開始位置をX座標最小値Y座標最小値の位置とする第7パターン、移動開始位置をX座標最大値Y座標最小値の位置とする第8パターンであることを特徴とする請求項1乃至請求項11のいずれか一項に記載の巡回ルート作成装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置に関する。
【背景技術】
【0002】
本出願人による発明である移動体の移動制御システムとして、移動対象面(移動対象領域)上を移動させる移動体の移動予定情報(移動予定ルート)を作成する移動予定情報作成処理と、移動体を移動予定情報に基づいて移動させるとともに、移動情報取得手段により取得された移動体の実際の移動情報と移動予定情報とを比較して移動体の移動を制御する移動制御処理と、を備えた移動体の移動制御システムが開示されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-154400号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述した移動体の移動制御方法では、移動対象領域が複数ある場合において、移動体を当該複数の移動対象領域間で効率的に巡回させるための巡回ルートを作成することについては開示されておらず、当該巡回ルートを作成するための巡回ルート作成装置の開発が望まれているという課題があった。
本発明は、上記課題に鑑み、複数の移動対象領域を移動体に巡回させるための効率的な巡回ルートを作成可能な巡回ルート作成装置を提供するものである。
【課題を解決するための手段】
【0005】
本発明に係る巡回ルート作成装置は、複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置であって、各移動対象領域内での巡回パターンを設定するための巡回パターン設定手段と、各移動対象領域を一巡する巡回ルートを作成するために各移動対象領域間での巡回順を設定するための巡回順設定手段とを備えたことを特徴とする。
また、巡回パターン設定手段は、各移動対象領域内での巡回パターンを、予め決められた所定の複数の巡回パターンの中から選択して設定することを特徴とする。
また、巡回パターン設定手段及び巡回順設定手段は、各移動対象領域を一巡する巡回ループを作成する巡回ループ作成手段と、作成された巡回ループの経路を移動体で移動させる場合の移動コストを算出する移動コスト算出手段と、作成された巡回ループを形成する移動対象領域間ルートのうち最も移動コストの大きい移動対象領域間ルートを削除して、削除した移動対象領域間ルートのルート終端が繋がれていた移動対象領域を巡回ルートのスタート領域とし、かつ、削除した移動対象領域間ルートのルート始端が繋がれていた移動対象領域を巡回ルートのゴール領域とした各移動対象領域を一巡する巡回ルートを作成する巡回ルート作成手段とを備えたことを特徴とする。
また、巡回ループ作成手段は、移動対象領域毎に巡回情報を設定することにより巡回ループを作成し、巡回情報は、各移動対象領域毎に設定される自己の移動対象領域内の巡回パターンの情報と次に進む移動対象領域の情報とで構成された組み合わせ情報であることを特徴とする。
また、巡回ループ作成手段は、移動対象領域毎に巡回情報を設定することにより巡回ループを作成するとともに、作成した巡回ループの巡回情報を変更した巡回ループを作成する処理を繰り返すことを特徴とする。
また、巡回ルート作成手段は、巡回ループの巡回情報を変更した今回の巡回ループに基づいて作成した今回の巡回ルート、及び、巡回ループの巡回情報を変更する前の前回の巡回ループに基づいて作成された前回の巡回ルートのうち、どちらの巡回ルートを残すかを判定する判定手段を備えたことを特徴とする。
また、巡回ルート作成手段は、巡回ループの巡回情報を変更した今回の巡回ループに基づいて作成した今回の巡回ルートの移動コストと、巡回ループの巡回情報を変更する前の前回の巡回ループに基づいて作成された前回の巡回ルートの移動コストとを比較して、移動コストの小さい巡回ルートを残す判定手段を備えたことを特徴とする。
また、複数の移動対象領域の位置情報に基づいて画面上に対象となる複数の移動対象領域の画像を表示させる表示制御手段を備え、表示制御手段が、画面上に表示された各移動対象領域に対する巡回パターンを、予め決められた所定の複数の巡回パターンの中から選択して巡回パターン設定手段に指示するための巡回パターン設定ガイド画像を画面上に表示する機能を備え、巡回パターン設定手段は、巡回パターン設定ガイド画像を介して指定の移動対象領域に対する巡回パターンを指定した場合に、指定された巡回パターンを指定の移動対象領域内の巡回パターンとして設定することを特徴とする。
また、複数の移動対象領域の位置情報に基づいて画面上に対象となる複数の移動対象領域の画像を表示させる表示制御手段を備え、表示制御手段が、画面上に表示された各移動対象領域間での巡回順を巡回順設定手段に指示するための巡回順設定ガイド画像を画面上に表示する機能を備え、巡回順設定手段は、巡回順設定ガイド画像を介して移動対象領域間での巡回順を指定した場合に、当該移動対象領域間での巡回順を指定の巡回順に設定することを特徴とする。
また、上述した手段により実現される巡回ルート自動作成機能、及び、上述した手段により実現される巡回ルート手動作成機能のうち、どちらの作成機能で巡回ルートを作成させるかを選択させる選択手段を備えたことを特徴とする。
また、作成された巡回ルート上で移動体を巡回させる場合の移動体の移動コストを画面上に表示する移動コスト表示手段を備えたことを特徴とする。
また、移動対象領域は、XY座標情報に基づいて区画された領域であり、移動対象領域内の巡回パターンは、X軸に沿ってジグザグに進むX方向巡回パターン、又は、Y軸に沿って進むジグザグなY方向巡回パターンであり、X方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とする第1パターン、移動開始位置をX座標最小値Y座標最小値の位置とする第2パターン、移動開始位置をX座標最大値Y座標最大値の位置とする第3パターン、移動開始位置をX座標最大値Y座標最小値の位置とする第4パターンであり、Y方向巡回パターンは、移動開始位置をX座標最小値Y座標最大値の位置とする第5パターン、移動開始位置をX座標最大値Y座標最大値の位置とする第6パターン、移動開始位置をX座標最小値Y座標最小値の位置とする第7パターン、移動開始位置をX座標最大値Y座標最小値の位置とする第8パターンであることを特徴とする。
本発明によれば、複数の移動対象領域を移動体に巡回させるための効率的な巡回ルートを作成可能な巡回ルート作成装置を提供できるようになる。
【図面の簡単な説明】
【0006】
図1】移動対象領域及び障害物領域の作成処理(phase1)の説明図。
図2】障害物グループ分け処理(phase2)の説明図。
図3】障害物角認識処理(phase3)の説明図。
図4】障害物間境界線作成処理(phase4)の説明図。
図5】分割領域区分け処理(phase5)の説明図。
図6】分割領域区分け処理(phase5)の説明図。
図7】分割領域認識処理(phase6)の説明図。
図8】分割領域認識処理(phase6)の説明図。
図9】等間隔直線経路作成処理(phase7)の説明図。
図10】交点座標抽出処理(phase8)の説明図。
図11】エリア毎交点座標抽出処理(phase9)及び分割領域内ジグザグ移動予定ルート作成処理(phase10)の説明図。
図12】分割領域内ジグザグ移動予定ルート作成処理(phase10)及び分割領域間移動予定ルート作成処理(phase11)の説明図。
図13】移動対象領域及び障害物領域の作成処理(phase1)の手順を示すフローチャート。
図14】障害物グループ分け処理(phase2)の手順を示すフローチャート。
図15】障害物角認識処理(phase3)の手順を示すフローチャート。
図16】障害物間境界線作成処理(phase4)の手順を示すフローチャート。
図17】分割領域区分け処理(phase5)の手順を示すフローチャート。
図18】分割領域認識処理(phase6)の手順を示すフローチャート。
図19】等間隔直線経路作成処理(phase7)及び交点座標抽出処理(phase8)の手順を示すフローチャート。
図20】エリア毎交点座標抽出処理(phase9)の手順を示すフローチャート。
図21】分割領域内ジグザグ移動予定ルート作成処理(phase10)の手順を示すフローチャート。
図22】移動コスト計算処理(phase11)の手順を示すフローチャート。
図23】別ルート作成処理(phase12~16)の手順を示すフローチャート。
図24】ルート選択処理(phase17)の手順を示すフローチャート。
図25】分割領域間移動予定ルート作成処理(phase18)の手順を示すフローチャート。
図26】分割領域認識処理(phase6)の説明図。
図27】分割領域認識処理(phase6)の説明図。
図28】分割領域認識処理(phase6)の説明図。
図29】エリア毎交点座標抽出処理(phase9)及び分割領域内ジグザグ移動予定ルート作成処理(phase10)の説明図。
図30】分割領域内ジグザグ移動予定ルート作成処理(phase10)の説明図。
図31】移動体の一例を示す斜視図。
図32】巡回パターンを例示した図。
図33】SA処理の概略フローチャート。
図34】初期巡回ループ作成処理を示すフローチャート。
図35】初期温度設定処理、巡回ルートコスト計算処理、及び改変受入可否判定処理を示すフローチャート。
図36】エリア間ルートの改変処理、及び、巡回パターンの改変処理を示すフローチャート。
図37】エリア間ルートの改変処理の説明図。
図38】エリア間ルートの改変処理の説明図。
図39】エリア間ルートの改変処理の説明図。
図40】エリア間ルートの改変処理の説明図。
図41】エリア間ルートの改変処理の説明図。
図42】エリア間ルートの改変処理の説明図。
図43】焼きなまし法(SA)の概念説明図。
図44】初期巡回情報配列及び初期巡回ループを示す図。
図45】巡回情報配列の一例を示す。
図46】エリア間ルートの改変処理の説明図。
図47】遺伝的アルゴリズム法(GA)の概略フローチャート。
図48】初期世代個体生成処理を示すフローチャート。
図49】個体評価処理を示すフローチャート。
図50】交叉処理を示すフローチャート。
図51】突然変異処理を示すフローチャート。
図52】致死的遺伝情報を持つ個体の説明図。
図53】致死的遺伝情報を持つ個体の説明図。
図54】基本の交叉処理の説明図。
図55】例外的交叉処理の説明図。
図56】例外的交叉処理の説明図。
図57】例外的交叉処理の説明図。
図58】表示手段の画面上に設定される処理選択画面を示す図。
図59】表示手段の画面上に設定される処理選択画面を示す図。
図60】巡回ルート作成装置の使用方法を示すフローチャート。
図61】区画分け処理の説明図。
図62】「区画の生成」ボタン30をクリックした場合の処理フローチャート。
図63】「巡回ルートの生成」ボタン31をクリックした場合の処理フローチャート。
図64】[区画・巡回ルート生成]の「高度な設定」ボタン32をクリックした場合の処理フローチャート。
図65】「デフォルトに戻す」ボタン34、「反映して終了」ボタン35をクリックした場合の処理フローチャート。
図66】[地図・巡回ルートを開く]の「新規で開く」ボタン1をクリックした場合の処理フローチャート。
図67】[地図・巡回ルートを開く]の「探索済地図を開く」ボタン2をクリックした場合の処理フローチャート。
図68】[地図・巡回ルートを保存]の「新規の工事名で保存」ボタン3をクリックした場合の処理フローチャート。
図69】[地図・巡回ルートを保存]の「上書き保存」ボタン4をクリックした場合の処理フローチャート。
図70】[GAで巡回ルートを探索]の「新規で巡回ルートを探索開始」ボタン5をクリックした場合の処理フローチャート。
図71】[GAで巡回ルートを探索]の「探索済巡回ルートを初期世代個体の一つにして探索開始」ボタン6をクリックした場合の処理フローチャート。
図72】[GAで巡回ルートを探索]の「処理を中止」ボタン7をクリックした場合の処理フローチャート。
図73】[GAで巡回ルートを探索]の「高度な設定」ボタン8、「デフォルトに戻す」ボタン16、「反映して終了」ボタン17をクリックした場合の処理フローチャート。
図74】[[SAで巡回ルートを探索]の「新規で巡回ルートを探索開始」ボタン9をクリックした場合の処理フローチャート。
図75】[GAで巡回ルートを探索]の「探索済巡回ルートを初期世代個体の一つにして探索開始」ボタン10をクリックした場合の処理フローチャート。
図76】[SAで巡回ルートを探索]の「処理を中止」ボタン11をクリックした場合の処理フローチャート。
図77】[SAで巡回ルートを探索]の「高度な設定」ボタン12をクリックした場合の処理フローチャート。
図78】「デフォルトに戻す」ボタン21、「反映して終了」ボタン22をクリックした場合の処理フローチャート。
図79】手動で巡回ルートを設定する場合、「元に戻す」ボタン23-1、「やり直し」ボタン23-2をクリックした場合の処理フローチャート。
図80】選択ボタン23-3~23-10の何れかをクリックした場合の処理フローチャート。
図81】「エリア間ルートを設定」ボタン23-11、「エリア間ルートを削除」ボタン23-12、「このエリアを無効化」ボタン23-13、「このエリアを有効化」ボタン23-14をクリックした場合の処理フローチャート。
図82】コストログ表示欄Cのいずれかの行24が強調表示されている状態でクリックした場合の処理フローチャート。
図83】「現在の巡回ルートをアニメーションで表示する」ボタン25をクリックした場合の処理フローチャート。
図84】「障害物を避ける巡回ルートを再計算」ボタン26をクリックした場合の処理フローチャート。
図85】終了ボタン29をクリックした場合の処理フローチャート。
【発明を実施するための形態】
【0007】
前提技術
まず、本発明に係る巡回ルート作成装置の実施形態を説明する前に、本発明に係る巡回ルート作成装置の前提装置(前提技術)となる移動予定ルート作成装置を、段落0007乃至段落0053、図1乃至図31に基づいて説明する。
本発明に係る巡回ルート作成装置の前提装置となる移動予定ルート作成装置は、移動体を移動対象領域内の障害物を避けて移動させるための移動体の移動予定ルート、即ち、当該移動対象領域内を移動させる移動体の障害物回避移動予定ルートを作成する装置である。
当該移動体の移動予定ルート作成装置は、移動対象領域作成手段と、障害物領域作成手段と、移動可能領域分割手段と、分割領域内移動予定ルート作成手段と、分割領域間移動予定ルート作成手段とを備える。
即ち、移動対象領域作成手段は、移動対象領域の位置を示す移動対象領域のXY座標情報(即ち、移動対象領域の平面座標情報)に基づいて移動対象領域を区画する移動対象領域境界線で囲まれた移動対象領域を作成する手段である。
障害物領域作成手段は、移動対象領域内の障害物の位置を示すXY座標情報に基づいて移動対象領域内に存在する障害物を区画する障害物領域境界線で囲まれた障害物領域を作成する手段である。
移動可能領域分割手段は、移動対象領域の位置を示すXY座標情報及び移動対象領域内の障害物の位置を示すXY座標情報を利用して障害物を避けた移動可能領域内を複数の分割領域に分割する手段である。
分割領域内移動予定ルート作成手段は、複数の各分割領域内での移動体の移動予定ルートを作成する手段である。
分割領域間移動予定ルート作成手段は、分割領域間での移動体の移動予定ルートを作成する手段である。
【0008】
そして、移動可能領域分割手段は、分割領域作成手段と、分割領域認識手段とを備える。
当該分割領域作成手段は、障害物同士を繋ぐ第1の境界線、障害物と移動対象領域境界線とを繋ぐ第2の境界線、障害物と第1の境界線又は第2の境界線とを繋ぐ第3の境界線を作成して、移動対象領域内をこれら境界線で区画することにより、これら境界線、障害物領域境界線、移動対象領域境界線で形成された分割領域境界線で囲まれた分割領域を作成する手段である。
分割領域認識手段は、複数の各分割領域及び各障害物領域にそれぞれ識別情報を付与して複数の各分割領域を認識する手段である。
また、分割領域内移動予定ルート作成手段は、横直線作成手段と、縦直線作成手段と、第1の交点認識手段と、第2の交点認識手段と、第1のルート作成手段と、第2のルート作成手段と、第1の移動効率算出手段と、ルート選択手段とを備える。
横直線作成手段は、移動対象領域をY軸に沿って等間隔に区切るX軸と平行な複数の横直線を作成する手段である。
縦直線作成手段は、移動対象領域をX軸に沿って等間隔に区切るY軸と平行な複数の縦直線を作成する手段である。
第1の交点認識手段は、分割領域境界線と横直線との交点を認識する手段である。
第2の交点認識手段は、分割領域境界線と縦直線との交点を認識する手段である。
第1のルート作成手段は、各分割領域境界線上の交点を横直線で繋いで形成されたY軸に沿って進む分割領域毎のジグザグな第1のルートを作成する手段である。
第2のルート作成手段は、各分割領域境界線上の交点を縦直線で繋いで形成されたX軸に沿って進む分割領域毎のジグザグな第2のルートを作成する手段である。
第1の移動効率算出手段は、分割領域毎の第1のルートに沿って移動する場合の移動効率を算出する手段である。
第2の移動効率算出手段は、分割領域毎の第2のルートに沿って移動する場合の移動効率を算出する手段である。
ルート選択手段は、同じ分割領域内を第1のルートに沿って移動する場合の移動効率と第2のルートに沿って移動する場合の移動効率とを比較して、第1のルート及び第2のルートのうち移動効率の良いルートを当該分割領域内での移動予定ルートとして選択する手段である。
そして、上記分割領域作成手段は、より具体的には、移動対象領域内に存在する複数の障害物を、X座標情報の近いもの同士、Y座標情報の近いもの同士に、グループ分けする障害物グループ分け手段と、各障害物の複数の角にそれぞれ識別情報を付与して障害物の角を認識する障害物角認識手段と、X座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線、及び、Y座標情報の近いもの同士としてグループ分けされた一方の障害物の角と他方の障害物の角とを接続する第1の接続線を作成する第1の接続線作成手段と、障害物のうち第1の接続線が接続されていない角と移動対象領域境界線とを接続する第2の接続線を作成する第2の接続線作成手段と、障害物のうち第1の接続線及び第2の接続線が接続されていない角と既に作成した第1の接続線又は第2の接続線とを接続する第3の接続線を作成する第3の接続線作成手段とを備えた構成とした。
また、上記分割領域間移動予定ルート作成手段は、より具体的には、一方の分割領域の分割領域内移動予定ルートの終点と他方の分割領域の分割領域内移動予定ルートの始点とを直線で繋いだ分割領域間移動予定ルートを作成する分割領域間直線移動予定ルート作成手段と、分割領域間直線移動予定ルート作成手段で作成した分割領域間直線移動予定ルートと移動対象領域境界線又は障害物領域境界線とが接触した場合に、移動対象領域境界線又は障害物領域境界線と接触しない分割領域間移動予定ルートである分割領域間迂回移動予定ルートを作成する分割領域間迂回移動予定ルート作成手段とを備えた構成とした。
【0009】
本発明による巡回ルート作成装置の前提装置となる移動予定ルート作成装置を構成する、移動対象領域作成手段、障害物領域作成手段、障害物グループ分け手段、障害物角認識手段、第1の接続線作成手段、第2の接続線作成手段、第3の接続線作成手段、分割領域認識手段、横直線作成手段、縦直線作成手段、第1の交点認識手段、第2の交点認識手段、第1のルート作成手段、第2のルート作成手段、第1の移動効率算出手段、第2の移動効率算出手段、ルート選択手段、分割領域間移動予定ルート作成手段は、制御手段により実現され、当該各手段を実行する制御手段は、各手段が実行する処理の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータ等のハードウエア資源とにより構成される。
換言すれば、前提装置の移動予定ルート作成処理プログラムは、コンピュータを、上述した移動対象領域作成手段、障害物領域作成手段、障害物グループ分け手段、障害物角認識手段、第1の接続線作成手段、第2の接続線作成手段、第3の接続線作成手段、分割領域認識手段、横直線作成手段、縦直線作成手段、第1の交点認識手段、第2の交点認識手段、第1のルート作成手段、第2のルート作成手段、第1の移動効率算出手段、第2の移動効率算出手段、ルート選択手段、分割領域間移動予定ルート作成手段として機能させるプログラムである。
【0010】
上述した移動対象領域作成手段及び障害物領域作成手段により、図1図13に示した移動対象領域及び障害物領域の作成処理(phase1)が実行される。
障害物グループ分け手段により、図2図14に示した障害物グループ分け処理(phase2)が実行される。
障害物角認識手段により、図3図15に示した障害物角認識処理(phase3)が実行される。
第1の接続線作成手段により、図4図16に示した障害物間境界線作成処理(phase4)が実行される。
第2の接続線作成手段及び第3の接続線作成手段により、図5図6図17に示した分割領域区分け処理(phase5)が実行される。
分割領域認識手段により、図7図8図18図26乃至図28に示した分割領域認識処理(phase6)が実行される。
また、横直線作成手段により、図9図19に示した等間隔直線経路作成処理(phase7)が実行される。
第1の交点認識手段により、図10図19に示した交点座標抽出処理(phase8)、及び、図11図20図29に示したエリア毎交点座標抽出処理(phase9)が実行される。
第1のルート作成手段により、図12図21図29図30に示した分割領域内ジグザグ移動予定ルート作成処理(phase10)が実行される。
第1の移動効率算出手段により、分割領域毎の第1のルートに沿って移動する場合の図22に示した移動コスト計算処理(phase11)が実行される。
縦直線作成手段により、等間隔直線経路作成処理(phase7)を置き換えた処理である図23のステップS230に示したphase12が実行される。
第2の交点認識手段により、交点座標抽出処理(phase8)を置き換えた処理である図23のステップS240に示したphase13、及び、エリア毎交点座標抽出処理(phase9)と同じ処理である図23のステップS250に示したphase14が実行される。
第2のルート作成手段により、分割領域内ジグザグ移動予定ルート作成処理(phase10)を置き換えた処理である図23のステップS260に示したphase15が実行される。
第2の移動効率算出手段により、図23のステップS270に示したphase16が実行される。つまり、分割領域毎の第2のルートに沿って移動する場合において、図22に示した移動コスト計算処理(phase11)と同じ移動コスト計算処理が実行される。
ルート選択手段により、図24に示したルート選択処理(phase17)が実行される。
分割領域間移動予定ルート作成手段により、図12図25に示した分割領域間移動予定ルート作成処理が実行される。
尚、分割領域間移動予定ルート作成手段の分割領域間直線移動予定ルート作成手段によって、分割領域間直線移動予定ルート作成処理(図25の経路探索アルゴリズム部分以外の部分)が実行されるとともに、分割領域間移動予定ルート作成手段の分割領域間迂回移動予定ルート作成手段によって、分割領域間迂回移動予定ルート作成処理としての図25の経路探索アルゴリズム部分の処理が実行される。
【0011】
移動体は、移動予定ルート作成装置により作成された移動予定ルートに基づいて、移動対象領域内の移動対象面である例えば床面を移動することができるように構成された移動体1である(図31参照)。
制御手段は、例えば図31に示すように、移動体1に搭載されている。
従って、この場合、移動体1の移動予定ルートを作成するとともに、当該作成された移動予定ルート(移動予定情報(XY座標情報))に基づいて移動体1の移動制御を行う制御手段50を備えた移動体1となる。
尚、移動体1の移動予定ルートを作成する制御手段は、移動体1に搭載されたコンピュータではなく、移動体1とは別個のパーソナルコンピュータ等のコンピュータと、当該コンピュータにより処理される上述した処理プログラムとにより構成されてもよい。この場合、当該コンピュータに、後述するように、移動体1を移動させる移動対象領域のXY座標情報と当該移動対象領域内の障害物のXY座標情報とを入力して、移動対象領域及び障害物を認識させて、移動予定ルートを作成させる。そして、当該作成された移動予定ルートを移動体1の制御手段に入力することによって、当該移動体1の制御手段が、当該移動予定ルートに基づいて移動体1を移動対象領域内の移動可能領域内で移動させることができるようになる。
【0012】
移動予定ルート作成処理においては、まず、例えば屋内における移動対象領域Aとしての例えば床面領域と壁との境界位置における壁の角のXY座標情報、及び、当該移動対象領域Aとしての床面領域内に存在する障害物Bとしての柱(以下、柱Bという)の角のXY座標情報を、コンピュータに予め入力しておく。これにより、コンピュータは、入力されたXY座標情報を、当該コンピュータが管理する表示画面D上でのXY座標情報に変換して、記憶手段に記録する。
即ち、予めコンピュータに、移動対象領域Aの位置を示す移動対象領域のXY座標情報として、床面領域と壁との境界位置における壁の角のXY座標情報と、柱(障害物)Bの位置を示すXY座標情報として、柱Bの角のXY座標情報とを入力しておく。
尚、コンピュータは、当該移動対象領域A及び柱(障害物)Bを認識して例えば表示画面Dに表示し(図1参照)、最終的には、作成した移動予定ルートを認識して例えば表示画面Dに表示する(図12参照)。
【0013】
尚、上述したXY座標情報は、移動対象領域Aでの実際のXY座標情報、及び、表示画面Dを制御するコンピュータが当該実際のXY座標情報に基づいて表示画面D上で管理するXY座標情報である。
コンピュータが表示画面D上で管理する、X軸方向の最小間隔、及び、Y軸方向の最小間隔は、コンピュータが搭載するXY座標間隔設定プログラムに基づいて、実際の移動対象領域A上における一定の間隔に設定できるようになっている。
例えば、コンピュータが表示画面D上で管理するX軸方向の最小間隔及びY軸方向の最小間隔が、実際の10cmに対応するように設定される。この場合、例えば実際の移動対象領域Aの外に設定された基準点OからX軸方向の正方向に10cm離れた位置a、当該位置aからY軸方向の正方向に10cm離れた位置bは、コンピュータによって、表示画面D上における基準点Oを基準としたXY座標値、a=(1,0),b=(1,1)として記録されて管理されることになる。
また、実際の移動対象領域Aを区画する壁の角のXY座標情報、実際の各柱B,B…の各角のXY座標情報は、例えば、実際の移動対象領域Aの外に設定された基準点Oから、壁の各角の位置までの距離、当該基準点Oから各柱B,B…の各角の位置までの距離を、測距計などの測定手段を用いて測定した測定値を入力したり、あるいは、設計図等から入力することにより、記憶手段に記録される。
例えば、図1に示すように、移動対象領域Aの一番左下の角から左斜め下の位置を基準点Oに決めた場合を例にして説明する。
この場合、測定した当該基準点Oから各角までの距離をコンピュータに入力することで、当該コンピュータが、XY座標間隔設定プログラムに基づいて、例えば距離10cmを表示画面DのXY座標軸上の一目盛に換算したXY座標値としてファイルに記録する。
例えば、ある角が、当該基準点OからX軸方向の正方向に100cm、基準点OからY軸方向の正方向に100cm離れた位置にあれば、当該角のXY座標値は(10,10)として記録される。尚、例えば、ある角が、当該基準点OからX軸方向の正方向に94cm、当該原点からY軸方向の正方向に96cm離れた位置にあれば、例えば四捨五入されて、当該角のXY座標値は(9,10)として記録される。
【0014】
最初に、移動対象領域及び障害物領域の作成処理(phase1)では、コンピュータが、移動対象領域作成処理プログラム及び障害物領域作成処理プログラムの手順に従って、例えば図1に示すように、当該移動対象領域A及び移動対象領域A内の複数の柱B,B…を表示画面Dに表示する。
即ち、コンピュータが、例えば図1に示すように、表示画面Dに、移動対象領域A内と移動対象領域A外との境界線、即ち、移動対象領域境界線Cを作成することによって移動対象領域Aを表示するとともに、当該移動対象領域A内に存在する複数の柱B,B…を表示する。この場合、移動対象領域境界線Cは、例えば移動対象領域Aとしての床面領域と壁との境界位置における壁の角のXY座標情報を繋いで作成され、柱Bの境界線(障害物領域境界線)は、例えば柱Bの角のXY座標情報を繋いで作成される。
具体的には、コンピュータは、移動対象領域作成処理プログラム及び障害物領域作成処理プログラムの手順に従って、図13のフローチャートに示すような移動対象領域及び障害物領域の作成処理(phase1)を行う。
まず、移動対象領域Aの位置を示すXY座標情報、例えば移動対象領域Aを区切る壁(境界)の角のXY平面座標を記録したファイルからデータ(壁(境界)の角のXY座標値)を取り出すことにより、表示画面Dに移動対象領域境界線Cを作成する(ステップS1)。即ち、表示画面D上に、移動対象領域Aを区切る壁(境界)のすべての角を表示するとともに、各角を直線で繋ぐことにより、表示画面Dに移動対象領域境界線Cを表示する。
次に、柱本数管理変数初期化、即ち、柱本数管理変数nを1に設定する(ステップS2)。尚、柱本数管理変数とは、調べる対象となる柱を指定するための変数であり、記憶手段に逐次記録されて管理される。
そして、障害物として例えば柱Bの位置を示すXY座標情報、n番目の柱Bの角のXY座標を記録したファイルが存在するか否かを判定する(ステップS3)。
即ち、移動対象領域及び障害物領域の作成処理では、コンピュータが、移動対象領域Aの角、例えば移動対象領域Aとなる床面領域と壁との境界位置における壁の角のXY座標を記録した壁角座標記録ファイル、床面領域内に存在する各柱B,B…の角のXY座標を記録した柱角座標記録ファイル、柱本数管理変数レジスタのような記憶手段を使用して処理を行う。
次に、ステップS3において、n番目の柱の角のXY座標を記録したファイルが存在すると判定された場合、n番目の柱の角のXY座標を記録したファイルからデータを取り出して表示画面Dにn番目の柱を表示した(ステップS4)後、柱本数管理変数nをn+1に更新して(ステップS5)、ステップS3に戻る。
ステップS3において、n番目の柱の角のXY座標を記録したファイルが存在しないと判定された場合、移動対象領域A内のすべての柱Bが表示画面Dに表示されたことを認識して、移動対象領域及び障害物領域の作成処理(phase1)を終了し、障害物グループ分け処理(phase2)に進む。
以上の移動対象領域及び障害物領域の作成処理(phase1)により、例えば図1に示すように、表示画面Dに、移動対象領域Aの境界となる移動対象領域境界線Cと、移動対象領域A内に存在するn個の柱(柱内領域(障害物領域))B,B…が表示される(例えば図1に示すように、B(n)=B(1),B(2),B(3),B(4)の柱が表示される)。
つまり、コンピュータに認識された移動対象領域A及び柱(柱内領域(障害物領域))B,B…が作成されることになる。
【0015】
障害物グループ分け処理(phase2)では、コンピュータが、障害物グループ分け処理プログラムの手順に従って、図2に示すように、柱Bの中心座標を基準として、X座標値が近い柱B同士、Y座標値が近い柱B同士をそれぞれグルーピングする。グルーピングは番号を割り振ることで行う。従って、各柱B,B…には、X軸方向の番号及びY軸方向の番号がそれぞれ割り付けられることになる。即ち、図2の最も左側の柱B(1)の番号は1-1となり、図2の最も右側の柱B(5)の番号は4-3となる。例えば、図2の最も右側の柱B(5)の番号4-3の意味は、当該柱B(5)は、X軸方向の4番目のグループに属し、かつ、Y軸方向の3番目のグループに属しているということを意味する。
【0016】
即ち、コンピュータは、障害物グループ分け処理プログラムの手順に従って、図14のフローチャートに示すような障害物グループ分け処理(phase2)を行う。
障害物グループ分け処理(phase2)では、まず、変数初期化処理を行う。即ち、柱本数管理変数nを0、比較対象管理変数pを0、グループ番号変数gxを1に設定する。(ステップS11)。
即ち、障害物グループ分け処理では、コンピュータが、柱本数管理変数レジスタ、比較対象管理変数レジスタ、グループ番号変数レジスタ、柱グループ番号記録ファイルのような記憶手段を使用して処理を行う。
次に、柱本数管理変数nの値と柱の本数が一致しているか否かを判定する(ステップS12)。
ステップS12において、nの値と柱の本数が一致していないと判定された場合、グループ化未処理の柱が存在していると認識して、柱本数管理変数nをn+1に設定してグループ化対象の柱を更新し(ステップS13)、n番(例えば図2の柱Bのカッコ内の番号)目の柱に既にX軸方向グループ番号gxが付与されているか否かを判定する(ステップS14)。例えば、n=1(1番目)の柱(例えば図2の柱B(1))に既にX軸方向グループ番号gxが付与されているか否かを判定する。尚、図2の場合、柱の本数が「5」であり、nの値の最大値は「5」である。
ステップS14において、n番目の柱にX軸方向グループ番号gxが付与されていないと判定された場合、n番目の柱にX軸方向グループ番号gxを付与する(ステップS15)。グループ番号は、各柱のグループ番号を記録する柱グループ番号記録ファイルに記録される。
その後、n+pの値と柱の本数が一致しているか否かを判定する(ステップS16)。
尚、比較対象管理変数pとは、比較対象となる柱のことであり、例えば、図2の柱B(1)の比較対象となる柱は、図2の柱B(2),柱B(3),柱B(4),柱B(5)であり、この場合、例えば、図2の柱B(2)のpの値は1,柱B(3)のpの値は2,柱B(4)のpの値は3,柱B(5)のpの値は4となる。従って、図2の場合、1番目の柱B(1)では比較対象となる柱の数pの最大値は4であり、2番目の柱B(2)では比較対象となる柱の数pの最大値は3であり、3番目の柱B(3)では比較対象となる柱の数pの最大値は2であり、4番目の柱B(4)では比較対象となる柱の数pの最大値は1となるので、n+pの値の最大値と柱の本数とが一致する。即ち、図2の場合、柱の本数が「5」であり、n+pの値の最大値も「5」である。
ステップS16において、n+pの値と柱の本数が一致していないと判定された場合、比較対象となる柱が残っていると認識して、pをp+1に設定して比較対象となる柱を更新し(ステップS17)、n番目の柱の中心座標(以下、「柱の重心」という)とn+p番目の柱の重心のX座標の差exを計算した(ステップS18)後、差exの絶対値が基準値E以下か否かを判定する(ステップS19)。
ステップS19において、差exの絶対値が基準値E以下であると判定された場合、n+p番目の柱に既にX軸方向グループ番号gxが付与されているか否かを判定する(ステップS20)。
ステップS20において、n+p番目の柱に既にX軸方向グループ番号gxが付与されていると判定された場合、ステップS16に戻って、n番目の柱と次の比較対象であるn+p番目の柱との比較処理(ステップS17~ステップS19)を行う。
ステップS20において、n+p番目の柱にX軸方向グループ番号gxが付与されていないと判定された場合、n+p番目の柱にX軸方向グループ番号gxを付与した(ステップS21)後、ステップS16に戻って、n番目の柱と次の比較対象であるn+p番目の柱との比較処理(ステップS17~ステップS19)を行う。
即ち、n番目の柱の重心とn+p番目の柱の重心のX座標の差exの絶対値が基準値E以下であれば、n+p番目の柱には、n番目の柱に付与されているX軸方向グループ番号gxと同じ番号が付与される。
また、ステップS19において、差exの絶対値が基準値E以下でない場合(ステップS19でNo)は、ステップS16に戻って、n番目の柱と次の比較対象であるn+p番目の柱との比較処理(ステップS17~ステップS19)を行う。
また、ステップS16において、n+pの値と柱の本数が一致していると判定された場合、gxをgx+1に設定するとともに、pを0に設定して(ステップS22)、ステップS12に戻る。つまり、比較対象であるn+p番目の柱に対するX軸方向グループ番号を更新してn番目の柱との比較処理に進む。
尚、ステップS19において、重心のX座標の差exの絶対値が基準値E以下でないと判定されたn+p番目の柱には、X軸方向グループ番号の付与処理が終了するまでには、ステップS22を経て、X軸方向グループ番号が付与されることになる。
ステップS14において、n番目の柱に既にX軸方向グループ番号gxが付与されていると判定された場合、ステップS12に戻る。
また、ステップS12において、nの値と柱の本数が一致していると判定された場合、すべての柱にX軸方向グループ番号gxが付与されたことを認識し、Y軸方向グループ番号gyの付与について、X軸方向グループ番号gxの付与と同様の処理を行う(ステップS23)ことによって、障害物グループ分け処理(phase2)を終了し、次の処理である、障害物角認識処理(phase3)に進む。
【0017】
障害物角認識処理(phase3)では、コンピュータが、障害物角認識処理プログラムの手順に従って、例えば図3に示すように、断面正方形状の柱B1、断面長方形状の柱B2、断面円形状の柱B3、断面L字形状の柱B4等の柱Bの角に番号を付けて柱Bの角を認識する。
尚、例えば図3に示すように、各柱B,B…の各角部に1~4までの番号を1つずつ付けていくが、断面円形状の柱B3(丸柱)のように角部が無い場合は、丸柱の外周円においてX軸に平行で丸柱の中心座標を通過する直線とY軸に平行で丸柱の中心座標を通過する直線とに交差する4点を角と見做して当該4つの角にそれぞれ番号を付与する。
【0018】
即ち、コンピュータは、障害物角認識処理プログラムの手順に従って、図15のフローチャートに示すような障害物角認識処理(phase3)を行う。
障害物角認識処理(phase3)においては、まず、柱本数管理変数初期化処理を行う。即ち、柱本数管理変数nを0に設定する(ステップS31)。
次に、nの値と柱の本数が一致しているか否かを判定する(ステップS32)。
ステップS32において、nの値と柱の本数が一致していないと判定された場合、番号付け未処理の柱が存在していることを認識して、nをn+1に更新した(ステップS33)後、n番目の柱の角のうち、最もY軸座標の値が大きい角が複数あるか否かを判定する(ステップS34)。
ステップS34において、n番目の柱の角のうち、最もY軸座標の値が大きい角が1つであると判定された場合(ステップS34でNo)、n番目の柱について、最もY軸座標の値が大きい角に角番号1を付与し(ステップS35、例えば図3の柱B1、柱B3参照)、その後、n番目の柱の角のうち、最もX軸座標の値が大きい角が複数あるか否かを判定する(ステップS37)。尚、角番号は、各柱の角番号を記録する柱角番号記録ファイルに記録される。
即ち、障害物角認識処理では、コンピュータが、柱本数管理変数レジスタ、柱角座標記録ファイル、柱角番号記録ファイルのような記憶手段を使用して処理を行う。
ステップS34において、n番目の柱の角のうち、最もY軸座標の値が大きい角が複数あると判定された場合(ステップS34でYes)、n番目の柱について、最もY軸座標の値が大きい角同士を比較し、最もX軸座標の値が小さい角に角番号1を付与する(ステップS36、例えば図3の柱B2、柱B4参照)。つまり、最もY軸座標の値が大きい複数の角のうちX軸座標の値が小さい方の角に角番号1を付与し、その後、ステップS37に進む。
ステップS37において、n番目の柱の角のうち、最もX軸座標の値が大きい角が1つであると判定された場合(ステップS37でNo)、n番目の柱について、最もX軸座標の値が大きい角に角番号2を付与し(ステップS38、例えば図3の柱B1、柱B3参照)、その後、n番目の柱の角のうち、最もY軸座標の値が小さい角が複数あるか否かを判定する(ステップS40)。
ステップS37において、n番目の柱の角のうち、最もX軸座標の値が大きい角が複数あると判定された場合(ステップS37でYes)、n番目の柱について、最もX軸座標の値が大きい角同士を比較し、最もY軸座標の値が大きい角に角番号2を付与する(ステップS39、例えば図3の柱B2、柱B4参照)。つまり、最もX軸座標の値が大きい複数の角のうちY軸座標の値が大きい方の角に角番号2を付与し、その後、ステップS40に進む。
ステップS40において、n番目の柱の角のうち、最もY軸座標の値が小さい角が1つであると判定された場合(ステップS40でNo)、n番目の柱について、最もY軸座標の値が小さい角に角番号3を付与し(ステップS41、例えば図3の柱B1、柱B3参照)、その後、n番目の柱の角のうち、最もX軸座標の値が小さい角が複数あるか否かを判定する(ステップS43)。
ステップS40において、n番目の柱の角のうち、最もY軸座標の値が小さい角が複数あると判定された場合(ステップS39でYes)、n番目の柱について、最もY軸座標の値が小さい角同士を比較し、最もX軸座標の値が大きい角に角番号3を付与する(ステップS42、例えば図3の柱B2、柱B4参照)。つまり、最もY軸座標の値が小さい複数の角のうちX軸座標の値が大きい方の角に角番号3を付与し、その後、ステップS43に進む。
ステップS43において、n番目の柱の角のうち、最もX軸座標の値が小さい角が1つであると判定された場合(ステップS43でNo)、n番目の柱について、最もX軸座標の値が小さい角に角番号4を付与し(ステップS44、例えば図3の柱B1、柱B3参照)、その後、ステップS32に戻る。
ステップS43において、n番目の柱の角のうち、最もX軸座標の値が小さい角が複数あると判定された場合(ステップS43でYes)、n番目の柱について、最もX軸座標の値が小さい角同士を比較し、最もY軸座標の値が小さい角に角番号4を付与する(ステップS45、例えば図3の柱B2、柱B4参照)。つまり、最もX軸座標の値が小さい複数の角のうちY軸座標の値が小さい方の角に角番号4を付与し、その後、ステップS32に戻る。
そして、ステップS32において、nの値と柱の本数が一致していると判定された場合、すべての柱B,B…の各角に番号が付与されたことを認識して、障害物角認識処理(phase3)を終了し、障害物間境界線作成処理(phase4)に進む。
【0019】
第1の接続線作成手段による障害物間境界線作成処理(phase4)では、コンピュータが、障害物間境界線作成処理プログラムの手順に従って、図4に示すように、柱B,B間の境界線、即ち、柱間境界線(障害物間境界線(第1の境界線))を作成する。例えば、同じグループ番号を持ち、かつ最も近い柱B,B同士の間に柱間境界線を作る。即ち、図4においては、X軸方向の同じ3グループである番号3-1の柱B(4)と番号3-3の柱B(3)とが柱間境界線Mで繋がれ、Y軸方向の同じ1グループである番号1-1の柱B(1)と番号3-1の柱B(4)とが柱間境界線Mで繋がれ、Y軸方向の同じ3グループである番号3-3の柱B(3)と番号4-3の柱B(5)とが柱間境界線Mで繋がれた例を示している。つまり、各柱毎に、境界線を繋ぐのに最適な柱を選択して、柱同士を境界線で繋ぐようにしている。
尚、図4においては、柱間境界線Mとして、X軸方向に沿ったクランク状の境界線、あるいは、Y軸方向に沿ったクランク状の境界線を作成した例を示したが、柱間境界線Mは、X軸方向及びY軸方向と交差する斜め直線状の境界線や、なめらかな曲線状の境界線を作成してもよい。
【0020】
即ち、コンピュータは、障害物間境界線作成処理プログラムの手順に従って、図16のフローチャートに示すような障害物間境界線作成処理(phase4)を行う。
まず、変数初期化処理を行う。即ち、柱本数管理変数nを0、比較対象管理変数pを0に設定する(ステップS51)。
次に、nの値と柱の本数が一致しているか否かを判定する(ステップS52)。
ステップS52において、nの値と柱の本数が一致していなければ(ステップS52でNo)、接続先候補登録変数sの初期化、即ち、sをNull(無)に設定(ステップS53)する。さらに、nをn+1に設定した(ステップS54)後、n番目の柱について、正のX軸方向に既に境界線が接続されているか否かを判定する(ステップS55)。
即ち、障害物間境界線作成処理では、コンピュータが、上述した柱本数管理変数レジスタ、比較対象管理変数レジスタ、接続先候補登録変数レジスタ、柱角座標記録ファイル、柱角番号記録ファイルのような記憶手段を使用して処理を行う。
尚、接続先候補登録変数sとは、接続候補を一時的に記録する変数のことである。
ステップS55において、n番目の柱について、正のX軸方向に境界線が接続されていなければ(ステップS55でNo)、n+pの値と柱の本数が一致しているか否かを判定する(ステップS56)。
ステップS56において、n+pの値と柱の本数が一致していなければ(ステップS56でNo)、比較対象となる柱が残っているということなので、pをp+1に更新した(ステップS57)後、n番目の柱のX軸方向グループ番号とn+p番目の柱のX軸方向グループ番号とが同一か否かを判定する(ステップS58)。
ステップS58において、n番目の柱のX軸方向グループ番号とn+p番目の柱のX軸方向グループ番号とが同一であると判定された場合、n+p番目の柱の重心(中心座標)はn番目の柱から見て正のX軸方向にあるか否かを判定する(ステップS59)。
ステップS58において、n番目の柱のX軸方向グループ番号とn+p番目の柱のX軸方向グループ番号とが同一ではないと判定された場合、ステップS56に戻る。
ステップS59において、n+p番目の柱の重心がn番目の柱から見て正のX軸方向にないと判定された場合、ステップS56に戻る。
ステップS59において、n+p番目の柱の重心がn番目の柱から見て正のX軸方向にあると判定された場合、s=Nullであるか否かを判定する(ステップS60)。
ステップS60において、s=Nullであれば、n番目の柱とn+p番目の柱の重心間の距離L*を計算した(ステップS61)後、n+pを接続先候補変数sに代入し(ステップS62)、ステップS56に戻る。
ステップS60において、s=Nullでなければ、n番目の柱とn+p番目の柱の重心間の距離Lを計算した(ステップS63)後、L*>Lであるか否かを判定する(ステップS64)。
ステップS64において、L*>Lであれば、L*にLを代入し(ステップS65)、n+pを接続先候補変数sに代入した(ステップS66)後に、ステップS56に戻る。
ステップS64において、L*>Lでなければ、ステップS56に戻る。
ステップS56において、n+pの値と柱の本数が一致していると判定された場合、s=Nullであるか否かを判定し(ステップS67)、s=Nullであれば、ステップS52に戻り、s=Nullでなければ、n番目の柱の2番角とs番目の柱の4番角の間に境界線M(例えば図4において柱B(1)の2番角から右方向に延長して柱B(4)の4番角に繋がる境界線M)を引き、その後、ステップS52に戻る。
そして、ステップS52において、nの値と柱の本数が一致していると判定された場合、正のX軸方向境界線への接続処理が終了し、その後、負のX軸方向境界線への接続処理、正のY軸方向境界線への接続処理、負のY軸方向境界線への接続処理のそれぞれについて、正のX軸方向境界線への接続処理と同様の処理で行う(ただし、X軸方向の境界線の接続は角番号2と角番号4とで行い、Y軸方向の境界線の接続は角番号1と角番号3とで行う)(ステップS69)。
そして、当該負のX軸方向境界線への接続処理、正のY軸方向境界線への接続処理、負のY軸方向境界線への接続処理が終了したら、次の分割領域区分け処理(phase5)に進む。
【0021】
以下、障害物間境界線作成処理(phase4)について、さらに具体的に説明する。
図4の柱を例にして説明すると、ステップS58で、n=1番目の柱としての柱B(1)とn+p=2番目の柱としての柱B(2)は、X軸方向グループ番号が同じではないので、ステップS57を経て、ステップS58で、柱B(1)とn+p=3番目の柱としての柱B(3)とが比較される。柱B(1)とB(3)もX軸方向グループ番号が同じではないので、さらに、ステップS57を経て、ステップS58で、柱B(1)とn+p=4番目の柱としての柱B(4)とが比較される。柱B(1)とB(4)は、X軸方向グループ番号が同じであり、ステップS59、ステップS60を経て、ステップS60において、柱B(1)とB(4)の重心間の距離L*が計算された後、柱B(4)の番号、n+p=「4」が、接続先候補変数sとして記憶される。その後、ステップS57を経て、ステップS58で、柱B(1)とn+p=5番目の柱としての柱B(5)とが比較される。柱B(1)とB(5)もX軸方向グループ番号が同じではないので、ステップS57に戻って、ステップS67を経て、ステップS68において、柱B(1)の2番角とB(4)の4番角とが境界線で繋がれる。
尚、図4の例では、X軸方向グループ番号が同じ柱が3つ以上存在しないが、例えば、図4において、柱B(1)及びB(4)とX軸方向グループ番号が同じ図外の柱B(6)が存在した場合には、ステップS63において、柱B(1)と当該柱B(6)の重心間の距離Lが計算される。その後、ステップS64において、柱B(1)と柱B(6)の重心間の距離Lが柱B(1)とB(4)の重心間の距離L*よりも小さければ、柱B(6)の番号、n+p=「6」が、接続先候補変数sとして記憶され、ステップS67を経て、ステップS68において、柱B(1)の2番角と柱B(6)の4番角とが境界線で繋がれることになる。
【0022】
第2の接続線作成手段及び第3の接続線作成手段による分割領域区分け処理(phase5)では、コンピュータが、分割領域区分け処理プログラムの手順に従って、図5に示すように、柱Bと移動対象領域境界線Cとを繋ぐ境界線N(第2の境界線)、又は、柱Bと柱間境界線M(第1の境界線)又は境界線N(第2の境界線)とを繋ぐ境界線Q(第3の境界線)を作成して、移動対象領域Aを境界線C,M,N,Qで区画された複数の移動可能領域となる複数の分割領域E,E…(図6参照)に区分けする。
つまり、障害物間境界線作成処理(phase4)において、柱間境界線Mで繋がれなかった柱Bの角部と移動対象領域境界線Cとを繋ぐ境界線N(第2の境界線)、又は、柱間境界線M(第1の境界線)で繋がれなかった柱Bの角部と柱間境界線M(第1の境界線)又は境界線N(第2の境界線)とを繋ぐ境界線Q(第3の境界線)を作成する。
これにより、移動対象領域Aが、境界線C,M,N,Qで区画された複数の移動可能領域となる複数の分割領域E,E…(図6参照)に区分けされることになる。
【0023】
即ち、コンピュータは、分割領域区分け処理プログラムの手順に従って、図17のフローチャートに示すような分割領域区分け処理(phase5)を行う。
分割領域区分け処理(phase5)では、まず、変数初期化処理を行う。即ち、柱本数管理変数nを0に設定する(ステップS71)。
次に、nの値と柱の本数が一致しているか否かを判定する(ステップS72)。
ステップS72において、nの値と柱の本数が一致していなければ、比較対象となる柱が残っているということなので、柱角番号管理変数初期化、即ち、柱角番号管理変数cを1に設定し(ステップS73)、さらに、柱本数管理変数nをn+1に更新し(ステップS74)、n番目の柱の角番号cの角について、既に境界線が接続されているか否かを判定する(ステップS75)。
即ち、分割領域区分け処理では、コンピュータが、柱本数管理変数レジスタ、柱角番号管理変数レジスタ、柱角座標記録ファイル、柱角番号記録ファイルのような記憶手段を使用して処理を行う。
ステップS75において、n番目の柱の角番号cの角に境界線が接続されていなければ、c=1であるか否かを判定する(ステップS76)。
ステップS76において、c=1でなければ、c=2であるか否かを判定する(ステップS77)。
ステップS77において、c=2でなければ、c=3であるか否かを判定する(ステップS78)。
ステップS78において、c=3でなければ、角番号4から壁、柱、境界線のいずれかに接触するまで負のX軸方向に境界線Nを伸ばす(ステップS79、例えば図5の柱B(1)、柱B(2)、柱B(3)参照)。その後、柱角番号管理変数cをc+1に更新し(ステップS80)、c=5であるか否かを判定する(ステップS81)。
ステップS76において、c=1であれば、角番号1から壁、柱、境界線のいずれかに接触するまで正のY軸方向に境界線Nを伸ばす(ステップS82、例えば図5の柱B(1)、柱B(2)、柱B(3)参照)。その後、ステップS80に進む。
また、ステップS77において、c=2であれば、角番号2から壁、柱、境界線のいずれかに接触するまで正のX軸方向に境界線Nを伸ばす(ステップS83、例えば図5の柱B(2)、柱B(4)参照)。その後、ステップS80に進む。
また、ステップS78において、c=3であれば、角番号3から壁、柱、境界線のいずれかに接触するまで負のY軸方向に境界線Nを伸ばす(ステップS84、例えば図5の柱B(1)、柱B(2)、柱B(4)参照)。その後、ステップS80に進む。
即ち、各角番号から境界線を伸ばす処理が終了した(ステップS82,ステップS83,ステップS84,ステップS79)後は、柱角番号管理変数cをc+1に更新し(ステップS80)、c=5であるか否かを判定する(ステップS81)。
ステップS81において、c=5であれば、ステップS72に戻り、次の比較対象となる柱への処理に移行する。
ステップS81において、c=5でなければ、ステップS75に戻り、ステップS75~ステップS84までの処理を行う。
そして、ステップS72において、nの値と柱の本数が一致していれば、分割領域区分け処理(phase5)を終了し、分割領域認識処理(phase6)に進む。
【0024】
分割領域認識処理(phase6)では、コンピュータが、分割領域認識処理プログラムの手順に従って、移動対象領域Aにおいて線で区切られた複数の各エリア(壁外領域(移動対象領域A外領域)、柱B内領域(障害物領域)、分割領域のすべて)にそれぞれ識別情報としての番号を所定の順番で付与することにより、複数の各分割領域E,E…を認識する。
当該分割領域認識処理(phase6)は、例えば、図8図23図25に示すような、塗りつぶし処理にてエリアを抽出していき、抽出したエリア毎に個別のエリア番号を付けた後、各分割領域E,E…を認識する処理である。
【0025】
コンピュータは、分割領域認識処理プログラムの手順に従って、図18のフローチャートに示すような分割領域認識処理(phase6)を行う。
分割領域認識処理では、コンピュータが、塗りつぶし判定兼エリア番号記録配列ファイル、X軸方向探索管理変数レジスタ、Y軸方向探索管理変数レジスタ、エリア番号管理変数レジスタ、X軸方向塗りつぶし管理変数レジスタ、Y軸方向塗りつぶし管理変数レジスタ、塗りつぶし管理ファイル、塗りつぶし管理変数一時保留レジスタのような記憶手段を使用し、これら記憶手段に記憶される値を参照しながら処理を行う。
まず、変数初期化を行う。即ち、塗りつぶし判定兼エリア番号記録配列Stack[Xmax][Ymax]を[0,0,0,・・・・]に、X軸方向探索管理変数iを0に、Y軸方向探索管理変数jを0に、エリア番号管理変数aを1に設定する(ステップS91)。つまり、X軸方向探索管理変数レジスタを0に、Y軸方向探索管理変数レジスタを0にして、塗りつぶし判定兼エリア番号記録配列ファイルにおける各XY座標位置の値を全部0に維持するとともに、エリア番号管理変数レジスタを1に設定して、移動対象領域Aの外側の領域を「1」に塗りつぶす処理から行う。
初めに、i>Xmaxであるか否かを判定し(ステップS92)、i>Xmaxでなければ、Stack[i][j]=0であるか否かを判定する(ステップS93)。
ステップS93において、Stack[i][j]=0であれば、Stack[i][j]を-1にする(ステップS94)ことにより、例えば、図8(b),(f)、図23(b),(d)、図24(b),(d),(f)、図25(b)の状態となる。
その後、塗りつぶし管理変数初期化、即ち、X軸方向塗りつぶし管理変数fiをiに、Y軸方向塗りつぶし管理変数fjをjに設定する(ステップS95)。
塗りつぶし管理とは、エリア毎に塗りつぶし処理を行う場合において、既にエリア番号が付けられたエリアの塗りつぶし処理を行わないために、各XY座標位置の値の管理を、塗りつぶし判定兼エリア番号記録配列ファイルとは別の塗りつぶし管理ファイルで行うようにしている。即ち、塗りつぶし判定兼エリア番号記録配列ファイルでの各XY座標位置の値であるStack[i][j]を、塗りつぶし管理ファイルでの各XY座標位置の値であるStack[fi][fj]に置き換えて管理する(例えば、図23(d)参照)ことにより、既にエリア番号が付けられたエリアの各XY座標位置の値の探索を行わないようにして、塗りつぶし処理の処理スピードを速くできるようにしている。
次に、fi>Xmaxであるか否かを判定する(ステップS97)。
ステップS97において、fi>Xmaxでなければ、Stack[fi][fj]=-1であるか否かを判定する(ステップS98)。
ステップS98において、Stack[fi][fj]=-1であれば(ステップS98でYES)、ステップS98Aに進んで、塗りつぶし管理変数一時保留レジスタにおいて、miをfiに設定し、mjをfjに設定してから、Stack[fi][fj]をaに設定する(ステップS99)。
そして、座標(fi+1,fj)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi+1][fj]が0であるか否かを判定する(ステップS100)。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のX軸方向+側の座標(fi+1,fj)との間に壁、柱、境界線が無く、かつ、座標(fi+1,fj)が0であれば(ステップS100でYesの場合)、Stack[fi+1][fj]を-1に設定する(ステップS104)。その後、ステップS101に進む。
ステップS100でNoの場合、即ち、(fi,fj)と(fi+1,fj)との間に壁、柱、境界線が通っていた場合、ステップS101に進んで、座標(fi-1,fj)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi-1][fj]が0であるか否かを判定する。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のX軸方向-側の座標(fi-1,fj)との間に壁、柱、境界線が無く、かつ、座標(fi-1,fj)が0であれば(ステップS101でYesの場合)、Stack[fi-1][fj]を-1に設定する(ステップS105)。その後、ステップS105Aに進んで、miをfi-1に設定(ただし、fi=0のときを除く)した後、ステップS102に進む。
ステップS101でNoの場合、即ち、(fi,fj)と(fi-1,fj)との間に壁、柱、境界線が通っていた場合、ステップS102に進んで、座標(fi,fj+1)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi][fj+1]が0であるか否かを判定する。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のY軸方向+側の座標(fi,fj+1)との間に壁、柱、境界線が無く、かつ、座標(fi,fj+1)が0であれば(ステップS102でYesの場合)、Stack[fi][fj+1]を-1に設定する(ステップS106)。その後、ステップS103に進む。
ステップS102でNoの場合、即ち、(fi,fj)と(fi,fj+1)との間に壁、柱、境界線が通っていた場合、ステップS103に進んで、座標(fi,fj-1)が存在し、かつ座標(fi,fj)との間に壁、柱、境界線が通っておらず、かつStack[fi][fj-1]が0であるか否かを判定する。つまり、a(最初は「1」)に設定された座標[fi][fj]と当該座標[fi][fj]のY軸方向-側の座標(fi,fj-1)との間に壁、柱、境界線が無く、かつ、座標(fi,fj-1)が0であれば(ステップS103でYesの場合)、Stack[fi][fj-1]を-1に設定する(ステップS107)。その後、ステップS107Aに進んで、mjをfj-1に設定(ただし、fi=0のときを除く)した後、ステップS103Aに進んで、fiをmiに、fjをmjに設定する。
ステップS103でNoの場合、即ち、(fi,fj)と(fi,fj-1)との間に壁、柱、境界線が通っていた場合も、ステップS103Aに進んで、fiをmiに、fjをmjに設定する。
ステップS103Aの処理後、ステップS97に戻る。
また、ステップS98において、Stack[fi][fj]=-1でなければ、fiをfi+1に設定して(ステップS108)、ステップS97に戻る。
ステップS97において、fi>Xmaxであれば、ステップS109に進んで、fiを0に、fjをfj+1に設定した後、fj>Ymaxであるか否かを判定する(ステップS110)。
ステップS110において、fj>Ymaxでなければ、ステップS98に進み、fj>Ymaxであれば、ステップS111に進む。
以上により、例えば、図8(c)~(f)、図23(c),(d)の状態となる。
ステップS111においては、a=1であるか否かを判定し、a=1でなければ、ステップS112に進んで、a番目の区画の4方向が柱(座標が解っている)と接しており、かつ接触している柱の番号nが全て同じであるか否かを判定する。
ステップS111においては、a=1であれば、a=1番目の区画を壁外であると判定し(ステップS115)、その後、ステップS112に進む。
ステップS112でNoであれば、aをa+1に設定し(ステップS113)、iをi+1に設定して(ステップS114)、ステップS92に戻る。
ステップS112でYesの場合、a番目の区画は、柱内であると判定し(ステップS116)、その後、ステップS113に進む。
即ち、領域の境界線の四方(図6の上下左右)が柱Bの境界線と一致し、柱Bの境界線が同じ番号の柱Bの境界線であるという柱内領域条件を満たすとコンピュータが判定した場合は、当該領域が柱内領域であると判定する。つまり、a=1ではなく、かつ、柱内領域条件を満たさない領域が、分割領域であると認識される。
換言すれば、ステップS110において、fj>Ymaxであると判定された場合、1つのエリアの塗りつぶし処理が終了し、ステップS111,112でNoであれば、その塗りつぶした領域が分割領域であり、当該分割領域に番号aが付与されて認識されることになる。
また、ステップS93において、Stack[i][j]=0でなければ、iをi+1に設定して(ステップS114)、ステップS92に戻る。
また、ステップS92において、i>Xmaxであれば、iを0、jをj+1に設定し(ステップS117)、その後、j>Ymaxであるか否かを判定し(ステップS118)、j>Ymaxでなければ、ステップS93に戻り、j>Ymaxであれば、分割領域認識処理(phase6)を終了する。
以上により、移動対象領域Aの分割処理(phase1~phase6)が終了し、続いて、移動ルートの作成処理(phase7~phase11)に進む。
【0026】
分割領域認識処理(phase6)を、上述したステップSと図8図26図28とを参照しながら説明する。
尚、図8では、2つのエリアを塗りつぶし処理にて抽出し、抽出したエリア毎に個別の番号を付けた例を示している。
図26図28では、複数のエリアを塗りつぶし処理にて抽出し、抽出したエリア毎に個別の番号を昇順に付けた例を示している。
まず、ステップS91では、図8(a),図26(a)に示すように、塗りつぶし判定兼エリア番号記録配列ファイル、即ち、移動対象領域A全体と移動対象領域Aの周辺を含む領域全体の各XY座標位置を示すXY座標マトリクスStack[Xmax][Ymax]の値を全部0にする。
そして、ステップS92,93,94,95を経て、図8(b),図26(b)に示す状態となる。
そして、ステップS97~S107Aを経て、図8(c)~(f),図26(c)に示す処理が行われる。
尚、ステップS105A、ステップS107Aは、図8(e)(f)に示すような凹部がある場合に座標位置を戻して検索する処理である。つまり、この場合、X方向における-方向やY方向における-方向に座標を戻して処理を行うために、当該戻した座標位置を、塗りつぶし管理変数一時保留レジスタに変数mi,mjとして一時的に保留して処理を行うようにしている。
そして、任意のエリアの座標すべてに番号aが付けられた後(ステップS110でYESの場合)、そのエリアが、壁外領域(移動対象領域A外領域)か、柱内領域が、分割領域かの判定が行われ(ステップS111,112)、その後、次のエリアの番号が更新されて(ステップS113)、次のエリアの塗りつぶし処理に移行していく(図8(f),(g)、図26(d)、図27(a)~(f)、図28(a)~(d)参照)。
ステップS113でエリア毎に昇順で番号が付けられる。尚、図26図28においては、エリアaに番号1が付与され、エリアbに番号2が付与され、エリアcに番号3が付与され、エリアdに番号4が付与され、エリアeに番号5が付与され、エリアfに番号6が付与された例を示している。つまり、各エリア毎に昇順で番号が付けられた例を示している。
【0027】
次に、移動ルートの作成処理(phase7~phase11)においては、まず、等間隔直線経路作成処理(phase7)が行われる。
等間隔直線経路作成処理(phase7)では、コンピュータが、等間隔直線経路作成処理プログラムの手順に従って、移動対象領域A内に、Y軸方向に沿った間隔が等間隔の複数の横直線S,S…を設定して、後述する分割領域内ジグザグ移動予定ルートの元となる等間隔直線経路を作成する。図9では、移動対象領域A内に、Y軸方向に沿った間隔が等間隔の複数の横直線S,S…を設定した例を示している。
即ち、等間隔直線経路作成処理(phase7)を実行する手段は、移動対象領域AをY軸に沿って等間隔に区切るX軸と平行な複数の横直線S,S…を作成する横直線作成手段として機能する。
【0028】
次に、交点座標抽出処理(phase8)では、コンピュータが、交点座標抽出処理プログラムの手順に従って、図10に示すように、各エリア(壁外領域(移動対象領域A外領域)、柱内領域、分割領域のすべて)を区画する境界線C,M,N,Q,柱Bの境界線(障害物領域境界線)と複数の直線S,S…との交点座標G,G…を抽出する。
【0029】
即ち、コンピュータは、等間隔直線経路作成処理プログラム及び交点座標抽出処理プログラムの手順に従って、図19のフローチャートに示すような等間隔直線経路作成処理(phase7)及び交点座標抽出処理(phase8)を行う。
まず、境界線本数管理変数初期化、即ち、境界線本数管理変数mを0に設定する(ステップS121)。
次に、探索範囲の最も小さなy座標の値(外壁の最も下端のy座標)を特定し、その値をyに設定する(ステップS122)。
そして、X軸に平行で切片がyである直線Sを定義する(ステップS123)。
次に、m番目の境界線(壁、柱の外周を含む)は直線Sと交点を持つか否かを判定する(ステップS124)。
ステップS124において、m番目の境界線が直線Sとの交点を持つと判定された場合、その交点の座標を交点座標記録ファイルに記録し(ステップS125)、その後、mをm+1とし(ステップS126)、mの値が境界線の総本数と一致したか否かを判定する(ステップS127)。
ステップS124において、m番目の境界線が直線Sとの交点を持たないと判定された場合、ステップS126に進む。
ステップS127において、mの値が境界線の総本数と一致しなければ、一致するまで、ステップS124~ステップS126の処理を繰り返す。
ステップS127において、mの値が境界線の総本数と一致すれば、yをy+レーン間距離に設定し(ステップS128)、yの値が探索範囲の上限を超えたか否かを判定する(ステップS129)。
ステップS129において、yの値が探索範囲の上限を超えていなければ、超えるまで、ステップS123~ステップS128の処理を繰り返す、
ステップS129において、yの値が探索範囲の上限を超えた場合には、交点抽出処理を終了して、エリア毎交点座標抽出処理(phase9)に移行する。
即ち、等間隔直線経路作成処理及び交点座標抽出処理では、コンピュータが、境界線本数管理変数レジスタ、各直線Sのy座標記録ファイル、交点座標記録ファイルのような記憶手段を使用しながら処理を行う。
【0030】
尚、ステップS122における、y←探索範囲…の「探索範囲」とは、Cで囲まれた移動対象領域Aのことである。
また、ステップS123での「直線Sを定義」とは、例えば図9に示した直線Sのことである。従って、図19の移動予定ルート候補線作成処理では、図9の下から上に向けて順番に直線Sを1本ずつ引いていって、直線Sを引く毎に、当該直線Sと各境界線との交点座標を記録するという処理を繰り返している。尚、移動対象領域境界線Cの下端位置及び上端位置の水平線上にも直線Sが設定される。
また、ステップS128での「レーン間距離」とは、上下方向(Y軸方向)に隣り合う直線S,S間の距離のことであり、この「レーン間距離」の値(長さ)は予め適当な長さ(例えば、10cm)に決めておく。
従って、分割領域内ジグザグ移動予定ルートの元となる各直線S,S…とすべての境界線との交点の座標がすべて交点座標記録ファイルに記録される。
この場合、例えば、交点座標記録ファイルには、XY座標が小さい順に交点に番号が付けられて、各交点のX座標及びY座標が記録される(図12の交点XY座標を指した○数字参照)。
【0031】
エリア毎交点座標抽出処理(phase9)では、コンピュータが、エリア毎交点座標抽出処理プログラムの手順に従って、各エリア毎に、各エリアを区画する境界線C,M,N,Q,柱Bの境界線(障害物領域境界線)上の交点座標G,G…を抽出する。
図11では、エリア番号6が付与された分割領域Eを区画する境界線C,N上の交点座標G,G…を抽出した例を示している。
【0032】
コンピュータは、エリア毎交点座標抽出処理プログラムの手順に従って、図20のフローチャートに示すようなエリア毎交点座標抽出処理(phase9)を行う。
まず、変数初期化を行う。即ち、交点数管理変数kを0、エリア番号管理変数aを1に設定する(ステップS131)。
次に、kの値が、交点座標抽出処理において交点座標記録ファイルに記録された交点数を超えたか否かを判定する(ステップS132)。
ステップS132において、kの値が、交点座標記録ファイルに記録された交点数を超えていないと判定された場合には、エリアaのaの値がエリア数を超えたか否かを判定する(ステップS133)。
ステップS133において、aの値がエリア数を超えていない場合には、k番目の交点がエリアaに隣接しているか否かを判定する(ステップS134)。
ステップS134において、k番目の交点がエリアaに隣接していると判定された場合には、a番目のエリア用の交点座標記録ファイルにすでにk番目の交点と全く同じ座標が代入されているか否かを判定する(ステップS135)。
ステップS134において、k番目の交点がエリアaに隣接していないと判定された場合には、kをk+1に設定し(ステップS137)、その後、ステップS132に戻る。
ステップS135において、a番目のエリア用の交点座標記録ファイルにすでにk番目の交点と全く同じ座標が記録されていると判定された場合、ステップS137に進む。
ステップS135において、a番目のエリア用の交点座標記録ファイルにk番目の交点と全く同じ座標が記録されていないと判定された場合、a番目のエリア用の交点座標記録ファイルにk番目の交点座標を記録し(ステップS136)、その後、ステップS137に進む。
ステップS132において、kの値が交点数を超えたと判定された場合には、kを0に、aをa+1に設定し(ステップS138)し、その後、ステップS133に進む。
ステップS133において、aの値がエリア数を超えたと判定された場合には、エリア毎交点座標抽出処理(phase9)を終了して、分割領域内ジグザグ移動予定ルート作成処理(phase10)に移行する。
即ち、エリア毎交点座標抽出処理では、コンピュータが、交点数管理変数レジスタ、エリア番号管理変数レジスタ、交点座標記録ファイル、エリア毎の交点座標記録ファイルのような記憶手段を使用しながら処理を行う。
【0033】
エリア毎交点座標抽出処理(phase9)では、例えばXY座標値の小さい交点から順番に1つずつどのエリアに隣接しているのかを判定していくことにより、エリア毎に交点の番号と交点のXY座標とがエリア毎の交点座標記録ファイルに記録される。つまり、エリア毎に交点座標が抽出されて、エリア毎の交点座標記録ファイルに記録される(図29(a)参照)。
まず初めに、ステップS131において、交点数管理変数kが0、エリア番号管理変数aが1に設定されるので、エリアa=1、即ち、移動対象領域Aを囲む境界線Cと交わる交点を所定の順番(例えば、XY座標が最小である交点をk=1とし、X座標、Y座標の小さい交点から順番にkの値を+1していく。)で記録していく。そして、各エリア毎に、交点座標抽出処理において交点座標記録ファイルに記録された交点の座標が各エリアに隣接しているか否かを調べていく(ステップS132~S134)ことにより、各エリア毎の交点座標記録ファイルを作成する(ステップS136)。
つまり、エリア毎交点座標抽出処理(phase9)では、各エリアと各交点との対応付け(ステップS136)を行っているものである。
即ち、各エリアを区画する線上と直線Sとの交点座標を、エリア毎の交点座標として抽出して記録している。
以上のように、交点座標抽出処理(phase8)、及び、エリア毎交点座標抽出処理(phase9)を実行する手段は、各エリアを区画する境界線C,M,N,Q,柱Bの境界線(移動対象領域境界線、境界線、障害物領域境界線)と各横直線S,S…との交点を認識する第1の交点認識手段として機能する。即ち、分割領域境界線と横直線との交点を認識する第1の交点認識手段として機能する。
【0034】
分割領域内ジグザグ移動予定ルート作成処理(phase10)では、コンピュータが、分割領域内ジグザグ移動予定ルート作成処理プログラムの手順に従って、図12に示すように、各分割領域E,E…毎に、X軸に沿って直線S上で隣り合う座標G,G同士を繋げるとともに、Y軸に沿って隣り合う直線S,S間の交点座標G,G同士を繋げることによって、各分割領域E,E…内でのジグザグな分割領域内ジグザグ移動予定ルートHを作成する。
ジグザグな分割領域内ジグザグ移動予定ルートHとは、X軸方向の一方方向に進んだ後X軸方向の一方方向とは反対の他方方向に折り返す経路が繰り返されるルートのことである。尚、等間隔直線経路作成処理において、X軸方向に沿った間隔が等間隔の複数の縦直線が設定される場合には、Y軸方向の一方方向に進んだ後Y軸方向の一方方向とは反対の他方方向に折り返す経路が繰り返される分割領域内ジグザグ移動予定ルートが作成されることになる。
また、エリア毎の交点座標記録ファイルに記録されている交点は、交点の番号が飛び飛びの状態で記録される。例えば、図12において、XY座標値の小さい交点から順番に交点の番号が付けられて1つずつどのエリアに隣接しているのかを判定していく場合、交点の番号は、図12の○内の番号のように付与される。例えば、図12の番号2が付与されたエリア(分割領域)の交点座標記録ファイルには、図26(a)に示すように、交点の番号が1,2,6,7,11,12,16,17,18の交点が順番に記録される。しかしながら、例えば図26(a)の記録順に交点を辿った場合、のこぎり状のルートとなってしまう。そこで、分割領域内ジグザグ移動予定ルート作成処理(phase10)では、図26(b)に示すように、エリア毎のソート後交点座標記録ファイルに、各交点のXY座標がジグザグ経路を形成するルートの始点から終点の位置まで順番に並ぶように、各交点の記録順を並び変えるようにしている。例えば、図29(b)に示すように、図12の番号2が付与されたエリア(分割領域)のソート後交点座標記録ファイルには、各交点は、交点の番号16,18,12,11,6,7,2,1の順番で記録される。従って、分割領域においては、エリア(分割領域)毎のソート後交点座標記録ファイルに記録された順番で交点座標を辿る分割領域内ジグザグ移動予定ルートが作成されることになる。
【0035】
コンピュータは、分割領域内ジグザグ移動予定ルート作成処理プログラムの手順に従って、図21のフローチャートに示すような分割領域内ジグザグ移動予定ルート作成処理(phase10)を行う。
まず、変数初期化を行う。即ち、エリア番号管理変数aを1に、ソート管理変数iを1に、ソート基準変更変数jを1に設定する(ステップS141)。
尚、ソート管理変数iとは、ソートによって順番を入れ換えた数値を配列のどこにいれるかを管理する変数であり、ソート基準変更変数jとは、ルートがのこぎり状ではなくジグザグな矩形波状のルートになるようにするために並べ替えの基準を変更する際の管理変数である。
分割領域内ジグザグ移動予定ルート作成処理では、コンピュータが、エリア番号管理変数レジスタ、ソート管理変数レジスタ、ソート基準変更変数レジスタ、エリア毎の交点座標記録ファイル、エリア毎のソート後交点座標記録ファイルのような記憶手段を使用しながら処理を行う。
次に、aの値がエリア数の上限を超えている否かを判定する(ステップS142)。
ステップS142において、aの値がエリア数の上限を超えていないと判定された場合、a番目のエリアは有効なエリアか、即ち、壁外、あるいは、柱内部ではないか否かを判定する(ステップS143)。
ステップS143において、a番目のエリアが有効なエリアであると判定された場合、このa番目のエリア用の交点座標記録ファイルの中でY座標が最も大きい交点座標を検索する(ステップS144)。
そして、ステップS145において、Y座標が最も大きい交点座標が複数あったか否かを判定する。
ステップS145において、Y座標が最も大きい交点座標が1個だけあったと判定された場合、ステップS144で検索された座標データを、a番目のエリア用のソート後交点座標記録ファイルのi番目に移し変える(ステップS146)。つまり、iが「1」であれば、Y座標が最も大きい交点座標を有した交点の番号とXY座標値とを、a番目のエリア用のソート後交点座標記録ファイルの一番最初の記録領域に記録する。即ち、Y座標が最も大きい交点の記録順を1番目にする。
尚、ステップS146では、a番目のエリア用の交点座標記録ファイルに記録されていたi番目のデータをa番目のエリア用のソート後交点座標記録ファイルのi番目に移し変えるので、このi番目のデータはa番目のエリア用の交点座標記録ファイルから削除される。
従って、次回のステップS144では、i番目のデータが除かれたa番目のエリア用の交点座標記録ファイルのデータの中で、Y座標が最も大きい座標を検索する。
尚、エリア用の交点座標記録ファイルからデータを削除せずに、エリア用の交点座標記録ファイルをコピーした処理用記録ファイルを用いて処理を行い、当該処理用記録ファイルのデータを削除するようにしてもよい。
また、ステップS145において、各分割領域での移動開始位置候補となる交点座標を抽出し、その後のステップにおいて、ソート後交点座標記録ファイルの1番目に記録される交点座標を、各分割領域での移動開始位置となる交点座標に決めて、各分割領域において、移動開始位置となる交点座標から移動終了位置となる交点座標まで直線Sを辿って交点座標位置で進路を変えるジグザグ経路を作成するものである。
ステップS145において、Y座標が最も大きい座標が2個あったと判定された場合、ソート基準変更変数jの値が奇数か否かを判定し(ステップS150)、jの値が奇数であると判定された場合には、Y座標が最も大きくかつX座標が最も小さい座標を検索し(ステップS151)、その後、jをj+1に設定する(ステップS152)。そして、検索された座標データを、a番目のエリア用のソート後交点座標記録ファイルのi番目に移し変える処理(ステップS146)に進む。
また、ステップS150において、jの値が偶数であると判定された場合には、Y座標が最も大きくかつX座標が最も大きい座標を検索し(ステップS153)、その後、jをj+1に設定した(ステップS152)後、ステップS146に進む。
また、ステップS145において、Y座標が最も大きい座標が3個以上あったと判定された場合は、Y座標が最も大きくかつX座標が最も小さい座標と、Y座標が最も大きくかつX座標が最も小さい座標以外の座標(中間の交点座標)を削除する(ステップS154)。その後、ステップS145において、Y座標が最も大きい座標が2個あったと判定された場合と同じ処理が行われて、ステップS146に進む。
ここで、例えば、図12のエリア2では、最初、ステップS144において、交点の番号16、番号17、番号18のY座標が最も大きい座標として検索され、ステップS145,S154を経て、交点番号17が削除される。そして、j=1なので、ステップS151に進んで、番号16の交点のXY座標が検索される。その後、jがj+1に設定され(ステップS152)、エリア2(分割領域)のソート後交点座標記録ファイルの一番最初の記録領域に、交点の番号16とそのXY座標とが記録される(図29(b)参照)。その後、ステップS144において、番号11の交点座標と番号12の交点座標とがY座標が最も大きい座標であるとして検索され、ステップS145において、Y座標が最も大きい座標が2個あったと判定された場合、この際には、j=2なので、ステップS153に進んで、Y座標が最も大きくかつX座標が最も大きい座標を有した番号12の交点座標が検索されて、エリア2(分割領域)のソート後交点座標記録ファイルの3番目の記録領域に、交点の番号12と当該交点のXY座標とが記録される(図29(b)参照)。
即ち、Y座標が最も大きい座標が複数あった場合に、X座標が最も小さい座標を検索するか、X座標が最も大きい座標を検索するかという基準を、jの値に基づいて、切り替えることにより、ルートがのこぎり状ではなくジグザグな矩形波状のルートとなるように工夫している。
ステップS146の後、エリア用のソート後交点座標記録ファイルのi-1番目の座標からi番目の座標を直線で結んだとき、外壁や柱と接触するか否かを判定する(ステップS147)。接触しなければ、iをi+1に更新して(ステップS147E)、a番目のエリア用の交点座標記録ファイルに座標データが残っているか否かを判定する(ステップS148)。
ステップS147において、直線が外壁や柱と接触すると判定された場合、エリア用のソート後交点座標記録ファイルのi番目の座標データをi+1番目に移動させた後、i番目の領域にi+1番目のX座標とi+1番目のY座標を書き込む(ステップS147A)。その後、iをi+2に更新して(ステップS147B)、ステップS148に進む。
即ち、ステップS147A,S147Bでは、図30(a)に示すように、ルートが外壁や柱と接触する場合、図30(b)に示すように、ルートが外壁や柱と接触しないように修正している。
次に、ステップS148において、a番目のエリア用の交点座標記録ファイルに座標データが残っていると判定された場合は、ステップS144に戻る。
ステップS148において、a番目のエリア用の交点座標記録ファイルに座標データが残っていないと判定された場合は、ステップS147Cに進んで、a番目のエリア用のソート後交点座標記録ファイルの1番目と2番目のY座標の値が同一か否かを判定する。
ステップS147Cにおいて、1番目と2番目のY座標の値が同一ではないと判定された場合、1番目に記録された座標情報を消去し、i番目の座標情報をi-1番目に移し替える(ステップS147D)。
即ち、図12に示すように、例えば3番エリアや11番エリアにおいては、ソート後交点座標記録ファイルの1番目のY座標と2番目のY座標の値は同一ではないため、2番目の交点座標位置(交点3s,11s)を始点とし、ソート後交点座標記録ファイルの3番目以降の交点座標の記録順を1つずつ繰り上げていく。
つまり、ステップS147C,S147Dでは、各分割領域での移動開始位置となる交点座標と次の交点座標とを繋ぐルート(経路)がX軸と平行なルートとなるように、各分割領域での移動開始位置となる交点座標を決める処理を行っている。
ステップS147Cにおいて、1番目と2番目のY座標の値が同一であると判定された場合、ステップS149に進んで、aをa+1に、iを1に、jを1に設定し、S142に戻る。即ち、現在処理中のエリアaのソート処理を終了し、次のエリアのソート処理に移行する。
ステップS143において、a番目のエリアが有効なエリアではないと判定された場合、ステップS149に進んで、aをa+1に、iを1に、jを1に設定し、ステップS142に戻る。即ち、次のエリアのソート処理に移行する。
ステップS142において、aの値がエリア数の上限を超えていると判定された場合には、分割領域内ジグザグ移動予定ルート作成処理(phase10)を終了し、移動コスト計算処理(phase11)に移行する。
即ち、a番目のエリア用のソート後交点座標記録ファイルに記録された交点座標を記録順に辿るルートが分割領域内ジグザグ移動予定ルートとして作成されることになる(図26(b)、図12のエリア2において点線で示した分割領域内ジグザグ移動予定ルートH参照)。
つまり、分割領域内ジグザグ移動予定ルート作成処理(phase10)においては、例えば図12に示すように、エリア2内における移動開始予定地点(座標)2sと移動終了予定地点(座標)2eとを繋ぐジグザグな分割領域内ジグザグ移動予定ルートHが作成される。また、各エリア(2~19までの柱領域7,10,12,16,18を除いたエリア)の移動開始予定地点(座標)Ns及び移動終了予定地点(座標)Ne(Nは2~19までの7,10,12,16,18を除いた整数)が決まり、これら移動開始予定地点(座標)Nsと移動終了予定地点(座標)Neとを繋ぐジグザグな分割領域内ジグザグ移動予定ルート(分割領域毎の第1のルート)Hが作成される。
以上のように、分割領域内ジグザグ移動予定ルート作成処理(phase10)を実行する手段は、各分割領域境界線上の交点を横直線で繋いで形成されたY軸に沿って進む分割領域毎のジグザグな第1のルートを作成する第1のルート作成手段として機能する。
【0036】
移動コスト計算処理(phase11)では、コンピュータが、移動コスト計算処理プログラムの手順に従って、phase10で作成された各分割領域内ジグザグ移動予定ルート(各第1のルート)H,H…の移動コストを計算する。つまり、各分割領域内ジグザグ移動予定ルートH,H…毎に、直進距離の合計、旋回角度の合計、旋回回数を考慮して移動コストを計算する。
【0037】
コンピュータは、移動コスト計算処理プログラムの手順に従って、図22のフローチャートに示すような、移動コスト計算処理(phase11)を行う。
まず、エリア(分割領域)番号、及び、総コスト配列ファイルの初期化を行う。即ち、エリア番号管理変数aを1に設定するとともに、エリア毎の総コスト配列ファイルの総コスト配列CtHorizontal[amax]を[0,0,0,・・・・]に設定する(ステップS201)。また、ソート後交点座標管理変数iを1に設定する(ステップS202)。
移動コスト計算処理では、コンピュータが、エリア番号管理変数レジスタ、エリア毎のソート後交点座標記録ファイル、エリア毎の総コスト配列ファイルのような記憶手段を使用しながら処理を行う。
尚、総コスト配列ファイルとは、各エリアの走行ルートのコストを記憶しておくファイルのことであり、総コスト配列CtHorizontalとは、エリア毎の第1のルートの総コスト(移動効率評価値)のことである。また、ソート後交点座標管理変数とは、エリアの走行ルートの何番目の曲がり角(交点)かを管理する変数である。
次に、a番目のエリア用のソート後交点座標記録ファイルのi番目の座標からi+1番目の座標間の距離Lを計算する(ステップS203)。
そして、距離Lと直進移動コスト変換定数Ksを積算して直線移動時のコストCsを計算し(ステップS204)、直線移動時のコストCsを総コスト配列CtHorizontal[a]に足し加えた(ステップS205)後、iをi+1に設定し(ステップS206)、a番目のエリア用のソート後交点座標記録ファイルにi番目の座標データがあるか否かを判定する(ステップS207)
ステップS207でYesの場合、総コスト配列CtHorizontal[a]に停止に要するコストCstop(定数)を加える(ステップS208)。つまり、旋回行動に移るには一旦停止する必要がある。停止は、旋回の角度によらず一定であると考えられる。よって、ここで定数コストを加える。具体的な値は移動体1の停止性能(加速性能)に依存する。
次に、a番目のエリア用のソート後座標記録領域のi-1番目の座標からi番目の座標を向くベクトルとi番目の座標からi+1番目の座標を向くベクトルとの成す角θを計算する(ステップS209)。
そして、θと旋回移動コスト変換定数Kcを積算して直線移動時のコストCcを計算して(ステップS210)、直線移動時のコストCcを総コスト配列CtHorizontal[a]に足し加え(ステップS211)、その後、ステップS203に戻る。
ステップS207でNoの場合、aをa+1に設定し(ステップS212)、その後、
aの値がエリア数の上限amaxを超えたか否かを判定する(ステップS213)。
ステップS213でNoの場合、ステップS202に戻り、ステップS213でYesの場合、移動コスト計算処理(phase11)を終了して、別ルート作成処理(phase12~phase16)に移行する。
尚、直進移動コスト変換定数Ks、旋回移動コスト変換定数Kcは、XY座標情報で得られる長さ、角度の単位を無次元量化するための定数である。
また、移動体1の左右のタイヤ間の距離や、かけられる遠心力の上限等により、移動体1の個体差によっても、直進性能、旋回性能が違ってくる。
従って、XY座標情報で得られる単位の違い、移動体1の個体差(性能の違い)等に応じて、直進移動コスト変換定数Ks、旋回移動コスト変換定数Kcを設定することになる。
【0038】
コンピュータは、別ルート作成処理プログラムの手順に従って、図23のフローチャートに示すような、別ルート作成処理(phase12~phase16)を行う。
最初に、等間隔直線経路作成処理(phase7)の処理で定義されるX軸と平行な直線S,S…をX軸に垂直なもの、即ち、Y軸と平行な直線に置き換えて実行して、これをphase12とする(ステップS230)。
即ち、phase12は、縦直線作成手段によって、移動対象領域をX軸に沿って等間隔に区切るY軸と平行な複数の縦直線を作成する処理である。
次に、交点座標抽出処理(phase8)の処理で、直線の移動方向をX軸に垂直にしたうえで実行して、これをphase13とする(ステップS240)とする。
さらに、エリア毎交点座標抽出処理(phase9)をそのまま実行して、これをphase14とする(ステップS250)とする。
即ち、phase13,14は、第2の交点認識手段によって、分割領域境界線と縦直線との交点を認識する処理である。
次に、分割領域内ジグザグ移動予定ルート作成処理(phase10)の処理で条件分岐の処理部分のX軸座標をY軸座標に、Y軸座標をX軸座標に置き換えて実行する。このとき、phase10の場合とは別の記録ファイルに結果を保存する。以上をphase15とする(ステップS260)。
即ち、phase15は、第2のルート作成手段によって、各分割領域境界線上の交点を縦直線で繋いで形成されたX軸に沿って進む分割領域毎のジグザグな第2のルートを作成する処理である。
最後に、移動コスト計算処理(phase11)での総コスト配列CtHorizontalを総コスト配列CtVerticalに置き換えて処理を実行する。このとき、phase11の場合とは別の記録ファイルに結果を保存する。以上をphase16とする(ステップS270)。
即ち、phase16は、第2の移動効率算出手段によって、分割領域毎の第2のルートに沿って移動する場合の移動効率を算出する処理である。
そして、ルート選択処理(phase17)に移行する。
【0039】
ルート選択処理(phase17)では、コンピュータが、ルート選択処理プログラムの手順に従って、同じ分割領域内を第1のルートに沿って移動する場合の移動効率と第2のルートに沿って移動する場合の移動効率とを比較して、第1のルート及び第2のルートのうち移動効率の良いルートを当該分割領域内での移動予定ルートとして選択する。
【0040】
コンピュータは、ルート選択処理プログラムの手順に従って、図24のフローチャートに示すような、ルート選択処理(phase17)を行う。
まず、変数初期化を行う。即ち、エリア番号管理変数aを1に設定する(ステップS281)。
ルート選択処理では、コンピュータが、エリア番号管理変数レジスタ、エリア毎の第1のルートの総コストCtHorizontal[a]を記録するファイル、エリア毎の第2のルートの総コストCtVertical[a]を記録するファイルのような記憶手段を使用しながら処理を行う。
次に、エリアaにおける、水平方向移動時(第1のルート選択時)の総コストCtHorizontal[a]と垂直方向移動時(第2のルート選択時)の総コストCtVertical[a]とを比較する(ステップS282)。
ステップS282において、総コストCtHorizontal[a]の方がコストが低いと判定された場合は、エリア番号aではphase10で作成したエリア用ソート後交点座標記録ファイルをアクティブにする(ステップS283)。つまり、当該エリア(分割領域)aにおいては、第1のルートを当該エリア(分割領域)内aでの移動予定ルートとして選択する。
ステップS282において、総コストCtVertical[a]の方がコストが低い、又は、総コストCtVertical[a]のコストと総コストCtHorizontal[a]のコストとが同値と判定された場合は、エリア番号aではphase15で作成したエリア用ソート後交点座標記録ファイルをアクティブにする(ステップS286)。つまり、当該エリア(分割領域)aにおいては、第2のルートを当該エリア(分割領域)内aでの移動予定ルートとして選択する。
ステップS283の後、又は、ステップS286の後、aをa+1に設定し(ステップS284)、aの値がエリア数の上限amaxを超えたか否かを判定する(ステップS284)。
ステップS284でNoであれば、ステップS282に戻り、ステップS284でYesであれば、ルート選択処理を終了して、分割領域間移動予定ルート作成処理(phase18)に移行する。
【0041】
分割領域間移動予定ルート作成処理(phase18)では、コンピュータが、分割領域内ジグザグ移動予定ルート作成処理プログラムの手順に従って、図12に示すように、n番目の分割領域Eからn+1番目の分割領域Eへの移動予定ルートである分割領域間移動予定ルートを生成する。まず、分割領域間直線移動予定ルート作成処理により、前の分割領域(エリア)の移動終了予定地点(座標)2eと後の分割領域(エリア)の移動開始予定地点(座標)2sとを一直線で結ぶ分割領域間直線移動予定ルートIを作成する。
つまり、n番目の分割領域毎のソート後交点座標記録ファイルの最後に記録された交点の座標位置とn+1番目の分割領域毎のソート後交点座標記録ファイルの最初に記録された交点の座標位置とを一直線で結ぶ分割領域間直線移動予定ルートIを作成する。
ただし、移動終了予定地点(座標)2eと移動開始予定地点(座標)2sとを一直線で結んだ場合に、柱Bと接触(衝突)してしまう場合には、任意の経路探索アルゴリズムを応用した分割領域間迂回移動予定ルート作成処理によって、迂回経路を生成する。
【0042】
コンピュータは、分割領域間移動予定ルート作成処理プログラムの手順に従って、図25のフローチャートに示すような分割領域間移動予定ルート作成処理(phase18)を行う。
まず、変数初期化を行う。即ち、エリア番号管理変数aを1に、移動先エリア管理変数iを1に設定する(ステップS161)。
分割領域間移動予定ルート作成処理では、コンピュータが、エリア番号管理変数レジスタ、移動先エリア管理変数レジスタ、エリア毎のソート後交点座標記録ファイル、経路探索コスト計算配列ファイル、エリア毎の経路記録ファイルのような記憶手段を使用しながら処理を行う。
次に、aの値がエリア数の上限を超えているか否かを判定し(ステップS162)、上限を超えていなければ、a番目のエリアは有効なエリアか否かを判定し(ステップS163)、a番目のエリアが有効なエリアであれば、a+i番目のエリアは有効なエリアか否かを判定する(ステップS164)。
ステップS164において、a+i番目のエリアが有効なエリアであると判定された場合、a番目のエリア用のソート後交点座標記録ファイルの最後の座標とa+i番目のエリア用のソート後交点座標記録ファイルの最初の座標を直線で結んだとき、外壁や柱と接触するか否かを判定する(ステップS165)。即ち、番号の小さいエリアの移動終了予定地点eと番号の大きいエリアの移動開始予定地点sとを直線で結んだとき、外壁や柱と接触するか否かを判定する。
ステップS165において、Yesの場合(直線が外壁や柱と接触すると判定された場合)、経路探索アルゴリズム処理に移行する。
経路探索アルゴリズム処理では、まず、a番目のエリア用のソート後交点座標記録ファイルの最後の座標、即ち、a番目の分割領域の移動終了予定地点eとなる交点座標の位置(経路探索アルゴリズムにおけるスタート地点)を現在位置とする(ステップS166)。
次に、経路探索アルゴリズムのコスト計算配列初期化を行う。つまり、コストC1[Xmax][Ymax]←[0,0,0,・・・・]、コストC2[Xmax][Ymax]←[0,0,0,・・・・]を行う(ステップS167)。
まず、現在位置から見て上下左右周囲8方向とスタート地点間の距離を計算する。例えば、コストを求めたい位置の周辺のC1を調べ、最も小さいC1に+1する(ただし、初期化時から変化してないC1は無視する)。計算されたコストはその位置に相当する配列番号のC1に代入する(ステップS168A)。
次に、現在位置から見て上下左右周囲8方向からa+i番目のエリア用のソート後交点座標記録ファイルの最初の交点座標(経路探索アルゴリズムにおけるゴール地点)までの推定距離を計算する。例えば、コストを求めたい位置とゴールとの直線距離を計算し、その計算されたコストはその位置に相当する配列番号のC2に代入する(ステップS168B)。
現在位置から見て上下左右周囲8方向それぞれについて、計算済みフラグを立てる(ステップS169)。
コスト計算済みフラグが立っている座標のうち、外壁や柱がなく、かつ最も総コスト(C1[*][**]+C2[*][**])が低い場所(座標)があるか否かを判定する(ステップS170)。
ステップS170において、該当する座標を発見できなかった場合は、エラーと判定して終了する。
ステップS170において、該当する座標が1箇所だけあった場合、当該座標位置へ移動し、その座標に到達済みフラグを立てる(ステップS171)。
また、ステップS170において、該当する座標が複数あった場合、同値の座標のうち、所定の優先順位で一か所を決めた後、ステップに進む。所定の優先順位は、ゴールまでの推定距離が小さい方>スタートからの距離が大きい方>最も原点座標に近い方とする(ステップS174)。その後、ステップS171に進む。
そして、a+i番目のエリア用のソート後交点座標記録ファイルの最初の座標に到達したか否かを判定する(ステップS172)。
a+i番目のエリア用のソート後交点座標記録ファイルの最初の座標に到達したと判定された場合(ステップS172でYES)、現在位置から見て上下左右周囲8方向のうち、到達済みフラグが立っており、かつ最も高いコストの場所があるか否かを判定する(ステップS173)。即ち、ステップS173においては、スタート地点に戻るような処理を行って、移動軌跡の履歴を探索するものである。
ステップS173において、該当する座標を発見できなかった場合は、エラーと判定して終了する。
ステップS173において、該当する座標が1箇所だけあった場合、最もコストが高い方へ移動する。このとき移動先の座標に経路確定フラグを立てる(ステップS173A)。
そして、a番目のソート後交点座標記録ファイルの最後の座標に到達したか否かを判定する(ステップS174)。
また、ステップS173において、該当する座標が複数あった場合、同値の座標のうち、スタートまでの物理的距離(ユークリッド距離)が最も近い方へ移動し、このとき移動先の座標に経路確定フラグを立てる(ステップS173B)。その後、ステップS174に進む。
ステップS174において、a番目のエリア用のソート後交点座標記録ファイルの最後の座標に到達したと判定された場合(ステップS174でYES)、記録された移動右軌跡を逆転させて、これをa番目のエリア探索後の移動の経路(分割領域間移動予定ルートI)として経路記録ファイルに登録する(ステップS175)。その後、ステップS176に進む。
ステップS165において、Noの場合(直線が外壁や柱と接触しないと判定された場合)は、a番目のエリア用のソート後交点座標記録ファイルの最後の座標からa+i番目のエリア用のソート後交点座標記録ファイルの最初の座標を結ぶ直線をa番目のエリア探索後の移動の経路として経路記録ファイルに登録し(ステップS178)、その後、ステップS176に進んで、aをa+iに、iを1に更新した後、ステップS162に戻る。
ステップS163において、a番目のエリアは有効なエリアではないと判定された場合には、ステップS176に進んで、aをa+iに、iを1に更新し、ステップS162に戻る。
ステップS164において、a+i番目のエリアは有効なエリアではないと判定された場合、iをi+1に設定した(ステップS179)後、a+iの値がエリア数の上限を超えているか否かを判定する(ステップS180)。ステップS180において、a+iの値がエリア数の上限を超えていないと判定された場合は、ステップS164に戻り、ステップS180において、a+iの値がエリア数の上限を超えていると判定された場合は、分割領域間移動予定ルート作成処理(phase11)を終了する。
ステップS162において、aの値がエリア数の上限を超えていると判定された場合には、分割領域間移動予定ルート作成処理(phase11)を終了する。
【0043】
分割領域間移動予定ルート作成処理(phase18)によれば、例えば図12に示すような分割領域間移動予定ルートが作成される。
即ち、例えばa番目の分割領域の終点交点座標とa+i番目の分割領域の開始交点座標とを結び、分割領域aと分割領域a+i間の移動予定ルートIを生成する
図12において、矢印直線23(I)は分割領域2の移動終了予定地点(交点座標)2eと分割領域3の移動開始予定地点(交点座標)3sとを繋ぐ分割領域間移動予定ルート、矢印直線34(I)は分割領域3の移動終了予定地点3eと分割領域4の移動開始予定地点4sとを繋ぐ分割領域間移動予定ルート、矢印直線45(I)は分割領域4の移動終了予定地点4eと分割領域5の移動開始予定地点5sとを繋ぐ分割領域間移動予定ルート、矢印直線56(I)は分割領域5の移動終了予定地点5eと分割領域6の移動開始予定地点6sとを繋ぐ分割領域間移動予定ルートである。
また、矢印直線68(I)は分割領域6の移動終了予定地点6eと分割領域8の移動開始予定地点8sとを繋ぐ分割領域間移動予定ルートであり、矢印直線89(I)は分割領域8の移動終了予定地点8eと分割領域9の移動開始予定地点9sとを繋ぐ分割領域間移動予定ルート、矢印直線911(I)は分割領域9の移動終了予定地点9eと領域11の移動開始予定地点11sとを繋ぐ分割領域間移動予定ルート、柱12を迂回する直線1113(I)は分割領域11の移動終了予定地点11eと分割領域13の移動開始予定地点12sとを繋ぐ分割領域間移動予定ルートであり、経路探索アルゴリズム処理により探索された分割領域間移動予定ルートである。
また、矢印直線1314(I)は分割領域13の移動終了予定地点13eと分割領域14の移動開始予定地点14sとを繋ぐ分割領域間移動予定ルート、矢印直線1415(I)は分割領域14の移動終了予定地点14eと分割領域15の移動開始予定地点15sとを繋ぐ分割領域間移動予定ルート、矢印直線1517(I)は分割領域15の移動終了予定地点15eと分割領域17の移動開始予定地点17sとを繋ぐ分割領域間移動予定ルート、矢印直線1719(I)は分割領域17の移動終了予定地点17eと分割領域19の移動開始予定地点19sとを繋ぐ分割領域間移動予定ルートである。
尚、図12の例では、すべての分割領域間移動予定ルートが、ステップS178により決められた分割領域間直線移動予定ルートIとなり、分割領域間迂回移動予定ルート作成処理により決められた分割領域間迂回移動予定ルートは無いが、ステップS178により決められた分割領域間直線移動予定ルートIが外壁や柱と接触すると判定される例においては、分割領域間直線移動予定ルートIの代わりに、分割領域間迂回移動予定ルート作成処理に基づいて分割領域間迂回移動予定ルートが作成されることになる。例えば、仮に、図12において、柱16がもっと大きな柱である場合には、矢印直線1415(I)が柱16と接触する可能性があり、この場合は、経路探索アルゴリズム処理に基づいて、柱16を迂回する分割領域間迂回移動予定ルートが作成されることになる。
【0044】
従って、移動体1は、予め作成された最適な分割領域間移動予定ルートを辿って分割領域間を移動できるようになり、移動体に、分割領域間の移動を効率的に行わせることができるようになる。
【0045】
上述した移動予定ルート作成装置、及び、移動予定ルート作成処理プログラムによれば、第1のルート及び第2のルートのうち移動効率の良いルートを選択するようにしたので、各分割領域の形状に応じて、移動対象領域内の障害物を避けて移動体を移動させるための効率的な移動予定ルートを的確に作成できるようになる。
【0046】
そして、上述した移動体の移動予定ルート作成装置により作成された移動予定ルート(移動予定情報)に基づいて移動体1が移動対象領域A内の柱(障害物)Bを避けて移動対象領域A内を効率的に自走できるようになる。
【0047】
即ち、図31に示すように、移動体1の制御手段50が、移動予定ルート(移動予定情報)に基づいて移動体1の移動を制御するとともに、移動情報取得手段としての例えば自動追尾型のトータルステーション(以下、TSと言う)等により取得される移動体1の実際の移動情報(移動体の逐次位置情報)と移動予定ルート(移動予定情報)とを用いて移動体1の移動を制御する移動体1の移動制御システムを構築できるようになる。
尚、当該移動体1の移動制御方法としては、例えば、本出願人による発明である特許文献1(特開2020-154400号公報)に開示された移動制御方法を採用すればよい。
【0048】
移動体1の一例について説明する。尚、以下の説明においては、前、後、上、下、左、右は、図31に示した方向と定義して説明する。
図31に示すように、移動体1は、基体10と、基体10の下側に設けられた移動手段20と、基体10の表面側に設けられたTSの視準となるプリズム等のターゲットT2と、基体10に設けられて移動体1の前側を昇降させる昇降装置40と、制御手段50と、床面を撮影するための図外の撮像手段(カメラ)とを備えている。
尚、撮像手段は、例えば、基体10の下面(床面と対向する下面)側において、移動体1の左右幅間に亘って延長するように設けられており、移動体1が床面上を移動した場合に、移動体1の下面の左右幅間に対向する床面を撮影できるように構成されている。
【0049】
移動手段20は、例えば、基体10の前側下部に設けられた左右の前側車輪21L,21Rと、基体10の後側下部に設けられた左右の後側車輪22L,22Rと、後側車輪22L,22Rの駆動源としてのモータ23L,23Rと、図外の駆動制御回路とを備える。
尚、モータ23L,23Rの各モータ軸には、それぞれ、後側車輪22L,22Rの回転量に基づいて移動体1の移動距離(移動量)を検出するための移動量検出手段としてのエンコーダ25L,25Rが取付けられている。
【0050】
ターゲットT2は、TSから発射される光を反射させる反射プリズム等で構成される。当該ターゲットT2は、例えば、基体10の上面の前側における左右間の中央位置に設置される。
【0051】
制御手段50は、移動体1の移動方向(進行方向)を変更する際、昇降装置40の図外のリニアアクチュエータのロッドを縮退状態から伸長させて図外の転動体を床面に押し付けることにより基体10の前側を上方に移動させて移動体1の前側車輪21L,21Rを床面から浮かせた状態で、左右の後側車輪22L,22Rのモータ23L,23Rを制御して床面に接触している左右の後側車輪22L,22Rを互いに反対方向に回転させる。
この場合、移動体1を前進させる回転方向に一方の後側車輪を回転させるとともに、移動体1を後進させる回転方向に他方の後側車輪を回転させることによって、移動体1の回転中心線を回転中心として、左右の後側車輪22L,22Rと転動体とが床面上を転動するので、床面上において、移動体1が回転中心線を回転中心として左方向又は右方向にスムーズに回転する。よって、移動体1の水平方向の向きがスムーズに変更されるようになる。
【0052】
尚、移動体1として、撮像手段(カメラ)を搭載して床面を撮影する撮像手段搭載移動体を例示したが、移動体は、例えば掃除機を搭載して床面を掃除する掃除機搭載移動体等の特定処理機能搭載移動体、又は、特定処理機能を搭載しない移動体であってもよい。
【0053】
また、上述した前提装置では、移動対象領域Aの外側のエリア、即ち、壁外領域をエリア1に設定したために、図20のエリア毎交点座標抽出処理(phase9)のステップS131の変数初期化、図21の分割領域内ジグザグ移動予定ルート作成処理(phase10)のステップS141の変数初期化、図22の移動コスト処理(phase11)のステップS201の変数初期化、図24のルート選択処理(phase17)のステップS281の変数初期化、図25の分割領域間移動予定ルート作成処理(phase18)のステップS161の変数初期化において、エリア番号管理変数aを1に設定して処理を開始する例を示したが、エリア1は分割された領域ではないので、これら各処理の変数初期化において、エリア番号管理変数aを2に設定して、エリア2から処理を開始するようにしてもよい。
【0054】
本発明に係る巡回ルート作成装置の前提装置となる上述した移動予定ルート作成装置では、各分割領域(各移動対象領域)に所定の規則でエリア番号を付けて、一番小さい番号の分割領域(移動対象領域)から昇順に分割領域間を分割領域間移動予定ルートで繋げて作成された移動予定ルートを作成するようにしている。つまり、各分割領域を巡回する巡回ルートを作成するようにしている。
しかしながら、当該移動予定ルート作成装置では、一番小さい番号の分割領域から順番に、一番近い番号が付与された2つの分割領域同士を分割領域間移動予定ルートで繋げるようにしているだけであり、各分割領域を巡回する巡回ルートが、効率的な巡回ルートであるかどうかについての評価を行っていない。
そこで、本発明では、以下に示すように、複数の移動対象領域を移動体に巡回させるための効率的な巡回ルートを作成可能な巡回ルート作成装置を実現した。
【0055】
実施形態
本発明の実施形態に係る巡回ルート作成装置は、複数の移動対象領域の位置情報を認識して当該複数の移動対象領域を移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置であって、各移動対象領域内での巡回パターンを設定するための巡回パターン設定手段と、各移動対象領域を一巡する巡回ルートを作成するために各移動対象領域間での巡回順を設定するための巡回順設定手段とを備えた構成である。
即ち、巡回パターン設定手段により、各移動対象領域毎に、移動対象領域内の巡回パターンが設定される。
また、巡回順設定手段によって、巡回ルートの前後の移動対象領域間を繋ぐ移動対象領域間のルート(以下、エリア間ルートという)は、前の移動対象領域の移動対象領域内の巡回パターンの終点(出口)と後の移動対象領域の移動対象領域内の巡回パターンの始点(入口)とを結ぶルートに設定される。
【0056】
巡回パターン設定手段及び巡回順設定手段は、各手段が実行する処理の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータ等のハードウエア資源とにより構成される。
換言すれば、巡回ルート作成装置の処理を実現する巡回ルート作成処理プログラムは、コンピュータを、上述した巡回パターン設定手段、巡回順設定手段として機能させるプログラムである。
巡回ルート作成装置は、例えば表示画面及び表示制御手段を備えたパーソナルコンピュータ等のコンピュータに、上述した巡回ルート作成処理プログラムがインストールされて構成されている。
【0057】
尚、本発明において、複数の移動対象領域は、各自独立した複数の移動対象領域、あるいは、上述したような複数の分割領域等であり、以下、「移動対象領域」を「エリア」と呼称して説明する。
【0058】
エリアは、上述したように、XY座標情報に基づいて区画された領域である。
また、エリア内の予め決められた巡回パターンは、例えばX軸に沿ってジグザグに進むX方向巡回パターン、又は、Y軸に沿って進むジグザグなY方向巡回パターンである。
エリア内の予め決められた所定の複数の巡回パターンは、例えば図32に示すように、X方向巡回パターンにおいては、移動開始位置(始端(入口))をX座標最小値Y座標最大値の位置とするZパターン(第1パターン)、移動開始位置をX座標最小値Y座標最小値の位置とするZ’パターン(第2パターン)、移動開始位置をX座標最大値Y座標最大値の位置とするSパターン(第3パターン)、移動開始位置をX座標最大値Y座標最小値の位置とするS’パターン(第4パターン)である。
また、Y方向巡回パターンにおいては、移動開始位置をX座標最小値Y座標最大値の位置とするWパターン(第5パターン)、移動開始位置をX座標最大値Y座標最大値の位置とするW’パターン(第6パターン)、移動開始位置をX座標最小値Y座標最小値の位置とするMパターン(第7パターン))、移動開始位置をX座標最大値Y座標最小値の位置とするM’パターン(第8パターン)である。
尚、各エリアにおいて、当該複数の巡回パターンの各パターンを設定した場合において、当該各パターン上を移動体で移動させる場合の移動コストは、例えば、予め移動コスト算出手段により算出されてデータベースに記録されている。
【0059】
実施形態に係る巡回ルート作成装置は、コンピュータが巡回パターン及び巡回順を設定して巡回ルートを作成する自動作成機能(巡回ルート自動作成機能)と、人の指示に基づいて巡回パターン及び巡回順を設定して巡回ルートを作成する手動作成機能(巡回ルート手動作成機能)とを備えるとともに、当該自動作成機能及び手動作成機能のうち、どちらの作成機能で巡回ルートを作成させるかを人に選択させる選択手段を備えている。
【0060】
自動作成機能としては、焼きなまし法のアルゴリズムを利用した自動作成機能(以下、「SA(Simulated Annealing)」と省略する)と、遺伝的アルゴリズムを利用した自動作成機能(以下、「GA(genetic
algorithm)」と省略する)とを備える。
【0061】
まず、SAについて詳細に説明する。
SAによる自動作成機能の場合、巡回パターン設定手段及び巡回順設定手段は、例えば、各エリアを一巡する巡回ループを作成する巡回ループ作成手段と、作成された巡回ループの経路を移動体で移動させる場合の移動コストを算出する移動コスト算出手段と、作成された巡回ループを形成するエリア間ルートのうち最も移動コストの大きいエリア間ルートを削除して、削除したエリア間ルートのルート終端が繋がれていたエリアを巡回ルートのスタート領域とし、かつ、削除したエリア間ルートのルート始端が繋がれていたエリアを巡回ルートのゴール領域とした各エリアを一巡する巡回ルートを作成する巡回ルート作成手段とを備える。
移動コスト算出手段は、巡回ループ作成手段により作成された巡回ループを移動体で移動させる場合の移動コストや、巡回ループ作成手段により作成された巡回ループにおいて前後のエリア間を繋ぐエリア間ルートを移動体で移動させる場合の移動コストや、巡回ルート作成手段により作成された巡回ルートを移動体で移動させる場合の移動コストを算出する。即ち、移動コスト算出手段は、巡回ループ、巡回ループの前後のエリア間を繋ぐエリア間ルート、移動コストが最も大きいエリア間ルートの移動コストを巡回ループの移動コストから除いた巡回ループ等の、巡回ループの経路の移動コストを算出する手段である。尚、移動コストは、上述した前提装置で説明した、直進距離の合計、旋回角度の合計、旋回回数を考慮した移動コストである。
巡回ループ作成手段は、エリア毎に巡回情報を設定することにより巡回ループを作成するにあたって、巡回情報に基づいて最初の巡回ループを作成する最初の巡回ループ作成手段と、最初の巡回ループの巡回情報を変更した巡回ループを作成する巡回ループ更新手段とを備える。即ち、巡回ループ作成手段は、エリア毎に巡回情報を設定することにより巡回ループを作成する手段であって、エリア毎に巡回情報を設定することにより巡回ループを作成するとともに、作成した巡回ループの巡回情報を変更した巡回ループを作成する処理を繰り返す構成とした。
巡回ルート作成手段は、巡回ループ更新手段により作成された今回の巡回ループ(巡回ループの巡回情報を変更した今回の巡回ループ)に基づいて作成した今回の巡回ルート、及び、巡回ループ更新手段により作成された前回の巡回ループ(巡回ループの巡回情報を変更する前の前回の巡回ループ)に基づいて作成された前回の巡回ルートのうち、どちらの巡回ルートを残すかを判定する判定手段を備える。
当該判定手段は、今回の巡回ルートの移動コストが前回の巡回ルートの移動コストよりも小さい場合には、今回の巡回ルートを残し、今回の巡回ルートの移動コストが前回の巡回ルートの移動コストよりも大きい場合には、所定の条件が成立した場合に、今回の巡回ルートを残し、所定の条件が成立しない場合には、前回の巡回ルートを残す処理を実行する構成とした。
尚、巡回情報は、例えば図45に示すような、各エリア毎に設定される自己のエリア内の巡回パターンの情報と次に進むエリアの情報とで構成された組み合わせ情報である。
図45に示した例では、エリア1の巡回情報は、「2-M」であり、この「M」がエリア1(自己)のエリア内の巡回パターンの情報であり、「2」が次に進むエリアの情報である。つまり、当該エリア1の巡回情報によって、エリア1内の巡回パターンは、Mパターン(第7パターン)が設定され、エリア1の次に進むエリアが2であるので、エリア1の巡回パターンであるMパターンの終点(出口)とエリア2の巡回パターンであるZパターンの始点(入口)とを結ぶルートがエリア間ルートとして設定されることになる。
つまり、巡回ループは、巡回情報に基づいて作成され、巡回ループのエリア間ルートのうち最も移動コストの大きいエリア間ルートが削除されて巡回ルートが作成され、判定手段が当該巡回ルートを残すか否かを判定する。
【0062】
SAによる処理の流れの概略を図33に示す。
即ち、SAでは、初期巡回ループ作成処理(ステップS301)、初期温度設定処理(ステップS302)、巡回ルートコスト計算処理(ステップS303)、改変受入可否判定処理(ステップS304)、改変処理(ステップS305,ステップS306,ステップS307,ステップS308,ステップS309)を実行する。
つまり、SAでは、上述した巡回パターン設定手段及び巡回順設定手段が、初期巡回ループ作成処理、初期温度設定処理、巡回ルートコスト計算処理、改変受入可否判定処理、改変処理を行う。つまり、これら各処理(初期巡回ループ作成処理、初期温度設定処理、巡回ルートコスト計算処理、改変受入可否判定処理、改変処理)の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータとにより、これら各処理が実行される。
即ち、上述した最初の巡回ループ作成手段が初期巡回ループ作成処理及び初期温度設定処理を実行し、巡回ループ更新手段が改変処理を実行し、移動コスト算出手段が巡回ルートコスト計算処理を実行し、判定手段が改変受入可否判定処理を実行する。
【0063】
SAによる処理の流れを図33のフローチャートに基づいて簡単に説明すると、以下のようになる。
まず、初期巡回ループ作成処理(ステップS301)により初期巡回ループ(最初の巡回ループ)が作成される。また、初期温度設定処理(ステップS302)に初期温度(例えば1500℃)が設定される。尚、最初のステップS303においては、初期巡回ループに基づいて作成された初期巡回ルートの移動コストが算出されて記録手段に記録される。その後、ステップS304~ステップS306の処理が行われずに、ステップS307の処理が行われて、初期巡回ループが更新された巡回ループが作成される。
そして、当該更新された巡回ループに基づいて巡回ルートが作成され、当該巡回ルートの移動コストが巡回ルートコスト計算処理(ステップS303)にて算出されて記録手段に記録される。
以後、ステップS304,ステップS305,ステップS306,ステップS307,ステップS303、又は、ステップS304,ステップS305,ステップS306,ステップS308,ステップS309,ステップS303の処理が行われる。
即ち、巡回ループ作成手段及び巡回ルート作成手段により、順次、巡回ループが更新されて、巡回ルートが更新され、巡回ルートが更新される毎に、当該巡回ルートの移動コストが算出されて記録手段に記録され、改変受入可否判定処理により、今回の巡回ルート、及び、前回の巡回ルートのうち、どちらの巡回ルートを残すかが判定される。
尚、上述した判定手段により実行される改変受入可否判定処理は、例えば焼きなまし法のアルゴリズムに基づき、移動コスト算出手段により算出された今回及び前回の巡回ルートの移動コストを解として比較することによって、今回の巡回ルートの移動コストが前回の巡回ルートの移動コストよりも小さい場合には、今回の巡回ルートを記録として残し、今回の巡回ルートの移動コストが前回の巡回ルートの移動コストよりも大きい場合には、所定の条件式、例えば、R≦exp(-ΔC/T)が成立した場合に、今回の巡回ルートを記録として残し、R≦exp(-ΔC/T)が成立しない場合には、前回の巡回ルートを記録として残す処理である。
但し、ΔC=|今回の巡回ルートの移動コスト-前回の巡回ルートの移動コスト|、T=温度、R=乱数である。
当該改変受入可否判定処理(ステップS304)の終了後、ステップS305に進んで、温度判定処理が行われる。即ち、温度Tが0℃か否かが判定される。温度が0℃でなければ、前回の改変はエリア間ルートの入れ替えだったか否かが判定される(ステップS306)。
前回の改変がエリア間ルートの入れ替えではなかった場合(ステップS306でNo)には、無作為に選ばれた2本のエリア間ルートを入れ替える改変処理(ステップS307)が行なわれる。
前回の改変がエリア間ルートの入れ替えだった場合(ステップS306でYes)には、温度を低下させた(ステップS308)の後、無作為に選ばれたエリア内の巡回パターンを無作為に変更する改変処理(ステップS309)が行われる。
以上の処理を、ステップS305において温度が0℃であると判定されるまで繰り返して、最終的に、記録手段に記録されている最も移動コストの小さい巡回ルート(即ち、最適巡回情報配列Gbest[1~amax][1~2]に基づく巡回ルート)が、SAによって探索された巡回ルートとして決定される。
以下、初期巡回ループ作成処理、初期温度設定処理、巡回ルートコスト計算処理、改変受入可否判定処理、改変処理の内容を詳細に説明する。
【0064】
まず、コンピュータが、初期巡回ループ作成処理プログラムの手順に従って、図34のフローチャートに示すような、初期巡回ループ作成処理(phase1)を行う。
まず、エリア番号管理変数aの初期化処理とエリア個数情報amaxの取得処理を行う(ステップS311)。つまり、エリア番号管理変数aを1に設定するとともに、エリア個数情報amaxをエリアの個数に設定する(例えば、上述した前提技術の場合(図12の複数の分割領域の場合)、個数情報amaxは「14」に設定され、後述する図44(b)の場合、エリア個数情報amaxは「6」に設定される)。
そして、巡回情報配列G[1~amax][1~2]を初期化して、空にする(ステップS312)。
次に、G[a][1]をa+1に設定して(ステップS313)、G[a][2]にZパターンを設定し(ステップS314)、aをa+1に設定した(ステップS315)後、aの値がamaxと等しくなったか否かを判定する(ステップS316)。
そして、ステップS316でNoの場合は、ステップS313に戻る。
ステップS326でYesの場合は、ステップS318に進んで、G[amax][1]を「1」に設定し、ステップS319に進んで、G[amax][2]を「Z」に設定する。つまり、最後のエリアから次に進むエリアを1に設定し(ステップS318)、さらに最後のエリアの巡回パターンとしてZパターンを設定する(ステップS319)。
【0065】
尚、巡回情報配列G[1~amax][1~2]における、[1~amax]は各エリアの番号であり、G[a][1]は、エリアaから次に進むエリアの情報が記録される記憶領域のアドレス、G[a][2]は、エリアa内の巡回パターンの情報が記録される記憶領域のアドレスである。
即ち、[a]はエリアの番号を示す情報、G[a][1]には、エリア[a]から次に進むエリアの番号の情報(巡回情報)が記録され、G[a][2]には、エリア[a]内の巡回パターンの情報(巡回情報)が記録される。
従って、以下、G[a][1]は、エリア[a]から次に進むエリアの番号の情報を意味し、G[a][2]は、エリア[a]内の巡回パターンの情報を意味するものとする。
つまり、巡回情報配列G[1~amax][1~2]は、G[1~amax][1~2]というアドレスに記録された情報群、即ち、図44(a)、図45に示すような巡回情報の組み合わせのことであり、当該巡回情報配列により、巡回ループが形成される。
例えば、エリアの個数が6個の場合、phase1で設定された巡回情報配列Gに基づく巡回情報配列は、図44(a)に示すような初期巡回情報配列になる。
つまり、図44(a)に示す初期巡回情報配列G[1~amax][1~2]は、以下の通りである。
エリア[1]から次に進むエリアの番号の情報が記録されるアドレス[1][1]にエリア番号2が記録されて、エリア[1]内の巡回パターンの情報が記録されるアドレス[1][2]にはZパターンが記録される。つまり、エリア番号1の巡回情報として「2-Z」が設定される。
また、エリア[2]から次に進むエリアの番号の情報が記録されるアドレス[2][1]にエリア番号3が記録されて、エリア[2]内の巡回パターンの情報が記録されるアドレス[2][2]にはZパターンが記録される。つまり、エリア番号2の巡回情報として「3-Z」が設定される。
また、エリア[3]から次に進むエリアの番号の情報が記録されるアドレス[3][1]にエリア番号4が記録されて、エリア[3]内の巡回パターンの情報が記録されるアドレス[3][2]にはZパターンが記録される。つまり、エリア番号3の巡回情報として「4-Z」が設定される。
また、エリア[4]から次に進むエリアの番号の情報が記録されるアドレス[4][1]にエリア番号5が記録されて、エリア[4]内の巡回パターンの情報が記録されるアドレス[4][2]にはZパターンが記録される。つまり、エリア番号4の巡回情報として「5-Z」が設定される。
また、エリア[5]から次に進むエリアの番号の情報が記録されるアドレス[5][1]にエリア番号6が記録されて、エリア[5]内の巡回パターンの情報が記録されるアドレス[5][2]にはZパターンが記録される。つまり、エリア番号5の巡回情報として「6-Z」が設定される。
また、エリア[6]から次に進むエリアの番号の情報が記録されるアドレス[6][1]にエリア番号1が記録されて、エリア[6]内の巡回パターンの情報が記録されるアドレス[6][2]にはZパターンが記録される。つまり、エリア番号6の巡回情報として「1-Z」が設定される。
当該初期巡回情報配列に基づいて作成される初期巡回ループは、図44(b)に示すような初期巡回ループになる。
尚、図44(b)において、pは巡回パターン、rはエリア間ルートである。
【0066】
次に、コンピュータが、初期温度設定処理プログラム、巡回ルートコスト計算処理プログラム、及び、改変受入可否判定処理プログラムの手順に従って、図35のフローチャートに示すような、初期温度設定処理、巡回ルートコスト計算処理、及び、改変受入可否判定処理(phase2)を行う。
まず、初期化作業を行う(ステップS320,ステップS321)。
即ち、ステップS320において、比較用コスト変数C2を「0」、最適コスト保存変数Cbestを「0」に設定し、初期温度設定処理として初期温度Tを「1500℃」に設定する。
また、巡回情報コピー配列の初期化、即ち、Gcopy[1~amax][1~2]を[0,0,0,・・・]にする。また、最適巡回情報配列の初期化、即ち、Gbest[1~amax][1~2]を[0,0,0,・・・]にする。また、走行開始エリア番号記録変数の初期化、即ち、Sを0にする。
次に、ステップS321において、コスト変数C1を「0」、エリア番号管理変数aを「1」、エリア一周探索済みフラグfを「0」、最大エリア間移動コスト保存変数Cmaxを「0」に設定する。
次に、エリア一周探索済みフラグが立っている(f=1)か否かを判定する(ステップS322)。
エリア一周探索済みフラグが立っていなければ(ステップS322でNo)、ステップS323に進んで、a番目のエリアでのG[a][2]パターン時の移動コストをデータベースよりダウンロードして、コスト変数C1に加算する。尚、各エリアでの各巡回パターン(8種類の巡回パターン)時の移動コストは事前に計算されて、データベースに保存されている。その後、ステップS324に進んで、巡回情報配列G[a][1]が1番目のエリアを指示しているか否かを判定する。ここで、次に進むエリアを示す巡回情報配列G[a][1]が「1」(つまり、処理を開始したエリア番号)ということは、探索領域を一周したということになるので、ステップS324でYesの場合は、ステップS325に進んで、エリア一周探索済みフラグを立てる(f=1)。
次に、ステップS326に進んで、a番目のエリア(現在のエリア)から1番目のエリアへ障害物に接触せずに直線で移動できるか否かを判定する。
また、ステップS324でNoの場合は、ステップS327に進んで、a番目のエリア(現在のエリア)からG[a][1]番目のエリア(次に進むエリア)へ障害物に接触せずに直線で移動できるか否かを判定する。
ステップS327でYesの場合は、a番目のエリアのゴール地点からG[a][1]番目のエリアのスタート地点へ直線で移動した場合の移動コストCtravelを計算した(ステップS329)後、ステップS330に進んで、Ctravel>Cmax(最大エリア間移動コスト保存変数)か否かを判定する。
また、ステップS326でYesの場合は、ステップS329に進んで、移動コストCtravelを計算した後、ステップS330に進む。
また、ステップS326でNoの場合、ステップS327でNoの場合、即ち、直線移動できない場合は、ステップS328に進んで、a番目のエリアのゴール地点からG[a][1]番目のエリアのスタート地点への経路(エリア間ルート)を、経路探索アルゴリズム(例えば上述したA*アルゴリズム等)を用いて探索し、その探索した経路(エリア間ルート)の移動コストCtravelを計算した後、ステップS330に進む。
ステップS330でNoの場合、そのまま、a番目のエリアのゴール地点からG[a][1]番目のエリアのスタート地点への移動コストCtravelをコスト変数C1に加算する(ステップS332)。
ステップS330でYesの場合、つまり、CtravelがCmaxよりも大きい場合、当該Ctravelを新しいCmaxに設定し(ステップS331)、その後、ステップS332に進んで、今回の移動コストCtravelをコスト変数C1に加算する。
ステップS332の後は、ステップS333に進んで、aをG[a][1]のエリア番号(次に進むエリアの番号)に設定した後に、ステップS322に戻る。
ステップS322において、エリア一周探索済みフラグが立っていると判定されたならば(ステップS322でYes)、巡回ループが作成されたことが確認されたことになり、この場合、ステップS334に進んで、C1-CmaxをコストC1に設定する。つまり、各エリア間の移動コストの内もっとも高いもの除外したコストをコストC1とする。即ち、現在の巡回情報配列(巡回ループ)に基づいて作成した巡回ルートの移動コストの総和C1が求まる。
以上のように、巡回ルートコスト計算処理が行われ、以後、改変受入処理に移行する。
つまり、ステップS322において、巡回ループが作成されたか否かが判定され、巡回ループが作成されている場合には、ステップS334において、巡回ループのエリア間ルートのうち最も移動コストの大きいエリア間ルートが削除されて巡回ルートが作成されることになる。
尚、ステップS334での右側の「C1」は巡回ループの移動コストであり、ステップS334での左側の「C1」は巡回ルートの移動コストとなる。
即ち、SAの図34の処理においては、最初に、図44に示すような、1つの巡回情報配列(巡回ループの情報)を決め、後述するGAの図48の処理においては、最初に、図44に示すような、複数(例えば20個)の巡回情報配列(巡回ループの情報)を決めているだけで、これらの処理ではまだ巡回ルートの情報が求まっていない。
そして、SAにおいては、図35の処理にて、逐次、巡回ルートの情報(巡回ルート)が求まる。つまり、図35の処理にて求まる情報である、最適巡回情報配列Gbest[1~amax][1~2]、最大エリア間移動コストCmax、走行開始エリア番号Sによって、巡回ルートが決まり、当該巡回ルートを画面上の地図に表示させることが可能となる。また、当該巡回ルートのコストCbestも画面上に表示させることが可能となる。
そして、図35のステップS343にて温度Tが0℃になり、ステップS344にて、SAにより求まった最終の巡回ルートの情報、即ち、最適巡回情報配列Gbest[1~amax][1~2]に記録されているルート情報と、このルート情報を基に移動したときのエリア間ルートの軌跡情報と、Sに記録されている走行開始エリア番号をファイルに保存する。このファイルに保存された内容が、SAにより求まった最終の巡回ルートであり、この巡回ルートの情報と巡回ルートの移動コストCbestとが表示画面D上に表示されることにより、使用者は、SAにより求まった最終の巡回ルートを確認できる。
【0067】
改変受入可否判定処理では、まず、最適コスト保存変数Cbestが初期化状態か否か、もしくはC1<Cbestか否かを判定する(ステップS335)。
ステップS335でYesの場合は、現状において今回のコストC1が最小のコストであるということなので、ステップS336に進んで、今回のコストC1をCbestに設定するとともに、今回の巡回情報配列G[1~amax][1~2]に基づいて作成された巡回ルートを最適コスト保存変数Cbest[1~amax][1~2]に設定する。その後、ステップS337に進んで、比較用コスト変数C2が初期化状態「0」でなく、かつ、C1>C2か否かを判定する。
ステップS335でNoの場合は、現状において初期化状態ではない現状のCbestが最小のコストであるということなので、ステップS337に進む。
ステップS337は、改変を受け入れるか否かの第1判定ステップである。ステップS337において、初期巡回ルートの判定時は、比較用コスト変数C2が初期化状態であるから、ステップS340に進んで、改変を受け入れて、比較用コスト変数C2のコストをコストC1のコストに設定する。
初期巡回ルートの判定時以外において、ステップS337でYesの場合は、今回のコストC1が、比較用コスト変数C2(即ち、前回改変時のコストC1)よりも大きいということなので、今回のコストC1を受け入れた場合の改変は改悪となるが、当該改悪であっても所定の条件を満たす場合は受け入れる処理(ステップS338,339,340)を行う。
即ち、ステップS337でYesの場合は、ステップS338に進んで、乱数Rを生成するとともに、コスト差ΔC、即ち、C1-C2を計算する。そして、ステップS339に進んで、R≦exp(-ΔC/T)か否かを判定する。
つまり、ステップS339は、改悪の場合に、この改悪を改変として受け入れるか否かを判定する第2判定ステップである。
即ち、ステップS339でYesの場合は、ステップS340に進んで当該改悪を改変として受け入れるが、ステップS339でNoの場合は、ステップS341に進んで当該改悪を改変として受け入れずに、前回の巡回情報コピー配列Gcopy[1~amax][1~2]を巡回情報配列G[1~amax][1~2]として設定する。
ステップS339においては、焼きなまし法の温度Tが高温であるほど、あるいは、ΔCが小さい程(改悪度合いが小さい程)、右辺exp(-ΔC/T)の値が大きくなり、ステップS339でNoになる確率が高まるので、改悪を改変として受け入れる確率が高まる。
ステップS337でNoの場合は、C1≦C2であり、改変は改良なので、ステップS340に進んで、当該改変を受け入れる。
ステップS340の後は、ステップS342に進んで、現在の状態をコピーする。即ち、今回の巡回情報配列G[1~amax][1~2]を巡回情報コピー配列Gcopy[1~amax][1~2]にコピーする。
つまり、今回の巡回ルートの移動コストが前回の巡回ルートの移動コストよりも大きい場合には、R≦exp(-ΔC/T)が成立した場合に、今回の巡回ルートを記録として残し(ステップS342)、R≦exp(-ΔC/T)が成立しない場合には、前回の巡回ルートを記録として残すようにしている(ステップS341)。
その後、ステップS343に進んで、温度T=0か否かを判定し、温度T=0でなければ、ステップS345に進んで、直近(前回)の改変は、エリア間ルート、巡回パターンのうち、どちらに対して行われたかを判定する。
ステップS345の判定において、直近の改変が、エリア間ルートに対して行われたと判定された場合、ステップS346に進んで、温度Tを例えば1℃低下させる処理、即ち、温度TをT-1に設定(即ち、温度を1℃下げる)した後、巡回パターンの改変処理(phase3-2)に進む。
ステップS345の判定において、直近の改変が、巡回パターンに対して行われたと判定された場合、又は、初回の処理であると判定された場合は、エリア間ルートの改変処理(phase3-1)に進む。
以上のように、改変受入可否判定処理が行われ、以後、改変処理(phase3(phase3-1,phase3-2))に移行する。
【0068】
尚、ステップS343で温度T=0であると判定された場合は、ステップS344に進んで、Cbestを記録した巡回ルートの情報、即ち、Gbestに記録されているルート情報と、この情報を基に移動したときのエリア間ルートの軌跡情報と、Sに記録されている走行開始エリア番号とをファイルに保存する。つまり、Cbestを持つ巡回ルートが最終結果、即ち、当該SAによる処理で求められた最適な巡回ルートとして決定される。
即ち、温度Tが0になった場合に、最終的に残っているCbestを持つ巡回ルートが、当該SAにて求められた巡回ルートとして決定される。
【0069】
次に、改変受入可否判定処理に用いたSA(焼きなまし法)について概説する。
例えば、図43(a)に示すようなグラフの最大値を求めたいとする。まず解の候補をランダムに一か所選ぶ。次に解の候補の近傍をランダムに探索する。この場合、横軸の右方向を探索すれば解が改善する。よって、図43(b)に示すように、解の候補が右に移動することは許容される。一方、左方向を探索すると解が改悪される。よって、左方向に移動することは原則としては許容されない。しかしながら、この場合、解は、図43(a)に示す局所解にとどまり、最適解にたどり着けないこととなる。そこで改悪される場合でも一定の確率でその結果を受け入れることとする手法が焼きなまし法である。
改悪された解を受け入れる確率はアルゴリズム上で設定された温度Tの高さによって決定される。即ち、温度Tが高温であれば高確率で改悪が許容され、逆に低温時では改悪が許容されにくくなる(図43(c)参照)。つまり、高温時であれば局所解に留まることなく大域的に解を探索できる可能性が高くなる。温度と改悪が許容される確率の関係は、上述した計算式、exp(-ΔC/T)で決められることが多い。温度は初期状態においては高く設定され、探索が進むごとに徐々に下げられる。初期温度をどの程度にするか、また、どの様なペースで温度を下げるのかについては、問題に応じて決められる。このように、温度という概念を導入して局所解に陥らないようにした手法がSAである。
【0070】
次に、コンピュータが改変処理プログラムの手順に従って、図36のフローチャートに示すような、改変処理(phase3)を行う。
まず、図36(a)のフローチャートに示す、エリア間ルートの改変処理(phase3-1)について説明する。
上述したステップS345の判定において、直近の改変が、巡回パターンに対して行われたと判定された場合は、ステップS342での巡回情報配列G[1~amax][1~2]を引き継ぐ(ステップS350)。
次に、エリア番号1~amaxの中から値を無作為に1つ選んで、P1に代入する(ステップS351)とともに、エリア番号1~amaxの中から値を無作為に1つ選んで、P2に代入する(ステップS352)。
その後、ステップS353に進んで、P1とP2とが同じか否か、G[P2][1]とP1とが同じか否か、G[P1][1]とP2とが同じか否かを判定する。
ここで、G[P2][1]、G[P1][1]について説明する。ステップS350において、例えば図45に示す巡回情報配列を引き継いだとする。この場合、当該巡回情報配列に基づいて、図37(a)に示すような巡回ループが作成される。そして、ステップS351において、P1としてエリア番号2が選択されたとする。
この場合、P1を選択したことにより決まる次のエリア番号G[P1][1]が5となり、エリア番号2の巡回パターンは、「Z」となる。
つまり、P1,P2は、入れ替え処理が行われるエリア番号が入る変数、G[P1][1],G[P2][1]はP1番目又はP2番目のエリアから次に向かうエリアの番号が入っている変数(配列)、G[P1][2],G[P2][2]はP1番目又はP2番目のエリアの巡回パターンが入っている変数(配列)である。また、Ptmpは入れ替え処理の最後に使われる値を保持しておく変数、mは処理ループを脱出するためのフラグ兼エリア番号の一時保持変数である。
そして、ステップS353でYesの場合は、無作為に選んだエリア番号が同じだったり、無作為に選んだエリア番号とそのエリア番号から次に向かうエリア番号とが同じあるので、ステップS352に戻って、P2を選び直す。
ステップS353でNoの場合は、ステップS354に進んで、PtmpをG[P2][1]に設定する。
次に、ステップS355に進んで、G[1~amax][1]=P2となるようなエリア番号aを探索し、このようなエリア番号aを発見できたか否かを判定する。つまり、巡回情報において、次に進むエリアとしてP2のエリア番号が設定されているエリアがまだ残っているか否かを判定する。
ステップS355でNoの場合は、mを-1に設定する(ステップS356)。
ステップS355でYesの場合は、mをaに設定する(ステップS357)。つまり、P2に代入されているエリアを次の移動先としている別のエリアが存在していれば、その別のエリアの番号aをmに代入する。
ステップS356の後、又は、ステップS357の後は、ステップS358に進んで、G[P1][1]をP2に設定する。
そして、ステップS359に進んで、直前のステップS358の処理を行ったのは初めてか(1回目か)否かを判定する(ステップS359)。
ステップS359でYesの場合、即ち、S358の処理を行うのが初めてである場合、ステップS361に進んで、m=-1か否かを判定する。
ステップS359でNoの場合、即ち、S358の処理を行うのが初めてではない場合、G[P2][1]に設定されている巡回パターンを逆転させ(ステップS360)、その後、ステップS361に進む。
ステップS361でNoの場合、ステップS362に進んで、P1をP2に設定するとともに、P2をmに設定した後、ステップS355に戻る。
ステップS361でYesの場合、ステップS363に進んで、G[P2][1]をPtmpに設定した後、ステップS364に進んで、G[P2][2]に設定されている巡回パターンを逆転させ、その後、phase2のステップS380に進む。
【0071】
次に、図36(b)のフローチャートに示す、巡回パターンの改変処理(phase3-2)について説明する。
ステップS345の判定において、温度Tが0ではないと判定された場合は、ステップS342での巡回情報配列G[1~amax][1~2]を引き継ぐ(ステップS370)。
次に、エリア番号1~amaxの中から値を無作為に1つ選んで、Pに代入する(ステップS371)とともに、G[P][2]に既存の巡回パターン以外の巡回パターンの何れかを無作為に代入し(ステップS370)、その後、phase2のステップS380に進む。つまり、既にG[P][2]に設定されている巡回パターンと同じ巡回パターンが無作為に選択された場合は、異なる巡回パターンが出るまで無作為に選び直される。
【0072】
換言すれば、巡回ループ作成手段は、巡回ループのエリア内の巡回パターンを変更する巡回パターン改変処理を実行する巡回パターン改変処理手段を備え、当該巡回パターン改変処理手段は、巡回ループの各エリアから無作為に1つのエリアを選んで、当該エリアの巡回情報である巡回パターンの情報を変更する手段である。
【0073】
そして、エリア間ルートの改変処理後、又は、巡回パターンの改変処理後、即ち、ステップS364の後、又は、ステップS372の後は、phase2のステップS380に進む。
phase2のステップS380では、巡回情報配列G[1~amax][1~2]をphase3から引き継ぐ。その後、ステップS321に進む。
【0074】
次に、図36(a)に示したエリア間ルートの改変処理(phase3-1)について、図37図42に基づいてより具体的に説明する。
例えば、図45に示した巡回情報配列に基づいて図37(a)に示すような巡回ルートが前回の巡回ルートとして作成されて、引き継がれたとする(ステップS350)。
そして、ステップS351で、入れ替え処理が行われるエリア番号として「2」が選択されてP1に代入されたとする。この場合、図37(a)に示すように、変数の状態は、G[P1][1](エリア2から次に進むエリア)は「5」、G[P1][2](エリア2内の巡回パターン)は「Z」である(図45参照)。
次に、ステップS352で、入れ替え処理が行われるエリア番号として「3」が選択されてP2に代入されたとする。この場合、図37(b)に示すように、変数の状態は、G[P2][1](エリア3から次に進むエリア)は「6」、G[P2][2](エリア3内の巡回パターン)は「S」である(図45参照)。
次に、ステップS354で、Ptmpに、P2であるエリア3の行先エリアG[P2][1]として6を設定する。つまり、Ptmpを「6」にする(図37(c)参照)。
そして、ステップS355で、変数P2が示すエリアを移動先としているエリアが存在しているか検索する。存在していたらそのエリア番号をmに入れる(ステップS357)。この場合、変数P2が示すエリア3を移動先としているエリアはエリア4が存在する(図45参照)ので、mを「4」にする(図38(a)参照)。
次に、ステップS358で、P1「エリア2」の行先エリアG[P1][1]をP2にする。この場合、図38(b)に示すように、G[P1][1]が「3」に設定される。この場合、P1が「2」、G[P1][1]が「3」なので、エリア2とエリア5とを繋ぐエリア間ルートが解除され、その代わりに、エリア2の終点とエリア3の始点とがエリア間ルートで繋がれる(図38(b)参照)。
次に、ステップS359に進み、ステップS358の処理は初めてなので、ステップS361に進む。この場合、m=4であり、-1ではないので、ステップS362に進む(図38(c)参照)。
ステップS362では、P1をP2に設定するとともに、P2をmに設定する。この場合、図39(a)に示すように、P1に「3」が設定され、P2に「4」が設定される。
その後、ステップS355に戻って、変数P2が示すエリアを移動先としているエリアが存在しているか検索する。存在していたらそのエリア番号をmに入れる(ステップS357)。この場合、変数P2が示すエリア4を移動先としているエリアはエリア5が存在する(図45参照)ので、mを「5」にする(図39(b)参照)。
そして、ステップS358に進み、P1「エリア2」の行先エリアG[P1][1]をP2にする。この場合、図39(c)に示すように、G[P1][1]が「4」に設定される。この場合、P1が「3」、G[P1][1]が「4」なので、エリア3とエリア5とを繋ぐエリア間ルートが解除され、その代わりに、エリア3の終点とエリア4の始点とがエリア間ルートで繋がれる(図39(c)参照)。
その後、ステップS359に進み、ステップS358の処理は初めてではないので、ステップS360に進む。この場合、P1であるエリア3の巡回パターンを反転する。つまり、図40(a)に示すように、エリア3の巡回パターンが、「S」パターン(図39(c)参照)から「S’」パターンに変換される(図40(a)参照)。この場合、P1が「3」、G[P1][1]が「4」なので、巡回パターンが変更したエリア3の終点とエリア4の始点とがエリア間ルートで繋ぎ直される。また、P2が「4」、G[P2][1]が「3」なので、エリア4の終点と巡回パターンが変更したエリア3の始点とがエリア間ルートで繋ぎ直される。また、巡回パターンが変更したエリア3の始点とエリア2の終点とがエリア間ルートで繋ぎ直される。
その後、ステップS361に進む。この場合、m=5であり、ステップS362に進む。
ステップS362では、P1をP2に設定するとともに、P2をmに設定する。この場合、図40(b)に示すように、P1に「4」が設定され、P2に「5」が設定される。
その後、ステップS355に戻って、変数P2が示すエリアを移動先としているエリアが存在しているか検索する。存在していたらそのエリア番号をmに入れる(ステップS357)。この場合、図40(c)に示すように、変数P2が示すエリア5を移動先としているエリアは存在しない(図38(b)において、エリア2とエリア2の行先であったエリア5とのエリア間ルートは既に解除されている)ので、ステップS356に進んで、mが-1に設定される。
そして、ステップS358に進んで、P1「エリア4」の行先エリアG[P1][1]をP2にする。この場合、図41(a)に示すように、G[P1][1]が「5」に設定される。この場合、P1が「4」、G[P1][1]が「5」なので、エリア4とエリア3とを繋ぐエリア間ルートが解除され、その代わりに、エリア4の終点とエリア5の始点とがエリア間ルートで繋がれる(図41(a)参照)。
その後、ステップS359に進み、ステップS358の処理は初めてではないので、ステップS360に進む。この場合、P1であるエリア4の巡回パターンを反転する。つまり、図41(b)に示すように、エリア4の巡回パターンが「M」パターン(図41(a)参照)から「M’」パターンに変換される(図41(b)参照)。この場合、P1が「4」、G[P1][1]が「5」なので、巡回パターンが変更したエリア4の終点とエリア5の始点とがエリア間ルートで繋ぎ直される。また、P2が「5」、G[P2][1]が「4」なので、エリア5の終点と巡回パターンが変更したエリア4の始点とがエリア間ルートで繋ぎ直される。また、エリア3の終点とエリア4の始点とがエリア間ルートで繋ぎ直される。
その後、ステップS361に進む。この場合、m=-1であり、ステップS363に進む。
ステップS363では、G[P2][1]をPtmpに設定する。この場合、図41(c)に示すように、G[P2][1]が6に設定され、P2=5なので、エリア5の行先がエリア6に変更されて、エリア5の終点とエリア6の始点とがエリア間ルートで繋がれる。
そして、最後に、ステップS364に進み、ステップS364では、G[P2][2]の巡回パターンを逆転させる。この場合、図42に示すように、G[P2][2](=エリア5の巡回パターン)が「Z」パターン(図41(c)参照)から「Z’」パターンに変換される。この場合、P1が「4」、G[P1][1]が「5」なので、エリア4の終点と巡回パターンが変更したエリア5の始点とがエリア間ルートで繋がれる。また、P2が「5」、G[P2][1]が「6」なので、巡回パターンが変更したエリア5の終点とエリア6の始点とがエリア間ルートで繋がれる。
以上により、図42に示すような、全エリアをループする巡回ループが作成される。
その後、phase2のステップS380に進み、ステップS334で最も移動コストが高いエリア間ルートを削除した巡回ルートが作成されることになる。
【0075】
改変処理(phase3)の内容を、図46に基づいて要約すると以下のようになる。
図46(a)に示すように、1回目にランダムに選ばれたエリア(P1に設定されたエリア)が2、2回目にランダムに選ばれたエリア(P2に設定されたエリア)が3であったとする。この場合、入れ替え対象となるエリア間ルートは、それぞれのエリアから次のエリアに向かっているエリア間ルートになる。即ち、エリア2からエリア5に向かうエリア間ルート、及び、エリア3からエリア6に向かうエリア間ルートとなる。
そして、図46(b)に示すように、1回目に選ばれたエリア2の行先を2回目に選んばれたエリア3に変更する。つまり、エリア2の行先をエリア5からエリア3に変更する。これにより、エリア2とエリア3とがエリア間ルートで繋がれて、エリア2とエリア5とを繋いでいたエリア間ルートが消滅する。
次に、図46(c)に示すように、1回目に選んだエリア2の元々の行先であるエリア5から2回目に選んだエリア3へと至る道中のエリア5,4,3の巡回パターン及びエリア間ルートを反転させる。このとき、一つのエリアの行先エリアは1つしか指定できないために、2回目に選ばれたエリア3から次のエリア6へと向かう元々のエリア間ルートは消滅する。
最後に、図46(d)に示すように、1回目に選んだエリア2の元々の行先のエリア5から2回目に選んだエリア3の元々の行先エリア6へ向かうルートを設定して処理が終了する。
【0076】
即ち、エリア間ルート改変処理(phase3-1)の内容を要約すると、1回目に選ばれたエリア(P1に設定されたエリア)から次のエリアへ向かうエリア間ルート、及び、2回目に選ばれたエリア(P2に設定されたエリア)から次のエリアへ向かうエリア間ルートを、入れ替え対象のエリア間ルートとする処理ステップと、1回目に選ばれたエリアの行先を2回目に選ばれたエリアに変更するとともに、1回目に選ばれたエリアと当該エリアの元々の行先であったエリアとを繋いでいたエリア間ルートを消滅させる処理ステップと、1回目に選んだエリアの元々の行先であるエリアから2回目に選んだエリアへと至る道中のエリアの巡回パターン及びエリア間ルートを反転させるとともに、2回目に選ばれたエリアと当該エリアの元々の行先であったエリアとを繋いでいたエリア間ルートを消滅させる処理ステップと、1回目に選んだエリアの元々の行先のエリアから2回目に選んだエリアの元々の行先のエリアへと向かうルートを設定する処理ステップとを備えた処理である。
換言すれば、巡回ループ作成手段は、巡回ループのエリア間ルートを変更するエリア間ルート改変処理(phase3-1)を実行するエリア間ルート改変処理手段を備え、当該エリア間ルート改変処理手段は、巡回ループの各エリアのうちから異なる任意の第1のエリアP1と第2のエリアP2とを任意に選択する第1ステップ(ステップS351,ステップS352)と、第2のエリアP2の巡回情報として設定されている次に進むエリアの情報を保留情報Ptmpとして記録しておく第2ステップ(ステップS354)と、第2のエリアP2の巡回情報として設定されている次に進むエリアの情報を巡回情報として持っているエリアを探索して当該エリアの有無を判定する第3ステップ(ステップS355)と、第1のエリアP1の巡回情報に設定する次に進むエリアの情報として、第2のエリアP2を設定する第4ステップ(ステップS358)と、当該第4ステップの処理が初めてではない(1回目ではない)場合に、第2のエリアP2の巡回情報に設定されている巡回パターンを反転させる第5ステップ(ステップS360)と、第3ステップでの判定結果が有(m=a)であった場合(ステップS361でNo)、第4ステップの後、又は、第5ステップの後において、第1のエリアP1を第2のエリアP2に変更するとともに、第2のエリアを第3ステップで探索されたエリアに変更した後に、第3ステップの処理に戻る第6ステップ(ステップS362)と、第3ステップでの判定結果が無(m=-1)であった場合(ステップS361でYes)、第4ステップの後、又は、第5ステップの後において、保留情報Ptmpを第2のエリアP2の巡回情報としての次に進むエリアとして設定するとともに、第2のエリアP2の巡回情報に設定されている巡回パターンを反転させる第7ステップ(ステップS363,ステップS364)とを実行する構成としたものである。
【0077】
以上説明したように、実施形態に係るSAによる自動作成機能を備えた巡回ルート作成装置によれば、巡回情報を用いて、巡回ルートを更新するようにしたので、複数のエリアを移動体に巡回させるための効率的な巡回ルートを作成できるようになった。
また、巡回ループに対して、エリア間ルート改変処理手段による改変処理を行うことにより、改変(更新)される巡回ループに多様性を持たせることができるようになり、効率的な巡回ルートを作成できるようになった。
また、巡回ループに対して、巡回パターン改変処理手段による改変処理を行うことにより、改変(更新)される巡回ループに多様性を持たせることができるようになり、効率的な巡回ルートを作成できるようになった。
また、巡回ループに対して、エリア間ルート改変処理手段による改変処理と巡回パターン改変処理手段による改変処理とを交互に行うようにしたので、改変(更新)される巡回ループにより多様性を持たせることができるようになり、より効率的な巡回ルートを作成できるようになった。
【0078】
次に、GAについて説明する。
GAによる自動作成機能の場合、SAによる自動作成機能と同じように、巡回パターン設定手段及び巡回順設定手段は、例えば、各エリアを一巡する巡回ループを作成する巡回ループ作成手段と、作成された巡回ループの経路を移動体で移動させる場合の移動コストを算出する移動コスト算出手段と、作成された巡回ループを形成するエリア間ルートのうち最も移動コストの大きいエリア間ルートを削除して、削除したエリア間ルートのルート終端が繋がれていたエリアを巡回ルートのスタート領域とし、かつ、削除したエリア間ルートのルート始端が繋がれていたエリアを巡回ルートのゴール領域とした各エリアを一巡する巡回ルートを作成する巡回ルート作成手段とを備える。
移動コスト算出手段は、SAで説明したものと同じである。
そして、巡回ループ作成手段は、エリア毎に巡回情報を設定することにより巡回ループを作成する初期世代巡回ループ作成手段と、後世代巡回ループ作成手段とを備える。
また、巡回ルート作成手段は、初期世代巡回ルート作成手段と、後世代巡回ルート作成手段とを備える。
初期世代巡回ループ作成手段は、複数の巡回ループを作成する。
初期世代巡回ルート作成手段は、初期世代巡回ループ作成手段により作成された複数の初期世代巡回ループ毎に、各エリア毎の巡回情報を変更して、複数の初期世代巡回ルートを作成する。
後世代巡回ループ作成手段は、複数の初期世代巡回ルートのうち、移動コストの小さい初期世代巡回ルートをいくつか抽出し、この抽出された初期世代巡回ルートの巡回情報を使用して後世代巡回ループを作成する。
後世代巡回ルート作成手段は、後世代巡回ループ作成手段により作成された後世代巡回ループ毎に、各エリア毎の巡回情報を変更して、後世代巡回ルートを作成する。
尚、GAでも上述した巡回情報を使用するが、GAでは、巡回情報を遺伝情報と適宜読み替えて説明する。
実施形態においては、後世代の世代数は複数であり、当該後世代の世代数は、事前に任意に決められる。実施形態では、世代数は例えば100以上としている。
そして、今回の後世代巡回ルート作成手段は、前回の後世代巡回ループ作成手段により作成された前回の後世代巡回ループ毎に、各エリア毎の巡回情報を変更して、今回の後世代巡回ルートを作成し、最終世代の後世代巡回ルート作成手段は、最終世代として作成した複数の巡回ルートのうち、移動コストが最小である巡回ルートを巡回ルートとして決定するようにしている。つまり、当該最終の巡回ルートが、GAにより求められた巡回ルートとなる。
【0079】
GAによる処理の流れの概略を図47に示す。
即ち、GAでは、初期世代の複数の個体を作成する初期世代個体作成処理(ステップS401)、個体評価処理(ステップS402)、世代確認処理(ステップS403)、優秀な遺伝情報を持つ個体を複数体だけ親として選出する親選出処理(ステップS404)、親の遺伝情報を用いた後世代個体を作成する後世代個体作成処理(ステップS404)を実行する。
また、GAによる処理の流れを図47に基づいて簡単に説明すると、以下のようになる。
まず、初期世代個体作成処理(ステップS401)により、複数の個体、即ち、複数の巡回ループを作成する。この場合、巡回パターン設定手段及び巡回順設定手段は、各エリア毎に、図45に示すような、各エリア毎に設定される自己のエリア内の巡回パターンの情報と次に進むエリアの情報とで構成された組み合わせ情報、即ち、遺伝情報(巡回情報)をランダムに設定することにより、巡回ループとなる個体(初期巡回情報配列)を作成する。
個体評価処理(ステップS402)においては、各個体である各巡回ルートを評価する。即ち、巡回ループにおいて移動コストが一番大きい最大エリア間ルートを削除した巡回ルートを作成し、当該巡回ルートの移動コストを計算する。
世代確認処理(ステップS403)では、今回の世代が事前に決めた世代数に到達したか否かを確認する。
今回の世代が事前に決めた世代数(例えば100以上)に到達していなければ(ステップS403でNoの場合)、今回の世代(初期世代、又は、後世代)の個体の中から移動コストの優秀な個体を複数体(例えば4体)だけ親として選出する(ステップS404)。
今回の世代の個体の中から選出された優秀な個体を親として、当該親の遺伝情報を用いた後世代の個体を作成する(ステップS405)。
その後、ステップ402~ステップ405を繰り返して、ステップS403での判断がYesとなった場合には、GAによる処理を終了する。
【0080】
即ち、GAでは、上述した巡回パターン設定手段及び巡回順設定手段が、初期世代個体作成処理、個体評価処理、世代確認処理、親選出処理、後世代個体作成処理を行う。つまり、これら各処理の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータとにより、これら各処理が実行される。
以下、初期世代個体作成処理、個体評価処理、世代確認処理、親選出処理、後世代個体作成処理の内容を詳細に説明する。
つまり、GAでは、上述した巡回パターン設定手段及び巡回順設定手段が、初期世代個体作成処理、世代確認処理、後世代個体作成処理、個体評価処理、優秀個体抽出処理を行う。つまり、これら各処理(初期世代個体作成処理、世代確認処理、後世代個体作成処理、個体評価処理、優秀個体抽出処理)の手順を示す処理プログラムと、当該処理プログラムによる情報処理を実現するコンピュータとにより、これら各処理が実行される。
【0081】
まず、コンピュータが、初期世代個体作成処理プログラムの手順に従って、図48のフローチャートに示すような、初期世代個体作成処理(phase1)を行う。
尚、GAにおいて、「個体」とは、巡回ループ、又は、巡回ルートのことである。
まず、個体識別変数pの初期化処理とエリア個数情報amaxの取得処理を行う(ステップS411)。つまり、エリア番号管理変数aを1に設定するとともに、エリア個数情報amaxをエリアの個数に設定する(例えば、上述した前提技術の場合(図12の複数の分割領域の場合)、個数情報amaxは「16」に設定され、図44(a)の場合、個数情報amaxは「6」に設定される)。
そして、遺伝情報配列G[1~20][1~amax][1~2]を初期化して、空にする(ステップS412)。
次に、初期世代個体の作成ループに入る(ステップS413)。例えば、初期世代個体を20個作成する。つまり、p<=20(即ち、p≦20)である。
まず、エリア番号管理変数aの初期化処理、即ち、エリア番号管理変数aを1に設定する(ステップS414)。
そして、遺伝情報配列G[p][a][1]に、エリア2~amaxの間でかつ遺伝情報配列G[p][1~amax][1]に未だに含まれていない値をランダムに代入する(ステップS415)とともに、遺伝情報配列G[p][a][2]に、巡回パターンを表す数値をランダムに代入する(ステップS416)。
その後、aをG[p][a][1]に設定する(ステップS417)。
そして、遺伝情報配列G[p][1~amax][1]の中に空の要素が2個以上残っているか否かを判定する(ステップS418)。つまり、1つの個体を構成する遺伝情報配列中の遺伝情報(巡回情報)の中で次に進むエリアの情報が設定されていない領域が2つ以上残っていれば(ステップS418でYes)、ステップS415~ステップS417を繰り返して、1つの個体を構成する遺伝情報配列中の遺伝情報の中で次に進むエリアの情報が設定されていないエリアが1つであれば(ステップS418でNo)、そのエリアの遺伝情報配列G[p][a][1]を1に設定する(ステップS419)とともに、そのエリアの遺伝情報配列G[p][a][2]に、巡回パターンを表す数値をランダムに代入する(ステップS420)。つまり、そのエリアの最後に進むエリアのエリア番号を1に設定するとともに、そのエリアの巡回パターンをランダムに設定する。
そして、pをp+1に設定する(ステップS421)。
つまり、ステップS413~ステップS421を複数回数繰り返すことにより、初期世代の個体を複数個(例えば20個)作成する。
即ち、図48に示した「初期世代個体作成ループ」の処理を行う。
【0082】
遺伝情報配列G[1~20][1~amax][1~2]について説明する。
[1~20]は初期世代個体作成処理で作成する個体を識別するための変数、[1~amax]はエリアを識別するための変数であり、G[p][a][1]には、初期世代のp番目の個体のa番目のエリアが次に進むエリアの情報が設定される。また、G[p][a][2]には、初期世代のp番目の個体のa番目のエリアのエリア内移動ルートパタンの情報が設定される。即ち、作成する個体(巡回ループ)を構成する各エリア毎の巡回情報(遺伝情報)が設定される記録領域が構築されており、当該記録領域に複数個の個体を形成する複数個の巡回情報配列が、遺伝情報配列G[1~pmax][1~amax][1~2]という形で記録される。例えば、初期世代の個体数が20個であれば、当該20の個体を形成する20個の巡回情報配列が、遺伝情報配列G[1~20][1~amax][1~2]という形で記録される。
【0083】
つまり、SAでは、巡回情報配列で特定される初期の巡回ループを1つだけ生成して、改変処理を行なうのに対して、GAでは、巡回情報配列で特定される初期の巡回ループ(初期個体)を初期世代個体として複数個生成し、かつ、後世代毎に複数個の個体を生成するに当たって、交叉処理や突然変異処理を行うという点で異なる。
大まかにいえば、SAでは、1つの初期巡回ループを生成して改変処理を行って順次1つの巡回ループを作成して評価することを繰り返すのに対して、GAでは、複数の初期巡回ループ、即ち、初期世代個体を生成して、次の世代の個体を生成する際には、初期世代個体の中から優秀な親個体を選出し、当該親個体を用いた交叉処理や突然変異処理を行うことで次の世代個体を生成していく。そして、以降、同様に、今回の後世代の個体を生成する際には、前回の後世代の個体の中から優秀な親個体を選出し、当該親個体を用いた交叉処理や突然変異処理を行うことで今回の世代個体を生成していくことを、あらかじめ決められた世代数だけ繰り返すものである。
即ち、初期世代個体作成処理は、上述した図44(a)に示す初期巡回情報配列G[1~amax][1~2]を、複数個、例えば20個の初期巡回情報配列G[1~amax][1~2]を作成して、遺伝情報配列G[1~20][1~amax][1~2]として保管する処理、つまり、図48のステップS413~ステップS421の処理を20回繰り返して、20個の初期世代個体を生成(作成)する処理である。
また、あらかじめ決められた世代数の処理が終了した時点で最終的に残った最適遺伝情報保存配列Gbest[1~amax][1~2]による巡回ループに基づく巡回ルートが求められることになる。
尚、交叉処理、突然変異処理については、後述する。
【0084】
次に、コンピュータが、個体評価処理プログラム(世代確認処理プログラムを含む)の手順に従って、図49のフローチャートに示すような、個体評価処理(世代確認処理を含む)(phase2)を行う。
phase1の処理後、最適コスト変数及び最適遺伝情報保存配列の初期化処理を行う(ステップS430)。つまり、最適コスト変数Cbestを0にするとともに、最適遺伝情報保存配列Gbest[1~amax][1~2]を空にする。
次に、評価する個体は何世代目かを判定する(ステップS431)。つまり、世代確認処理を行う。
評価する個体が1世代(初期世代)の個体であれば、個体別変数及びコスト管理配列の初期化処理を行う(ステップS432)。つまり、個体別変数pを1にするとともに、コスト管理配列C[1~amax]を0にする。
そして、個体評価ループに入る(ステップS433)。例えば、初期世代個体である20個の個体を評価する個体評価ループに入る。
まず、エリア番号管理変数a、エリア一周探索済みフラグf、エリア間移動時最大コスト管理変数Cmaxの初期化を行う(ステップS434)。つまり、エリア番号管理変数aを1に、エリア一周探索済みフラグfを0に、エリア間移動時最大コスト管理変数Cmaxを0に設定する。
次に、エリア一周探索済みフラグは立っているか否かを判定する(ステップS435)。つまり、エリア一周探索済みフラグfが1か否かを判定する。
エリア一周探索済みフラグfが1でなければ(ステップS435でNo)、a番目のエリアを遺伝情報配列G[p][a][2]で指定された巡回パターンで巡った際の移動コストをデータベースよりダウンロードして、移動コストC[p]に加算する(ステップS436)。
次に、遺伝情報配列G[p][a][2]が処理を開始した1番目のエリアを指示しているか否かを判定する(ステップS437)。
その後、エリア間ルートの作成処理及び移動コスト計算処理に移行する。
また、ステップS437でNoの場合、その後、ステップS440経由で、エリア間ルートの作成処理及び移動コスト計算処理に移行する。
即ち、ステップS437でYesの場合、つまり、G[p][a][2]の値(次に進むエリアの番号)が処理を開始したエリア番号の場合、探索領域(各エリア)を一周したということになるので、エリア一周探索済みフラグfを1にした後に、a番目のエリアから1番目のエリアへ直線で移動できるか否かを判定し(ステップS439)、エリア間ルートの作成処理及び移動コスト計算処理に移行する。
【0085】
ステップS437でNoの場合、a番目のエリアから遺伝情報配列[p][a][2]に設定されたエリアへ直線で移動できるか否かを判定する(ステップS440)。直線で移動できる場合(ステップS440でYes)、a番目のエリアのゴール地点から遺伝情報配列G[i][a][1]番目のエリアのスタート地点へ直線で移動した場合の移動コストCtravelを計算する(ステップS441)。
また、直線で移動できない場合(ステップS440でNo)、a番目のエリアのゴール地点から遺伝情報配列G[p][a][1]番目のエリアのスタート地点への経路を経路探索アルゴリズム(例えば、前提技術で説明したA*アルゴリズム等)を用いて計算し、その経路に基づいて当該経路の移動コストCtravelを計算する(ステップS442)。
ステップS441又はステップS442の後に、Ctravel>Cmaxか否かを判定する(ステップS443)。
Ctravel>Cmaxでなければ(ステップS443でNo)、a番目のエリアのゴール地点からG[p][a][1]番目のエリアのスタート地点への移動コストを移動コストC[p]に加算して(ステップS444)、その後、G[p][a][1]をaに設定する(ステップS446)。
Ctravel>Cmaxであれば(ステップS443でYes)、CmaxをCtravelにするとともに、G[p][a][1]に設定されたエリアの番号を走行開始エリア番号Sに設定し(ステップS445)、その後、ステップS444に進む。
つまり、ステップS443の判断後のCmaxに残っている移動コストを持つエリア間ルートが、個体(巡回ループ)の最大エリア間ルートとなる。
尚、ステップS439での判断でYesの場合は、ステップS442に進み、ステップS439での判断でNoの場合は、ステップS441に進む。
以上のように、エリア間ルートの作成処理及び移動コスト計算処理を行った後、ステップS435に戻る。
【0086】
エリア一周探索済みフラグfが1であれば(ステップS435でYes)、C[i]←C[i]-Cmaxに設定し(ステップS447)、その後、Cbestが初期状態であるか否か、又は、最適移動コストCbest>C[i]であるか否かを判定する(ステップS448)。尚、ステップS447での右側のC[i]は巡回ループの移動コストであり、ステップS447での左側のC[i]は巡回ルートの移動コストとなる。
Cbestが初期状態であるか、又は、最適コスト変数Cbest>C[i]である場合(ステップS448でYes)、巡回ルートの移動コストC[i]を最適コスト変数Cbestに設定するとともに、最適遺伝情報保存配列Gbest[1~amax][1~2]をG[p][1~amax][1~2]に設定した後、pをp+1に設定する(ステップS450)。
即ち、ステップS447~ステップS449において、C[i]は、作成された各個体(巡回ループ)に基づいて作成された巡回ルートの移動コストである。
今回作成した巡回ルートの移動コストC[i]が、今までに作成した巡回ルートの最適移動コストCbestよりも小さい場合には、ステップS449において、移動コストC[i]を最適移動コストCbestに書き換えて、当該移動コストC[i]を持つ巡回ルートの元となった巡回ループ(個体)の遺伝情報保存配列であるG[p][1~amax][1~2]を最適遺伝情報保存配列Gbest[1~amax][1~2]に書き換える更新処理をおこなっている。即ち、ステップS449において、各世代毎の最適巡回ループ(移動コストが最も小さい巡回ループ)の元となる巡回ループ(個体)を記録している。
Cbestが初期状態でなく、又は、最適コスト変数Cbest>C[i]でもない場合(ステップS448でNo)は、ステップS450に進んで、次の個体pの評価に移行する。
ステップS433からステップS450の処理を繰り返して、世代のすべての個体、例えば、世代毎の20個の個体のエリア間ルートの作成処理及び移動コスト計算処理が終了したら、当該世代が最終世代か否かを判定する(ステップS451)。
最終世代でなければ(ステップS451でNo)、例えば世代毎の20個作成される個体(巡回ループ)の各移動コストC[1~20]の中からコストの低い順に4個体をソートし、各移動コストC[1~4]、及び、遺伝情報配列G[1~4][1~2]にその個体の情報を移し替える(ステップS452)。即ち、当該コストの低い4個体を、後世代の個体を作成するための親として選出し、当該各親の移動コストC[1~4]、及び、各遺伝情報配列G[1~4][1~2]を記録にしておく。
最終世代であれば(ステップS451でYes)、GAを終了する。この終了時点で、最適遺伝情報保存配列Gbest[1~amax][1~2]に記録されている遺伝情報(巡回情報)に基づく巡回ループの移動コストからCmaxを引いた移動コストを持つ巡回ルートが、GAによる探索結果で作成された巡回ルートとなる。即ち、ステップS453において、Gbestを記録した巡回ループの情報、即ち、最適巡回情報配列Gbest[1~amax][1~2]に記録されているルート情報と、このルート情報を基に移動したときのエリア間ルートの軌跡情報と、Sに記録されている走行開始エリア番号をファイルに保存する。このファイルに保存された内容が、GAにより求まった最終の巡回ルートであり、この巡回ルートの情報と巡回ルートの移動コストCbestとが表示画面D上に表示されることにより、使用者は、GAにより求まった最終の巡回ルートを確認できる。
【0087】
コンピュータは、交叉処理プログラムの手順に従って、図50のフローチャートに示すような、後世代個体作成処理としての交叉処理(phase3-1)を行う。
まず、個体識別変数の初期化をする。即ち、個体識別変数pを5に設定する(ステップS460)。
遺伝情報配列G[1~20][1~amax][1~2]をphase2から引き継ぐ(ステップS461)。
遺伝情報配列G[5~20][1~amax][1~2]を初期化し空にする(ステップS462)。つまり、phase2から引き継いだ例えば20個体のうち、移動コストが大きい例えば16個体の情報を無くす(前世代の16個体を死滅させる)。
次に、交叉処理によって、子を例えば12個体作るループに入る。ここで、p<=16(即ちp≦16)である(ステップS463)。
尚、後世代の子個体は、例えば後世代個体総数20-後世代親個体4=16個体であるが、交叉処理では、12個の子個体を作成し、後述する突然変異処理(phase3-2)にて、4個の子個体を作成する。
【0088】
4つの親個体から2個体を選ぶ。選び方は予め決められた手順で行う(ステップS464)。4つの親個体から2個体をランダムに選んでもよいが、同じ親固体を選んでしまうことなどがあり、多様性が出にくい可能性がある。そこで、例えば、4つの親個体から2個体を選ぶ組み合わせ求め、この組み合わせの内、いずれかの親個体の組み合わせを1つ選ぶ。ここでは、12個の子個体を作成するため、親個体の組み合わせを12回求める。
選ばれた親個体のうち一方の親個体の遺伝情報を配列P1[1~amax][1~2]にコピーするとともに、他方の親個体の遺伝情報を配列P2[1~amax][1~2]にコピーする(ステップS465)。
そして、エリア番号管理変数の初期化、即ち、エリア番号管理変数aを1に設定する(ステップS466)。
また、親P1からの遺伝可否判断フラグの初期化、即ち、フラグf1を0にするとともに、親P2からの遺伝可否判断フラグの初期化、即ち、フラグf2を0にする(ステップS467)。
以上により交叉処理に移るための事前処理が終わり、次に、ステップS468に進んで、a=1かつp番目の個体の遺伝情報交叉処理を1回以上行ったか否かを判定する。つまり、p番目の個体の遺伝情報がエリアを一周して戻ってこられる状態になったか否か、即ち、遺伝情報に基づいて各エリアを一巡するp番目の巡回ループが作成されたか否かを判定し、当該ステップS468での判断がNoである場合、交叉処理に移行する
尚、交叉処理とは、子個体(後世代巡回ループ)を作る際に、親個体の巡回情報を引き継ぐ処理(後述の処理B2)、又は、親個体の巡回情報を引き継げない場合にランダムに巡回情報を設定する処理(後述の処理B4,B3)のことをいう。
【0089】
交叉処理では、まず、致死的遺伝情報の遺伝を防ぐ処理ブロックB1に移行する。
処理ブロックB1では、まず、遺伝情報配列G[p][1~amax][1~2]の中に空の要素が2個以上残っているか否かを判定する(ステップS469)。
ステップS469での判断がYesである場合、P1[a][1]=1であるか、若しくは、今回作成しようとしているG[p][1~amax][1](各エリアに設定される遺伝情報である行先エリアの情報)に既にP1[a][1]と同じ値が記録されているか否かを判定する(ステップS470)。
ステップS470での判断がNoである場合、P2[a][1]=1であるか、若しくは、今回作成しようとしているG[p][1~amax][2](各エリアに設定される遺伝情報である巡回パターンの情報)に既にP2[a][1]と同じ値が記録されているか否かを判定する(ステップS471)。
ステップS471での判断がNoである場合は、基本的な交叉処理ブロックB2に移行する。
ステップS470での判断がYesである場合、遺伝情報として同じ情報が設定されることを回避するために、親P1からの遺伝は不可と判断し、フラグf1に1を設定した後、ステップS471に進む。
ステップS471での判断がYesである場合、遺伝情報として同じ情報が設定されることを回避するために、親P2からの遺伝は不可と判断し、フラグf2に1を設定した後、基本的な交叉処理ブロックB2のステップS472に進む。
即ち、ステップS480、ステップS483、ステップS484によって、盲腸線をもたらす致死的遺伝情報や複数ループをもたらす致死的遺伝情報が遺伝されないようにしている。換言すれば、交叉処理において、必ず1つのループを形成する遺伝情報配列が作成されるようにしている。
【0090】
基本的な交叉処理ブロックB2では、まず、ステップS472において、フラグf1=0でかつフラグf2=0か否かを判定する。即ち、どちらの親からも遺伝可能か否かを判定する。
ステップS472での判断がNoである場合は、フラグf1=1でかつフラグf2=0か否かを判定する。即ち、親P1だけ遺伝不可能か否かを判定する(ステップS473)。
ステップS473での判断がNoである場合は、フラグf1=0でかつフラグf2=1か否かを判定する。即ち、親P2だけ遺伝不可能か否かを判定する(ステップS474)。
基本的な交叉処理ブロックB2において、ステップS472での判断がYesである場合は、1~100までの数値を用意してその中から1つ抜き出してその数値が51以上の数値であるか否かを判定する。(ステップS485)。尚、数値1及び0を用意し、抽出した数値が1であるか否かを判定してもよい。
即ち、ステップS472での判断がYesである場合は、親P1又は親P2のいずれからでも遺伝可能であるので、どちらの親から遺伝させるかを、ステップS485でランダムに選択している。
ステップS485での判断がYesである場合は、親P1から遺伝情報を引き継ぐ。即ち、G[p][a][1]をP1[a][1]に、G[p][a][2]をP1[a][2]に置き換える(ステップS486)。その後、aをG[p][a][1]に置き換えて(ステップS478)、ステップS467に戻る。
ステップS485での判断がNoである場合は、親P2から遺伝情報を引き継ぐ。即ち、G[p][a][1]をP2[a][1]に、G[p][a][2]をP2[a][3]に置き換える(ステップS487)。その後、aをG[p][a][1]に置き換えて(ステップS478)、ステップS467に戻る。
【0091】
ステップS469での判断がNoである場合、即ち、遺伝情報配列G[p][1~amax][1~2]の中に空の要素が1個しか残っていない場合、盲腸線や複数ループとならないように、その1個の空のエリアの行先エリアG[p][a][1]を1にして(ステップS480)、1つのループを形成する遺伝情報配列G[p][1~amax][1~2]を作成し、その1個の空のエリアの巡回パターンG[p][a][2]を親P1又は親P2から遺伝させる(処理B3)。
また、ステップS474での判断がNoである場合は、フラグf1=1でかつフラグf2=1であり、親P1、親P2のいずれからも遺伝不可能であるので、今、交叉処理を行っているエリアの行先エリアG[p][a][1]を、既に設定されているエリア以外にエリアにランダムに設定する(処理B4)。
即ち、ステップS474での判断がNoである場合は、ステップS475に進み、エリア2~amaxの中から、G[p][1~amax][1]に既に存在する値以外を無作為に選んで、G[p][a][1]に代入し(ステップS475)、その後、処理ブロックB3のステップS476に移行して、今、交叉処理を行っているエリアの巡回パターンG[p][a][2]を、親P1又は親P2から遺伝させる(処理B3)。
【0092】
処理ブロックB4(ステップS475)から例外的な交叉処理ブロックB3に移行する場合は、まず、ステップS476に進んで、1~100までの数値を用意してその中から1つ抜き出してその数値が51以上の数値であるか否かを判定する。尚、数値1及び0を用意し、抽出した数値が1であるか否かを判定してもよい。
ステップS476での判断がNoである場合、親P1から巡回パターンの遺伝情報を引き継ぐ。即ち、G[p][a][2]をP1[a][2]に置き換える(ステップS477)。その後、aをG[p][a][1]に置き換えて(ステップS478)、ステップS467に戻る。
ステップS476での判断がYesである場合、親P2から巡回パターンの遺伝情報を引き継ぐ。即ち、G[p][a][2]をP2[a][2]に置き換える(ステップS479)。その後、aをG[p][a][1]に置き換えて(ステップS478)、ステップS467に戻る。
【0093】
ステップS480を経て、処理ブロックB1から例外的交叉処理ブロックB3に移行する場合は、まず、ステップS481に進んで、P1[a][1]=1、かつ、P2[a][1]=1、又は、P1[a][1]≠1、かつ、P2[a][1]≠1であるか否かを判定する。
即ち、親P1のエリアaの行先エリアが1で、かつ、親P2のエリアaの行先エリアが1であること、つまり、親P1,P2のエリアaの行先エリアが共に1である場合や、親P1のエリアaの行先エリアが共に1でない場合には、その子のエリアaの巡回パターンG[p][a][1]を、親P1のエリアaの巡回パターン、又は、親P2のエリアaの巡回パターンに設定する。どちらの巡回パターンとするかは、ステップS476にてランダムに決める。
ステップS481での判断がNoである場合、P1[a][1]=1であるか否かを判定し(ステップS482)、P1[a][1]=1である場合はステップS477に進み、P1[a][1]=1でない場合はステップS479に進む。
ステップS481での判断がYesである場合は、ステップS476に進む。
また、ステップS468での判断がYesである場合は、pをp+1にした後、Phase3-2へ移行する。
【0094】
図50の交叉処理の流れを説明する。
子個体の作成において、最初は、ステップS468、ステップS469、ステップS470、ステップS471、ステップS472と進んで、ステップS472でYesとなり、ステップS485を経て、子個体のエリア1の遺伝情報(エリア1の巡回パターン、エリア1から次の行先エリア)が、親P1又は親P2から引き継がれる(基本交叉(ステップS486又はステップS487))。そして、エリア番号管理変数aが、子個体のエリア1の遺伝情報である次の行先エリアG[p][a][1]に設定される(ステップS478)。
また、ステップS469でYesであり、ステップS474まで進んで、親P1又は親P2のどちらからも遺伝情報を引き継げない場合(ステップS474でNo)には、エリア2~amax(図54ではamax=10)の中から、未だ行先エリアとして設定されていないエリアがランダムに選ばれて次の行先エリアG[p][a][1]に設定される(ステップS475(例外的交叉))とともに、ステップS476に進んで、エリアaの巡回パターン[p][a][2]が、親P1又は親P2から引き継がれる(ステップS477又はステップS479(例外的交叉))。
また、ステップS469での判断がNoである場合、即ち、遺伝情報配列G[p][1~amax][1~2]の中に空の要素が1個しか残っていない場合、G[p][a][1]を1にして(ステップS480)、複数ループをもたらす致死的遺伝情報が生じないようにしている。その後、その子の行先エリアを1としたエリアの巡回パターンG[p][a][2]を親P1又は親P2から遺伝させる(処理ブロックB3)。
また、ステップS470,ステップS483,ステップS471,ステップS484の処理により、盲腸線をもたらす致死的遺伝情報が生じないようにしている。
即ち、今回の後世代巡回ルート作成手段は、巡回ループが複数ループを形成しないように、又は、巡回ループが盲腸線を形成したりしないように、巡回ループを作成する際に巡回情報を設定するものである。
つまり、今回の後世代巡回ルート作成手段は、前回の後世代巡回ループ作成手段により作成された前回の複数の後世代巡回ループの中から移動コストの小さい巡回ルートの1つ以上を親と定義し、当該親の巡回ルートの巡回情報を引き継ぐことにより、今回の後世代巡回ルートを作成する(図50の処理B1~処理B4参照)。
また、今回の後世代巡回ルート作成手段は、今回の後世代巡回ルートを作成する段階において、まだ巡回情報が設定されていないエリアが2つ以上残っていて、かつ、まだ巡回情報が設定されていないエリアに設定する巡回情報である次に進むエリアの情報を親から引き継ぐことができない場合には、まだ巡回情報が設定されていないエリアに設定する次に進むエリアを、まだ巡回情報として設定されていないエリアの中から任意に選択する(図50の処理B4(ステップS475)参照)。
尚、上述した、まだ巡回情報が設定されていないエリアに設定する巡回情報である次に進むエリアの情報を親から引き継ぐことができない場合とは、まだ巡回情報が設定されていないエリアに引き継がせるようとする親の巡回情報である次に進むエリアの情報が、今回の後世代巡回ルートを作成する際に巡回情報を一番最初に設定したエリアである場合、及び、まだ巡回情報が設定されていないエリアに引き継がせるようとする親の巡回情報である次に進むエリアの情報が、今回の後世代巡回ルートの作成において既に使用されている場合である(図50の処理B1のステップS470,S483、S471,S484参照)。
また、今回の後世代巡回ルート作成手段は、今回の後世代巡回ルートを作成する段階において、まだ巡回情報が設定されていないエリアが1つしか残っていないと判定した場合に、当該1つ残ったエリアの巡回情報である次に進むエリアの情報を、今世代の巡回ルートを作成する際に巡回情報を一番最初に設定したエリアとする(図50の処理B1のステップS469,S480参照)。
【0095】
コンピュータは、突然変異処理プログラムの手順に従って、図51のフローチャートに示すような、突然変異処理(phase3-2)を行う。尚、当該突然変異処理(phase3-2)は、図36(a)のフローチャートに示したSAでのエリア間ルートの改変処理(phase3-1)と基本的には同じである。
まず、個体識別変数の初期化を行う。即ち、個体識別変数pを17に設定する(ステップS500)。
そして、遺伝情報配列G[1~20][1~amax][1~2]をphase3-1から引き継ぐ(ステップS501)。
次に、突然変異を4個体作るループに入る。ここで、p<=20である(ステップS502)。
まず、phase2で移動コストが低いとされた個体のコピーを作る。即ち、G[p][1~amax][1~2]をG[p-16][1~amax][1~2]に置き換える(ステップS503)。即ち、p=20の場合、4つの個体のコピー(クローン)を作る。
次に、1~100までの数値を用意してその中から1つ抜き出してその数値が51以上の数値であるか否かを判定する(ステップS504)。尚、数値1及び0を用意し、抽出した数値が1であるか否かを判定してもよい。
【0096】
ステップS504での判断がNoである場合、上述したSAでのエリア間ルートの改変処理(phase3-1)と同様の処理を行う(図36(a)参照)。
また、ステップS504での判断がYesである場合、上述したSAでの巡回パターンの改変処理(phase3-2)と同様の処理を行う(図36(b)参照)。
図51に示した突然変異処理は、多様性を失わせないために行う処理であり、SAでの改変処理(図36参照)と同様な処理とした。
【0097】
ここで、G[p][P2][1]、G[p][P1][1]について説明する。
ステップS501において、複数の個体を構成する遺伝情報配列G[1~20][1~amax][1~2]の中から4個体の遺伝情報配列G[p-16][1~amax][1~2](即ち、G[1~4][1~amax][1~2])を引き継いだとする。この4個体の遺伝情報配列G[p-16][1~amax][1~2]のうちの1個体の巡回情報配列が例えば図44(a)に示す巡回情報配列である場合、当該巡回情報配列によって、図44(b)に示すような巡回ループが作成され、当該巡回情報配列に突然変異処理が施される。
【0098】
即ち、ステップS504での判断がNoである場合、エリア番号1~amaxの中から値を無作為に1つ選んで、P1に代入する(ステップS505)とともに、エリア番号1~amaxの中から値を無作為に1つ選んで、P2に代入する(ステップS506)。
その後、ステップS507に進んで、P1とP2とが同じか否か、G[p][P2][1]とP1とが同じか否か、若しくは、G[p][P1][1]とP2とが同じか否かを判定する。
当該ステップS507でYesの場合は、ステップS506に戻って、P2を選び直す。
ステップS507でNoの場合は、ステップS508に進んで、PtmpをG[p][P2][1]に設定する。
次に、ステップS509に進んで、G[p][1~amax][1]=P2となるようなエリア番号aを探索し、このようなエリア番号aを発見できたか否かを判定する。
ステップS509でNoの場合は、mを-1に設定する(ステップS510)。
ステップS509でYesの場合は、mをaに設定する(ステップS511)。つまり、P2に代入されているエリアを次の移動先としている別のエリアが存在していれば、その別のエリアの番号aをmに代入する。
ステップS510の後、又は、ステップS511の後は、ステップS512に進んで、G[p][P1][1]をP2に設定する。
そして、この処理ブロックを取るのは1回目か否かを判定する(ステップS513)。
ステップS513でYesの場合、ステップS514に進んで、m=-1か否かを判定する。
ステップS513でNoの場合、G[p][P2][1]に設定されている巡回パターンを反転させ(ステップS515)、その後、ステップS514に進む。
ステップS514でNoの場合、ステップS516に進んで、P1をP2に設定するとともに、P2をmに設定した後、ステップS509に戻る。
ステップS514でYesの場合、ステップS517に進んで、G[p][P2][1]をPtmpに設定した後、ステップS518に進んで、G[p][P2][2]に設定されている巡回パターンを反転させ、その後、pをp+1にし(ステップS519)、P=20がクリアしていれば、その後、phase2のステップS431に進む。
即ち、ステップS504での判断がNoである場合、GAでのエリア間ルートの改変処理を行う。
つまり、今回の後世代巡回ルート作成手段は、前回の後世代巡回ルート作成手段により作成された前回の複数の後世代巡回ルートの中から移動コストの小さい巡回ルートを抽出して、当該抽出された巡回ルートを作成する元となった巡回ループのエリア間のルートを変更するエリア間ルート改変処理手段を備え、エリア間ルート改変処理手段は、上述した巡回ループの各エリアのうちから異なる任意の第1のエリアと第2のエリアとを任意に選択する第1ステップ(ステップS505,ステップS506)と、第2のエリアの巡回情報として設定されている次に進むエリアの情報を保留情報として記録しておく第2ステップ(ステップS508)と、第2のエリアの巡回情報として設定されている次に進むエリアの情報を巡回情報として持っているエリアを探索して当該エリアの有無を判定する第3ステップ(ステップS509)と、第1のエリアの巡回情報に設定する次に進むエリアの情報として、第2のエリアを設定する第4ステップ(ステップS512)と、第4ステップの処理を行うのが初めてではない場合に、第2のエリアの巡回情報に設定されている巡回パターンを反転させる第5ステップ(ステップS515)と、第3ステップでの判定結果が有であった場合(ステップS514でNo)、第4ステップの後、又は、第5ステップの後において、第1のエリアを第2のエリアに変更するとともに、第2のエリアを第3ステップで探索されたエリアに変更した後に、第3ステップの処理に戻る第6ステップ(ステップS516)と、第3ステップでの判定結果が無であった場合(ステップS514でYes)、第4ステップの後、又は、第5ステップの後において、保留情報を第2のエリアの巡回情報としての次に進むエリアとして設定するとともに、第2のエリアの巡回情報に設定されている巡回パターンを反転させる第7ステップ(ステップS517,ステップS518)とを備えた構成とした。
【0099】
次に、ステップS504での判断がYesである場合の、巡回パターンの改変処理について説明する。
ステップS504においてYesと判定された場合は、エリア番号1~amaxの中から値を無作為に1つ選んで、P1に代入する(ステップS520)とともに、G[p][P][2]に既存の巡回パターン以外の巡回パターンの何れかを無作為に代入する(ステップS521)。つまり、既にG[p][P][2]に設定されている巡回パターンと同じ巡回パターンが無作為に選択された場合は、異なる巡回パターンが出るまで無作為に選び直される。
その後、ステップS519において、pをp+1にした後、phase2のステップS431に進む。
即ち、今回の後世代巡回ルート作成手段は、前回の後世代巡回ルート作成手段により作成された前回の複数の後世代巡回ルートの中から移動コストの小さい巡回ルートを抽出して、当該抽出された巡回ルートを作成する元となった巡回ループのエリア内の巡回パターンを変更する巡回パターン改変処理手段を備え、巡回パターン改変処理手段は、上述した巡回ループの各エリアから無作為に1つのエリアを選んで、当該エリアの巡回情報である巡回パターンの情報を変更する構成とした。
【0100】
そして、ステップS431では、何世代目の処理であるかを判定する。
ステップS431の判断において「1世代(初期世代)である」と判定された場合、ステップS432に進む。
また、ステップS431の判断において「その他の世代(1世代以外)と判定された場合、ステップS453で、個体識別変数の初期化、即ち、pを例えば5に、コスト管理配列の初期化、即ち、C[1~amax][1~2]を0に、遺伝情報配列G[5~20][1~amax][1~2]をphase3から引き継いだ後に、ステップS433に進む。
【0101】
処理ブロックB1について説明を補足する。
致死的遺伝情報とは、エリア全体を1巡できないような個体、例えばループを複数持つ個体や盲腸線を持つ個体等を形成してしまう遺伝情報(巡回情報)のことをいう。
【0102】
例えば、図52に示す個体は、1-3-6-1というループと2-10-5-4-9-8-7という2つのループを持つ。このような遺伝情報を持つ個体では、各エリアを一巡したいというそもそもの目的を達成できない。
図53に示す個体は、次に進むエリアを7とする遺伝情報(7-Z,7-Z’)が同じ個体内に2つ存在している。加えて、次に進むエリアを7とする遺伝情報が存在していない。つまり、6-4-9-8-7-2-10-5-1-3-7に戻るとなり、7-2-10-5-1-3のループから7-8-9-4-6のルートが盲腸線化している個体である。このような遺伝情報を持つ個体でも、各エリアを一巡したいというそもそもの目的を達成できない。
【0103】
基本的な交叉処理ブロックB2について説明を補足する。
基本的な交叉処理では、次の交叉の操作は採用した遺伝情報中の「次に進むエリア」に記された領域(エリア番号)で行う。
図54では、子のエリア1の遺伝情報giを、親1の遺伝情報3-Zから遺伝させた例である。この場合、採用した遺伝情報は(3-Z)なので、次の交叉の操作領域はエリア3となる。そして、図54では、子のエリア3の遺伝情報giを、親2の遺伝情報4-Z’から遺伝させた例を示している。
即ち、図50の処理ブロックB2では、親1又は親2の何れかから遺伝情報を遺伝させた場合には、次の交叉の操作を行うエリアaを、遺伝した遺伝情報中の「次に進むエリア」であるG[p][P][1]に設定する(ステップS478)。
そして、親1又は親2の何れからも遺伝情報を遺伝させることができない場合には、
次の交叉の操作を行うエリアであるG[p][P][1]をランダムに設定する(ステップS475、処理ブロックB4)。
【0104】
例外的な交叉処理ブロックB3,B4について説明を補足する。
通常の交叉では致死的遺伝情報が生じる可能性がある場合に、それを回避するために、下記のルールに基づく処理を行う。
【0105】
・Aパターン
いずれか一方の親の移動先エリア番号の遺伝情報について、既に自身のそのエリア番号の部分の遺伝情報が確定されているならそちらの親から遺伝情報を採ってくることを禁止する(ステップS470,ステップS483、ステップS471,ステップS484)。
図55において、子のエリア8の遺伝情報を交叉する場合、親2のエリア8の遺伝情報を採ってくると、当該遺伝情報の行先エリアである「9」は、子のエリア4の遺伝情報における行先エリアとして既に確定している(ステップS471)。よって、この交叉対象エリアcaであるエリア8の遺伝情報を、親2から遺伝情報から採ってくることを禁止する(ステップS484)。もし、交叉対象エリアcaであるエリア8の遺伝情報として、親2から遺伝情報を採ってくると、この子は複数ループを持たらす致死的遺伝情報を持つ個体となってしまう。従って、この場合、この子のエリア8の遺伝情報は親1からの遺伝情報7-Z’を遺伝させる(ステップS474,ステップS486)。
【0106】
・Bパターン
両方の親共に移動先エリア番号の遺伝情報について、既に自身のそのエリア番号の部分の遺伝情報が確定されているなら次に進むエリア番号の遺伝情報については親から遺伝することを禁止し(ステップS474でNo)、空き領域のエリア番号からランダムに選択する(ステップS475)。巡回パターンの遺伝情報については、何れかの親からランダムに遺伝させる。
図56においては、この子自身はエリア2もエリア8も、対応する場所の遺伝情報が既に確定している。よってこの交叉対象エリアcaであるエリア7の行先エリアは、次に進むエリア番号の遺伝情報が空き状態eaとなっている領域の番号の中からランダムに選ぶ(この例では3のみが該当するので3で確定)。
巡回パターンは親が持つこの領域の遺伝情報からランダムに選ぶ(この例ではZかS)。
つまりこの状況では、この子の交叉対象エリアcaであるエリア7において3-Zか3-Sの遺伝情報を持つことになる。
【0107】
・Cパターン
交叉対象エリアcaにおいて、両方の親共に移動先エリア番号の遺伝情報について、既に自身のそのエリア番号の部分の遺伝情報が確定され、かつ、空き領域が存在しないなら、親から遺伝することを禁止し、1を選択させる。巡回パターンの遺伝情報については、何れかの親からランダムに遺伝させる。
図57においては、この子自身はエリア4もエリア7も、対応する場所の遺伝情報が既に確定している。加えて空き状態となっている領域も存在しない。この状況においては、交叉対象エリアcaであるエリア6に、次に進むエリア番号の遺伝情報として「1」を設定する。また、巡回パターンは親が持つこの領域の遺伝情報からランダムに選ぶ(この例ではS’で確定)。つまりこの状況では、この子の交叉対象エリアcaであるエリア6においては、1-S’の遺伝情報が設定される。
【0108】
以上説明したように、実施形態に係るGAによる自動作成機能を備えた巡回ルート作成装置によれば、遺伝情報(巡回情報)を用いて、巡回ルートを更新するようにしたので、複数のエリアを移動体に巡回させるための効率的な巡回ルートを作成できるようになった。
また、巡回ループに対して、交叉処理、突然変異処理を行うことで、後世代で作成される巡回ループに多様性を持たせることができるようになり、効率的な巡回ルートを作成できるようになった。
【0109】
尚、自動作成機能として、以下のような自動作成機能を備えた巡回ルート作成装置としてもよい。
即ち、複数のエリアの位置情報を認識して当該複数のエリアを移動体に巡回させる巡回ルートを作成するための巡回ルート作成装置であって、各エリアを一巡する巡回ループを作成する巡回ループ作成手段と、作成された巡回ループの経路を移動体で移動させる場合の移動コストを算出する移動コスト算出手段と、作成された巡回ループを形成するエリア間ルートのうち最も移動コストの大きいエリア間ルートを削除して、削除したエリア間ルートのルート終端が繋がれていたエリアを巡回ルートのスタート領域とし、かつ、削除したエリア間ルートのルート始端が繋がれていたエリアを巡回ルートのゴール領域とした各エリアを一巡する巡回ルートを作成する巡回ルート作成手段とを備えた巡回ルート作成装置において、巡回ループ作成手段は、エリア毎に巡回情報を設定することにより最初の巡回ループを作成する最初の巡回ループ作成手段と、最初の巡回ループの巡回情報を変更した巡回ループを作成する巡回ループ更新手段とを備えた構成とし、巡回ルート作成手段は、巡回ループ更新手段により作成された今回の巡回ループ(巡回ループの巡回情報を変更した今回の巡回ループ)に基づいて作成された今回の巡回ルートの移動コストと、巡回ループ更新手段により作成された前回の巡回ループ(巡回ループの巡回情報を変更する前の前回の巡回ループ)に基づいて作成された前回の巡回ルートの移動コストとを比較して、移動コストの小さい巡回ルートを残す判定手段を備えた構成としてもよい。
当該巡回ルート作成装置によれば、上述した巡回情報を用いて、巡回ループを更新し、順次、移動コストの小さい巡回ルートを残していけるので、複数のエリアを移動体に巡回させるための効率的な巡回ルートを作成できるようになる。
【0110】
次に、巡回ルート手動作成機能について説明する。
即ち、巡回ルート手動作成機能を備えた巡回ルート作成装置は、複数のエリアの位置情報に基づいて画面上に対象となる複数のエリアの画像を表示させる表示制御手段を備える。
そして、表示制御手段が、画面上に表示された各エリアに対する巡回パターンを、予め決められた所定の複数の巡回パターンの中から選択して巡回パターン設定手段に指示するための巡回パターン設定ガイド画像を画面上に表示する機能を備え、巡回パターン設定手段は、作業者等の人が巡回パターン設定ガイド画像を介して指定のエリアに対する巡回パターンを指定した場合に、指定された巡回パターンを指定のエリア内の巡回パターンとして設定する機能を備えた構成とした。
また、表示制御手段が、画面上に表示された各エリア間での巡回順を巡回順設定手段に指示するための巡回順設定ガイド画像を画面上に表示する機能を備え、巡回順設定手段は、作業者等の人が巡回順設定ガイド画像を介してエリア間での巡回順を指定した場合に、当該エリア間での巡回順を指定の巡回順に設定する機能を備えた構成とした。
そして、実施形態に係る巡回ルート作成装置は、上述したSAやGAによる巡回ルート自動作成機能、及び、上述した巡回ルート手動作成機能のうち、どちらの作成機能で巡回ルートを作成させるかを作業者等の人に選択させる選択手段を備えた構成としたものである。
さらに、実施形態に係る巡回ルート作成装置は、作成された巡回ルート上で移動体を巡回させる場合の移動体の移動コストを画面上に表示する移動コスト表示手段を備えた構成とした。
【0111】
例えば、巡回パターン手動設定ガイド画像及び巡回順手動設定ガイド画像として機能する地図描画欄E、巡回ルート設定ガイド欄RG(図58図59参照)等をコンピュータが管理する表示手段の表示画面D上に表示する機能を備えている。
また、作成された巡回ルート上で移動体を巡回させる場合の移動体の移動コストを算出してコストログ表示欄C(図58図59参照)として画面D上に表示する移動コスト算出手段を備える。
【0112】
即ち、実施形態に係る巡回ルート作成装置は、上述したSAによる巡回ルート自動作成処理機能と、GAによる巡回ルート自動作成処理機能と、人の指示による巡回ルート手動作成処理機能とを備え、かつ、表示手段の画面D上に設定される処理選択画面(図58図59参照)を介してこれら処理を選択的に指示できるように構成されている。
【0113】
巡回ルート作成装置の使用方法について図60に基づいて説明する。
まず、作業者は、既に当該巡回ルート作成装置(本装置)で作った巡回ルートの編集を行なうのでなく、当該巡回ルート作成装置に新たな巡回ルートを生成させる場合には(ステップS600でNo)、[地図・巡回ルートを開く]の「新規で開く」ボタン1をクリックして、巡回ルートを生成する工事名を選ぶ(ステップS601)。
そして、手動で区画分けを行いたい場合には(ステップS602でYes)、作業者は、地図描画欄E上においてマウスのクリック操作で柱や壁との間を繋いで区画を作成する(ステップS603)。
また、自動で区画分けを行いたい場合には(ステップS602でNo)、作業者は、「区画の生成」ボタン30をクリックする(ステップS604)。これにより、コンピュータが例えば前提技術のphase1~6に示した処理に基づいて区画を生成する。
手動(手操作)による区画作成(ステップS603)、又は、コンピュータによる区画生成において、望む結果が得られ無かった場合には(ステップS605でNo)、再度、手動(手操作)による区画作成処理(ステップS603)を行ったり、コンピュータに区画生成処理を指示する(ステップS604)。
【0114】
そして、手動(手操作)による区画生成、又は、コンピュータによる区画生成により、望む結果が得られた場合には(ステップS605でYes)、作業者は「巡回ルートの生成」ボタン31をクリックする(ステップS606)。尚、「巡回ルートの生成」ボタン31をクリックすると、区画の編集は行えなくなる。つまり、「区画の生成」ボタン30がノンアクティブ化される。従って、「巡回ルートの生成」ボタン31をクリックした後に、区画を再編集したい場合は、「新規で開く」ボタン1をクリックしてから区画を生成する。
そして、手動で巡回ルートを設定する場合には(ステップS607でYes)、使用者は、地図描画欄E上でマウスのクリック操作を行って、表示された巡回ルート設定ガイド欄RGから巡回ルートを作成し(ステップS608)、巡回ルート作成後、障害物を避ける巡回ルートを再計算」ボタン26をクリックする(ステップS609)。「障害物を避ける巡回ルートを再計算」ボタン26をクリックすると、地図描画欄E上に、作成した巡回ルート、及び、当該巡回ルートの移動コストが表示されるとともに、当該移動コストが記録される。
即ち、地図描画欄E上でのマウスのクリック操作を受け付ける手段が、巡回ルート手動作成機能を人に選択させる選択手段として機能する。
そして、望む結果が得られた場合において(ステップS610でYes)、「新たな工事名で保存する場合には(ステップS611でYes)、使用者は、「新規の工事名で保存」ボタン3をクリックし、任意の工事名を入力して保存する(ステップS612)。これにより、作成した巡回ルートに関する情報に任意の工事名が付けられて保存される。
また、作成した巡回ルートに関する情報を、既に付けられている工事名のまま保存する場合には、使用者は、「上書き保存」をクリックする(ステップS613)。
【0115】
自動で巡回ルートを設定したい場合(ステップS607でNo)は、SAによる巡回ルート自動作成処理、又は、GAによる巡回ルート自動作成処理を指示する。
即ち、例えば、より効率的な巡回ルートを得たい場合には、SA処理を指示する。
また、例えば、巡回ルートを短時間で得たい場合には、GA処理を指示する。
【0116】
GA処理を指示する場合(ステップS614でYes)において、初期値の一つを地図描画欄Eで示された巡回ルートにする場合には(ステップS615でYes)、[GAで巡回ルートを探索]の「探索済巡回ルートを初期世代個体の一つにして探索開始」ボタン6をクリックする(ステップS616)。
尚、ステップS615において、Yesを選択できる条件は、ステップS623を経由する巡回ルートの編集ループにおけるステップS615での判断時において、地図描画欄Eに、既に、手動で設定された巡回ルート、又は、GAで探索された巡回ルート、又は、SAで探索された巡回ルートが示されている場合である。
GA処理を指示する場合(ステップS614でYes)において、初期値の一つを地図描画欄Eで示された巡回ルートにしない場合には(ステップS615でNo)、[GAで巡回ルートを探索]の「新規で巡回ルートを探索開始」ボタン5をクリックする(ステップS617)。
「探索済巡回ルートを初期世代個体の一つにして探索開始」を選択すれば、例えば、既にGAやSAで過去に探索された巡回ルートを利用してGAを行うため、より効率的な巡回ルートを探索できる可能性が高くなる。
【0117】
SA処理を指示する場合(ステップS614でNo)において、初期値を地図描画欄Eで示された巡回ルートにする場合は(ステップS618でYes)、[SAで巡回ルートを探索]の「探索済巡回ルートを初期巡回ルートとして探索開始」ボタン10をクリックする(ステップS619)。
尚、ステップS618において、Yesを選択できる条件は、ステップS623を経由する巡回ルートの編集ループにおけるステップS618での判断時において、地図描画欄Eに、既に、手動で設定された巡回ルート、又は、GAで探索された巡回ルート、又は、SAで探索された巡回ルートが示されている場合である。
SA処理を指示する場合(ステップS614でNo)において、初期値を地図描画欄Eで示された巡回ルートにしない場合には(ステップS618でNo)、[SAで巡回ルートを探索]の「新規で巡回ルートを探索開始」ボタン9をクリックする(ステップS620)。
「探索済巡回ルートを初期巡回ルートとして探索開始」(ステップS619)を選択すれば、例えば、既にGAやSAで過去に探索された巡回ルートを利用してSAを行うため、より効率的な巡回ルートを探索できる可能性が高くなる。
即ち、[SAで巡回ルートを探索]欄の各ボタン、[GAで巡回ルートを探索]欄の各ボタンの投入を受け付ける手段が、巡回ルート自動作成機能を人に選択させる選択手段として機能する。
【0118】
GA処理又はSA処理によって望む結果が得られず(ステップS610でNo)、以前に探索した結果の方が良かった場合には(ステップS621でYes)、[コストログ]表示欄Cから望む結果を出したときのコスト値をクリックする(ステップS622)。
[コストログ]表示欄Cから望む結果を出したときのコスト値をクリックすると、当該コスト値を持つ巡回ルートが地図描画欄Eに表示される。その後、ステップS610に進む。
GA処理又はSA処理によって望む結果が得られず(ステップS610でNo)、かつ、以前に探索した結果も望む結果でない場合には(ステップS621でYes)、ステップS607に戻り、手動での巡回ルートの再設定、又は、GAでの条件再設定、又は、SAでの条件再設定を行うことによって、巡回ルートを作り直す。
【0119】
既に当該巡回ルート作成装置(本装置)で作った巡回ルートの編集を行なう場合には(ステップS600でYes)、[地図・巡回ルートを開く]の「探索済地図を開く」ボタン2をクリックし、巡回ルートの編集をしたい工事名を選ぶ。工事名を選ぶと、その工事名の地図及び巡回ルートが地図描画欄Eに表示され、その後、前回保存直前に行った処理の続きを行う(ステップS624)。
【0120】
手動(手操作)による区画線の作成処理について説明する。
地図描画欄Eに表示された地図上の柱Bの角や壁の角とマウスカーソルの先端が一致したとき、マウスをクリックすると、手動区画分けモードに入る。このモードになると、例えば図61に示すように、別の柱Bの角と繋がる境界線M(図61(a),(b))や、柱Bの角と壁(境界線)C(図5参照)とを繋ぐ境界線N(図61(c))や、柱Bの角と柱間境界線M又は境界線Nとを繋ぐ境界線Q(図5参照)等を手動で作成できる。
尚、当該手動による区画線の作成処理では、図61(d)に示すように、柱Bや境界線M,N,Q,Cを跨ぐ形で境界線を引くことはできない。つまり、マウスカーソルの先端が境界線M,N,Q,Cの座標上を通過したことを検出した場合には、地図描画欄E上に境界線M,N,Q,Cを表示させないプログラムとなっている。
【0121】
以下、図58に示す処理選択画面に表示される各ボタン及び各欄について説明するに当り、図59に示すように、各ボタン及び各欄に付けた符号を用いて説明する。
尚、図58図59に示すように、Vは処理内容ログ表示欄であり、検証のための当該処理内容ログ表示欄Vを表示させる機能も備えている。
【0122】
ステップS604において、[区画・巡回ルート生成]の「区画の生成」ボタン30がクリックされた場合は、コンピュータは、図62に示すように、地図情報は入力済みか否かを判定し(ステップS630)、地図情報は入力済みであると判定した場合(ステップS630でYes)、地図描画欄E上での区画分け線と巡回ルートの表示とを消去し(ステップS631)、自動区画分けプログラムによる自動区画分け処理を実行する(ステップS632)。その後、自動区画分け処理の結果を地図描画欄E上に表示させる(ステップS633)。尚、地図情報が入力されていないと判定した場合(ステップS630でNo)、エラーメッセージを表示させる(ステップS634)。使用者は、エラーメッセージを見て、地図情報をコンピュータに読み込ませる処理を行う。
【0123】
また、ステップS606において、[区画・巡回ルート生成]の「巡回ルートの生成」ボタン31がクリックされた場合、コンピュータは、図63に示すように、地図情報は入力済みで、かつ、有効な区画分けがされているか否かを判定し(ステップS640)、地図情報は入力済みで、かつ、有効な区画分けがされていると判定した場合(ステップS640でYes)、地図描画欄Eの巡回ルートの表示を消去し(ステップS641)、巡回ルート自動生成プログラムを実行し(ステップS642)、その後、巡回ルート自動生成の結果を地図描画欄Eに表示させる(ステップS643)。そして、エリアの有効無効を管理するフラグを初期化する(ステップS644)。
尚、地図情報が入力されていないと判定した場合(ステップS640でNo)、エラーメッセージを表示させる(ステップS635)。使用者は、エラーメッセージを見て、地図情報をコンピュータに読み込ませる処理を行う。
【0124】
また、[区画・巡回ルート生成]の「高度な設定」ボタン32がクリックされた場合、コンピュータは、図64に示すように、設定欄(ウインドウ)Pを表示する。
設定欄Pには、エリア内の巡回パターンのレーン間距離Qの設定欄、エリア内移動時の直進1cm当りのコストRの設定欄、エリア内移動時の旋回1°当りのコストSの設定欄、エリア内移動時の停止1回当りの当りのコストTの設定欄、「デフォルトに戻す」ボタン34、「反映して終了」ボタン35が設けられている。
尚、「レーン間距離」とは、巡回パターンにおいて隣り合う直線経路間の距離のことである。
【0125】
「デフォルトに戻す」ボタン34がクリックされた場合、コンピュータは、図65(a)に示すように、Q,R,S,Tのデフォルト値を表示する(ステップS646)。尚、デフォルト値は、例えば、Q=80、R=1、S=1、T=500である。
また、「反映して終了」ボタン35がクリックされた場合、コンピュータは、図65(b)に示すように、設定されたQ,R,S,Tの内容を保存し(ステップS647)、設定欄Pのウィンドウを消去する(ステップS648)。
【0126】
以下、図60に示すフローチャートの流れに従って順番に説明する。
ステップS601において、[地図・巡回ルートを開く]の「新規で開く」ボタン1がクリックされた場合、コンピュータは、図66に示すように、画面O上に図外のフォルダ選択欄を表示し、使用者が工事名の付けられたフォルダを選択した場合(ステップS650)、地図情報が入っているフォルダを選択したか否かを判定する(ステップS651)。
そして、地図情報が入っているフォルダを選択したと判定した場合(ステップS651でYes)、コストログ表示欄Cの表示と処理内容ログ表示欄Vの表示とを初期化した(ステップS652)後、地図を地図描画欄Eに表示させる(ステップS653)。
尚、地図情報が入っているフォルダが選択されていないと判定した場合(ステップS651でNo)、エラーメッセージを表示させる(ステップS654)。
【0127】
ステップS623において、[地図・巡回ルートを開く]の「探索済地図を開く」ボタン2がクリックされた場合、コンピュータは、図67に示すように、画面O上に図外のフォルダ選択欄を表示し、使用者が工事名の付けられたフォルダを選択した場合(ステップS660)、地図情報が入っているフォルダを選択したか否かを判定する(ステップS661)。
そして、地図情報が入っているフォルダを選択したと判定した場合(ステップS661でYes)、巡回ルート情報が入っているフォルダを選択したか否かを判定する(ステップS662)。
巡回ルート情報が入っているフォルダを選択したと判定した場合(ステップS662でYes)、コストログ表示欄Cの表示と処理内容ログ表示欄Vの表示とを初期化した(ステップS663)後、地図と区画と巡回ルートとを地図描画欄Eに表示させる(ステップS664)。
巡回ルート情報が入っているフォルダを選択していないと判定した場合(ステップS662でNo)、コストログ表示欄Cの表示と処理内容ログ表示欄Vの表示とを初期化した(ステップS665)後、地図を地図描画欄Eに表示させる(ステップS666)。
尚、地図情報が入っているフォルダが選択されていないと判定した場合(ステップS661でNo)、エラーメッセージを表示させる(ステップS667)。
【0128】
ステップS612において、[地図・巡回ルートを保存]の「新規の工事名で保存」ボタン3がクリックされた場合、コンピュータは、図68に示すように、保存する場所(ストレージ)の選択と工事名の入力を確認し(ステップS670)、入力された工事名のフォルダを作成する(ステップS671)。
そして、工事名が付いたフォルダに、地図情報と区画情報と巡回パターン情報と地図描画欄Eに表示された巡回ルート情報を保存する(ステップS672)。
【0129】
ステップS613において、[地図・巡回ルートを保存]の「上書き保存」ボタン4がクリックされた場合、コンピュータは、図69に示すように、開いたときに選択した工事名のフォルダに区画情報と地図描画欄Eに表示された巡回ルート情報を保存する(ステップS680)。
【0130】
ステップS617において、[GAで巡回ルートを探索]の「新規で巡回ルートを探索開始」ボタン5がクリックされた場合、コンピュータは、図70に示すように、地図描画欄Eに表示されている地図の巡回ルートは生成済みか否かを判定する(ステップS690)。
そして、地図描画欄Eに表示されている地図の巡回ルートは生成済みである場合(ステップS690でYes)、「処理を中止」ボタン7を除くすべてのボタンをノンアクティブにする(ステップS691)とともに、地図描画欄Eに表示された地図の巡回ルートをGAを使って探索する処理を行う(無効化したエリアがあるならそのエリアは無視される)(ステップS692)。
その後、GAの処理が終了したか否かが判定され(ステップS693)、GAの処理が終了したと判定された場合(ステップS693でYes)、コストログ表示欄Cの行番号をカウントアップしてGAで探索された最終世代個体(巡回ルート候補群)の計算された移動コストを表示する(ステップS694)とともに、コストログ表示欄Cのコスト表示に紐付ける形で、最終世代個体(巡回ループ候補群)の遺伝情報配列を一時保存する(ステップS695)。さらに、ノンアクティブ化したボタンをアクティブにする(ステップS696)。
尚、GAの処理が終了していないと判定された場合(ステップS693でNo)、GA停止コマンドが入力されたか否かを判定し(ステップS698)、GA停止コマンドが入力されていれば、GAを実行しているプログラムを強制終了して(ステップS699)、ステップS697に進む。GA停止コマンドが入力されていなければ、ステップS693に戻る。また、ステップS690でNoの場合、エラーメッセージを表示させる(ステップS688)。
【0131】
ステップS616において、[GAで巡回ルートを探索]の「探索済巡回ルートを初期世代個体の一つにして探索開始」ボタン6がクリックされた場合、コンピュータは、図71に示すように、地図描画欄Eに表示されている地図の巡回ルートは生成済みで、かつ、一巡できる巡回ルートが設定されているか否かを判定する(ステップS700)。
そして、地図描画欄Eに表示されている地図の巡回ルートは生成済みである場合(ステップS700でYes)、「処理を中止」ボタン7を除くすべてのボタンをノンアクティブにする(ステップS701)とともに、地図描画欄Eに表示されている地図の巡回ルートを初期世代個体の1つとしてGAを使って巡回ルート探索する処理を行う(無効化したエリアがあるならそのエリアは無視される)(ステップS702)。
その後、GAの処理が完了したか否かが判定され(ステップS703)、GAの処理が完了したと判定された場合(ステップS703でYes)、コストログ表示欄Cの行番号をカウントアップしてGAで探索された最終世代個体(巡回ルート候補群)の計算された移動コストを表示する(ステップS704)とともに、コストログ表示欄Cのコスト表示に紐付ける形で、最終世代個体(巡回ループ候補群)の遺伝情報配列を一時保存する(ステップS705)。さらに、ノンアクティブ化したボタンをアクティブにする(ステップS706)。
尚、GAの処理が完了していないと判定された場合(ステップS703でNo)、GA停止コマンドが入力されたか否かを判定し(ステップS708)、GA停止コマンドが入力されていれば、GAを実行しているプログラムを強制終了して(ステップS709)、ステップS706に進む。GA停止コマンドが入力されていなければ、ステップS703に戻る。また、ステップS700でNoの場合、エラーメッセージを表示させる(ステップS689)。
【0132】
[GAで巡回ルートを探索]の「処理を中止」ボタン7がクリックされた場合、コンピュータは、図72に示すように、GAが実行中か否かを判定し(ステップS710)、GAが実行中であれば、GA強制停止コマンドを出力し(ステップS711)、GAが実行中でなければ、エラーメッセージを表示させる(ステップS7212)。
【0133】
また、[GAで巡回ルートを探索]の「高度な設定」ボタン8がクリックされた場合、コンピュータは、図73(a)に示すように、設定欄(ウインドウ)Aを表示する。
設定欄Aには、総世代数Fの設定欄、エリア間移動時の直進1cm当りのコストGの設定欄、エリア間移動時の旋回1°当りのコストHの設定欄、エリア間移動時の停止1回当りのコストIの設定欄、「デフォルトに戻す」ボタン16、「反映して終了」ボタン17が設けられている。
「デフォルトに戻す」ボタン16がクリックされた場合、コンピュータは、図73(b)に示すように、デフォルト値、例えばF=35、G=1、H=1、I=1を表示する(ステップS714)。
また、「反映して終了」ボタン17がクリックされた場合、コンピュータは、図73(c)に示すように、設定されたF,1,H,Iの内容を保存し(ステップS715)、設定欄Aのウィンドウを消去する(ステップS716)。
【0134】
ステップS620において、[SAで巡回ルートを探索]の「新規で巡回ルートを探索開始」ボタン9がクリックされた場合、コンピュータは、図74に示すように、地図描画欄Eに表示されている地図の巡回ルートは生成済みか否かを判定する(ステップS720)。
そして、地図描画欄Eに表示されている地図の巡回ルートは生成済みである場合(ステップS720でYes)、「処理を中止」ボタン11を除くすべてのボタンをノンアクティブにする(ステップS721)とともに、地図描画欄Eに表示された地図の巡回ルートをSAを使って探索する処理を行う(ステップS722)。
その後、SAの処理が終了したか否かが判定され(ステップS723)、SAの処理が終了したと判定された場合(ステップS723でYes)、コストログ表示欄Cの行番号をカウントアップしてSAで探索された巡回ルートの計算された移動コストを表示する(ステップS724)とともに、コストログ表示欄Cのコスト表示に紐付ける形で、当該巡回ルートの巡回ルート情報(巡回情報配列)を一時保存する(ステップS725)。さらに、ノンアクティブ化したボタンをアクティブにする(ステップS726)。
尚、SAの処理が終了していないと判定された場合(ステップS723でNo)、SA停止コマンドが入力されたか否かを判定し(ステップS728)、SA停止コマンドが入力されていれば、SAを実行しているプログラムを強制終了して(ステップS729)、ステップS727に進む。SA停止コマンドが入力されていなければ、ステップS723に戻る。また、ステップS720でNoの場合、エラーメッセージを表示させる(ステップS718)。
【0135】
ステップS619において、[GAで巡回ルートを探索]の「探索済巡回ルートを初期世代個体の一つにして探索開始」ボタン10がクリックされた場合、コンピュータは、図75に示すように、地図描画欄Eに表示されている地図の巡回ルートは生成済みで、かつ、一巡できる巡回ルートが設定されているか否かを判定する(ステップS730)。
そして、地図描画欄Eに表示されている地図の巡回ルートは生成済みである場合(ステップS730でYes)、「処理を中止」ボタン11を除くすべてのボタンをノンアクティブにする(ステップS731)とともに、地図描画欄Eに表示されている地図の巡回ルートを初期巡回ルートとしてGAを使って巡回ルートを探索する処理を行う(ステップS732)。
その後、SAの処理が終了したか否かが判定され(ステップS733)、GAの処理が終了したと判定された場合(ステップS733でYes)、コストログ表示欄Cの行番号をカウントアップしてSAで探索された巡回ルートの計算された移動コストを表示する(ステップS734)とともに、コストログ表示欄Cのコスト表示に紐付ける形で、当該巡回ルートの遺伝情報配列を一時保存する(ステップS735)。さらに、ノンアクティブ化したボタンをアクティブにする(ステップS736)。
尚、SAの処理が完了していないと判定された場合(ステップS733でNo)、SA停止コマンドが入力されたか否かを判定し(ステップS738)、SA停止コマンドが入力されていれば、GAを実行しているプログラムを強制終了して(ステップS739)、ステップS737に進む。GA停止コマンドが入力されていなければ、ステップS733に戻る。また、ステップS730でNoの場合、エラーメッセージを表示させる(ステップS719)。
【0136】
[SAで巡回ルートを探索]の「処理を中止」ボタン11がクリックされた場合、コンピュータは、図76に示すように、SAが実行中か否かを判定し(ステップS740)、SAが実行中であれば、SA強制停止コマンドを出力し(ステップS741)、SAが実行中でなければ、エラーメッセージを表示させる(ステップS742)。
【0137】
また、[SAで巡回ルートを探索]の「高度な設定」ボタン12がクリックされた場合、コンピュータは、図77に示すように、設定欄(ウインドウ)Bを表示する。
設定欄Bには、初期温度Jの設定欄、温度低下量Kの設定欄、エリア間移動時の直進1cm当りのコストL設定欄、エリア間移動時の旋回1°当りのコストMの設定欄、エリア間移動時の停止1回当りのコストMの設定欄、「デフォルトに戻す」ボタン21、「反映して終了」ボタン22が設けられている。
「デフォルトに戻す」ボタン21がクリックされた場合、コンピュータは、図78(a)に示すように、デフォルト値、即ち、J=1500、K=1、L=1、M=、N=1を表示する(ステップS744)。
また、「反映して終了」ボタン22がクリックされた場合、コンピュータは、図78(b)に示すように、Jの値がKの値で割り切れるか否かを判定し(ステップS745)、割り切れれば、設定されたJ,K,L,M,Nの内容を保存し(ステップS746)、設定欄Bのウィンドウを消去する(ステップS747)。また、ステップS745でNoの場合、エラーメッセージを表示させる(ステップS748)。
【0138】
ステップS607において、手動で巡回ルートを設定する場合(ステップS608)、地図描画欄Eの地図上の各エリアにマウスのカーソルを移動させると、カーソルが位置している何れかのエリアが強調表示される。そして、図79(a)に示すように、何れかのエリアが強調表示されている状態でクリックする(ステップS770)と、巡回ルート設定ガイド欄RGが表示される(ステップS771)。
即ち、ステップS608において、巡回パターン手動設定ガイド画像及び巡回順手動設定ガイド画像として機能する地図描画欄E、巡回ルート設定ガイド欄RG等を用いて、使用者が手動で巡回ルートを設定することができるようになる。
【0139】
例えば、図80に示すように、巡回ルート設定ガイド欄RGに表示される上述した8種類の巡回パターンを指定するための選択ボタン23-3~23-10の何れかをクリックすると(ステップS780)、強調表示されたエリアに選択された巡回パターンが配置される(ステップS781)。
その後、強調表示されたエリア(の始点)へ向かうエリア間ルートが更新されて(ステップS782)、かつ、強調表示されたエリア(の終点)から出るエリア間ルートが更新され(ステップS783)。
【0140】
図81(a)に示すように、「エリア間ルートを設定」ボタン23-11をクリックすると、別(2つ目)のエリアが強調表示された状態でクリックされたか否かを判定し(ステップS790)、当該ステップS790での判断がNoの場合、終了となる。
ステップS790での判断がYesの場合、2つ目の強調表示エリアへ向かう巡回経路を持つエリアの巡回経路情報を初期化し(ステップS791)、その後、1つ目の強調表示エリアに2つ目の強調表示エリアに向かう巡回経路を設定する(ステップS792)。
つまり、図81(b)に示すように、1つ目の強調表示エリアから2つ目の強調表示エリアに向かうエリア間ルートが設定されるとともに、元々2つ目の強調表示エリアに向かうエリア間ルートが設定されていたエリアから当該2つ目の強調表示エリアに向かうエリア間ルートが削除される。
このとき、1つ目に選んだエリアの強調表示は消えない。また2つ目の強調表示エリアは例えば別の色で表示される
【0141】
図81(c)に示すように、「エリア間ルートを削除」ボタン23-12をクリックすると、強調表示エリアから出るエリア間ルートを初期化(消去)する(ステップS794)。
つまり、図81(d)に示すように、強調表示エリアといずれかのエリアとが繋がれているエリア間ルートを初期化する。
【0142】
図81(e)に示すように、「このエリアを無効化」ボタン23-13をクリックすると、強調表示されたエリア番号が無効であることを示すフラグを立てる(ステップS796)。ボタン23-13は、無効フラグが立っていたらノンアクティブになる。
図81(f)に示すように、「このエリアを有効化」ボタン23-14をクリックすると、強調表示されたエリア番号が無効であることを示すフラグを折る(ステップS798)。ボタン23-14は、無効フラグが折れていたらノンアクティブになる。
【0143】
尚、図79(b)に示すように、「元に戻す」ボタン23-1をクリックすると、直前の作業内容が取り消され(ステップS772)、図79(c)に示すように、「やり直し」ボタン23-2をクリックすると、直前の作業内容の状態に戻される(ステップS773)。
【0144】
図82に示すように、コストログ表示欄Cのいずれかの行24が強調表示されている状態でクリックすると(ステップS800)、マウスカーソル下(強調表示された行)のコスト計算時の地図、区画、巡回ルートを地図描画欄Eに表示する(ステップS801)。
【0145】
図83に示すように、ボタン25(「現在の巡回ルートをアニメーションで表示する」ボタン)がクリックされた場合、地図描画欄Eに表示されている地図の巡回ルートは障害物を逃げるようなルートになっているか(GAやSAを使った後か)否かを判定する(ステップS810)。
そして、ステップS810での判断でYesであれば、全てのボタンをノンアクティブにして(ステップS811)、アニメーション描画プログラムを実行する(ステップS812)。また、ノンアクティブ化したボタンをアクティブにする(ステップS813)。
【0146】
図84に示すように、ボタン26(「障害物を避ける巡回ルートを再計算」ボタン)がクリックされた場合、地図描画欄Eに表示されている地図の巡回ルートは生成済みで、かつ、一巡できる巡回ルートが設定されているか否かを判定する(ステップS820)。
そして、ステップS820での判断でYesであれば、全てのボタンをノンアクティブにして(ステップS821)、地図描画欄Eに表示された地図を初期状態、初期温度を0℃として、SAを実行する(ステップS822)。即ち、ここでは、SAのプログラムを流用することで、巡回ルートを改変させずに障害物を回避するルートを探索させる(図35のステップS328参照)。
SA終了後、コストログ表示欄Cの行番号をカウントアップしてSAで探索された巡回ルートの計算された移動コストを表示する(ステップS823)とともに、コストログ表示欄Cのコスト表示に紐付ける形で、当該巡回ルートの巡回ルート情報(巡回情報配列)を一時保存する(ステップS824)。さらに、ノンアクティブ化したボタンをアクティブにする(ステップS825)。
【0147】
図85に示すように、終了ボタン29をクリックすると、巡回ルート作成処理プログラムの終了処理が実行される(ステップS830)。
【0148】
実施形態に係る巡回ルート作成装置では、上述したSAによる巡回ルート自動作成処理と、GAによる巡回ルート自動作成処理と、人の指示による巡回ルート手動作成処理とを備え、かつ、表示手段の画面D上に設定される処理選択画面(図58図59参照)を介してこれら処理を選択的に指示できるように構成したので、状況に応じて、巡回ルート作成方法を選択できるので、使い勝手の良い巡回ルート作成装置を提供できる。
【0149】
特に、表示制御手段が、画面D上に表示された各エリアに対する巡回パターンを、予め決められた所定の複数の巡回パターンの中から選択して巡回パターン設定手段に指示するための巡回パターン設定ガイド画像(巡回ルート設定ガイド欄RG)を画面D上に表示する機能を備え、巡回パターン設定手段は、人が巡回パターン設定ガイド画像を介して指定のエリアに対する巡回パターンを指定した場合に、指定された巡回パターンを指定のエリア内の巡回パターンとして設定するので、人がエリアの巡回パターンを自由に設定できる使い勝手の良い巡回ルート作成装置を提供できる。
また、表示制御手段が、画面D上に表示された各エリア間での巡回順を巡回順設定手段に指示するための巡回順設定ガイド画像(巡回ルート設定ガイド欄RG)を画面上に表示する機能を備え、巡回順設定手段は、人が巡回順設定ガイド画像を介してエリア間での巡回順を指定した場合に、当該エリア間での巡回順を指定の巡回順に設定するので、人が巡回順を指定するエリア間ルートを自由に設定できる使い勝手の良い巡回ルート作成装置を提供できる。
さらに、SA又はGAによる巡回ルート自動作成機能、及び、巡回ルート手動作成機能のうち、どちらの作成機能で巡回ルートを作成させるかを人に選択させる選択手段を備えているため、状況に応じて、巡回ルート自動作成機能、及び、巡回ルート手動作成機能を使い分けることができるようになり、使い勝手の良い巡回ルート作成装置を提供できる。
【0150】
また、設定欄Aを備えたことにより、GA処理での総世代数Fを自由に設定でき、また、設定欄Bを備えたことにより、SA処理での初期温度J、温度低下量Kを自由に設定できるので、巡回ルートを得るまでに要する時間を短縮したい、あるいは、より効率的な巡回ルートを得たい等の要望に合わせた巡回ルート作成処理を実現可能な巡回ルート作成装置を提供できる。
【0151】
尚、巡回ルート自動作成機能、及び、巡回ルート手動作成機能のうち、どちらの作成機能で巡回ルートを作成させるかを人に選択させる選択手段については、手動区画作成ボタンを画面上に表示するようにして、作業者が、当該手動区画作成ボタンをクリックした後に、地図描画欄Eに表示された地図上でクリック操作を行うことによって、手動での区画作成を実行できるように構成してもよい。
また、手動巡回ルート作成ボタンを画面上に表示するようにして、作業者が、当該手動巡回ルート作成ボタンをクリックした後に、巡回ルート設定ガイド欄RGを用いることによって、手動での巡回ルート作成を実行できるように構成してもよい。
以上のように構成すれば、手動作成を行うか、自動生成を指示するかを、より明確に、作業者に選択させることができるようになる。
【0152】
また、実施形態では、エリア内の巡回パターンとして、8種類の巡回パターンを例示したが、巡回パターンは、例えば、第1パターン及び第2パターンのみ、あるいは、第3パターン及び第4パターンのみ、第5パターン及び第6パターンのみ、第7パターン及び第8パターンのみを、使用するようにしてもよい。
【0153】
また、実施形態では、エリア(移動対象領域)として、建物内の床面を移動させる例を示したが、エリアは、建物外の道路や空き地等の面であってもよい。
また、障害物Bは、柱以外の障害物、例えば間仕切り壁、固定設備、重量物等であってもかまわない。
また、エリアの位置を示すエリアのXY座標情報や障害物の位置を示すXY座標情報は、角のXY座標情報でなく、エリアの位置や障害物の位置を確認できるXY座標情報であればよい。
【0154】
また、複数のエリア(移動対象領域)は、図12に示したように、各々隣接した複数のエリアであってもよいし、図37等に示したように、各々離間した複数のエリアであってもよい。
【0155】
実施形態に係る巡回ルート作成装置によれば、例えば撮像手段(カメラ)を搭載して床面を撮影する移動体1を用いて床面検査を行う場合において、複数のエリアを移動体1に巡回させるための効率的な巡回ルートを提供できるようになるため、効率的な床面検査を行うことが可能となる。
尚、床面検査以外の目的で複数のエリアを移動体1に巡回させる場合であっても、複数のエリアを移動体1に巡回させるための効率的な巡回ルートを提供できるようになる。
【0156】
また、上記では、移動体の移動制御システムにおいて、移動体の実際の移動情報を取得して移動体に送信する移動情報取得手段として、自動追尾機能を備えたTS(トータルステーション)を用いた例を示したが、移動情報取得手段としては、TS以外の手段、例えば、GPS、レーザ測位システム等の移動体自己位置認識システムを用いてもよい。
【符号の説明】
【0157】
1 移動体。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50
図51
図52
図53
図54
図55
図56
図57
図58
図59
図60
図61
図62
図63
図64
図65
図66
図67
図68
図69
図70
図71
図72
図73
図74
図75
図76
図77
図78
図79
図80
図81
図82
図83
図84
図85