(57)【要約】【課題】複数のロボットの存在を考慮しつつも、計画計算に必要な計算時間や計算機の記憶容量を低減可能な、ロボット協調搬送計画技術を提供する。【解決手段】マルコフ状態空間を階層的に構成し（物品軌道計算処理を第１階層、切り替え位置決定処理を第２階層、移動経路計画処理を第３階層とする）、動作計画の探索を変化頻度の低い階層（第１階層）から行い、そして、変化頻度の低い階層での探索計算の結果を使用して、変化頻度の高い階層における探索の範囲を限定し、限られた状態空間において変化頻度の高い下位の階層（第２階層、第３階層）における探索を行う。【選択図】図４
2014079819.tif 000002
【特許請求の範囲】
【請求項１】
複数のロボットが協調して移動対象物（以下、物品という）を開始位置から目標位置まで移動させるための各ロボットの行動計画を求めるロボット協調搬送計画装置であって、
上記物品の位置を状態変数とし、上記物品の移動方向を行動変数とする、マルコフ状態遷移モデルに基づき、上記開始位置から上記目標位置までの上記物品の移動経路をなす位置の連鎖（以下、最適経路点列という）を求める物品軌道計算部と、
上記最適経路点列に含まれる各位置を定義域とする上記物品の位置と、少なくとも各上記ロボットの取り得る行動の上記複数のロボット全てについての和集合に含まれる各行動を取り得る理想的なロボット（以下、理想ロボットという）の位置と、の組を状態変数とし、当該理想ロボットが取り得る行動を行動変数とする、マルコフ状態遷移モデルに基づき、上記最適経路点列に含まれる各位置に上記物品があるときに当該理想ロボットが取る行動（以下、最適行動列という）を決定して、上記最適経路点列のうち一つの上記理想ロボットが上記物品を移動させることのできる区間に上記最適経路点列を区分する位置（以下、ロボット切り替え位置という）と、上記最適行動列を分割して当該理想ロボットが各切り替え位置により区分された各区間に対応する行動列（以下、第１区間最適行動列という）とを、求める切り替え位置決定部と、
上記ロボット切り替え位置に応じて取り得る区間ごとに、当該区間に含まれる各位置を定義域とする上記物品の位置と、上記理想ロボットであって当該区間にて上記物品の搬送を担当していないロボット（以下、第２理想ロボットという）の位置と、の組を状態変数とし、当該第２理想ロボットが取り得る行動を行動変数とする、マルコフ状態遷移モデルに基づき、当該区間よりも後の区間において上記物品を移動させることが可能な位置まで上記第２理想ロボットが移動するために、当該区間において上記第２理想ロボットが取るべき行動の系列（以下、第２区間最適行動列という）を求める移動経路計画部と、
各上記ロボットに、ロボット相互間で矛盾が無いように、上記第１区間最適行動列と上記第２区間最適行動列を割り当てるスケジューリング部と
を含むロボット協調搬送計画装置。
【請求項２】
請求項１に記載のロボット協調搬送計画装置であって、
上記スケジューリング部は、
上記ロボット切り替え位置に応じて取り得る区間ごとに、当該区間の始点位置を定義域とする上記物品の位置と、当該区間に含まれる各位置にて物品を押せるかもしくは各位置まで物品を押してきた位置を定義域とする各上記ロボットの位置と、各上記ロボットが当該区間の直前の区間における行動を識別するための情報と、の組を状態変数とし、各上記ロボットが上記物品を移動させる行動あるいは上記物品を移動させることが可能な位置までの移動あるいは待機行動を行動変数とする、マルコフ状態遷移モデルに基づき、当該状態変数に含まれる各変数に対応する各上記ロボットの行動を決定し、上記最適経路点列の最初から順に各上記変数に対応する行動を各上記ロボットに割り当てることによって、各上記ロボットに上記第１区間最適行動列と上記第２区間最適行動列を割り当てる
ことを特徴とするロボット協調搬送計画装置。
【請求項３】
請求項１または請求項２に記載のロボット協調搬送計画装置であって、
切り替え位置決定部は、
上記ロボット切り替え位置を、さらに、上記複数のロボットに含まれる一つのロボットが上記物品を移動させることのできる区間に区分する位置で書き換えたものを、上記ロボット切り替え位置とする
ことを特徴とするロボット協調搬送計画装置。
【請求項４】
請求項１から請求項３のいずれかに記載のロボット協調搬送計画装置であって、
移動経路計画部は、
各上記区間において、同じ位置で待機している、上記複数のロボットに含まれるロボットが、当該区間において移動させられている上記物品との衝突を回避するための行動も求める
ことを特徴とするロボット協調搬送計画装置。
【請求項５】
複数のロボットが協調して移動対象物（以下、物品という）を開始位置から目標位置まで移動させるための各ロボットの行動計画を求めるロボット協調搬送計画方法であって、
物品軌道計算部が、上記物品の位置を状態変数とし、上記物品の移動方向を行動変数とする、マルコフ状態遷移モデルに基づき、上記開始位置から上記目標位置までの上記物品の移動経路をなす位置の連鎖（以下、最適経路点列という）を求める物品軌道計算ステップと、
切り替え位置決定部が、上記最適経路点列に含まれる各位置を定義域とする上記物品の位置と、少なくとも各上記ロボットの取り得る行動の上記複数のロボット全てについての和集合に含まれる各行動を取り得る理想的なロボット（以下、理想ロボットという）の位置と、の組を状態変数とし、当該理想ロボットが取り得る行動を行動変数とする、マルコフ状態遷移モデルに基づき、上記最適経路点列に含まれる各位置に上記物品があるときに当該理想ロボットが取る行動（以下、最適行動列という）を決定して、上記最適経路点列のうち一つの上記理想ロボットが上記物品を移動させることのできる区間に上記最適経路点列を区分する位置（以下、ロボット切り替え位置という）と、上記最適行動列を分割して当該理想ロボットが各切り替え位置により区分された各区間に対応する行動列（以下、第１区間最適行動列という）とを、求める切り替え位置決定ステップと、
移動経路計画部が、上記ロボット切り替え位置に応じて取り得る区間ごとに、当該区間に含まれる各位置を定義域とする上記物品の位置と、上記理想ロボットであって当該区間にて上記物品の搬送を担当していないロボット（以下、第２理想ロボットという）の位置と、の組を状態変数とし、当該第２理想ロボットが取り得る行動を行動変数とする、マルコフ状態遷移モデルに基づき、当該区間よりも後の区間において上記物品を移動させることが可能な位置まで上記第２理想ロボットが移動するために、当該区間において上記第２理想ロボットが取るべき行動の系列（以下、第２区間最適行動列という）を求める移動経路計画ステップと、
スケジューリング部が、各上記ロボットに、ロボット相互間で矛盾が無いように、上記第１区間最適行動列と上記第２区間最適行動列を割り当てるスケジューリングステップと
を含むロボット協調搬送計画方法。
【請求項６】
請求項１から請求項４のいずれかに記載のロボット協調搬送計画装置として、コンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット協調搬送計画技術に関し、詳しくは、複数のロボットが協調して移動対象物を開始位置から目標位置まで移動させるための各ロボットの行動計画を求めるロボット協調搬送計画技術に関する。
【背景技術】
【０００２】
近年、自律移動ロボットによる物品搬送の研究が活発に行われている。搬送の対象となる物品や搬送を行うロボットの種類もさまざまな中、複数のロボットを協調動作させて効率的な物品搬送を行う技術が求められており盛んに研究が行われている（非特許文献３）。複数のロボットによる効率的な物品の協調搬送を実現するには、複数のロボットの配置、動作順序などを事前に計画することが重要である。このような計画においては、当然ながら、複数のロボットが動作する実環境における障害物の存在や経路の形状なども十分に考慮しなければならない。
【０００３】
このような計画計算を行うための効果的な手法の一つとして、マルコフ決定過程における動的計画法や強化学習の手法があり、さまざまな研究が行われている。
しかしながら、マルコフ決定過程における動的計画法や強化学習を使用してこのような計画を行おうとすると、単体のロボットを使用する場合に比べて複数のロボットを使用する場合には、その計算に要する時間や計算機の記憶容量がロボットの数に対して指数関数的に増大してしまうという問題があり、その主たる原因となるのが、探索計算のためのマルコフ状態空間内の状態数の莫大な増加である。このような問題の解決方法の一つに、たとえば、動的計画法や強化学習を使用した探索計算を行うための状態空間を階層的な構造を使用して構成する方法も考えられている（非特許文献１、非特許文献２）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Rajbara Makar, Sridhar Mahadevan, Mohammad Ghavamzaden, Hierarchical Multi-Agent Reinforcement Learning, AGENTS’01, pp246-253,2001.
【非特許文献２】Bernhard Hengst, Discovering Hierarchy in Reinforcement Learning with HEXQ, 19th International Conference on Machine Learning, pp.243-250.
【非特許文献３】Natsuki Miyata, Jun Ota, Tamio Arai, and Hajime Asama, Cooperative Transport by Multiple Mobile Robots in Unknown Static Environments Associated With Real-Time Task Assignment , IEEE TRANSACTIONS ON ROBOTICS AND AUTOMATION, VOL.18, NO.5, pp.769-780, OCTOBER 2002.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記非特許文献１の手法では、階層的状態空間の構成そのものを人間が考案しなければならないという問題がある。上記非特許文献２の手法は、マルコフ状態空間内の状態変数のうち値の変化の頻度の低い変数を最下層として変化頻度の順に階層を構成していく手法であり、単純な問題であれば自動的な階層的状態空間の構成が可能であるが、複雑な問題に対しては自動的に階層的状態空間を構成することは難しく、実用的な問題に適用することが難しい。また、これらの従来技術は、単体のロボットを使用する場合について考慮されたものがほとんどであり、複数のロボットの使用を考慮した効果的な階層モデルの構築方法は提案されていないのが現状である。
【０００６】
このような現状に鑑みて、本発明では、複数のロボットの存在を考慮しつつも、計画計算に必要な計算時間や計算機の記憶容量を低減可能な、ロボット協調搬送計画技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明であるロボット協調搬送計画技術は次のとおりである。複数のロボットが協調して移動対象物（以下、物品という）を開始位置から目標位置まで移動させるための各ロボットの行動計画を求めるロボット協調搬送計画技術であって、物品の位置を状態変数とし、物品の移動方向を行動変数とする、マルコフ状態遷移モデルに基づき、開始位置から目標位置までの物品の移動経路をなす位置の連鎖（以下、最適経路点列という）を求める物品軌道計算処理と、最適経路点列に含まれる各位置を定義域とする物品の位置と、少なくとも各ロボットの取り得る行動の上記複数のロボット全てについての和集合に含まれる各行動を取り得る理想的なロボット（以下、理想ロボットという）の位置と、の組を状態変数とし、当該理想ロボットが取り得る行動を行動変数とする、マルコフ状態遷移モデルに基づき、最適経路点列に含まれる各位置に物品があるときに当該理想ロボットが取る行動（以下、最適行動列という）を決定して、最適経路点列のうち一つの理想ロボットが物品を移動させることのできる区間に最適経路点列を区分する位置（以下、ロボット切り替え位置という）と、最適行動列を分割して当該理想ロボットが各切り替え位置により区分された各区間に対応する行動列（以下、第１区間最適行動列という）とを、求める切り替え位置決定処理と、ロボット切り替え位置に応じて取り得る区間ごとに、当該区間に含まれる各位置を定義域とする物品の位置と、理想ロボットであって当該区間にて物品の搬送を担当していない理想ロボット（以下、第２理想ロボットという）の位置と、の組を状態変数とし、当該第２理想ロボットが取り得る行動を行動変数とする、マルコフ状態遷移モデルに基づき、当該区間よりも後の区間において物品を移動させることが可能な位置まで第２理想ロボットが移動するために、当該区間において第２理想ロボットが取るべき行動の系列（以下、第２区間最適行動列という）を求める移動経路計画処理と、各ロボットに、ロボット相互間で矛盾が無いように、第１区間最適行動列と第２区間最適行動列を割り当てるスケジューリング処理とを含む。
【０００８】
スケジューリング処理では、ロボット切り替え位置に応じて取り得る区間ごとに、当該区間の始点位置を定義域とする物品の位置と、当該区間に含まれる各位置にて物品を押せるかもしくは各位置まで物品を押してきた位置を定義域とする各ロボットの位置と、各ロボットが当該区間の直前の区間における行動を識別するための情報と、の組を状態変数とし、各ロボットが物品を移動させる行動あるいは物品を移動させることが可能な位置までの移動あるいは待機行動を行動変数とする、マルコフ状態遷移モデルに基づき、当該状態変数に含まれる各変数に対応する各ロボットの行動を決定し、最適経路点列の最初から順に各変数に対応する行動を各ロボットに割り当てることによって、各ロボットに第１区間最適行動列と第２区間最適行動列を割り当てるようにしてもよい。
【０００９】
また、切り替え位置決定処理では、ロボット切り替え位置を、さらに、複数のロボットに含まれる一つのロボットが物品を移動させることのできる区間に区分する位置で書き換えたものを、ロボット切り替え位置としてもよい。
【００１０】
また、移動経路計画処理では、各区間において、同じ位置で待機している、上記複数のロボットに含まれるロボットが、当該区間において移動させられている物品との衝突を回避するための行動も求めるようにしてもよい。
【発明の効果】
【００１１】
本発明に拠れば、詳しくは後述するが、マルコフ状態空間を階層的に構成し（物品軌道計算処理を第１階層、切り替え位置決定処理を第２階層、移動経路計画処理を第３階層とする）、動作計画の探索を変化頻度の低い階層（第１階層）から行い、そして、変化頻度の低い階層での探索計算の結果を使用して、変化頻度の高い階層における探索の範囲を限定し、限られた状態空間において変化頻度の高い下位の階層（第２階層、第３階層）における探索を行う。つまり、階層化によって階層が増えるに従い空間に含まれる変数が増えていくが、本発明によると各変数の定義域が狭められていく。このため、動作計画の計算に必要な計算時間や計算機の記憶容量を低減可能となっている。
【図面の簡単な説明】
【００１２】
【図１】ロボットの移動方向と物品搬送可能方向を例示する図。
【図２】搬送される物品の形状例と、物品を移動方向に移動させるための必要条件となるロボットの位置を説明するための図。
【図３】複数のロボットによる物品搬送任務の環境を例示する図。
【図４】搬送計画装置の機能構成例を示す図。
【図５】物品軌道計算部の機能構成例を示す図。
【図６】切り替え位置決定部の機能構成例を示す図。
【図７】移動経路計算部の機能構成例を示す図。
【発明を実施するための形態】
【００１３】
[問題設定]
複数のロボットが協調して移動対象物を開始位置から目標位置まで搬送する任務は、例えば図３に例示するような壁で区切られた部屋にある物品（移動対象物）を開始位置から目標位置まで複数のロボットの協調行動によって搬送するものである。任務を行うロボットは、p台（p≧２）であり、各々のロボットは、物品を二次元平面におけるY軸方向（この例では、図面の紙面上下方向）にのみ押して動かすことができるロボット（図１(a)参照）、または、物品を二次元平面におけるX軸方向（この例では、図面の紙面左右方向）にのみ押して動かすことができるロボット（図１(b)参照)、または、物品を二次元平面におけるX-Y軸方向（この例では、図面の紙面上下左右の四方向）に押して動かすことができるロボット（図１（c）参照）のいずれかであるとする。なお、各ロボットは、二次元平面におけるX-Y軸方向（この例では、図面の紙面上下左右の四方向）に移動可能とする。
【００１４】
また、本発明を具体的に説明する観点から物品の平面図での形状は、例えば図２に示すように、複数の正方形のブロックが組み合わさった形状をしているものと仮定する。物品の位置は、物品を構成するブロックのうちのいずれか一つの格子位置（物品位置基準点）によって定義される。本実施形態では、図２に示すように、物品を構成するブロックのうち左下端のブロックを物品位置基準点とする。
【００１５】
このような問題設定において、物品を目標位置に適切に移動させるには、ロボット同士の協調動作が不可欠であり、かつ障害物が存在しているので、どのようなタイミングで、どのロボットを「物品を押すことが可能な位置」に移動させておくか、を正確に計画しなければならない。
【００１６】
それぞれのロボットは、移動しようとする方向に障害物がある場合、もしくは物品を押そうとする方向に障害物がある場合に物品をその方向に押そうとした場合には、静止をするものと仮定する。複数のロボットは同一の位置に存在可能であると仮定し、ロボット同士の衝突はないものとする。
【００１７】
それぞれのロボットi（iはロボット番号を表す）の初期位置を（Xri0,Yri0）、物品の開始位置を（Xb0,Yb0）、物品の搬送先の目標位置を（Xbe,Ybe）とするとき、本問題は、初期位置に配置されたロボットが、物品を開始位置から目標位置まで移動させるための行動計画を求めることと定義できる。
【００１８】
このような問題に対して単純にマルコフ状態遷移モデルを適用しようとする場合、マルコフ状態空間は、iをロボット番号としたとき、ロボットiの位置（Xri,Yri）、ロボットiの行動di、物品の位置（Xb,Yb）によって構成される。各状態（ロボットの位置と行動、物品の位置）は離散値で表現される。部屋をX,Yの直交座標系からなる２次元平面で表すと、X軸、Y軸をそれぞれ離散化表現した値により各位置を表現する。つまり、図３のように部屋（２次元平面）は格子で区切られ、各格子が各位置に対応する。また、各格子において、障害物の「ある／なし」が予め設定されている。
【００１９】
また、行動主体は部屋に配置されている各ロボットとなる。ロボットi（iはロボット番号）の行動hiは、静止、上下左右方向への１格子分の移動、の計５種類のうちのいずれかを取る。例えば、hi∈{0,1,2,3,4}として、
0: 静止
1: 二次元平面上で右方向に１格子だけ移動する
2: 二次元平面上で上方向に１格子だけ移動する
3: 二次元平面上で左方向に１格子だけ移動する
4: 二次元平面上で下方向に１格子だけ移動する
とする。
【００２０】
このような任務環境におけるマルコフ状態空間は、物品数×2＋ロボット数×2の次元数の状態を持ち、かつ選択可能な行動数は、ロボットの行動（＝５通り）のロボット数乗だけ存在する。例えば、物品数が１、ロボット数が２で、部屋の縦横方向の格子数がそれぞれ１０であるとすれば状態数は10×10×10×10×10×10=1000000にもなり、探索計算に要する資源の量は膨大なものとなる。さらにロボット数が１台増えるごとに、その状態数は100倍増加していくことになり、複数ロボットを使用する場合の大きな問題となっている。
【００２１】
また、このような問題において上記非特許文献２にあるＨＥＸＱのような手法を適用すると、値の変化の頻度が低い物品位置の変数（Xb,Yb）を最上位の階層の状態空間を構成する変数とし、変化の頻度の高いロボットの位置の変数（Xri,Yri）を下層の階層の状態空間を構成する変数として階層化されることになる。しかし、物品位置が変化することでロボットの動作可能な範囲は刻々と変化する。そのような場合、ＨＥＸＱによれば最下層から探索を行うこととなるのだが、最下層においてロボットの動作計画をした場合に、刻々と変化する物品位置変数の値を考慮しないで探索を行っても不適切な結果しか得られないのは明白である。このように、最下層においても上位の階層の変数を考慮しなければならない、もしくは逆のケースも発生することが多いのが一般的な探索の問題である。或る変数は、最上位の階層にも含まれうるし、最下位の階層にも含まれうるのであり、単純に変数を各階層に割り振ることは容易ではない。
【００２２】
[本発明における行動の扱いについて]
本来、物品の移動は、物品とは離れた位置にあるロボットが、物品を押すことのできる適切な位置まで移動した後に、「押す動作」を行うことで実現される。それを完璧に考慮するためには、物品位置（Xb,Yb）とその周囲に存在する各ロボットｉ位置（Xri,Yri）との相対的な位置関係を、障害物の存在も含めて考慮しなければならない。しかし、それをはじめからすべて考慮することは、探索計算の効率上適切ではない。そこで、本発明では、階層的に、ロボットの物品周りでの行動範囲を広げて考慮していく方法を採用する。以下、物品周りでの行動範囲を制限されたロボットを仮想ロボットとも呼ぶことにし、それぞれの階層にて仮想ロボットが物品を押すという前提で探索計算を行っていく。
【００２３】
まず、第１階層（物品軌道計算処理）においては、行動主体を物品とし、物品が自分で移動するかのように扱う。つまり、第１階層では、物品と仮想ロボットの位置関係のうち、仮想ロボットが物品を押せる位置（仮想ロボットが物品に接し、かつ物品を適切な方向に押せる位置）だけを考慮する。そして、物品が開始位置から目標位置に移動するための最適な移動経路（最適経路点列）を求める。
【００２４】
次に、第２階層（切り替え位置決定処理）では、物品が仮想ロボットｖに押されて移動した後、当該仮想ロボットｖが引き続き次の物品移動をできる位置まで移動可能かを考慮する。つまり、仮想ロボットｖが物品に接してはいるが、指定の方向に物品を押せる場所にはいない場合も考慮され、仮想ロボットｖの取りうる行動として「仮想ロボットが物品を押せる位置に至るまでの移動」という行動が含まれる分、最上位階層よりも仮想ロボットｖの物品周りでの行動範囲が拡大される。そして、第１階層で求めた物品の最適な移動経路の系列の中で、１台の仮想ロボットｖが継続して物品を移動できる区間内の仮想ロボットｖの行動と、別のロボットに引き継がざるを得なくなる位置（切り替え位置）を求める。
【００２５】
さらに、第３階層（移動経路計画処理）では、物品が仮想ロボットｖによって何度か移動させられた後に、その移動先にある物品の次の移動を他の仮想ロボットｗが実現することが可能な位置まで仮想ロボットｗが移動可能かどうかを考慮する。つまり、仮想ロボットｗに関して、物品から離れた位置にある状態が考慮される。そして、第１階層で求めた物品の最適な移動経路の系列のうち、１台のロボットが継続して移動可能な区間において、物品が当該区間の終端点に到達したとき（移動は仮想ロボットｖが行う）に、仮想ロボットｗが次の区間の開始位置に物品を移動させることが可能な位置に到達するための、仮想ロボットｗの行動（移動経路）を求める。なお、仮想ロボットｖが物品を押している間、仮想ロボットｗは、所定の位置で待機しなければならない場合も起こりうるが、その場合に、仮想ロボットｗが物品の移動の邪魔にならないように、適切に移動中物品との衝突を回避するための行動も同様に第３階層にて求める。
【００２６】
このように、第１階層、第２階層、第３階層と処理が進むにつれて、仮想ロボット（ｖまたはｗ）と、仮想ロボット（ｖまたはｗ）が動かそうとしている物品と、の位置的な距離は広がっていく。しかし、第２階層での探索は、物品が第１階層において求められた軌道に沿ってのみ移動することを前提として行われ、第３階層での探索は、第２階層にて求められた単一のロボットで連続して物品が移動させられる区間の中での探索を行うため、探索において考慮しなければならない物品位置の範囲は徐々に狭められていくのである。そして、第２階層では物品を押すロボット（仮想ロボットｖ）の行動を決定し、第３階層では、仮想ロボットｖから引き継いで物品移動を担当するロボット（仮想ロボットｗ）が、物品を押せる位置に移動するための行動を決定する。最後に、仮想ロボットｖ及び仮想ロボットｗとして求まった行動を、実環境におけるどのロボットがどの順序で行うかをスケジューリング処理で決定する。
【００２７】
[本発明の実施形態の概要]
本実施形態のロボット協調搬送計画装置Ａの構成を図４に示す。ロボット協調搬送計画装置Ａは、物品軌道計算部１００、切り替え位置決定部２００、移動経路計画部３００、スケジューリング部４００を含む。
【００２８】
物品軌道計算部１００（第１階層）、切り替え位置決定部２００（第２階層）、移動経路計画部（第３階層)では、探索に使用するマルコフ状態空間を構成する変数を以下のようにとる。
【００２９】
物品軌道計算部１００（第１階層）:
状態変数s1=（Xb,Yb），行動変数a1∈{0,1,2,3,4}
【００３０】
切り替え位置決定部２００（第２階層）：
状態変数s2=(Xb,Yb,Xr,Yr)，行動変数a2∈{0,1,2,3,4}
【００３１】
移動経路計画部（第３階層)：
状態変数s3=(Xb,Yb,Xr,Yr)，行動変数a3∈{0,1,2,3,4,5}
【００３２】
物品軌道計算部１００は、物品位置を表す状態変数s1と、物品の移動方向を表す行動変数a1のみを考慮する。つまり、ここでの行動主体は物品であり、物品軌道計算部１００は、あたかも物品が自ら移動するものとして計算を行い、物品を押すロボットの位置は考慮しない。物品の移動方向を表す行動変数は、静止と、上下左右方向への１格子分の移動と、の５種類のいずれかを取れるものとする。物品軌道計算部１００は、これらの変数を利用して、（ロボットの位置やロボットが物品を押せる方向を考慮しないで）開始位置から目的位置までの物品移動の位置の連鎖を、最適経路点列（理想軌道）s1_trj=(s1_trj[0], s1_trj[1], …, s1_trj[e])として算出する。
【００３３】
切り替え位置決定部２００は、物品位置（Xb,Yb）と仮想ロボットの位置（Xr,Yr）からなる状態変数s2と、仮想ロボットが物品を押す方向を表す行動変数a2を考慮する。ここでの行動主体は、１台の仮想ロボットｖ（物品を押して移動させるロボット）である。
【００３４】
切り替え位置決定部２００では、物品軌道計算部１００が求めた最適経路点列s1_trjに含まれる位置すべてが、状態変数s2に含まれる物品位置座標（Xb,Yb）の取りうる範囲となり、それ以外の物品位置は考慮されない。また、仮想ロボットｖが物品を押せる方向（行動変数a2の取りうる値）は、実環境における各ロボットが物品を押せる方向の和集合とする。
【００３５】
切り替え位置決定部２００は、最適経路点列s1_trjの各位置の中で、仮想ロボットｖが継続して移動させることのできる最大範囲を計算する。例えば、s1_trj[5]からs1_trj[6]に物品を移動させたロボットが、さらにs1_trj[7]に物品を移動させるための位置に移動しようとしたときに、移動方向に障害物があって移動できない場合には、他の位置にいる別のロボットに行動を引き継ぐ必要がある。切り替え位置決定部２００は、最適経路点列s1_trjの各位置のうち、このように担当ロボットを切り替える必要のある場所（切り替え点）を決定する。
【００３６】
移動経路計画部３００は、物品位置（Xb,Yb）と仮想ロボット位置（Xr,Yr）からなる状態変数s3と、仮想ロボットの移動方向を表す行動変数a3を考慮する。ここでの行動主体は、物品を押せる位置まで移動する仮想ロボットｗ（物品を押していないロボット）である。
【００３７】
移動経路計画部３００は、s1_trj中の各位置のうち切り替え位置決定部２００によって決定された切り替え点で区切られた個々の範囲内の位置座標が、状態変数s3に含まれる物品位置（Xb,Yb）の取りうる範囲となり、それ以外の物品位置は考慮されない。また、仮想ロボットが移動できる方向（行動変数a3の取りうる値）は、a3∈｛0,1,2,3,4,5｝である。ここで、a3=5は、仮想ロボットｗは静止し、物品を押す仮想ロボットｖが物品を一回だけ押す（つまり、仮想ロボットｗが物品や物品を押すロボットｖの移動（行動）を邪魔しないように、静止する）ことを意味する。
【００３８】
移動経路計画部３００は、或るロボット（仮想ロボットｖ）が担当する区間の開始位置から終了位置（切り替え点）まで物品を移動を終えたときに、引き続き物品を押せる位置に仮想ロボットｗが到達しているように、仮想ロボットｗを移動させるための行動系列を決定する。
【００３９】
物品軌道計算処理を上位の階層（第１階層）とし、切り替え位置決定処理、移動経路計画処理の順に、第２階層、第３階層とすると、本発明は、上位の階層（第１階層）で使用する変数を変化頻度の低い変数（物品位置の変数）とし、下位の階層（第３階層）で使用する変数を変化頻度の高い変数（ロボットの位置の変数）とする点では、上記非特許文献２の考え方とほぼ同じといえる。しかし、探索の計算を上記非特許文献２のように変化頻度の高い階層（第３階層）からではなく、変化頻度の低い階層（第１階層）から行う点が異なる。そして、変化頻度の低い階層での探索計算の結果を使用して、変化頻度の高い階層における探索の範囲を限定し、限られた空間（狭い空間）において変化頻度の高い下位の階層における変数の探索を行う。つまり、階層が増えるに従い空間に含まれる変数が増えていくが、その一方で各変数の定義域が狭められていく。
【００４０】
[実施形態の具体例]
以下、各部での探索計算の具体的な処理を叙述する。
【００４１】
[物品軌道計算部；ステップＳ１]
物品軌道計算部１００は、どの物品位置（状態）s1=(Xb,Yb)がどれだけ目標位置に到達しやすい位置であるかを表す価値関数Ｖπ(s1)を以下のマルコフ状態遷移モデルを利用して動的計画法により求め、開始位置から目標位置までの物品移動の最短経路を示す最適経路点列を出力する。
【００４２】
ここでは、マルコフ状態遷移モデルにおける「環境のとりうる離散的な状態の集合」を物品位置s1i=（Xbi,Ybi）の集合S1=｛s10,s11,…,s1n-1｝とする。例えば、対象とする部屋をＸ軸方向にＭ個の区間に区切り、各離散区間のインデックスを0,1,…,M-1とする。同様に、Ｙ軸方向にＮ個の区間に区切り、各離散区間のインデックスを0,1,…,N-1で表す。そして、各格子の位置をＸ軸とＹ軸のインデックス（Xbi,Ybj）で表す（0≦Xbi≦M-1，0≦Ybj≦N-1）。
【００４３】
また、行動主体（物品）が取り得る行動a1をa1∈{0,1,2,3,4}とし、
0: 静止
1: 二次元平面上で右方向に物品が移動
2: 二次元平面上で上方向に物品が移動
3: 二次元平面上で左方向に物品が移動
4: 二次元平面上で下方向に物品が移動
とする。また、a1の取りうる値の集合A1は、A1=｛0,1,2,3,4｝である。
【００４４】
物品軌道計算部１００のマルコフ状態空間では、実環境におけるどのロボットが（ロボット１とロボット２のどちらが）物品を押すのかは考慮しない。また、ロボットが物品を押せる位置まで移動するというプロセスも考慮しない。ただし、ロボットが物品を押すために必要な物品周りの位置に障害物があり、物品を押すロボットのためのスペースが確保されていない場合には、ロボットが物品を移動させることは不可能なので、その点のみを考慮する。このような場合とは、例えば、物品を右方向に移動させることを考えた場合、物品に左側に接する位置のすべてが障害物によって占められている場合などである。
【００４５】
状態s1において行動a1∈A1を実行すると、状態（物品位置）は確率的に位置s1’∈S1へ遷移するものとする。その状態遷移確率P1を
P1(s1’|s1,a1)=Pr(s1t+1=s1’|s1t=s1,a1t=a1)
によって表す。tは時刻を表す。そして、各s1,a1,s1’に対する状態遷移確率P(s1’|s1,a1)を次式のように設定する。
【数１】
2014079819.tif 000003
【００４６】
ただし、＜条件Ａ＞は以下の(1)〜(5)のいずれかの条件を満たす場合である。
(1)  a1=1 & Xb’=Xb+1 & Yb’=Yb   & Judge(s1,a1)=YES
(2)  a1=2 & Xb’=Xb   & Yb’=Yb+1 & Judge(s1,a1)=YES
(3)  a1=3 & Xb’=Xb-1 & Yb’=Yb   & Judge(s1,a1)=YES
(4)  a1=4 & Xb’=Xb   & Yb’=Yb-1 & Judge(s1,a1)=YES
(5)  a1=0 & Xb’=Xb   & Yb’=Yb   & Judge(s1,a1)=YES
ここで、「&」はＡＮＤ条件を示す。
【００４７】
また、Judge(s1, a1)を次式で与える。
【数２】
2014079819.tif 000004
【００４８】
Judge(s1,a1)は、位置s1にある物品が行動a1に従った方向に移動できる場合にはYES、移動できない場合にはNOを返す関数である。実際には、物品が移動するためには、ロボットが物品をその方向に押さなければならないので、物品を押すことが可能な位置にロボットが入るスペースが空いている（障害物がない）ことが必要条件となる。Judge(s1,a1)は、この必要条件を満たすか否かをチェックする関数である。Ready_Pos_k(s1,a1)は、図２に示すように、物品位置s1にある物品を行動a1の示す方向に移動させるための、物品に接するロボットの位置のk個の候補の集合を表す。このうち、障害物に重ならないロボット位置がある（障害物位置に一致しないReady_Pos_k(s1,a1)の要素がある）場合には、位置s1にある物品をロボットが行動a1の示す方向に移動させることができる。そうでない場合には、移動させることができない。
【００４９】
なお、Ready_Pos_k(s1,a1)の候補位置を計算するためには、例えば、物品位置基準点((Xb,Yb)=(0,0))において、行動a1の示す方向に物品を移動させるためのロボットの位置の候補Pos_1(a1), Pos_2(a1), …, Pos_k(a1)を予め記憶しておき、各位置Pos_j(a1) (j=1,2,…,k)とs1の位置座標を要素ごとに足し合わせることで計算できる。Pos_j(a1)=(XPos_j(a1),YPos_j(a1)), s1=(Xb,Yb)であれば、(XPos_j(a1)+Xb,YPos_j(a1)+Yb)を全てのjについて計算すればよい。
【００５０】
上記＜条件Ａ＞の(1)〜(5)における前半３つの条件は、現在の物品位置s1と物品の移動方向a1の組み合わせと、状態遷移後の物品位置s1’とが整合しているか否かを判定するための条件である。例えば、＜条件Ａ＞の(1)の場合、a1=1(右方向に物品が移動）かつs1=(Xb,Yb)の場合、状態遷移後の物品位置はs1’=(Xb+1,Yb)となる。それ以外の位置に物品が移動することは有り得ない。
【００５１】
上記式（１）は、現在の物品位置s1と物品の移動方向a1の組み合わせと、状態遷移後の物品位置s1’とが整合していて、かつ、物品を押すことが可能な位置にロボットが入るスペースが空いている（障害物がない）場合には、状態遷移確率を１とする。また、この条件を満たさない状態に遷移することはできないため、状態遷移確率を０とすることを意味している。
【００５２】
また、状態s1において行動a1∈A1を実行し、状態（物品位置）がs1’∈S1へ遷移したとき、環境から行動主体へ与えられる報酬R1を次式で設定する。
【数３】
2014079819.tif 000005
【００５３】
物品軌道計算部１００は、上記のマルコフ状態空間を用いて、最適な価値関数Ｖπ1（ｓ１）及び方策π１をダイナミックプログラミング（Dynamic  Programming）法により計算する（例えば、三上  貞芳、皆川  雅章  共訳、R.S.Sutton、A.G.Barto  原著「強化学習」森北出版、1998、pp.94-118参照）。
【００５４】
物品軌道計算部１００の詳細構成を図５に示す。物品軌道計算部１００は、物品軌道計算用状態遷移モデル設定部１０１、物品軌道計算用価値関数初期化部１０２、物品軌道計算用方策更新部１０３、物品軌道計算用価値関数更新部１０４、物品軌道計算用価値関数収束判定部１０５、最適経路点列計算部１０６を含む。
【００５５】
物品軌道計算用状態遷移モデル設定部１０１は、各物品位置s1と物品の移動方向a1と、状態遷移後の物品位置s1’と、の全ての組み合わせについて、上記式（１）の状態遷移確率と、上記式（２）の報酬とを設定する。
【００５６】
物品軌道計算用価値関数初期化部１０２は、各s1∈S1についての価値関数Ｖπ1（s1)の初期値を設定する。初期値としては適当な値を設定すればよいが、本実施形態では、初期値はすべてのs1についてＶπ1（s1)＝０と設定する。
【００５７】
物品軌道計算用方策更新部１０３は、すべてのs1∈S1及びa1∈A1の組み合わせについて式（３）を計算し、Ｖπ1（s1）の値が最大となる行動a1を方策π１(s1)の値に設定する。
【数４】
2014079819.tif 000006
【００５８】
ここで、Σは取りうるすべてのs1’についての総和を表し、γは予め定められた0<γ<1.0を満たす定数である。また、式（３）の右辺におけるＶπ1(s1)の値は、物品軌道計算用方策更新部１０３の最初の実行時は物品軌道計算用価値関数初期化部１０２で設定された初期値が利用され、２回目以降の実行では、以下の物品軌道計算用価値関数更新部１０４で更新された価値関数の値が用いられる。
【００５９】
物品軌道計算用価値関数更新部１０４は、各s1∈S1について、式（４）により価値関数Ｖπ（ｓ１）を更新する。
【数５】
2014079819.tif 000007
【００６０】
物品軌道計算用価値関数収束判定部１０５は、物品軌道計算用価値関数更新部１０４における更新後のＶπ1(s1)の値と更新前のＶπ1(s1)との誤差が所定の閾値以下となるまで、上記物品軌道計算用方策更新部１０３に戻り、方策と価値関数の更新処理を繰り返す。所定の閾値以下となった場合には、価値関数Ｖπ1(s1)が収束したと判定し、価値関数Ｖπ1(s1)と方策π１(s1)を最適経路点列計算部１０６に出力する。
【００６１】
こうして求まった価値関数Ｖπ1(s1)は、物品位置s1が、どれだけ目標位置に到達しやすい位置であるかを表す指標である。これにより、部屋内の任意の位置から目標位置までの物品移動の最短経路を示す物品位置の系列を求めることができるようになる。
【００６２】
最適経路点列計算部１０６は、物品軌道計算用価値関数収束判定部１０５から出力された価値関数Ｖπ1(s1)と方策π１(s1)を用いて、開始位置から目標位置までの最短経路となる物品位置の系列（最適経路点列）を算出する。例えば、開始位置をs1_trj[0]∈S1とした場合、π１(s1_trj[0])の値が指す物品の移動を行い、位置s1_trj[1]∈S1に移動する。続いてs1_trj[1]にてπ１（s1_trj[1]）の値が指す物品の移動を行い位置s1_trj[2]に移動する。これを目標位置s1_trj[e]∈S1に到達するまで繰り返すことで、開始位置から目標位置に至る物品の最短経路に含まれる途中点の点列（最適経路点列）：s1_trj=(s1_trj[0], s1_trj[1], …, s1_trj[e])を求める（s1_trj[n]=(Xb_trj[n],Yb_trj[n]) (n=0, 1, …, e)）。また、このときの物品の移動方向を示す点列a1_trj=(a1_trj[0], a1_trj[1], …, a1_trj[e])=(π１(a1_trj[0]), π１(a1_trj[1]), …, π１(a1_trj[e])を求める。そして、最適経路点列計算部１０６は、最適経路点列s1_trjと移動方向の系列a1_trjを出力する。
【００６３】
[切り替え位置決定部；ステップＳ２]
切り替え位置決定部２００は、最適経路点列s1_trj=(s1_trj[0], s1_trj[1], …, s1_trj[e])の各位置の中で一台のロボットが継続して押し続けることができる位置がどの区間であるかを、マルコフ状態遷移モデルを利用して動的計画法により計算する。
【００６４】
例えば、一台のロボットが継続してs1_trj[0]からs1_trj[4]までの各位置を経由して物品を移動させることが可能であれば、s1_trj[0], s1_trj[1], s1_trj[2], s1_trj[3], s1_trj[4]の位置については一台のロボットに担当させた方が得策である。逆にたとえばs1_trj[3]からs1_trj[4]に物品を移動させたロボットが、次のs1_trj[5]に物品を移動させるための方向に物品を押せる位置に移動することが障害物によって阻まれている場合、他の位置にいる別のロボットに物品移動を引き継いだ方が得策である。すなわち、切り替え位置決定部２００は、最適経路点列s1_trj=(s1_trj[0], s1_trj[1], …, s1_trj[e])の各位置での移動の中で、担当ロボットを切り替える位置（別のロボットに移動を引き継がざるを得ない位置）を計算する。
【００６５】
ここでは、マルコフ状態遷移モデルにおける「環境のとりうる離散的な状態の集合」を、最適経路点列s1_trjに含まれる各物品位置（Xb,Yb）とロボットの位置（Xrv,Yrv）の組の取りうる値の集合とする。つまり、s2=(Xb,Yb,Xrv,Yrv)としたとき、(Xb,Yb)∈s1_trjとする。s1_trj以外の物品位置の値は探索にて考慮されない。また、行動主体（ロボット）は、実環境における全てのロボットの行動の集合を取りうる行動とするような仮想ロボット一台のみを考慮する。
【００６６】
上述の問題設定の場合は、
ロボット１…Ｙ軸（上下）方向に物品を押す、または、静止
ロボット２…Ｘ軸（左右）方向へ物品を押す、または、静止
の行動をとることができるので、切り替え位置決定部２００における行動主体（ロボット）は、上下左右の４方向すべてに物品を押せるとする。行動主体（ロボット）が取り得る行動a2をa2∈{0,1,2,3,4}とし、
0: 静止
1: 二次元平面上で右方向にロボットが移動
2: 二次元平面上で上方向にロボットが移動
3: 二次元平面上で左方向にロボットが移動
4: 二次元平面上で下方向にロボットが移動
とする。また、a2の取りうる値の集合Ａ２をA2={0,1,2,3,4}とする。
【００６７】
状態s2∈S2において行動a2∈A2を実行したとき、状態s2’∈S2へ遷移する状態遷移確率を
P2(s2’|s2,a2)=Pr(s2t+1=s2’|s2t=s2,a2t=a2)
とし、各s2, a2, s2’に対する状態遷移確率P2(s2’|s2,a2)を次式のように設定する。
【数６】
2014079819.tif 000008
【００６８】
ただし、＜条件Ｂ＞は下記(1)〜(6)のいずれかを満たす場合である。
(1) Xb=Xb’ & Yb=Yb’& a2=1  & Xrv’=Xrv+1 & Yrv’=Yrv
(2) Xb=Xb’ & Yb=Yb’& a2=2  & Xrv’=Xrv   & Yrv’=Yrv+1
(3) Xb=Xb’ & Yb=Yb’& a2 =3 & Xrv’=Xrv-1 & Yrv’=Yrv
(4) Xb=Xb’ & Yb=Yb’& a2 =4 & Xrv’=Xrv   & Yrv’=Yrv-1
(5) Xb=Xb’ & Yb=Yb’& a2=0  & Xrv’=Xrv   & Yrv’=Yrv
(6) （Xb,Yb）=s1_trj[l+1] & (Xb’,Yb’)=s1_trj[l+2] & a2=a1_trj[l+1] & (Xrv,Yrv)=Ready_Pos_k(s1_trj[l+1],a1_trj[l+1]) && （Xrv’,Yrv’）=a1_trj[l+1]により移動した後の位置
【００６９】
また、状態s2∈S2において行動a2∈A2を実行し、状態（物品位置）がs2’∈S2へ遷移したとき、環境から行動主体へ与えられる報酬R2を次式で設定する。
【数７】
2014079819.tif 000009
【００７０】
以上のように定義されたP2(s2’|s2,a2)とR2(s2’,s2,a2)を使用して動的計画法にて方策π２(s2)を求めると、π２(s2)は、物品が位置s1_trj[l+1]にあるときに、物品を位置s1_trj[l+1]から位置s1_trj[l+2]に移動させるための行動a1_trj[l+1]を取れる位置の集合(Ready_Pos_k(s1_trj[l+1],a1_trj[l+1]))のうちの少なくとも一箇所に仮想ロボットが到達するための、仮想ロボットｖの行動方策（移動のための方策）となる。すなわち、s2=(Xb_trj[l+1],Yb_trj[l+1],Xrv,Yrv)における価値関数値Ｖπ2（s2）の値が0以上の場合、状態s2が示す位置（Xrv,Yrv）にある仮想ロボットｖは、状態s2が示す物品位置s1_trjl+1=(Xb_trj[l+1],Yb_trj[l+1])にある物品を次の位置に押すことが可能な位置（Ready_Pos_k(s1_trj[l+1],a1_trj[l+1])のいずれかの位置）に移動することが可能であることを示す。また、その時の移動は、π２(s2)が示す行動変数の値に従えばよい。
【００７１】
ここで今、位置Ready_Pos_k(s1_trj[l],a1_trj[l])にあったロボットが位置s1_trj[l]にある物品を行動a1_trj[l]の指す方向に押してロボット自身も移動したときに到達するはずの位置は最大K個存在し、それらのうち、障害物に重ならない位置は、Ready_Pos_k(s1_trj[l+1],a1_trj[l])=(Xrl[k],Yrl[k]) (k=0,1,…,K-1)と表現できる。すると、位置s1_trj[l+1]の物品位置において、K個の点s2[k]=(Xb_trj[l+1],Yb_trj[l+1],Xrl[k],Yrl[k]) (ただし、k=0,1,…,K-1、(Xrl[k],Yrl[k])∈Ready_Pos_k(s1_trj[l+1],a1_trj[l])、s2[k]∈S2)における価値関数値Ｖπ2（s2[k]）=Ｖπ2（Xb_trj[l+1],Yb_trj[l+1],Xrvl[k],Yrvl[k]）のうち全ての値が０より大きければ、同じロボットが続けて物品をs1_trj[l+2]に移動させることが可能であり、そうでない場合には物品をs1_trj[l+1]に移動させたロボットは障害物に阻まれてこれ以上物品を動かすことができないので、別のロボットに切り替える必要があることが分かる。
【００７２】
切り替え位置決定部２００の詳細構成を図６に示す。切り替え位置決定部２００は、切り替え位置決定用状態遷移モデル設定部２０１、切り替え位置決定用価値関数初期化部２０２、切り替え位置決定用方策更新部２０３、切り替え位置決定用価値関数更新部２０４、切り替え位置決定用価値関数収束判定部２０５、切り替え位置判定部２０６、方策分割部２０７を含む。
【００７３】
切り替え位置決定用状態遷移モデル設定部２０１は、上記式（５）の状態遷移確率と式（６）の報酬とを設定する。
【００７４】
切り替え位置決定用価値関数初期化部２０２、切り替え位置決定用方策更新部２０３、切り替え位置決定用価値関数更新部２０４、切り替え位置決定用価値関数収束判定部２０５の各処理は、状態遷移確率と報酬が式（５）と式（６）にそれぞれ置き換わる点を除いては、物品軌道計算部１００で説明した処理と同じである。
【００７５】
切り替え位置決定用価値関数初期化部２０２は、各s2∈S2についての価値関数Ｖπ2（s2)の初期値を0に設定する。
【００７６】
切り替え位置決定用方策更新部２０３は、すべてのs2∈S2及びa2∈A2の組み合わせについて次式を計算し、Ｖπ2（s2）の値が最大となる行動a2を方策π２(s2)の値に設定する。
【数８】
2014079819.tif 000010
【００７７】
ここで、Σは取りうるすべてのs2’についての総和を表し、γは予め定められた0<γ<1.0の定数である。また、式（７）におけるＶπ2(s2’)の値は、切り替え位置決定用方策更新部２０３の最初の実行時は切り替え位置決定用価値関数初期化部２０２で設定された初期値が利用され、２回目以降の実行では、以下の切り替え位置決定用価値関数更新部２０４で更新された価値関数の値が用いられる。
【００７８】
切り替え位置決定用価値関数更新部２０４は、各s2∈S2について、次式により価値関数Ｖπ2（ｓ２）を更新する。
【数９】
2014079819.tif 000011
【００７９】
切り替え位置決定用価値関数収束判定部２０５は、切り替え位置決定用価値関数更新部２０４における更新後のＶπ2(s2)の値と更新前のＶπ2(s2)との誤差が所定の閾値以下となるまで、上記切り替え位置決定用方策更新部２０３に戻り、方策と価値関数の更新処理を繰り返す。所定の閾値以下となった場合には、価値関数Ｖπ2(s2)が収束したと判定し、切り替え位置決定用価値関数収束判定部２０５は、価値関数Ｖπ2(s2)と方策π２(s2)を切り替え位置判定部２０６に出力する。
【００８０】
切り替え位置判定部２０６は、上記価値関数を用いて、各l=0,1,…,eについて次式を計算する。
【数１０】
2014079819.tif 000012
【００８１】
ここで、lは、最適経路点列s1_trjのインデックスである。Partition[l]の値が０のとき、s1_trj[l]にある物品をs1_trj[l+1]に移動したのち、担当ロボットを変更しなければならないことを示す。
【００８２】
なお、これまでの処理ではロボットは全ての方向に物品を押すことが可能な仮想ロボットを想定して計算を行った。しかし、実環境におけるロボットが物品を移動させることが可能な方向が制限されている場合がある（例えば、本実施形態の設定では各ロボットは、図１に示す物品の移動方向に制限されている）。実環境におけるロボットの、物品を移動させることが可能な方向が制限されている場合は、上記Partition[l]を求めた後、さらに以下の処理を行う。
【００８３】
まず、l=0とし、Partition[0]の値が示す物品の移動方向に、物品を押すことが可能な実環境におけるロボットを１つ選択する。ここでは、ロボットiが選択されたとする。次に、lの値を一つ増やし(l←l+1とする)、Partition[l]が指す物品の移動方向が、Partition[0]で選択したロボットｉが可能とする物品移動方向の集合の中に含まれる場合のみ、ロボットiが物品の移動を継続可能であるのでPartition[l]の値を変更しない。そうでない場合は、ロボットを切り替える必要があるので、Partition[l]=0に更新する。これを、l=2,3, …,eについて順に繰り返すことで、Partition[l]の値を更新する。こうして求められたPartition[l]の値は、１台のロボットが継続して押すことのできる区間を示す。つまり、Partition[l]=0で区切られた区間が１台のロボットが継続して押すことのできる区間である。以下では、各区間の開始点のインデックスの値をp0, p1, p2, …, pfとする。なお、区間の開始点とは、l=0、および、Partition[l]=0となるlの値である。
【００８４】
例えば、
Partition[0]=1, 
Partition[1]=1, 
Partition[2]=0, 
Partition[3]=2,
Partition[4]=2, 
Partition[5]=3,
Partition[6]=0,
Partition[7]=4, 
Partition[8]=5, …
の場合、区間の端点をp0=0, p1=2, p2=6である。
【００８５】
方策分割部２０７は、上述の如く求められた方策π２(s2)を、切り替え位置判定部２０６が求めた区間ごとに分割する。方策分割部２０７は、取りうるpm, pnの組み合わせ（pm, pn∈｛p0, p1, p2, …, pf｝，pm＜ pn）毎に、方策π２(s2)を分割して、π2[pm][pn](s2)とする。π2[pm][pn](s2)は、方策π2(s2)のうち区間[pm,pn]の最適経路点列s1_trjに対応するものであり、物品の移動を担当するロボットが、位置s1_trj[pm+1]からs1_trj[pn+1]まで物品を継続して動かすための行動方策を表す。なお、切り替え位置決定部２０６では、仮想ロボットの移動が実ロボットと同じ行動として扱われているので、計算された方策π2[pm][pn](s2)が、そのまま実環境において物品移動を担当するロボットの行動方策となる。
【００８６】
[移動経路計画部；ステップＳ３]
移動経路計画部３００においては、第２階層で計算された各区間内での物品位置及び部屋内全域のロボット位置に探索区域が限定される。すなわち、担当ロボットの切り替え時における次担当ロボットの誘導についての行動方策を、マルコフ状態遷移モデルを利用した動的計画法により計算する。切り替えを行う担当ロボット以外のロボットは、同時に行われる連続物品移動を行っているか、もしくは物品との衝突を避けつつ待機しているものとして扱われる。
【００８７】
移動経路計画部３００は、物品の理想軌道s1_trjの系列うち、切り替え位置決定部２０６で計算されたPartition[l]の値が０となるインデックス(lの値）で区切られた各区間について、先の区間を担当するロボットが、先の区間の初期位置にある物品を押せる位置まで移動するための行動方策を計算する。また、物品を押す行動を終えた後、そのまま同じ位置で待機しているロボットｚが、ロボットｖによって押されている物品との衝突を回避するための行動方策の計算も行う。
【００８８】
まず、時間的に後の区間を担当するロボットが、時間的に後の区間の初期位置にある物品を押せる位置まで移動するための行動方策の計算について説明する。ここでは、他のロボットｖが区間[pm,pm+1]の物品の移動をしている間に、仮想ロボットｗが[pm,pm+1]よりも時間的に後の区間（pnから始まる区間)における物品を押すことが可能な位置まで移動するために、仮想ロボットｗが区間[ps,pn]において取るべき行動の系列（行動方策π3[pm][ps][pn](s3)）を計算する。言い換えれば、s1_trj[pm+1]からs1_trj[pm+1+1]まで仮想ロボットｖが物品を移動させている間に、s1_trj[ps+1]まで物品を押して移動させた後待機している仮想ロボットｗが、s1_trj[pn+1]にある物品をs1_trj[pn+2]に移動させることが可能な位置まで移動するために、仮想ロボットｗが取るべき行動の系列を計算する。ここで、pm, ps, pn∈｛p0, p1, p2, …, pf｝，ps≦pm, ps＜pn，pm+1≦pnである。
【００８９】
例えば、pm=2, ps=1, pn=5とすると、π3[2][1][5](s3)は、仮想ロボットｖが区間[2,3]において物品を移動させている間に、区間[0,1]まで物品を移動させた後待機していた仮想ロボットｗが、区間[5,6]における物品移動を行える開始位置まで移動するための行動方策となる。
【００９０】
なお、この設定において、物品移動を担当している仮想ロボットｖの移動区間はpmから始まる１区間[pm,pm+1]とすることにより、後で説明するスケジューリング層における状態数を少なくすることができ、効率的にスケジューリングを行うことができるという効果もある。
【００９１】
マルコフ状態遷移モデルにおける「環境のとりうる離散的な状態の集合」をs3=(Xb,Yb,Xrw,Yrw)とし、行動主体（ロボットｗ）が取りうる行動a3∈{0,1,2,3,4,5}とする（マルコフ連鎖）。行動変数a3=0,1,2,3,4は、行動変数a2と同じくロボットの静止と上下左右方向の移動を表す。a3=5は、「待機」を示す。「待機」と「静止」の違いは、「待機」は物品を移動中の他のロボットの行動を考慮している点である。つまり、a3=5は、他のロボットが物品を移動中であるため、物品の移動が1ステップ分完了するまで待機することを意味する。また、状態変数s3に含まれる物品位置(Xb,Yb)は、
(Xb,Yb)∈{s1_trj[pm+1], s1_trj[pm+2] …, s1_trj[pm+1+1]}
である。
【００９２】
また、状態変数s3に含まれるロボットｗの位置（Xrw,Yrw）は、部屋全体を定義域とする。そして、状態変数s3=(s1_trj[l],Xrw,Yrw)∈S3において行動a3∈A3を選択したときに、状態s3’=(s1_trj[l]’,Xrw’,Yrw’)∈S3に遷移する状態遷移確率P3[pm][ps][pn]を、以下のように設定する。
【数１１】
2014079819.tif 000013
【００９３】
ただし、＜条件Ｃ＞は以下のいずれかを満たす場合である。
(1) a3=1 & Xrw’=Xrw+1 & Yrw’=Yrw   & s1_trj[l]’=s1_trj[l]
(2) a3=2 & Xrw’=Xrw   & Yrw’=Yrw+1 & s1_trj[l]’=s1_trj[l]
(3) a3=3 & Xrw’=Xrw-1 & Yrw’=Yrw   & s1_trj[l]’=s1_trj[l]
(4) a3=4 & Xrw’=Xrw   & Yrw’=Yrw-1 & s1_trj[l]’=s1_trj[l]
(5) a3=0 & Xrw’=Xrw   &  Yrw’=Yrw  & s1_trj[l]’=s1_trj[l]
(6) a3=5 & Xrw’=Xrw   &  Yrw’=Yrw  & s1_trj[l]’=s1_trj[l+1]
【００９４】
また、このときの報酬R3を以下のように設定する。
【数１２】
2014079819.tif 000014
【００９５】
以上のように定義されたP3[pm][ps][pn](s3’｜s3,a3)とR3[pm][ps][pn](s3’,s3,a3)を使用して動的計画法にて方策π３[pm][ps][pn](s3)を求めると、π３[pm][ps][pn](s3)は、別のロボットが物品をs1_trj[pm+1]からs1_trj[pm+1+1]まで移動させている間に、位置s1_trj[pn+1]にある物品をa1_trj[pn+1]の示す方向に押すことが可能な位置(Ready_Pos_k(s1_trj[pn+1],a1_trj[pn+1])のいずれか)に、仮想ロボットｗが到達するための、仮想ロボットｗの行動方策（移動のための方策）となる。すなわち、他のロボットが物品を連続移動させる間に、どのタイミングでReady_Pos_k(s1_trj[pn＋１],a1_trj[pn+1])のいずれかの位置に行動主体（仮想ロボットｗ）を移動させるかの動作計画を行うことになる。実際、他のロボットは、ここでは物品とともに動くものとしてしか評価されていない。移動経路計画部３００によって、他のロボットとの連携を初めて考慮したロボットの移動が計画されるが、他のロボットの動作は切り替え位置決定部２００によって決定されており、他のロボット（物品を移動させるロボット）は物品とともに移動する前提なので、他のロボットの状態を記述する状態変数を移動経路計画部３００においては考慮しなくてもよくなっている。つまり、状態変数s3に含まれるロボットの座標（Xrw,Yrw）は、物品を移動させていないロボットで、次の切り替え位置に移動するロボットの座標を扱っている。
【００９６】
以上の処理を、取りうる各pm, ps, pn∈｛p0, p1, p2, …, pf｝，ps≦pm，ps＜pn，pm+1<pnについて行い、方策π３[pm][ps][pn](s3)を求める。
【００９７】
次に、s1_trj[ps+1]まで物品を押す行動を終えた後、そのまま同じ位置で待機しているロボットｚが、ロボットｖに押されて区間[pm,pm+1]を移動している物品との衝突を回避するための行動方策（π３[pm][ps][ps](s3)）の計算について説明する。位置s1_trj[pm+1]からs1_trj[pm+1+1]）を物品が連続移動するときに、位置s1_trj[ps+1]に物品を押してきた後の位置でロボットｚが待機していると、ロボットｚが物品移動の邪魔になることがある。その際に、ロボットｚは物品移動の妨げとならない位置に一時的に場所を移動する必要がある。方策π3[pm][ps][ps](s3)は、そのためのロボットｚの行動（衝突回避行動）を表す。なお、衝突回避行動のための行動方策は、π３[pm][ps][ps](s3)の形で、ロボットｚの行先と出発点が同じ（ｐsである）移動のための方策として記述できる。ただし、衝突回避の場合の目標位置は、Ready_Pos_k(s1_trj[ps+1], a1_trj[ps])のいずれかの位置である。
【００９８】
状態遷移確率は式（９）をそのまま使用し（ただし、P3[pm][ps][ps]とする）、報酬は、式（１０）の報酬の設定におけるロボットの目標位置をReady_Pos_k(s1_trj[ps+1], a1_trj[ps])に変更したもの、即ち、次式を使用して、動的計画法にて方策π３[pm][ps][ps](s3)を求めればよい。
【数１３】
2014079819.tif 000015
【００９９】
以上の処理を、取りうる各pm, ps∈｛p0, p1, p2, …, pf｝，ps≦pmについて行い、方策π3[pm][ps][ps](s3)を求める。
【０１００】
移動経路計画部３００の詳細構成を図７に示す。移動経路計画部３００は、次担当ロボット移動計画用状態遷移モデル設定部３０１、次担当ロボット移動計画用価値関数初期化部３０２、次担当ロボット移動計画用方策更新部３０３、次担当ロボット移動計画用価値関数更新部３０４、次担当ロボット移動計画用価値関数収束判定部３０５、衝突回避用状態遷移モデル設定部３０６、衝突回避用価値関数初期化部３０７、衝突回避用移動計画用方策更新部３０８、衝突回避用移動計画用価値関数更新部３０９、衝突回避用移動計画用価値関数収束判定部３１０を含む。
【０１０１】
次担当ロボット移動計画用状態遷移モデル設定部３０１は、上記式（９）の状態遷移確率と、式（１０）の報酬とを設定する。
【０１０２】
次担当ロボット移動計画用価値関数初期化部３０２、次担当ロボット移動計画用方策更新部３０３、次担当ロボット移動計画用価値関数更新部３０４、次担当ロボット移動計画用価値関数収束判定部３０５の各処理は、状態遷移確率と報酬が式（９）と式（１０）にそれぞれ置き換わる点を除いては、物品軌道計算部１００の場合と同じである。
【０１０３】
次担当ロボット移動計画用価値関数初期化部３０２は、各s3∈S3についての価値関数Ｖπ（s3)の初期値を設定する。これは適当な値を設定すればよい。
【０１０４】
次担当ロボット移動計画用方策更新部３０３は、すべてのs3∈S3及びa3∈A3の組み合わせについて次式を計算し、Ｖπ3[pm][ps][pn]（s3）の値が最大となる行動a2を方策π３[pm][ps][pn](s3)の値に設定する。
【数１４】
2014079819.tif 000016
【０１０５】
ここで、Σは取りうるすべてのs3’についての総和を表し、γは予め定められた0<γ<1.0を満たす定数である。また、式（１１）におけるＶπ3[pm][ps][pn](s3’)の値は、次担当ロボット移動計画用方策更新部３０３の最初の実行時は次担当ロボット移動計画用価値関数初期化部３０２で設定された初期値が利用され、２回目以降の実行では、以下の次担当ロボット移動計画用価値関数更新部３０４で更新された価値関数の値が用いられる。
【０１０６】
次担当ロボット移動計画用価値関数更新部３０４は、各s3∈S3について、次式により価値関数Ｖπ3[pm][ps][pn](s3)を更新する。
【数１５】
2014079819.tif 000017
【０１０７】
次担当ロボット移動計画用価値関数収束判定部３０５は、次担当ロボット移動計画用価値関数更新部３０４による更新後のＶπ3[pm][ps][pn](s3)の値と更新前のＶπ3[pm][ps][pn](s3)との誤差が所定の閾値以下となるまで、上記次担当ロボット移動計画用方策更新部３０３に戻り、方策と価値関数の更新処理を繰り返す。所定の閾値以下となった場合には、価値関数Ｖπ3[pm][ps][pn](s3)が収束したと判定し、価値関数Ｖπ3[pm][ps][pn](s3)と方策π３[pm][ps][pn](s3)を出力する。
【０１０８】
同様に、衝突回避用状態遷移モデル設定部３０６は、上記式（９）の状態遷移確率と、式（１０．２）の報酬とを設定する。
【０１０９】
衝突回避用価値関数初期化部３０７、衝突回避用方策更新部３０８、衝突回避用価値関数更新部３０９、衝突回避用価値関数収束判定部３１０の処理は、Ｖπ3[pm][ps][pn](s3)がＶπ3[pm][ps][ps](s3)に置き換わり、π３[pm][ps][pn](s3)がπ３[pm][ps][ps](s3)に置き換わり、状態遷移確率と報酬が式（９）と式（１０．２）にそれぞれ置き換わる点を除いては、次担当ロボット移動計画用価値関数初期化部３０２、次担当ロボット移動計画用方策更新部３０３、次担当ロボット移動計画用価値関数更新部３０４、次担当ロボット移動計画用価値関数収束判定部３０５の処理と同じであるから説明を略する。
【０１１０】
移動経路計画部３００においても、マルコフ状態空間で使用している行動値はロボットの移動そのものなので、計算された行動方策π３[pm][ps][pn](s3)は、担当の切り替えが行われる位置にある物品を仮想ロボットが押せる位置まで、仮想ロボットが移動するための行動方策として使用できる。π2[pm][pn](s2)と異なるのは、物品を移動させる他ロボットの行動（a3=5）が定義されていることである。
【０１１１】
[変形例]
上記の説明では、移動経路計画部３００における行動変数a3の取りうる値は、０〜５の６種類としたが、仮想ロボットｗと仮想ロボットｖが同時に動く（つまり、仮想ロボットｗが物品を１ステップ移動させる行動と、仮想ロボットｖが所定方向に移動する行動とが同時に行われる）ことを意味する行動変数（ａ３＝６、７、８、９の４種類をさらに増やした合計１０種類として、計算を行ってもよい。ここで、
ａ３＝６：仮想ロボットは右方向へ移動
ａ３＝７：仮想ロボットは左方向へ移動
ａ３＝８：仮想ロボットは上方向へ移動
ａ３＝９：仮想ロボットは下方向へ移動
とする。この場合は上記＜条件Ｃ＞を、上述の(1)〜(6)に以下(7)〜(10)を加えたものに置き換える。
(7) a3=6  & Xrw’=Xrw+1 &  Yrw’=Yrw   & s1_trj [l]’=s1_trj[l+1]
(8) a3=7  & Xrw’=Xrw   &  Yrw’=Yrw+1 & s1_trj [l]’=s1_trj[l+1]
(9) a3=8  & Xrw’=Xrw-1 &  Yrw’=Yrw   & s1_trj [l]’=s1_trj[l+1]
(10) a3=9 & Xrw’=Xrw   &  Yrw’=Yrw-1 & s1_trj [l]’=s1_trj[l+1]
【０１１２】
行動変数a3∈{0,1,2,3,4,5}は、仮想ロボットｗまたは物品を押す仮想ロボットｖのいずれか一方が移動している、もしくは、両方とも静止していることを示す行動である。これを用いて行動を行った場合、実際にはロボットｗとロボットｖが並列に（同時に）行動可能な状況にあっても、逐次的に行動を行うような動作計画となるが、状態変数が少ないので移動経路計画部の計算を早く計算を行うことができるという利点がある。
一方、a3∈{0,1,2,3,4,5,6,7,8,9}とした場合は、a3∈{6,7,8,9}により、ロボットｗとロボットｖとが並列に行う行動も考慮することができる。行動変数が多くなるので移動経路計画部の計算に時間がかかるが、実際に計画される動作に無駄がなく、より適切な（所要時間の短い）行動系列を獲得できるという利点がある。
【０１１３】
[スケジューリング部；ステップＳ４]
以上の処理により、あるロボットiが軌道区間s1_trj[pm+1]からs1_trj[pn+1]に物品を連続移動させるときのロボット動作のための行動方策π２[pm][pn](s2)と、ロボットiがs1_trj_[pm+1]からs1_trj[pm+1+1]に物品を移動させている間に、次の区間を担当するロボットｊが切り替え位置（次の区間の先頭位置にある物品を押せる位置）に移動するための次担当ロボットjの行動方策π３[pm][ps][pn](s3)が計算できた。これにより、たとえば、π２[p0][p1](s2)に従ってロボット１が物品を連続移動している間に、π３[p0][p0][p1](s3)に従ってロボット２がs1_trj[p1+1]にある物品をs1_trj[p1+2]に移動可能な位置に移動するとともに、π３[p0][p0][p2](s3)に従ってロボット３がs1_trj[p2+1]にある物品をs1_trj[p2+2]に移動可能な位置に移動し、ロボット１が物品をs1_trj[p1+1]に移動後に、ロボット２が行動方策をπ２[p1][p2](s2)に切り替えて物品を移動させ、その後ロボット３が行動方策をπ２[p2][p3](s2)に切り替えて物品を移動させるという形で、ロボットの協調動作が実現可能である。あとは、これらの行動方策の切り替えとロボットの割り振りのつじつまが合うように、スケジューリング部４００において、使用する行動方策とロボット番号の組み合わせを求めればよい。
【０１１４】
スケジューリングの方法は、周知のグラフ探索などの技術を用いればよいが、例えば、マルコフ状態空間での動的計画法によってスケジューリングを行うことができる。今、マルコフ状態空間をp個のロボットを使用するとして
s4=(Cb,C1,…,Cp,CA1,…,CAp)
a4=（d1,…,dp）
とする。
【０１１５】
ここで、Cbは物品位置であり、その定義域はPartition[l]=0となる区間の端点、つまり、Cb∈{p0, p1, …,pf}である。また、Ci(i=1,2,…,p)はロボットiの位置であるが、実際のロボットのX,Y座標ではなく、ロボットがその位置まで押してきた物品位置（イ）、もしくはこれから押そうとしている物品の位置（ロ）を指し、Cbと同様に端点番号pmで表現される（（イ）または（ロ）の位置は、物品の位置が分かれば特定できるため、端点番号でよい）。同じCiの値でも実際のロボットの位置は２通りの場合がありうる。Ciの値の指す物品の位置まで、ロボットがどのような行動をして到達したかにより実際のロボット位置は（イ）か（ロ）のいずれかの値となる。実際のロボット位置を(Xri,Yri)とすれば、(Xri,Yri)∈{Ready_Pos_k(s1_trj[pm+1],a1_trj[pm])∨Ready_Pos_k(s1_trj[pm+1],a1_trj[pm+1])} (m=0,1,…,f) である。ここで、Ready_Pos_k(s1_trj[pm+1],a1_trj[pm])は、区間の始点位置(s1_trj[pm+1])にs1_trj[pm]から物品を押した後のロボットの位置を表し、Ready_Pos_k(s1_trj[pm+1],a1_trj[pm+1])は、区間の終点(s1_trj[pm+1])にある物品をa1_trj[pm+1]の示す方向に押せる位置である。CAiは、これを識別するための情報であり、ロボットiが一ステップ前で実行した行動diが物品押し行動π２であるか、もしくは切り替え移動行動π３であるかを示す識別値をとる。この識別値は、例えば、ブール値（１＝物品押し行動π２、０＝切替え移動行動π３）である。
【０１１６】
di (i=1,…,p)は、ロボットiが選択する行動方策を表す。diの値は、π２の物品押し行動か、π３の移動行動か、もしくは待機を指す値に分かれる。最適経路点列s1_trjにおける区間の始点の個数はｆ＋１なので、di=0,1,…,fまでは、π３の移動か待機を指す（diの値が現在ロボット位置を指すならば待機）。di=f+1のときは、物品押し行動π２の選択を指す。待機行動については、CAi=1の時に選択されたときは、第３層で計算された衝突回避行動π３を行い、CAi＝０の時に選択されたときは、何もしない。Cb=pr,Ci=pqのとき、diの値が0,1,…,fの場合はロボットは使用する行動方策としてπ３[pr][pq][pdi](s3)を選択し、diの値がf+1のときは、ロボットは使用する行動方策としてπ２[pr](s2)を選択するが、選択しうるdiの値は、ロボットの状態Ci、CAi及び物品の位置Cbによって制限がある。その制限のルールは以下のとおりである。
【０１１７】
（１）Ci=Cb  かつ  CAi＝0のときのみ、di値として物品押し行動π２を選択する値を選択可能である。
（２）CAi＝1のときのみ、di値として移動行動π3を選択する値を選択可能である。
（３）待機行動は、いかなる場合でも選択可能である。
【０１１８】
制限（１）は、ロボットは物品を押す行動π２を連続で選択できないことを示し、制限（２）は、物品を押した後のロボットのみ移動行動π３を選択可能であることを示す。
【０１１９】
以上は単体のロボットに対するdi値の制限であるが、さらに、行動a4全体の制限として、
要素(d1,…,dp)のいずれか一つは物品を押す行動π２でなければならない、
という制限も加わる。
【０１２０】
マルコフ状態遷移モデルにおける状態遷移確率は、以下のような条件により定義される。
【数１６】
2014079819.tif 000018
【０１２１】
ただし、＜条件Ｄ＞は以下のいずれかを満たす場合である。
Cb=prとしたときCb’=pr、Ci=pqとしたときCi’=pq’とし、以下のいずれかの条件のとき
[１] di=π2(押し) & r’=r+1 & q’=q+1 & CAi’=1
[２] di=π3(移動) & r’=r+1 & q’=di  & CAi’=0
[３] di=π3(待機) & r’=r+1 & q’=q   & CAi’=CAi
【０１２２】
以上の条件において、[１]は、ロボットが物品押し行動を選択したときには、ロボットと物品の位置はともに一つ先の区間端点に移動し、CAi＝１（物品押し行動）に変えることを意味する。[２]は、移動行動を選択したときには、ロボットの位置は行動の示す目標に移動し、物品位置は一つ先の区間端点に移動し、CAi＝０（移動行動）に変えることを意味する。[３]は、待機行動によりロボット位置CiとCAiはともに変化せず、物品位置のみ一つ先の区間端点に移動することを示す。
【０１２３】
また、状態s4において行動a4∈A4を実行し、状態がs4’∈S4へ遷移したとき、環境から行動主体へ与えられる報酬R4を次式で設定する。
【数１７】
2014079819.tif 000019
【０１２４】
物品が最終区間の開始点(Cb’=pf)に到達し、いずれかのロボットの位置がpfでありかつそこに至った行動が移動行動(CAi’=0)であれば、そのロボットが最終区間にて物品押しを開始できることが確定するので、物品は目標位置に到達できることが分かる。そのときのみ、報酬R4の値を１とし、それ以外の場合は報酬を０とすることを意味する。以上のように定義されたP4(s4’｜s4,a4)とR4(s4’,s4,a4)を使用して動的計画法にて方策π４(s4)を求めると、方策π４(s4)は、区間の端点Cbにおいて各ロボットdiが選択する行動方策を示す。これを、Cb=s1_trj[0]から順に、区間の端点に対応する状態変数s4に対する方策π４(s4)を求めることで、各区間の端点（切り替え位置）において各ロボットdiが選択する行動方策が求まる。スケジューリング部４００は、これをスケジューリング結果として出力する。
【０１２５】
なお、スケジューリング部４００の行動方策を求める際には、物品軌道計画部１００、切り替え位置決定部２００、移動経路計算部３００と同様にマルコフモデル決定過程（ＭＤＰ）での動的計画法を用いてもよいが、MDPの拡張的な手法である準マルコフ決定過程（SMDP）での動的計画法を使用すると、より実環境での所要時間を短縮できるようなスケジューリング結果を得ることができる。SMDPでは、各状態遷移における所要時間の長さを考慮して価値関数を計算する点が、MDPと異なる。
【０１２６】
状態s4にて行動a4を選択したときにs4’に状態遷移するための所要時間をτ(s4,s4’,a4)とする。なお、この所要時間はシミュレーション等により求めればよい。
【０１２７】
スケジューリング用価値関数初期化部は、各s4∈S4についての価値関数Ｖπ４（s4)の初期値を0に設定する。
【０１２８】
スケジューリング用方策更新部は、すべてのs4∈S4及びa4∈A4の組み合わせについて次式を計算し、Ｖπ4（s4）の値が最大となる行動a4を方策π4(s4)の値に設定する。
【数１８】
2014079819.tif 000020
【０１２９】
ここで、Σは取りうるすべてのs4’についての総和を表し、γは予め定められた0<γ<1.0を満たす定数である。また、式（１３）におけるＶπ4(s4’)の値は、スケジューリング用方策更新部の最初の実行時はスケジューリング用価値関数初期化部で設定された初期値が利用され、２回目以降の実行では、以下のスケジューリング用価値関数更新部で更新された価値関数の値が用いられる。
【０１３０】
スケジューリング用価値関数更新部は、各s４∈S４について、次式によって価値関数Ｖπ4(s4)を更新する。
【数１９】
2014079819.tif 000021
【０１３１】
[エラーフィードバック部；ステップＳ５]
以上に述べたとおり、物品軌道計画部１００、切り替え位置決定部２００、移動経路計算部３００、スケジューリング部４００に至るまでの階層的な動作計画計算において、物品軌道計画部１００によって決定された条件（最適経路点列）では、それより下の階層（切り替え位置決定部２００、移動経路計算部３００、スケジューリング部４００）での動作計画において適切な解を計算できないことも起こりうる。そのような場合に対処するため、エラーフィードバック部（図示せず）をさらに設け、再計算を行う構成としてもよい。
【０１３２】
フィードバック部は、移動経路計算部３００で求めた担当ロボットの切り替え動作における価値関数の値を使用する。例えば、価値関数Ｖπ3[pm][ps][pn](s3)の状態変数s3=(Xb,Yb,Xrw,Yrw)において、(Xb,Yb)=s1_trj[pm+1]かつ(Xrw,Yrw)をロボットｗが物品を位置s1_trj[ps]からs1_trj[ps+1]に押した後の位置としたときのＶπ3[pm][ps][pn](s3)の値をm<n,s<=mの全てのｓ、ｍの組についてチェックし、それらすべての場合においてＶπ3[pm][ps][pn](s3)の値が0以上でない場合には、方策π３[pm][ps][pn](s3)に従って、ロボットを適切に担当切り替えさせることは不可能である。すると、物品位置s1_trj[pn+1]での担当ロボット切り替えは、現時点での物品軌道では不可能ということになるので、物品位置s1_trj[pn]からs1_trj[pn+1]までの移動をs1_trj内に含めることは適切ではない。そこで、物品軌道計算部３００において、状態遷移確率P1(s1_trj[pn+1]|s1_trj[pn],a1)=0（つまり、いかなる行動a1においてもs1_trj[pn]からs1_trj[pn+1]へ移動しない）とし、P1(s1_trj[pn]|s1_trj[pn],a1)=1（s1_trj[pn-1]に留まる場合の遷移確率を１）とするように、マルコフ状態遷移モデルの状態遷移確率P1の値を変更したうえで再計画を行う。
【０１３３】
このように、フィードバック部では、移動経路計算部３００で求めた方策π３[pm][ps][pn](s3)に対応する価値関数Ｖπ3[pm][ps][pn](s3)について、(Xb,Yb)=s1_trj[pm+1]かつ(Xrw,Yrw)をロボットｗが物品を位置s1_trj[ps]からs1_trj[ps+1]に押した後の位置としたときのＶπ3[pm][ps][pn](s3)の値が０以上でない場合には、第１状態遷移モデル設定部（図示せず）において、
P1(s1_trj[pn+1]|s1_trj[pn],a1)=0
P1(s1_trj[pn]|s1_trj[pn],a1)=1
と変更したうえで、物品軌道計算部１００（物品軌道計算用価値関数初期化部から最適経路点列計算部）の処理を行うことにより最適経路点列を更新する。更新された最適経路点列を用いて、切り替え位置決定部２００、移動経路計算部３００、スケジューリング部４００、エラーフィードバック部５００の処理を繰り返す。
【０１３４】
〔変形例：担当ロボット数の調整〕
上記のように、担当ロボットの切り替えの可、不可を価値関数Ｖ3[pm][ps][pn](s3)を使用して判定し、不可の場合には物品軌道計算部３００に物品軌道の再計算を要求する代わりに、担当ロボットを追加する構成としてもよい。例えば、物品位置をs1_trj[ps]からs1_trj[ps+1]に押した後の位置に存在するロボットがs1_trj[pn+1]の位置にある物品を押せる位置まで移動ができないのであれば、物品がs1_trj[pm+1]の位置からs1_trj[pm+1+1]の位置に移動する間のいずれかの途中位置にて、任務環境内の価値関数Ｖπ3[pm][ps][pn](s3)の値を正にできるロボット位置に新しいロボットを追加し、その新しいロボットにs1_trj[pn+1]の位置にある物品を押せる位置まで移動を行わせ、s1_trj[pn+1]から先の物品移動を担当させる。
【０１３５】
なお、以上の処理で得られた行動方策を強化学習におけるgreedy行動選択のための行動方策として使用し、学習そのものを効率化することも有効である。
【０１３６】
＜ロボット協調搬送計画装置のハードウェア構成例＞
上述の実施形態に関わるロボット協調搬送計画装置は、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ＣＰＵ（Central Processing Unit）〔キャッシュメモリなどを備えていてもよい。〕、メモリであるＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）と、ハードディスクである外部記憶装置、並びにこれらの入力部、出力部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置間のデータのやり取りが可能なように接続するバスなどを備えている。また必要に応じて、各装置に、ＣＤ−ＲＯＭなどの記憶媒体を読み書きできる装置（ドライブ）などを設けるとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【０１３７】
ロボット協調搬送計画装置の外部記憶装置には、搬送計画のためのプログラム並びにこのプログラムの処理において必要となるデータなどが記憶されている〔外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくなどでもよい。〕。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。以下、データやその格納領域のアドレスなどを記憶する記憶装置を単に「記憶部」と呼ぶことにする。
【０１３８】
ロボット協調搬送計画装置では、記憶部に記憶されたプログラムとプログラムの処理に必要なデータが必要に応じてＲＡＭに読み込まれて、ＣＰＵで解釈実行・処理される。この結果、ＣＰＵが所定の機能（物品軌道計算部、切り替え位置決定部、移動経路計画部、スケジューリング部、エラーフィードバック部）を実現することで搬送計画が実現される。
【０１３９】
＜補記＞
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【０１４０】
また、上記実施形態において説明したハードウェアエンティティにおける処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【０１４１】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【０１４４】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2014079819.tif 000022
【図２】
2014079819.tif 000023
【図４】
2014079819.tif 000024
【図５】
2014079819.tif 000025
【図６】
2014079819.tif 000026
【図７】
2014079819.tif 000027
【図３】
2014079819.tif 000028