(57)【要約】【課題】任意形状の隊列制御を可能にする手法であって、計算負荷が従来よりも低い行動制御装置等を提供する。【解決手段】行動制御装置は、(1)各制御対象物が目標位置に位置するか判定する位置判定部と、(2)各制御対象物が目標位置に位置しないと判定された場合には、制御対象物が入口位置に向かうことを理想的な状態として各制御対象物の現在の位置に基づいて価値関数を更新し、各制御対象物が移動可能な位置の中で更新後の価値関数の値が最も大きい位置に移動する行動を各制御対象物の行動として決定するM個の目的領域外行動決定部と、(3)各制御対象物が目標位置に位置すると判定された場合には、M個の入口位置の内の１つである最終入口位置を占拠しないように移動する行動を各制御対象物の行動として決定する目的領域内行動決定部と、を含む。【選択図】図１
2016051400.tif 000002
【特許請求の範囲】
【請求項１】
Mを１以上の整数とし、複数の制御対象物を所定のM個の入口位置を含む目標位置の集合に移動させるための行動制御を行う行動制御装置であって、
前記制御対象物は、制御対象物がその制御対象物の現在の位置Lにおいて各行動aを取ったときの適切さを表すM個の価値関数に基づいて行動制御が行われるとして、
(1)各前記制御対象物が前記目標位置に位置するか判定する位置判定部と、(2)前記各制御対象物が前記目標位置に位置しないと判定された場合には、制御対象物が前記入口位置に向かうことを理想的な状態として前記各制御対象物の現在の位置に基づいて前記価値関数を更新し、前記各制御対象物が移動可能な位置の中で前記更新後の価値関数の値が最も大きい位置に移動する行動を前記各制御対象物の行動として決定するM個の目的領域外行動決定部と、(3)前記各制御対象物が前記目標位置に位置すると判定された場合には、M個の入口位置の内の１つである最終入口位置を占拠しないように移動する行動を前記各制御対象物の行動として決定する目的領域内行動決定部と、を含む行動割当部と、
前記決定された行動に基づいて前記各制御対象物の位置を更新する位置更新部と、
前記行動割当部と位置更新部との処理を繰り返し行うように制御する制御部と、
を含み、
経由位置を、目標位置に接するどの目標位置外の位置からでも目標位置内に入ることが可能という条件で価値関数学習をしたときに、その価値関数の学習の結果得られた行動方策関数と、前記目的領域外行動決定部の行動選択方法を使用して制御対象物が行動選択をするとして、入口位置以外の全ての目標位置内の位置が他の制御対象物によって占拠されてしまった場合に、ある出発位置から制御対象物が入口位置にたどり着くことができるとき、そのような出発位置のうち、目標位置に接するすべての目標位置外の位置とし、制御対象物が目標位置外から目標位置内に入る行動をとった際の価値関数の値の更新は、この経由位置を経由した場合においてのみ行われ、それ以外の位置を経由した場合には行われないものとする、
行動制御装置。
【請求項２】
請求項１の行動制御装置であって、
前記Mは２以上の整数であり、
前記行動割当部は、
前記各制御対象物が前記目標位置に位置しないと判定された場合には、他の制御対象物により占拠されていない入口位置に向かう行動の中で、価値関数の値が最も大きくなる行動を前記各制御対象物の行動として決定する目標入口位置決定部を含む、
行動制御装置。
【請求項３】
請求項１または請求項２の行動制御装置であって、
前記目的領域内行動決定部は、前記各制御対象物が前記目標位置に位置すると判定された場合には、制御対象物の移動に伴ってその制御対象物と位置が入れ替わる仮想的な存在であるボイドが前記入口位置に向かうことを理想的な状態としてボイドの現在の位置に基づいて前記価値関数を更新し、前記各制御対象物の現在の位置Lに移動可能な位置であるボイド位置の中で前記更新後の価値関数の値を最大にする行動が前記位置Lに移動する行動である位置を候補ボイド位置とし、その最大にする行動に対応する前記更新後の価値関数の値を候補ボイドQ関数値として、前記候補ボイド位置の中で前記各制御対象物が移動可能な位置であり候補ボイドQ関数値が最小である位置に移動する行動を前記各制御対象物の行動として決定する、
行動制御装置。
【請求項４】
Mを１以上の整数とし、行動制御装置を用いて、複数の制御対象物を所定のM個の入口位置を含む目標位置の集合に移動させるための行動制御を行う行動制御方法であって、
前記制御対象物は、制御対象物がその制御対象物の現在の位置Lにおいて各行動aを取ったときの適切さを表すM個の価値関数に基づいて行動制御が行われるとして、
(1)各前記制御対象物が前記目標位置に位置するか判定する位置判定ステップと、(2)前記各制御対象物が前記目標位置に位置しないと判定された場合には、制御対象物が前記入口位置に向かうことを理想的な状態として前記各制御対象物の現在の位置に基づいて前記価値関数を更新し、前記各制御対象物が移動可能な位置の中で前記更新後の価値関数の値が最も大きい位置に移動する行動を前記各制御対象物の行動として決定するM個の目的領域外行動決定ステップと、(3)前記各制御対象物が前記目標位置に位置すると判定された場合には、M個の入口位置の内の１つである最終入口位置を占拠しないように移動する行動を前記各制御対象物の行動として決定する目的領域内行動決定ステップと、を含む行動割当ステップと、
前記決定された行動に基づいて前記各制御対象物の位置を更新する位置更新ステップと、
前記行動割当ステップと位置更新ステップとの処理を繰り返し行うように制御する制御ステップと、
を含み、
経由位置を、目標位置に接するどの目標位置外の位置からでも目標位置内に入ることが可能という条件で価値関数学習をしたときに、その価値関数の学習の結果得られた行動方策関数と、前記目的領域外行動決定ステップの行動選択方法を使用して制御対象物が行動選択をするとして、入口位置以外の全ての目標位置内の位置が他の制御対象物によって占拠されてしまった場合に、ある出発位置から制御対象物が入口位置にたどり着くことができるとき、そのような出発位置のうち、目標位置に接するすべての目標位置外の位置とし、制御対象物が目標位置外から目標位置内に入る行動をとった際の価値関数の値の更新は、この経由位置を経由した場合においてのみ行われ、それ以外の位置を経由した場合には行われないものとする、
行動制御方法。
【請求項５】
請求項４の行動制御方法であって、
前記Mは２以上の整数であり、
前記行動割当ステップは、
前記各制御対象物が前記目標位置に位置しないと判定された場合には、他の制御対象物により占拠されていない入口位置に向かう行動の中で、価値関数の値が最も大きくなる行動を前記各制御対象物の行動として決定する目標入口位置決定ステップを含む、
行動制御方法。
【請求項６】
請求項４または請求項５の行動制御方法であって、
前記目的領域内行動決定ステップは、前記各制御対象物が前記目標位置に位置すると判定された場合には、制御対象物の移動に伴ってその制御対象物と位置が入れ替わる仮想的な存在であるボイドが前記入口位置に向かうことを理想的な状態としてボイドの現在の位置に基づいて前記価値関数を更新し、前記各制御対象物の現在の位置Lに移動可能な位置であるボイド位置の中で前記更新後の価値関数の値を最大にする行動が前記位置Lに移動する行動である位置を候補ボイド位置とし、その最大にする行動に対応する前記更新後の価値関数の値を候補ボイドQ関数値として、前記候補ボイド位置の中で前記各制御対象物が移動可能な位置であり候補ボイドQ関数値が最小である位置に移動する行動を前記各制御対象物の行動として決定する、
行動制御方法。
【請求項７】
請求項１から請求項３の何れかの行動制御装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の制御対象物の行動を制御する技術に関する。例えば、複数のロボットを、開始位置における隊列形成状態から協調して移動させ、障害物を回避させ、目標位置で隊列形成をさせるための各ロボットの行動計画を求めるロボット協調制御技術に関する。
【背景技術】
【０００２】
近年、多数の自律移動ロボットを効率的に制御にするための研究が活発に行われている。その任務内容は、人の入れない箇所の監視、物品の搬送などさまざまであるが、多数のロボットの協調動作による隊列形成を効率的に行わせるための技術が求められており盛んに研究が行われている（例えば、非特許文献１参照。）。多数のロボットによる効率的な隊列形成を実現するには、それぞれのロボットの配置、動作順序などを事前に計画することが重要である。このような計画においては、当然ながら、複数のロボットが動作する実環境における障害物の存在や経路の形状なども十分に考慮しなければならない。
【０００３】
このような計画計算を行うための効果的な手法の一つとして、マルコフ決定過程における動的計画法や強化学習の手法があり、さまざまな研究が行われている（例えば、非特許文献２参照。）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】M.Shimizu, A.Ishiguro, T.Kawakatsu, Y.Masubuchi, “Coherent Swarming from Local Interaction by Exploiting Molecular Dynamics and Stokesian Dynamics Methods”, Proceeaings of the 2003 IEE/RSJ International Conference on intelligent Robots and Systems, Las Veqas, pp.1614-1619, October 2003.
【非特許文献２】Y.Wang, C.W.de Silva, “Multi-Robot Box-pushing: Single-Agent Q-Learning vs. Team Q-Learning”, Proceedings of the 2006 IEEE/RSJ International Conference on Intelligent Robots and Systems, Beijing, China, pp.3694-3699, October 2006.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、非特許文献１の手法では、流体力学的な特性をロボット動作に組み込む手法を用いて群ロボットの動作を制御しており、低い計算負荷での制御を可能にしている利点があるが、任意の形状の隊列形成をすることができるとは限らない。
【０００６】
また、非特許文献２の手法のように、マルコフ決定過程における動的計画法や強化学習を使用してこのような計画を行おうとすると、単体のロボットを使用する場合に比べて複数のロボットを使用する場合には、その計算に要する時間や計算機の記憶容量がロボットの数に対して指数関数的に増大してしまう。その主たる原因となるのが、探索計算のためのマルコフ状態空間内の状態数の莫大な増加である。非特許文献２では、検証された強化学習の手法では、ロボット数の増加に伴い、指数関数的に計算負荷が増加するという、マルコフ状態空間内の爆発問題への解決策は示されていない。
【０００７】
このように、任意形状の隊列制御を可能にする手法であって、計算負荷が低い手法は未だ実現できていない。
【０００８】
このような現状に鑑みて、この発明は、任意形状の隊列制御を可能にする手法であって、計算負荷が従来よりも低い行動制御装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明の一態様によれば、行動制御装置は、Mを１以上の整数とし、複数の制御対象物を所定のM個の入口位置を含む目標位置の集合に移動させるための行動制御を行う。行動制御装置は、制御対象物は、制御対象物がその制御対象物の現在の位置Lにおいて各行動aを取ったときの適切さを表すM個の価値関数に基づいて行動制御が行われるとして、(1)各制御対象物が目標位置に位置するか判定する位置判定部と、(2)各制御対象物が目標位置に位置しないと判定された場合には、制御対象物が入口位置に向かうことを理想的な状態として各制御対象物の現在の位置に基づいて価値関数を更新し、各制御対象物が移動可能な位置の中で更新後の価値関数の値が最も大きい位置に移動する行動を各制御対象物の行動として決定するM個の目的領域外行動決定部と、(3)各制御対象物が目標位置に位置すると判定された場合には、M個の入口位置の内の１つである最終入口位置を占拠しないように移動する行動を各制御対象物の行動として決定する目的領域内行動決定部と、を含む行動割当部と、決定された行動に基づいて各制御対象物の位置を更新する位置更新部と、行動割当部と位置更新部との処理を繰り返し行うように制御する制御部と、を含み、経由位置を、目標位置に接するどの目標位置外の位置からでも目標位置内に入ることが可能という条件で価値関数学習をしたときに、その価値関数の学習の結果得られた行動方策関数と、目的領域外行動決定部の行動選択方法を使用して制御対象物が行動選択をするとして、入口位置以外の全ての目標位置内の位置が他の制御対象物によって占拠されてしまった場合に、ある出発位置から制御対象物が入口位置にたどり着くことができるとき、そのような出発位置のうち、目標位置に接するすべての目標位置外の位置とし、制御対象物が目標位置外から目標位置内に入る行動をとった際の価値関数の値の更新は、この経由位置を経由した場合においてのみ行われ、それ以外の位置を経由した場合には行われないものとする。
【００１０】
上記の課題を解決するために、本発明の他の態様によれば、行動制御方法Mを１以上の整数とし、行動制御装置を用いて、複数の制御対象物を所定のM個の入口位置を含む目標位置の集合に移動させるための行動制御を行う。行動制御方法は、制御対象物は、制御対象物がその制御対象物の現在の位置Lにおいて各行動aを取ったときの適切さを表すM個の価値関数に基づいて行動制御が行われるとして、(1)各制御対象物が目標位置に位置するか判定する位置判定ステップと、(2)各制御対象物が目標位置に位置しないと判定された場合には、制御対象物が入口位置に向かうことを理想的な状態として各制御対象物の現在の位置に基づいて価値関数を更新し、各制御対象物が移動可能な位置の中で更新後の価値関数の値が最も大きい位置に移動する行動を各制御対象物の行動として決定するM個の目的領域外行動決定ステップと、(3)各制御対象物が目標位置に位置すると判定された場合には、M個の入口位置の内の１つである最終入口位置を占拠しないように移動する行動を各制御対象物の行動として決定する目的領域内行動決定ステップと、を含む行動割当ステップと、決定された行動に基づいて各制御対象物の位置を更新する位置更新ステップと、行動割当ステップと位置更新ステップとの処理を繰り返し行うように制御する制御ステップと、を含み、経由位置を、目標位置に接するどの目標位置外の位置からでも目標位置内に入ることが可能という条件で価値関数学習をしたときに、その価値関数の学習の結果得られた行動方策関数と、目的領域外行動決定ステップの行動選択方法を使用して制御対象物が行動選択をするとして、入口位置以外の全ての目標位置内の位置が他の制御対象物によって占拠されてしまった場合に、ある出発位置から制御対象物が入口位置にたどり着くことができるとき、そのような出発位置のうち、目標位置に接するすべての目標位置外の位置とし、制御対象物が目標位置外から目標位置内に入る行動をとった際の価値関数の値の更新は、この経由位置を経由した場合においてのみ行われ、それ以外の位置を経由した場合には行われないものとする。
【発明の効果】
【００１１】
本発明によれば、任意形状の隊列制御が可能となり、計算負荷を従来よりも低くすることができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】行動制御装置の例を説明するためのブロック図。
【図２】学習部の例を説明するためのブロック図。
【図３】第ｉ割当部の例を説明するためのブロック図。
【図４】第j目標領域外行動決定部の例を説明するためのブロック図。
【図５】目標領域内行動決定部の例を説明するためのブロック図。
【図６】スケジューリング部の例を説明するためのブロック図。
【図７】この発明の解決する問題を説明するための図。
【図８】包摂構造による行動選択を説明するための図。
【図９】行動制御方法の学習ステップの例を説明するためのフローチャート。
【図１０】行動制御方法の行動スケジュールステップの例を説明するためのフローチャート。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について、説明する。なお、以下の説明に用いる図面では、同じ機能を持つ構成部や同じ処理を行うステップには同一の符号を記し、重複説明を省略する。
【００１４】
＜第一実施形態＞
［理論的背景］
まず、行動制御装置及び方法の理論的背景について説明する。以下、行動制御の対象である制御対象物が、ロボットである場合を例に挙げて説明するが、制御対象物は、制御の対象となり得るものであれば、ロボット以外であってもよい。
【００１５】
多数のロボットが協調して開始位置における隊列形成状態から移動を行い、目標位置での隊列形成を行う任務は、例えば図７に例示するような壁で区切られた部屋においての開始位置から目標位置まで複数のロボットの移動によって実現するものである。
【００１６】
任務を行うロボットは、N台（例えばN≧50）であり、各ロボットは、二次元平面におけるX軸方向及びY軸方向のそれぞれに移動可能とする。すなわち、この例では、各ロボットは、図７の紙面に対して上下左右の四方向に移動可能とする。図７の各格子は、それぞれのロボットの位置を示すものである。各格子にはロボットは一台しか存在することができない。それぞれのロボットは、移動しようとする方向に障害物か他のロボットがある場合には、静止をするものと仮定する。
【００１７】
図７において、Rが記載された格子はロボットが存在する位置を示し、Oが記載された格子は障害物が存在する位置を示し、Fが記載された格子は目標位置を示す。また、太線の破線で囲まれた領域は開始位置を示し、太線で囲まれた領域は後述する入口位置を示す。このように、図７においては、ロボットの開始位置での隊列形状は略長方形であり、目標位置での隊列形状は略星形である。
【００１８】
それぞれのロボットi（iはロボット番号を表す）の初期位置を（Xr0[i],Yr0[i]）とし、目標位置を（Xre[i],Yre[i]）とするとき、初期位置に配置されたロボットが、目標位置まで移動するための行動計画を求める問題を考える。
【００１９】
このような問題に対して単純にマルコフ状態遷移モデルを適用しようとする場合、マルコフ状態空間は、iをロボット番号としたとき、ロボットiの位置（Xr[i],Yr[i]）、ロボットiの行動a[i]によって構成される。各状態（ロボットの位置と行動）は離散値で表現される。部屋をX,Yの直交座標系からなる２次元平面で表すと、X軸、Y軸をそれぞれ離散化表現した値により各位置を表現する。つまり、図７のように部屋（２次元平面）は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある／なし」が予め設定されている。上述の通り、図７では、障害物のある格子をOで示している。
【００２０】
また、この例では、制御対象物である行動主体は部屋に配置されている各ロボットとなる。ロボットiの行動a[i]∈D[i]は、静止、上下左右方向への１格子分の移動の計５種類のうちの何れかを取る。すなわち、D[i]∈{0,1,2,3,4}として、各行動は例えば以下のように定義される。
0: 静止
1: 二次元平面上で右方向に１格子だけ移動する
2: 二次元平面上で上方向に１格子だけ移動する
3: 二次元平面上で左方向に１格子だけ移動する
4: 二次元平面上で下方向に１格子だけ移動する
【００２１】
このような任務環境におけるマルコフ状態空間は、ロボット数×２の次元数の状態を持ち、かつ選択可能な行動数は、ロボットの行動（＝５通り）のロボット数乗だけ存在する。例えば、ロボット数が５０で、部屋の縦横方向の格子数がそれぞれ２０であるとすれば状態数は２０の100乗個にもなり、探索計算に要する資源の量は膨大なものとなる。さらにロボット数が１台増えるごとに、その状態数は400倍増加していくことになり、複数のロボットを使用する場合の大きな問題となっている。
【００２２】
そこで、この実施形態では、このような状態空間の爆発をさけるために、学習に使用するマルコフ状態空間を、後述する目標エリアへの入口位置の数と同じ台数分のロボットの状態変数のみで構成することにする。すなわち、状態変数及び行動変数を以下のように定義する。
【００２３】
状態変数L=（Xr,Yr），行動変数a∈{0,1,2,3,4}
N台あるすべてのロボットは、この状態変数を引数とした入口位置の数と同じM個の価値関数Qj(L,a)(j=1,2,…,M)を共有する。すなわち、各時刻ステップにおける価値関数Qj(L,a)の更新は、N台の各ロボットが同じ価値関数を各々の経験によって更新する（すなわち、1時刻ステップでN回の更新を行う）。更新式は以下の通りである。
【００２４】
【数１】
2016051400.tif 000003
【００２５】
ここで、式(1)におけるαは学習率、γは割引率と呼ばれる予め定められた定数であり0<α<1、0<γ<1である。また、式(1)における←は右辺の値で左辺の値を更新することを意味する。1時刻ステップ前のロボットの位置をLとし、現在のロボット位置をL’とし、位置L'に遷移したときの報酬をr(L')とする。
【００２６】
i番目のロボットについて、式(1)及び式(2)の右辺のLにi番目のロボットの位置L[i]を代入し、式(1)及び式(2)のaにi番目のロボットの行動変数a[i]を代入して、式(1)及び式(2)を実行することで価値関数及び方策を更新する。これを、各i=1,2,…,Nについて繰り返す。
【００２７】
行動選択時にも、ロボットは、M個の価値関数のうちの１個の価値関数Qj(L,a)によって導かれる方策関数πj(L)を選択し、πj(L)を使用して行動選択を行う。πj(L)は、入口位置Pe[j]へたどり着くための各位置Lでの適切な行動値を返す関数である。言い換えれば、例えばロボットである制御対象物は、制御対象物がその制御対象物の現在の位置Lにおいて各行動aを取ったときの適切さを表すM個の価値関数のうちの１個の価値関数に基づいて行動制御が行われるとする。これにより、ロボットの数がどんなに増えても、学習に使用する状態空間の状態数がロボットM台分(入口位置の数M分)の状態空間の状態数と同じとなり、状態空間の大きさがロボット数に依存しないことになる。当然であるが、M=1（入口位置の数が１）であるならば、必要な状態空間の状態数は、ロボット1台分しか必要としない。
【００２８】
なお、本実施形態では、各ロボットは、それぞれの位置を計測することができ、また隣の位置に他のロボットが存在しているか否か、隣の位置に障害物があるか否かを知ることができるものとする。さらにロボットは、上下左右、もしくはロボットを囲む8マスに位置するロボット同士では、通信を行うことができ、それぞれのロボットの位置の値を送受信することが可能であるとする。それにより、ロボットは、互いに接しているロボット同士の通信により、M個の入口位置Pe[j]のうち、どの入口位置がロボットに占拠されておらず空いているかを知ることができる。
【００２９】
このような価値関数Qj (L,a)を使う場合で、M=1の場合を例にとり、ひとつの価値関数Q(L,a)を使用して学習を行った場合に起こる問題を以下に述べる。例えば学習において、各目標位置においてロボットに高い報酬を与えるものとする。まず、Q(L,a)においては、１個のロボットが開始位置からどのような行動を選択していくことで、最短時刻ステップ数で目標位置に到達できるかが記述されているのであるから、π(L)に従う各ロボットは、例えば目標位置へ向かう途中の障害物を回避するときに、障害物の角にあたる同じ位置を通ろうとする傾向がある。すなわち、同じ経路に多数のロボットが殺到し、文字通りの渋滞を引き起こしてしまう。また、目標位置に早めについたロボットがその位置に静止し、後から目標位置に到着しようとするロボットの道をふさいでしまうことも起こりうる。その結果、すべてのロボットが適切に目標位置に到達することが保証できない。それをさけるために、各ロボットの開始位置を考量して、早めに目標位置に到達するロボットには遠めの目標位置を割り振るなどの処理をする方法もあるが、そのためには、各ロボットの位置をロボットの台数分だけマルコフ状態空間に組み込むことが必要となってしまい、ロボット台数が多い場合には、状態空間の深刻な増加を引き起こす。このような問題は、入口位置の数Mが１ではないときでも同様に起こるものである。
【００３０】
そこで、このようなことを引き起こさないために、主に２つの方法を提案する。１つ目は包摂構造を使用した行動選択手法であり、２つ目は目標位置におけるボイド制御である。
【００３１】
図８に、包摂構造を使用した行動選択手法の例の概念図を示す。図８の〇の中にｓが描かれたモジュール（以下、包摂モジュールとする）は、包摂構造における重要なキーパーツである。包摂モジュールは、上位のモジュールから入力された信号を、下位のモジュールからの信号入力がない限りはそのまま出力する。包摂モジュールは、下位のモジュールからの入力があった場合は、上位モジュールからの入力を無視し、下位モジュールの入力を出力する。
【００３２】
各層のモジュールは、Qxth(x=1,2,3,4)モジュールとStopperモジュールで構成される。最下層のQxthモジュールはQ1stモジュール、第二層はQ2ndモジュール、第三層はQ3rd、第四層はQ4thモジュールである。最上層はStayComモジュールで構成される。各入口位置ｊ用の価値関数Qj(L,a)について以下の処理を行う。
【００３３】
Q1stモジュールは、現在のロボットiの位置L=(xr[i],yr[i])を入力値として受け取り、L=(xr[i],yr[i])においてQj(L,a)の値を最大とするaの値をロボットiの入口位置Pe[j]に向かうための行動a[i][j]の候補として出力する。同様に、Q2ndモジュールは、現在のロボットiの位置L=(xr[i],yr[i])を入力値として受け取り、L=(xr[i],yr[i])においてQj (L,a)の値を2番目に大きな値とするaの値をロボットiの入口位置Pe[j]に向かうための行動a[i][j]の候補として出力する。さらに、Q3rdモジュールは、現在のロボットiの位置L=(xr[i],yr[i])を入力値として受け取り、L=(xr[i],yr[i])においてQj(L,a)の値を3番目に大きな値とするaの値をロボットiの入口位置Pe[j]に向かうための行動a[i][j]の候補として出力する。同様に、Q4thモジュールは、現在のロボットiの位置L=(xr[i],yr[i])を入力値として受け取り、L=(xr[i],yr[i])においてQj(L,a)の値を4番目に大きな値とするaの値をロボットiの入口位置Pe[j]に向かうための行動a[i][j]の候補として出力する。
【００３４】
なお、各Qxthモジュールは、出力する行動の候補としてa[i][j]=0（静止）を含めないものとする。Stopperモジュールは、位置(xr[i],yr[i])に存在するロボットの隣の位置(xr[i]+1,yr[i])、(xr[i],yr[i]+1)、(xr[i]-1,yr[i])、(xr[i],yr[i]-1)に他のロボットが存在しているかどうかをチェックし、入力された値の行動によってロボットが移動する先の位置に、他のロボットが存在している場合には、何も行動値を出力しない。そうでない場合は入力された行動値をそのまま出力する。StayComモジュールは、常に静止行動a[i][j]=0を出力する。
【００３５】
ここで述べた行動選択方法は、例えば、位置LにおいてQ値を最大にする行動をロボットが選択した場合に、その行動によって移動する先の格子にすでに他のロボットが存在してしまっているときに、ロボットに動作をさせずに静止させるのではなく、最適ではないにしても、次に望ましい行動を選択して、他のロボットに占拠されていない格子に移動する行動をロボットに指示するものである。
【００３６】
これは、ちょうど流体が障害物にぶつかってもそこで静止せずに、障害物をよけつつも主流の方向から遠くずれない方向に流れていく性質を、ロボットに与えるものである。
【００３７】
なお、図８のモジュールが４層（第１〜第４）のレイヤで構成されているのは、この例では静止(a=0)以外でロボットの取りうる行動が４種類(a=1,2,3,4)であるとしているためである。一般には、行動の種類がV個（静止を含む）あれば、図８のモジュールはV−１個のレイヤになる。
【００３８】
以上の計算により、各ロボットiにおいて、各入口位置jに向かうための行動a[i][j]が算出された後に、ロボットにより占拠されていない入口位置に向かうための行動値a[i][j]の中で、Qj(L,a[i][j])が最大となる行動値a[i][j]を選択して、ロボットiの行動とする。これにより、ロボットiは、まだ空いている入口位置のうち最も近いところにある入口位置を目指すのに最適な行動を選択することとなる。例えば、M個の全ての入口位置が占拠されていない場合には、M個の価値関数Qj(L,a[i][j])の中で最大となるa[i][j]を選択する。また、全ての入口位置が占拠されている場合には、後述する最終入口位置Pe[j_last]が占拠されていないものとみなし、最終入口位置Pe[j_last]に向かうための行動値a[i][j_last]を選択する。
【００３９】
次にボイド制御の原理について述べる。まず、各ロボットの目標位置をここに厳密に割り振ることをせず、目標位置全体の集合を、目標隊列エリアGと定義する。すなわち、
（Xre[i],Yre[i]）∈G  …(3)
として、各ロボットはG内の全ての全ての位置を自由に目標位置とすることができるものとする。つまり、Gをちょうど流体を注ぐ器のようなものとして扱う。すなわち、各ロボットは、Gの境界上にある決められた位置からGに入ることが可能であるが、一度G内に入ったロボットは、Gを出る行動をとることができないものとする。また、強化学習時における報酬の設定については、G内の境界上に複数の入口位置Pe[j]=(Xpe[j],Ype[j]) (j=1,2,…,M)を設定し、ロボットがPe[j]からG内に入ったときのみ、Qj(L,a)の値の更新時に、高報酬であるr=1を与え、それ以外の経験については、すべてr=0を与えるものとする。Pe[j]の位置はGの内部であって、Gの境界上であればどこでも構わないが、ロボットの開始位置から近い位置を選ぶのがロボットの動作をスムーズにするうえで効果的である。Pe[j]の位置を入口位置と呼ぶ。ここで、さらにM個の入口位置のうち、一つを最終入口位置と定義し、Pe[j_last]とする。
【００４０】
G内における行動選択では、ロボットは常に、最終入口位置Pe[j_last]用の行動方策関数πj_last(L)を使用して、行動選択を行うものとする。G内での各入口位置用の価値関数Qj(L,a)の値の更新は、G外の場合と同様に行うが、行動選択の場合は、πj_last(L)が返す行動値をロボットの行動に伴って動く“ボイド”の動作として扱うことにする。ボイドとは、ロボットが位置Lから、L’に遷移したときに同時に、L’からLに遷移する空隙のことである。すなわち、一台のロボットがGの内部に入ったときは、同時に一つのボイドがGの外部に出ていくことになる。方策関数πj_lastが返す値は、G内外問わずに、最終入口位置Pe[j_last]に制御対象物を導く行動となるが、ここで、ボイド制御においては、制御対象としてのロボットをボイドと入れ替えて、方策関数πj_lastが返す値をボイドの行動として解釈し、そうしたボイドの動きを実現するためにロボットを動作させれば、必然的にロボットの動作は、最終入口位置Pe[j_last]からG内に入ったのちに最終入口位置Pe[j_last]から離れた位置を目指して、G内に分散していく動作となる。以下、そのための行動選択方法について述べる。G内において、ロボットが位置Lから、L’に遷移したときに、Qj_lastの値は式(1)により更新される。式(1)により更新されたQj_lastの値によって導かれる行動方策πj_last（Qj_lastの値を最大化する行動を返す関数）は、ボイドのとるべき最適な行動として解釈され、ロボットは、ボイドがそのような行動をとれるように移動を行う。
【００４１】
ここで、ロボットがG内に入ることが可能な位置は、各入口位置jについて、複数設定され、経由位置Et[j][h]=(Xet[j][h],Yet[j][h])(h=1,2,…,Hj)と定義される。経由位置Et[j][h]は、図７に示すEの書かれたマスに示すように、太線で囲まれた入口位置をPe[j]としたとき（ここでは一つのみ示す。）、Pe[j]の周囲で、G外にありGに接する位置である。方策関数πjに従い行動するロボットは、経由位置Et[j][h]を経由してのみ、G内に入ることができる。ロボットがG外からG内に入る行動をとった際のQj(L,a)の値の更新は、この経由位置Et[j][h]を経由した場合においてのみ行われ、それ以外の位置を経由した場合には行われないものとする。こうすることで、Qj(L,a)の値には、経由位置Et[j][h]以外の位置を経由したG内への移動の経験が反映されないことになり、結果として、Qj(L,a)の値から導かれたπｊ(L)が、経由位置Et[j][h]以外の位置で返す行動値が、Gに侵入する行動ではないものとなる。
【００４２】
G外にありGに接している位置のうち、経由位置Et[j][h]に含まれるものとそうでないものの判別は、Q学習を行う事前の段階で計算される。経由位置Et[j][h]に含まれるべき位置とは、「Gに接するどのG外の位置からでもG内に入ることが可能という条件でQ学習をしたときに、そのQ学習の結果得られた行動方策関数πj(L)と、本実施形態の包摂構造を使用した行動選択方法を使用してロボットが行動選択をするとして、入口位置Pe[j]以外の全てのG内の位置が他のロボットによって占拠されてしまった場合に、ある出発位置からロボットが入口位置Pe[j]にたどり着くことができるとき、そのような出発位置のうち、Gに接するすべてのG外の位置」である。そのような経由位置Et[j][h]に含まれるべき位置の求め方を２つ例示する。
【００４３】
（経由位置の求め方１）
(1)L＝Pe[j]のときに値０を返し、それ以外のLの値の場合（L≠Pe[j]のとき）には、入口位置Pe[j]からの縦方向の距離と、横方向の距離の差の和を返す距離関数Dist(L,j)を用意する。例えば、図7の太枠のマスを入口位置Pe[j]とした場合、Dの位置にて、Dist(L,j)の値は、X方向の距離が３、Y方向の距離が２なので、3+2=5となる。
(2)Gに接するG外の全ての位置をEtCandidate[j][h]((h=1,2,…,Hmax(Hmaxは、Gに接するG外の位置の総数))とし、以下の(3)〜(6)のプロセスを繰り返す。
(3)h←1とする。
(4)Dを位置を表す変数D=(x,y)とし、位置DをEtCandidate[j][h]の位置とする。つまり、D←EtCandidate[j][h]。
(5)位置Dに上下左右で隣接する4つの位置(x+1,y),(x,y+1),(x-1,y),(x,y-1)の中に、まず、((i-a)入口位置Pe[j]である位置)がある場合、その位置をDに代入する。続いて、位置Dに上下左右で隣接する4つの位置(x+1,y),(x,y+1),(x-1,y),(x,y-1)の中に((i-b)G外の位置かつ障害物位置ではない位置であって、さらに、(ii)その位置での距離関数Distの値が、位置Dでの距離関数Dist(D,j)の値より小さい位置)がある場合、その位置をDに代入する。さらに、(6)を実行する。位置Dに上下左右で隣接する4つの位置の何れもが、(i-a)または、（(i-b)かつ(ii)）のいずれをも満たさなければ、EtCandidate[j][h]は経由位置Etに含まれないこととする。h＝Hmaxでなければ、hをインクリメントの後、(4)を実行する。h＝Hmaxであれば、入口位置Pe[j]に対する経由位置Et[j][h]は全て得られたと判断し、入口位置Pe[j]に対する経由位置Et[j][h]の算出を終了する。
(6)位置Dが入口位置Pe[j]に一致するかを判定し、一致しないならば、(5)に戻る。一致するならば、EtCandidate[j][h]は経由位置Et[j][h]に含まれることとする。h＝Hmaxでなければ、hをインクリメントの後、(4)を実行する。h＝Hmaxであれば、入口位置Pe[j]に対する経由位置Et[j][h]の算出を終了する。
【００４４】
以上の処理を、全ての入口jに対して行う。
【００４５】
（経由位置の求め方２−１）
経由位置Et[j][h]を判定するために使用する価値関数Qet_j(L,a)(j=1,2,…,M)を各入口位置Pe[j]ごとに用意し、学習において、価値関数Qj(L,a)の更新と同じタイミングにて、同様に式(1)を使用して価値関数Qet_j(L,a)を更新する。Qet_jとQjでは、報酬の与え方も同じである。Qet_jとQjの学習で異なるのは、経由位置Et[j][h]を経由しないでロボットがG内に入った場合でも、Qet_jの場合は、式（１）による値の更新を行う点である。各位置Lにおいて、Qet_j(L,a)の値の最大値を返す関数をQet_j_max(L)としたとき、上記、(1)〜(6)のプロセスにおけるDist(L,j)関数をQet_j_max(L)関数に置き換えた以下の処理によっても、同様にEt[j][h]の計算を行うことができる。この手法でEt[j][h]の計算をする場合は、学習プロセス中の各時刻ステップ毎に、Et[j][h]の更新を行う。
(1)Gに接するG外の全ての位置をEtCandidate[j][h]((h=1,2,…,Hmax(Hmaxは、Gに接するG外の位置の総数))とし、以下の(3)〜(6)のプロセスを繰り返す。
(2)h←1とする。
(3)Dを位置を表す変数D=(x,y)とし、位置DをEtCandidate[j][h]の位置とする。
(4)Dに上下左右で隣接する4点の中に、まず、（(i-a)入口位置Pe[j]である位置）である位置が存在する場合、その位置をDに代入する。続いて、Dに上下左右で隣接する4点の中に（(i-b)G外であって障害物位置ではない位置であって、かつ、(ii)その位置でのQet_j_max関数の値が、位置DでのQet_j_max関数の値より大きい位置がある）場合、その位置をDに代入する。さらに、(5)を実行する。位置Dに上下左右で隣接する4つの位置の何れもが、(i-a)、または、（(i-b)かつ(ii)）のいずれをも満たさなければ、EtCandidate[j][h]は経由位置Etに含まれないこととする。h＝Hmaxでなければ、hをインクリメントの後、(3)を実行する。h＝Hmaxであれば、入口位置Pe[j]に対する経由位置Et[j][h]の算出を終了する。
(5)位置Dが入口位置Pe[j]に一致するかを判定し、一致しないならば、(4)に戻る。一致するならば、EtCandidate[j][h]は経由位置Et[j][h]に含まれることとする。h＝Hmaxでなければ、hをインクリメントの後、(3)を実行する。h＝Hmaxであれば、入口位置Pe[j]に対する経由位置Et[j][h]の算出を終了する。
【００４６】
以上の処理を、全ての入口jに対して行う。
【００４７】
（経由位置の求め方２−２）
または、Qj(L,a)の状態Lでの最大値をQj_max（L）関数とし、上記(4)(5)の項を以下のように置き換えてもよい。
【００４８】
位置DでのQet_j_max関数の値とQj_max関数の値が異なる場合、EtCandidate[j][h]は経由位置Etに含まれないこととし、等しい場合は、含まれることとする。h＝Hmaxでなければ、hをインクリメントの後、(3)を実行する。h＝Hmaxであれば、入口位置Pe[j]に対する経由位置Et[j][h]の算出を終了する。
【００４９】
以上により、Gの入口位置Pe[j]を目指してやってきたロボットがPe[j]近傍にやってきたときに、Pe[j]からG内に入るよりも近道でGに入れる場合、その近道がEt[j][h]を経由するものであるならば、Et[j][h]経由でロボットがGに入るようにロボットの行動が制御されるので、Gに入ろうとするロボットがPeの一点に集中して渋滞を起こすことはない。
【００５０】
（ボイド制御に関して）
次にG内での行動選択について述べる。G内においてもGの外部と同様に、包摂構造による行動選択を行うが、Qxthモジュールの動作がGの内部では異なる。G内部では、Qxthモジュールは、まずロボット位置Lの隣の位置(xr[i]+1,yr[i])、(xr[i],yr[i]+1)、(xr[i]-1,yr[i])、(xr[i],yr[i]-1)にある各ボイドについてQj_last値を最大化する行動が、ボイドを現在のロボット位置に向かわせるようになっているボイドを、候補ボイドとして複数選択する。つづいて、それらの候補ボイドの中から、Qmaxの値(式(1)で定義されるQ関数の最大値)をx番目に小さくするものをターゲットボイドとして一つ選択し、選択したターゲットボイドにロボットを向かわせる行動の値を出力する。このようにすることで、ロボットを動かして適切にボイドを最終入口位置Pe[j_last]に誘導し、常に後からGに入ってこようとするロボットに入口を空いた状態に確保することができる。
【００５１】
なお、Qxthモジュールの設計についてはいくつかオプションがあり、例えば、候補ボイドの中からターゲットボイドを選択する手法としてとして、候補ボイドの中からQmaxの値をx番目に大きくするものをターゲットボイドとして一つ選択する手法や、候補ボイドにロボットを向かわせる行動の中から行動番号の小さいものをロボットの行動として出力するなどの色々な方法があり得る。
【００５２】
［行動制御装置及び方法］
図を参照して、行動制御装置及び方法の例について説明する。この行動制御装置及び方法は、複数の制御対象物を所定の入口位置を含む目標位置の集合に移動させるための行動制御を行うものである。
【００５３】
行動制御装置は、図１に示すように、学習部１、記憶部２及びスケジューリング部３を例えば備えている。
【００５４】
学習部１は、図２に示すように、入力部１１、行動割当部１２、位置更新部１３及び制御部１４、経由位置計算部１１１を例えば備えている。
【００５５】
スケジューリング部３は、図６に示すように、初期状態入力部３１、行動割当部３２、位置更新部３３、目標位置到達判定部３４を例えば備えている。
【００５６】
以下では、制御の対象となる制御対象物が、ロボットである場合を例に挙げて説明する。もちろん、制御対象物は、制御の対象となり得るものであれば、ロボット以外であってもよい。
【００５７】
まず、行動制御装置の学習部１による学習ステップの処理について説明する。学習ステップの処理の流れの例を、図９に示す。
【００５８】
＜入力部１１＞
入力部１１には、N台のロボットのそれぞれの初期位置(xr0[i],yr0[i])及び目標位置(Xre[i],Yre[i])が入力される。ここで、i=1,2,…,Nとする。N個の目標位置の集合は、G={(Xre[1],Yre[1]),(Xre[2],Yre[2]),…,(Xre[N],Yre[N])}として記憶部２に記憶される。
【００５９】
N台のロボットのそれぞれについて、入力された初期位置の情報を用いて、i番目のロボットの初期位置L[i]=(xr0[i], yr0[i])を設定し、i番目のロボットの初期位置を記憶部２に記憶する。
【００６０】
なお、目標位置は、M個の入口位置Pe[j]=(Xpe[j],Ype[j])（j=1,2,…M）を含み、M個の入口位置は最終入口位置Pe[j_last]を含むとする。入力部１１から入力され、記憶部２に記憶されるとする。
【００６１】
＜経由位置計算部１１１＞
経由位置計算部１１１では、上述の経由位置の求め方１、２−１及び２−２の何れかによって経由位置Et[j][h]を計算し、計算結果を記憶部２に記憶する。
【００６２】
＜記憶部２＞
記憶部２には、M個の入口位置Pe[j]、最終入口位置Pe[j_last]、位置L及びa∈{0,1,2,3,4}の組み合わせのそれぞれについてのＱ関数Qj(L,a)、各位置Lについての方策πj (L)の初期値が記憶されているとする。経由位置の求め方２−１、２−２により経由位置を求める場合には、Ｑ関数Qet_j（L,a）の初期値が記憶されているとする。Q関数の初期値は、例えば0を設定すればよい。経由位置計算部１１１で求めた経由位置Et[j][h]=(Xet[j][h],Yet[j][h])の値も記憶されているものとする。Lの取りうる範囲は、対象となる二次元平面上の領域内の全ての座標である。ただし、Lが障害物位置と合致する場合は、Q(L,a)=0と設定してもよい。
【００６３】
各位置Lの報酬r(L)についても、記憶部２に記憶されているとする。各位置Lの報酬r(L)についての情報は、例えば入力部１１から入力される。
【００６４】
＜行動割当部１２＞
行動割当部１２による行動割当処理は、各ロボットについて順次実行される。行動割当部１２は、第１割当部１２−１，第２割当部１２−２，…，第i割当部１２−ｉ，…，第N割当部１２−Ｎを例えば備えている。
【００６５】
i=1,2,…,Nとして、i番目のロボットの行動についての行動割当処理は、第i割当部１２−ｉが例えば行うとする。第i割当部１２−ｉの構成の例を図３に示す。第i割当部１２−ｉは、位置判定部１２−ｉ−１と、M個の第j目的領域外行動決定部１２−ｉ−２−ｊと、目的領域内行動決定部１２−ｉ−３と、目標入口位置決定部１２−ｉ−４とを含む。以下、各部の処理例を説明する。
【００６６】
≪位置判定部１２−ｉ−１≫
位置判定部１２−ｉ−１は、記憶部２からi番目のロボットの位置(xr[i],yr[i])を読み込み、読み込んだ位置(xr[i],yr[i])が目的位置の集合G内に含まれるか否かを判定する。言い換えれば、位置判定部１２−ｉ−１は、ロボットが目標位置に位置するか判定する（ステップＡ１）。
【００６７】
位置判定部１２−ｉ−１は、位置(xr[i],yr[i])が目的位置の集合G内に含まれない場合は第ｊ目的領域外行動決定部１２−ｉ−２―jが次の処理を実行し、(xr[i],yr[i])が目的位置の集合G内に含まれる場合は目的領域内行動決定部１２−ｉ−３が次の処理を実行するよう制御する。
【００６８】
また、位置判定部１２−ｉ−１は、位置(xr[i],yr[i])が目的位置の集合G内に含まれない場合は、M個の第ｊ目的領域外行動決定部１２−ｉ−２―jから出力される行動値がそれぞれ目標入口位置決定部１２−ｉ−４に入力され、(xr[i],yr[i])が目的位置の集合G内に含まれる場合は、目的領域内行動決定部１２−ｉ−３から出力される行動値が位置更新部１３に入力されるよう制御する。
【００６９】
≪第j目的領域外行動決定部１２−ｉ−２−ｊ≫
第j目的領域外行動決定部１２−ｉ−２−ｊの構成の例を図４に示す。
【００７０】
第j目的領域外行動決定部１２−ｉ−２−ｊは、図８の行動選択手法に基づいて行動を決定するものである。すなわち、第j目的領域外行動決定部１２−ｉ−２−ｊは、ロボットが目標位置に位置しないと判定された場合には、ロボットが入口位置Pe[j]に向かうことを理想的な状態としてロボットの現在の位置に基づいて価値関数Qj(L,a)を更新し、ロボットが移動可能な位置の中で更新後の価値関数Qj(L,a)の値が最も大きい位置に移動する行動をロボットの行動として決定する（ステップＡ２）。
【００７１】
〔領域外Ｑ関数更新部１２−ｉ−２−ｊ−１〕
領域外Ｑ関数更新部１２−ｉ−２−ｊ−１は、1時刻ステップ前のi番目のロボット位置をL=(xr[i],yr[i])とし、現在のi番目のロボット位置をL‘=(xr’[i],yr’[i])とし、記憶部２に記憶されたQj(L,a)とQj(L’,a)を参照して、1時刻ステップ前のロボットの行動aについて、式(1)によりQj(L,a)を求め、求めたQj(L,a)の値で記憶部２に記憶されたQj(L,a)の値を更新する。また、領域外Ｑ関数更新部１２−ｉ−２−ｊ−１は、更新前のQj(L,a)の値と更新後のQj(L,a)の値を制御部１４へ出力する。
【００７２】
さらに、経由位置の求め方２−１、２−２により経由位置を求める場合には、記憶部２に記憶されたQet_j(L,a)とQet_j(L’,a)を参照して、1時刻ステップ前のロボットの行動aについて、式(1)によりQet_j(L,a)を求め、求めたQet_j(L,a)の値で記憶部２に記憶されたQet_j(L,a)の値を更新する。
【００７３】
また、領域外Ｑ関数更新部１２−ｉ−２−ｊ−１は、更新されたQj(L,a)の値を用いて、式(2)により方策πj(L)を求め、求めたπj(L)の値で記憶部２に記憶された方策πj(L)を更新する。
【００７４】
〔第１領域外行動候補決定部１２−ｉ−２−ｊ−２〕
第１領域外行動候補決定部は、L=(xr[i],yr[i])として、記憶部２に記憶されたQj(L,1),Qj(L,2),Qj(L,3),Qj(L,4)のうちの最大値をとるaの値を第１領域外行動候補値として出力する。
【００７５】
〔第１領域外包摂制御部１２−ｉ−２−ｊ−３〕
第１領域外包摂制御部１２−ｉ−２−ｊ−３は、第１領域外行動候補決定部１２−ｉ−２−ｊ−２で決定された第１領域外行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k]) (i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか否かを判定する。
【００７６】
第１領域外包摂制御部１２−ｉ−２−ｊ−３は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、障害物が存在する場合には、第２領域外行動候補決定部１２−ｉ−２−ｊ−４が次の処理を実行するよう制御する。
【００７７】
第１領域外包摂制御部１２−ｉ−２−ｊ−３は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しないか、かつ、障害物が存在しない場合には、第１領域外行動候補値を「第j入口位置用行動値a_gate[i][j]」として出力する。
【００７８】
〔第２領域外行動候補決定部１２−ｉ−２−ｊ−４〕
第２領域外行動候補決定部１２−ｉ−２−ｊ−４は、L=(xr[i],yr[i])として、記憶部２に記憶されたQj(L,1),Qj(L,2),Qj(L,3),Qj(L,4)のうちの２番目に大きな値をとるaの値を第２領域外行動候補値として出力する。
【００７９】
〔第２領域外包摂制御部１２−ｉ−２−ｊ−５〕
第２領域外包摂制御部１２−ｉ−２−ｊ−５は、第２領域外行動候補決定部１２−ｉ−２−ｊ−４で決定された第２領域外行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k]) (i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか否かを判定する。
【００８０】
第２領域外包摂制御部１２−ｉ−２−ｊ−５は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、障害物が存在する場合には、第３領域外行動候補決定部１２−ｉ−２−ｊ−６が次の処理を実行するよう制御する。
【００８１】
第２領域外包摂制御部１２−ｉ−２−ｊ−５は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しないか、かつ、障害物が存在しない場合には、第２領域外行動候補値を「第j入口位置用行動値a_gate[i][j]」として出力する。
【００８２】
〔第３領域外行動候補決定部１２−ｉ−２−ｊ−６〕
第３領域外行動候補決定部１２−ｉ−２−ｊ−６は、L=(xr[i],yr[i])として、記憶部２に記憶されたQj(L,1),Qj(L,2),Qj(L,3),Qj(L,4)のうちの３番目に大きな値をとるaの値を第３領域外行動候補値として出力する。
【００８３】
〔第３領域外包摂制御部１２−ｉ−２−ｊ−７〕
第３領域外包摂制御部１２−ｉ−２−ｊ−７は、第３領域外行動候補決定部１２−ｉ−２−ｊ−６で決定された第３領域外行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k]) (i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか否かを判定する。
【００８４】
第３領域外包摂制御部１２−ｉ−２−ｊ−７は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、障害物が存在する場合には、第４領域外行動候補決定部１２−ｉ−２−ｊ−８が次の処理を実行するよう制御する。
【００８５】
第３領域外包摂制御部１２−ｉ−２−ｊ−７は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しないか、かつ、障害物が存在しない場合には、第３領域外行動候補値を「第j入口位置用行動値a_gate[i][j]」として出力する。
【００８６】
〔第４領域外行動候補決定部１２−ｉ−２−ｊ−８〕
第４領域外行動候補決定部１２−ｉ−２−ｊ−８は、L=(xr[i],yr[i])として、記憶部２に記憶されたQj(L,1),Qj(L,2),Qj(L,3),Qj(L,4)のうちの４番目に大きな値をとる（つまり、最小値をとる）aの値を第４領域外行動候補値として出力する。
【００８７】
〔第４領域外包摂制御部１２−ｉ−２−ｊ−９〕
第４領域外包摂制御部１２−ｉ−２−ｊ−９は、第４領域外行動候補決定部１２−ｉ−２−ｊ−８で決定された第４領域外行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k])(i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか否かを判定する。
【００８８】
第４領域外包摂制御部１２−ｉ−２−ｊ−９は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、障害物が存在する場合には、a=0(静止)を「行動値」として出力する。
【００８９】
第４領域外包摂制御部１２−ｉ−２−ｊ−９は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しないか、かつ、障害物が存在しない場合には、第４領域外行動候補値を「第j入口位置用行動値a_gate[i][j]」として出力する。
【００９０】
≪目標入口位置決定部１２−ｉ−４≫
目標入口位置決定部１２−ｉ−４は、Ｍ個の第j目的領域外行動決定部１２−ｉ−２−ｊからそれぞれ第j入口位置用行動値a_gate[i][j]を受け取る。また、各ロボットの位置情報を受け取り、ロボットにより占拠されていない入口位置の情報を求める。なお、ロボットにより占拠されていない入口の番号の集合を、非占拠入口集合Pe_not_occupied∈{0,1,…}とする。例えば、各ロボットの位置情報と記憶部２に格納されている入口位置Pe[j]とが一致するか否かにより、容易に非占拠入口集合Pe_not_occupiedを求めることができる。ここで、最終入口位置j_lastを常に非占拠入口集合Pe_not_occuppiedに含めるようにしてもよい。このような構成とすることで、全ての入口位置が占拠されている場合であっても各ロボットは、行き先を失わずに、効率的に行動を選択することができる。続いて、Pe_not_occupiedに含まれている入口位置に向かうための行動値a_gate[i][j]の中で、Qj(L,a_gate[i][j])が最大となる行動値a_gate[i][j]を選択して、ロボットiの行動a[i]として決定し、出力する。
【００９１】
≪目的領域内行動決定部１２−ｉ−３≫
目的領域内行動決定部１２−ｉ−３の詳細構成を図５に示す。
【００９２】
目的領域内行動決定部１２−ｉ−３は、ロボットが目標位置に位置すると判定された場合には、M個の入口位置の内の１つである最終入口位置を占拠しないように移動する行動をロボットの行動として決定し（ステップＡ３）、出力する。
【００９３】
目的領域内行動決定部１２−ｉ−３は目的領域外行動決定部１２−ｉ−２と同様に図８の行動選択手法に基づいて行動を決定するものである。ただし、目的領域内行動決定部１２−ｉ−３ではボイド制御も組み込んだ処理が行われる。
【００９４】
例えば、目的領域内行動決定部１２−ｉ−３は、ロボットが目標位置に位置すると判定された場合には、ロボットの移動に伴ってそのロボットと位置が入れ替わる仮想的な存在であるボイドが最終入口位置Pe[j_last]に向かうことを理想的な状態として、ロボットの現在の位置に基づいて価値関数を更新し、ロボットの現在の位置Lに移動可能な位置であるボイド位置の中で更新後の価値関数の値を最大にする行動が位置Lに移動する行動である位置を候補ボイド位置とし、その最大にする行動に対応する更新後の価値関数の値を候補ボイドQ関数値として、候補ボイド位置の中でロボットが移動可能な位置であり候補ボイドQ関数値が最小である位置に移動する行動をロボットの行動として決定する。
【００９５】
〔領域内Ｑ関数更新部１２−ｉ−３１〕
領域内Ｑ関数更新部１２−ｉ−３１は、1ステップ前のi番目のロボットの位置(xr[i],yr[i])をLとし、現在のi番目のロボット位置をL’として、以下の処理を行う。
(1)もし、LがG外の場合には、各入口位置j用価値関数Qj（L,a）について、Lが第ｊ入口位置用の経由位置Et[j][h](h=1,2,…,Hj)のいずれかの位置と一致するか否かを判定し、一致する場合のみ、記憶部２に記憶されたQj(L,a)とQj(L’a)を参照して、1時刻ステップ前のロボットの行動aについて、式(1)によりQj(L,a)を求め、求めたQj(L,a)の値で記憶部２に記憶されたQj(L,a)の値を更新する。なお、Lが第ｊ入口位置用の経由位置Et[j][h]のいずれとも一致しない場合には、Qj(L,a)の値を更新しない。
(2)もし、LがG内の場合には、各入口位置j用価値関数Qj（L,a）について、記憶部２に記憶されたQj(L,a)とQj(L’a)を参照して、1時刻ステップ前のロボットの行動aについて、式(1)によりQj(L,a)を求め、求めたQj(L,a)の値で記憶部２に記憶されたQj(L,a)の値を更新する。
【００９６】
また、各ｊ値について、記憶部２に記憶されたQj(L,a)とQj(L’,a)を参照して、式(1)によりQj(L,a)を求め、求めたQj(L,a)の値で記憶部２に記憶されたQj(L,a)の値を更新する。
【００９７】
さらに、経由位置の求め方２−１、２−２により経由位置を求める場合には、記憶部２に記憶されたQet_j(L,a)とQet_j(L’a)を参照して、1時刻ステップ前のロボットの行動aについて、式(1)によりQet_j(L,a)を求め、求めたQet_j(L,a)の値で記憶部２に記憶されたQet_j(L,a)の値を更新する。
【００９８】
領域内Ｑ関数更新部１２−ｉ−３１は、更新前のQj(L,a)と更新後のQj(L,a)を制御部１４に出力する。また、式(2)により記憶部２に記憶された方策πj(L)の値を更新する。
【００９９】
〔候補ボイド集合生成部１２−ｉ−３２〕
候補ボイド集合生成部１２−ｉ−３２は以下の(1)から(3)の処理を行う。
【０１００】
(1)i番目のロボットの位置(xr[i],yr[i])に隣接する位置(xr[i]+1,yr[i])、(xr[i],yr[i]+1)、(xr[i]-1,y[ri])、(xr[i],yr[i]-1)の各々をボイド位置L’として、各位置L’において、最終入口位置Pe[j_last]用の価値関数Qj_last(L’,a-1)[a-1=0,1,2,3,4]のうち最大値をとるQj_last(L’,a-1)を「候補ボイドQ関数値」として決定する。またこのときのa-1の値を「L’における候補ボイド行動」として決定する。
【０１０１】
(2)上記(1)で求めた各L’における候補ボイド行動のうち、候補ボイド行動に従ってL’からボイドが移動したと仮定したときの移動後の位置がi番目のロボットの位置(xr[i], yr[i])となるL’の集合を「候補ボイド位置集合」として求める。
【０１０２】
(3)上記(2)で求めた「候補ボイド位置集合」に含まれる各候補ボイド位置L’と、L’における候補ボイドQ関数値と、L’における候補ボイド行動との組からなる集合を「候補ボイド集合」として、第１領域内行動候補決定部１２−ｉ−３３に出力する。
【０１０３】
〔第１領域内行動候補決定部１２−ｉ−３３〕
第１領域内行動候補決定部１２−ｉ−３３は、「候補ボイド集合」から候補ボイドQ関数値が最小となる候補ボイドQ関数値に対応する候補ボイド位置L’を「第１ターゲット位置」として決定する。
【０１０４】
i番目のロボットの位置(xr[i], yr[i])から、上記(2)で決定された第１ターゲット位置へ移動する行動を第１領域内行動候補値として出力する。
【０１０５】
〔第１領域内包摂制御部１２−ｉ−３４〕
第１領域内包摂制御部１２−ｉ−３４は、第１領域内行動候補決定部１２−ｉ−３３で決定された第１領域内行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k]) (i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか、位置(xr’[i],yr’[i])がGの外部であるか否かを判定する。
【０１０６】
第１領域内包摂制御部１２−ｉ−３４は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、位置(xr’[i],yr’[i])に障害物が存在するか、または、位置(xr’[i],yr’[i])がＧの外部である場合には、第２領域内行動候補決定部が次の処理を実行するよう制御する。
【０１０７】
第１領域内包摂制御部１２−ｉ−３４は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しない場合、かつ、位置(xr’[i],yr’[i])に障害物が存在しない場合、かつ、位置(xr’[i],yr’[i])がＧの外部でない場合には、第１領域内行動候補値を「行動値」として出力する。
【０１０８】
〔第２領域内行動候補決定部１２−ｉ−３５〕
第２領域内行動候補決定部１２−ｉ−３５は、「候補ボイド集合」から候補ボイドQ関数値が２番目に小さな値をとる候補ボイドQ関数値に対応する候補ボイド位置L’を「第２ターゲット位置」として決定する。
【０１０９】
i番目のロボットの位置(xr[i],yr[i])から、上記(2)で決定された第２ターゲット位置へ移動する行動を第２領域内行動候補値として出力する。
【０１１０】
〔第２領域内包摂制御部１２−ｉ−３６〕
第２領域内包摂制御部１２−ｉ−３６は、第２領域内行動候補決定部１２−ｉ−３５で決定された第２領域内行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k]) (i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか、位置(xr’[i],yr’[i])がGの外部であるか否かを判定する。
【０１１１】
第２領域内包摂制御部１２−ｉ−３６は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、位置(xr’[i],yr’[i])に障害物が存在するか、または、位置(xr’[i],yr’[i])がGの外部である場合には、第３領域内行動候補決定部１２−ｉ−３７が次の処理を実行するよう制御する。
【０１１２】
第２領域内包摂制御部１２−ｉ−３６は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しない場合、かつ、位置(xr’[i],yr’[i])に障害物が存在しない場合、かつ、位置(xr’[i],yr’[i])がＧの外部でない場合には、第２領域内行動候補値を「行動値」として出力する。
【０１１３】
〔第３領域内行動候補決定部１２−ｉ−３７〕
第１領域内行動候補決定部１２−ｉ−３７は、「候補ボイド集合」から候補ボイドQ関数値が３番目に小さな値をとる候補ボイドQ関数値に対応する候補ボイド位置L’を「第３ターゲット位置」として決定する。
【０１１４】
i番目のロボットの位置(xr[i],yr[i])から、上記(2)で決定された第３ターゲット位置へ移動する行動を第３領域内行動候補値として出力する。
【０１１５】
〔第３領域内包摂制御部１２−ｉ−３８〕
第３領域内包摂制御部１２−ｉ−３８は、第３領域内行動候補決定部１２−ｉ−３７で決定された第３領域内行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k]) (i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか、位置(xr’[i],yr’[i])がＧの外部であるか否かを判定する。
【０１１６】
第３領域内包摂制御部１２−ｉ−３８は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、位置(xr’[i],yr’[i])に障害物が存在するか、または、位置(xr’[i],yr’[i])がGの外部である場合には、第４領域内行動候補決定部１２−ｉ−３９が次の処理を実行するよう制御する。
【０１１７】
第３領域内包摂制御部１２−ｉ−３８は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しない場合、かつ、位置(xr’[i],yr’[i])に障害物が存在しない場合、かつ、位置(xr’[i],yr’[i])がGの外部でない場合には、第３領域内行動候補値を「行動値」として出力する。
【０１１８】
〔第４領域内行動候補決定部１２−ｉ−３９〕
第４領域内行動候補決定部１２−ｉ−３９は、「候補ボイド集合」から候補ボイドQ関数値が４番目に小さな値をとる候補ボイドQ関数値に対応する候補ボイド位置L’を「第４ターゲット位置」として決定する。
【０１１９】
i番目のロボットの位置(xr[i],yr[i])から、上記(2)で決定された第４ターゲット位置へ移動する行動を第４領域内行動候補値として出力する。
【０１２０】
〔第４領域内包摂制御部１２−ｉ−３１０〕
第４領域内包摂制御部１２−ｉ−３１０は、第４領域内行動候補決定部１２−ｉ−３９で決定された第４領域内行動候補値に従ってi番目のロボットが移動すると仮定したときの移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか否かを判定する。つまり、(xr’[i],yr’[i])=(xr[k],yr[k]) (i≠k)となるkが存在するか否かを判定する。さらに、位置(xr’[i],yr’[i])に障害物が存在するか、位置(xr’[i],yr’[i])がGの外部であるか否かを判定する。
【０１２１】
第４領域内包摂制御部１２−ｉ−３１０は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在するか、または、位置(xr’[i],yr’[i])に障害物が存在するか、または、位置(xr’[i],yr’[i])がＧの外部である場合には、a=0(静止)を「行動値」として出力する。
【０１２２】
第４領域内包摂制御部１２−ｉ−３１０は、移動後の位置(xr’[i],yr’[i])に他のロボットが存在しない場合、かつ、位置(xr’[i],yr’[i])に障害物が存在しない場合、かつ、位置(xr’[i],yr’[i])がGの外部でない場合には、第４領域内行動候補値を「行動値a[i]」として出力する。
【０１２３】
以上の処理により、第i割当部１２−ｉ−３１０からは、i番目のロボットが現在の位置(xr[i],yr[i])において選択する行動に対応する値である行動値a[i]∈{0,1,2,3,4}が出力される。ゆえに、行動割当部１２からは、N個のロボットがそれぞれ現在の位置において選択する行動値a[i]が出力される。
【０１２４】
なお、1時刻ステップの行動割当の結果、あるロボットと他のロボットとが同じ位置に移動しようとする場合が生じる。このような場合には、従来の様々な行動制御方法を用いて制御をすればよい。例えば、番号iの小さいものの行動を優先する。また、1時刻ステップでN個のロボットの行動を割り当てるのではなく、1個のロボットの行動を割り当てることで、上述の問題が生じるのを避けることができる。
【０１２５】
＜位置更新部１３＞
位置更新部１３は、各i=1,2,…,Nについて、i番目のロボットの現在の位置(xr[i],yr[i])において、行動割当部１２から出力された行動値a[i]に対応する行動をとった場合のロボットの移動後（行動後）の位置(xr’[i],yr’[i])を計算し、計算された(xr’[i],yr’[i])で記憶部２に格納されたi番目のロボットの位置を更新する。言い換えれば、位置更新部１３は、行動割当部１２によって決定された行動に基づいて例えばロボットである制御対象物のそれぞれの位置を更新する（ステップＡ４）。更新後の位置の系列｛(xr’[1],yr’[1]),(xr’[2],yr’[2]),…,(xr’[N],yr’[N])｝は、制御部１４に入力される。
【０１２６】
＜制御部１４＞
制御部１４は、行動割当部１２と位置更新部１３との処理を繰り返し行うように制御する（ステップＡ５）。
【０１２７】
制御部１４は、所定の終了条件を満たすまで、行動割当部１２と位置更新部１３との処理を繰り返し行うように制御する。例えば、制御部１４は、第i割当部（言い換えると、M個の第j目的領域外行動決定部１２−ｉ−２−ｊの何れか又は目的領域内行動決定部１２−ｉ−３）から出力されたN個の行動値a[i]に対応するすべての更新前のQ関数と更新後のQ関数とから構成される組について、更新前Q関数の値と更新後Q関数の値の差が所定の閾値以下となるまで、行動割当部１２及び位置更新部１３の処理を実行するよう制御する。この場合の終了条件は、更新前Q関数の値と更新後Q関数の値の差が所定の閾値以下となることである。
【０１２８】
すべての更新前のQ関数と更新後のQ関数とから構成される組について、更新前Q関数の値と更新後Q関数の値の差が所定の閾値以下となったら、行動制御装置の学習部１による学習ステップの処理は終了する。
【０１２９】
次に、行動制御装置のスケジューリング部３による行動スケジュールステップの処理について説明する。以下、学習部１と異なる部分を中心に説明し、学習部１と同様の部分については重複説明を省略する。
【０１３０】
行動スケジュールステップの処理の流れの例を、図１０に示す。
【０１３１】
＜スケジューリング部３＞
スケジューリング部３は、以上の学習部１の処理により得られたＱ関数と方策とを用いて、N台の実ロボットが初期位置から目的の隊列を形成するための各ロボットの行動計画を決定する。スケジューリング部の詳細構成を図６に示す。スケジューリング部３は、初期状態入力部３１と行動割当部３２と位置更新部３３と目標位置到達判定部３４とを含む。
【０１３２】
≪初期状態入力部３１≫
初期状態入力部３１には、N台のロボットのそれぞれの初期位置(xr0[i], yr0[i])[i=1,2,…,N]が入力される。
【０１３３】
≪行動割当部３２≫
行動割当部３２の処理は学習部１の行動割当部１２と同様である。i=1,2,…,Nとして、第i割当部３２−ｉは、学習部１の行動割当部１２の第i割当部１２−ｉと同様である。
【０１３４】
ただし、行動割当部３２は、ここでは各iについて決定された行動a[i]を現在の時刻tにおいてi番目のロボットが選択する行動at[i]として記憶部２に格納する。これにより、記憶部２には時刻tまでの各時刻でi番目のロボットが選択する行動の系列（行動系列）A[i]={a1[i],a2[i],…,at−１[i]}が格納されることになる。
【０１３５】
また、学習部１の行動割当部１２ではa[i]を決定するだけでなく、Q関数の値と方策の値の更新も行っているが、スケジューリング部３の行動割当部３２ではQ関数の値と方策の値の更新を行う必要はない。
【０１３６】
Q関数の値の更新を行わない場合には、行動割当部３２の位置判定部は、ロボットが目標位置に位置するか判定する（ステップＢ１）。行動割当部３２の第ｊ目的領域外行動決定部と目標入口位置決定部とは、ロボットが目標位置に位置しないと判定された場合には、ロボットが移動可能な位置の中で価値関数の値が最も大きい位置に移動する行動をロボットの行動として決定する（ステップＢ２）。目的領域内行動決定部は、ロボットが目標位置に位置すると判定された場合には、ロボットの現在の位置Lに移動可能な位置であるボイド位置の中で価値関数の値を最大にする行動が位置Lに移動する行動である位置を候補ボイド位置とし、その最大にする行動に対応する価値関数の値を候補ボイドQ関数値として、候補ボイド位置の中でロボットが移動可能な位置であり候補ボイドQ関数値が最小である位置に移動する行動をロボットの行動として決定する（ステップＢ３）。
【０１３７】
≪位置更新部３３≫
位置更新部３３の処理は、学習部１の位置更新部１３と同様である。すなわち、位置更新部３３は、行動割当部３２によって決定された行動に基づいて例えばロボットである制御対象物のそれぞれの位置を更新する（ステップＢ４）。
【０１３８】
≪目標位置到達判定部３４≫
目標位置到達判定部３４は、各i=1,2,…,Nについて、位置更新部３３から出力された更新後の位置(xr’[i],yr’[i])∈Gであるか否かを判定し、全てのiについて(xr’[i],yr’[i])∈Gである場合には、現在記憶部２に記憶されている行動系列A[i]={a1[i],a2[i],…,at−１[i],at[i]}をスケジューリング結果として出力する。少なくとも１つ以上のiについて(xr’[i],yr’[i])∈Gを満たさない場合には、目標位置到達判定部３４は、行動割当部３２及び位置更新部３３を再度実行するよう制御する（ステップＢ５）。
【０１３９】
＜効果＞
このような構成とすることで、ボイド制御により、任意形状の隊列制御が可能となる。また、Ｍ個の価値関数のみで制御対象物を制御することができるため、計算負荷を従来よりも低くすることができる。さらに、経由位置から目標位置への進入を可能とすることで、目標位置に入ろうとするロボットが入口位置に集中して渋滞を起こすことを低減することができる。
【０１４０】
［変形例等］
なお、行動制御装置は、制御対象物の何れかに実装してもよいし、他の装置（サーバ）に実装してもよい。また、学習部１とスケジューリング部３とを別々の装置に実装し、学習部１での処理の結果を、スケジューリング部３を備える装置の記憶部内に記憶してもよい。また、前述の通り、制御対象物は、制御の対象となり得るものであればよく、例えば、仮想的なものであってもよい。例えば、行動制御装置をコンピュータ上に実装し、同じコンピュータ上で動く仮想的なロボットに対して、本実施形態の処理を実行する。つまり、仮想的なロボットに対して、学習部１及びスケジューリング部３の処理を行う。その結果得られるN個の行動系列A[i]={a1[i],a2[i],…,at−１[i],at[i]}を記憶部２から取り出し、実体のN個のロボットにその行動系列A[i]に沿った行動を実行させてもよい。
【０１４１】
また、ロボットの位置情報の取得方法としては様々な方法が考えられる。例えば、当該行動制御装置がロボットの内の何れかに実装され、1時刻ステップの前後において、ロボット同士が常に接した状態を維持する場合には、ロボット同士の通信により、どの入口位置がロボットに占拠されておらず空いているかを知ることができる。また、各ロボットがより広い範囲で通信を行うことができるのであれば、ロボット同士が常に接した状態を維持する必要はなく、位置情報を管理するサーバ等を設けてもよい。
【０１４２】
本実施形態では、目標位置の個数と制御対象物の個数とが同一であったが、制御条件に応じて適宜変更してもよい。例えば、N'(>N)個の目標位置にN個の制御対象物を移動させるための行動制御を行ってもよい。また、例えば、N'(<N)個の目標位置にN個の制御対象物の内のN'個を移動させるための行動制御を行ってもよい。何れの場合であっても、第一実施形態の行動制御方法で実現することができる。
【０１４３】
第j目的領域外行動決定部１２−ｉ−２−ｊが４層（第１〜第４）のレイヤで構成されているのは、上記の例では静止(a=0)以外でロボットの取りうる行動が４種類(a=1,2,3,4)であるとしているためである。一般には、行動の種類がV個（静止を含む）あれば、第j目的領域外行動決定部１２−ｉ−２−ｊはV-1個のレイヤになる。目的領域内行動決定部１２−ｉ−３、行動割当部３２に含まれる第j目的領域外行動決定部及び目的領域内行動決定部についても同様である。
【０１４４】
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【０１４５】
また、上記実施形態において説明したハードウェアエンティティにおける処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【０１４６】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【０１４７】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１４８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１４９】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【符号の説明】
【０１５０】
１     学習部
２     記憶部
３     スケジューリング部
１１   入力部
１１１    経由位置計算部
１２   行動割当部
１２−ｉ−１  位置判定部
１２−ｉ−２−ｊ     第j目的領域外行動決定部
１２−ｉ−３  目的領域内行動決定部
１３   位置更新部
１４   制御部
３１   初期状態入力部
３２   行動割当部
３３   位置更新部
３４   目標位置到達判定部
【図１】
2016051400.tif 000004
【図２】
2016051400.tif 000005
【図３】
2016051400.tif 000006
【図４】
2016051400.tif 000007
【図５】
2016051400.tif 000008
【図６】
2016051400.tif 000009
【図７】
2016051400.tif 000010
【図８】
2016051400.tif 000011
【図９】
2016051400.tif 000012
【図１０】
2016051400.tif 000013