(57)【要約】【課題】  ネットワークを通して相互作用する複数のコンピュータからなるシステムにおいて、個々のコンピュータの学習により、システム全体のパフォーマンスを向上させるネットワークパラメータ学習装置を提供する。【解決手段】  移動ロボット１０００では、制御処理学習部１１０は、カメラ１０により撮影された目標対象物２の位置に基づいて駆動モータ２０２および２０４に対する制御信号を各々算出するための、複数のコロニーに離隔された複数のエージェントの学習処理を行なう。制御処理学習部１１０は、コロニー内のエージェントの分裂・消滅およびコロニーによる動的離隔を行なう動的離隔型遺伝的アルゴリズムの処理を行なう。【選択図】        図３
2006127411.tif 000002
【特許請求の範囲】
【請求項１】
被制御対象に対する制御信号の生成を学習により行なうためのマルチエージェント型制御装置であって、
制御対象量を観測して獲得するための観測手段と、
観測された前記制御対象量に基づいて前記制御信号を各々算出するための、複数のコロニーに離隔された複数のエージェントの学習処理を行なうための制御処理学習手段と、
前記制御対象量が目標値に接近するに従い増加するように更新される、各前記エージェントに対応する評価値を格納するための記憶手段とを備え、
前記制御処理学習手段は、
前記コロニーを順次選択しつつ、選択された前記コロニー内において、前記複数のエージェントの各々に対して、それぞれ所定期間ずつ、対応する第１の関数形を使用して、前記制御信号を算出させ、算出された制御信号により被制御対象を駆動し、駆動後に観測された前記制御対象量に応じて前記選択されたエージェントの評価値の更新を行う相互作用処理手段と、
前記更新された評価値に基づいて、前記エージェントの分裂および消滅処理を行なうための分裂消滅処理手段と、
前記コロニー内の前記エージェントの個数が所定の値を超えることに応じて、前記コロニーを離隔する処理を行う離隔処理手段とを備える、マルチエージェント型制御装置。
【請求項２】
前記エージェントは、制御エージェントと観測制御量算出エージェントとを含み、
前記観測手段は、
前記制御対象量を物理的に測定するための測定手段と、
前記測定手段の測定結果を前記制御エージェントが前記制御信号を算出するために使用する観測制御量に変換する処理を、対応する第２の関数系を使用し、複数の前記観測制御量算出エージェントにそれぞれ実行させるための観測制御量算出手段とを含む、請求項１記載のマルチエージェント型制御装置。
【請求項３】
被制御対象に対する制御信号の生成を学習により行なうためのマルチエージェント型制御プログラムであって、
前記プログラムは、
観測された制御対象量に基づいて前記制御信号を各々算出するための、複数のコロニーに離隔された複数のエージェントの学習処理を、前記制御対象量が目標値に接近するに従い増加するように各前記エージェントに対応する評価値を更新することにより行なうための制御処理学習ステップを備え、
前記制御処理学習ステップは、
前記コロニーを順次選択しつつ、選択された前記コロニー内において、前記複数のエージェントの各々に対して、それぞれ所定期間ずつ、対応する第１の関数形を使用して、前記制御信号を算出させ、算出された制御信号により被制御対象を駆動し、駆動後に観測された前記制御対象量に応じて前記選択されたエージェントの評価値の更新を行う相互作用処理ステップと、
前記更新された評価値に基づいて、前記エージェントの分裂および消滅処理を行なうための分裂消滅処理ステップと、
前記コロニー内の前記エージェントの個数が所定の値を超えることに応じて、前記コロニーを離隔する処理を行う離隔処理ステップとを備える、マルチエージェント型制御プログラム。
【請求項４】
前記エージェントは、制御エージェントと観測制御量算出エージェントとを含み、
測定手段による前記制御対象量の測定結果を前記制御エージェントが前記制御信号を算出するために使用する観測制御量に変換する処理を、対応する第２の関数系を使用し、複数の前記観測制御量算出エージェントにそれぞれ実行させるための観測制御量算出ステップをさらに備える、請求項３記載のマルチエージェント型制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遺伝的アルゴリズムによるマルチエージェントを用いた学習により制御則を最適化することが可能なマルチエージェント型制御装置およびマルチエージェント型制御プログラムに関する。
【背景技術】
【０００２】
従来、マルチエージェントにより視覚と行動を統合して制御するための制御エージェントを実現する試みについての報告がある（たとえば、非特許文献１、非特許文献２を参照）。
【０００３】
この非特許文献２においては、視覚処理エージェント群の協調により特徴追跡を行い、ロボットが、任意形状ペグ挿入のタスクを行なう例が開示されている。ただし、エージェントを用いた制御についての開示はあるものの、その制御の最適化については開示がされていない。
【０００４】
一方で、エージェントを用いる制御ではないものの、遺伝的アルゴリズム（ＧＡ：Genetic Algorithm）を用いて制御側を最適化する機構を利用して、非特許文献３では、並列二重倒立振り子の振り上げ安定制御を試みた例は報告されている（たとえば、非特許文献３を参照）。
【０００５】
また、個々のエージェントが、システムの大域的目的やその達成度などの一部しか知覚できないため、エージェントが知覚できる範囲に基づく学習を、いかにシステム全体の大域的目的と整合させるかという問題に関しては、たとえば、エージェントが知覚できる範囲の情報である利得や報酬、評価などを個体最適性と定義し、システムの大域的目的として、すべてのエージュントがそれぞれの行動から得る利得の総和をシステム最適性とそれぞれ定義したときに、エージェント学習によるシステム最適性の向上をシミュレート可能な「動的離隔型遺伝的アルゴリズム（Dynamically Separating Genetic Algorithms、以下、ＤＳ−ＧＡと記す）」の提案がなされている（たとえば、非特許文献４を参照）。
【０００６】
このＤＳ−ＧＡは、個体数に応じて個体を「コロニー」と呼ぶグループに動的に離隔する遺伝的アルゴリズム（以下、ＧＡ）である。個体を離隔する遺伝的アルゴリズムとしては、他に島モデルＧＡなどがあるが、ＤＳ−ＧＡは離隔状態が個体数に応じて動的に変化する点で異なる。ただし、非特許文献４に記載されるようなＤＳ−ＧＡについては、エージェントをコロニーに並列に離隔することを前提としており、このような遺伝的アルゴリズムをいかにして、制御系に対して適用するかについては開示がない。
【非特許文献１】納谷  太、森  啓、大里  延康  著：マルチエージェント制御ロボット実験系の構築、１９９６年電子情報通信学会総合大会、Ｄ−８，ｐ．１６８
【非特許文献２】納谷  太、森  啓、平松  薫、大里  延康  著：多種視覚情報処理の協調に基づく能動的トラッキングとマニピュレータ行動との統合、情報処理学会第５５回全国大会、Ｖｏｌ．２，ｐｐ．１３６−１３７，１９９７
【非特許文献３】井口  圭一、木村  元、小林  重信：ＧＡによる並列二重倒立振り子の振り上げ安定制御、計測自動制御学会第１３回自律分散シンポジウム、pp.２７７−２８３（２００１）。
【非特許文献４】中山  功一、松井博和、野村由司彦著：動的離隔型ＧＡ（ＤＳ−ＧＡ）の提案、情報処理学会誌：数理モデル化と応用，Vol.43， No.SIG10(TOM7), pp.95-109， Nov.2002
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、従来は、制御則の最適化を行なうにあたり、遺伝的アルゴリズムを用いたマルチエージェントの学習をいかに利用するかという点が必ずしも明らかでない、という問題があった。
【０００８】
本発明は、上記のような問題を解決するためになされたものであって、その目的は、遺伝的アルゴリズムによるマルチエージェントを用いた学習により制御則を最適化することが可能なマルチエージェント型制御装置およびマルチエージェント型制御プログラムを提供することである。
【課題を解決するための手段】
【０００９】
このような目的を達成するために、本発明のマルチエージェント型制御装置は、被制御対象に対する制御信号の生成を学習により行なうためのマルチエージェント型制御装置であって、制御対象量を観測して獲得するための観測手段と、観測された制御対象量に基づいて制御信号を各々算出するための、複数のコロニーに離隔された複数のエージェントの学習処理を行なうための制御処理学習手段と、制御対象量が目標値に接近するに従い増加するように更新される、各エージェントに対応する評価値を格納するための記憶手段とを備え、制御処理学習手段は、コロニーを順次選択しつつ、選択されたコロニー内において、複数のエージェントの各々に対して、それぞれ所定期間ずつ、対応する第１の関数形を使用して、制御信号を算出させ、算出された制御信号により被制御対象を駆動し、駆動後に観測された制御対象量に応じて選択されたエージェントの評価値の更新を行う相互作用処理手段と、更新された評価値に基づいて、エージェントの分裂および消滅処理を行なうための分裂消滅処理手段と、コロニー内のエージェントの個数が所定の値を超えることに応じて、コロニーを離隔する処理を行う離隔処理手段とを備える。
【００１０】
好ましくは、エージェントは、制御エージェントと観測制御量算出エージェントとを含み、観測手段は、制御対象量を物理的に測定するための測定手段と、測定手段の測定結果を制御エージェントが制御信号を算出するために使用する観測制御量に変換する処理を、対応する第２の関数系を使用し、複数の観測制御量算出エージェントにそれぞれ実行させるための観測制御量算出手段とを含む。
【００１１】
この発明の他の局面に従うと、被制御対象に対する制御信号の生成を学習により行なうためのマルチエージェント型制御プログラムであって、プログラムは、観測された制御対象量に基づいて制御信号を各々算出するための、複数のコロニーに離隔された複数のエージェントの学習処理を、制御対象量が目標値に接近するに従い増加するように各エージェントに対応する評価値を更新することにより行なうための制御処理学習ステップを備え、制御処理学習ステップは、コロニーを順次選択しつつ、選択されたコロニー内において、複数のエージェントの各々に対して、それぞれ所定期間ずつ、対応する第１の関数形を使用して、制御信号を算出させ、算出された制御信号により被制御対象を駆動し、駆動後に観測された制御対象量に応じて選択されたエージェントの評価値の更新を行う相互作用処理ステップと、更新された評価値に基づいて、エージェントの分裂および消滅処理を行なうための分裂消滅処理ステップと、コロニー内のエージェントの個数が所定の値を超えることに応じて、コロニーを離隔する処理を行う離隔処理ステップとを備える。
【００１２】
好ましくは、エージェントは、制御エージェントと観測制御量算出エージェントとを含み、測定手段による制御対象量の測定結果を制御エージェントが制御信号を算出するために使用する観測制御量に変換する処理を、対応する第２の関数系を使用し、複数の観測制御量算出エージェントにそれぞれ実行させるための観測制御量算出ステップをさらに備える。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明の実施の形態について説明する。
【００１４】
（本発明の概要）
上述した従来のＤＳ−ＧＡでは、エージェントをコロニーに並列に離隔する必要があった。このため、相互作用する複数のコンピュータからなるシステムそのものが並列処理できない場合に適用できない。
【００１５】
以下にも説明するとおり、本発明では、エージェントが並列に離隔できないシステムにおいて、時分割コロニーを用いて直列（逐次的）に離隔することで、ＤＳ−ＧＡを並列処理できないシステムへ適用可能なマルチエージェント型制御装置およびマルチエージェント型制御プログラムを提供する。
【００１６】
すなわち、本発明は、システムの適応的な最適化を実現する学習手法を具体化したものであり、システム制御を構成する要素（エージェント）間の相互作用を、一定時間（時分割コロニー）に制限する。各エージェントは区分された時間内において評価され、分裂と消滅により学習する。
【００１７】
言い換えると、システム制御プログラムは多数のエージェントからなり、エージェントは、相互作用を一定時間内に制限される。このため、本発明は、システムに存在するエージェントの処理が並列に分割できない場合に有効である。
【００１８】
以下では、本発明を２つのキャタピラで移動するロボットの制御に適用した場合について説明する。しかしながら、本発明は、このような構成に限定されることなく、たとえば、複数の制御パラメータの組合せにより制御則が表現されるような制御系、さらには、複数の関数の組合せにより制御則が表現されるような制御系についても、適用可能なものである。
【００１９】
［発明の実施の形態］
（実施の形態１）
図１は、本発明のマルチエージェント型制御プログラムを用いた制御装置（マルチエージェント型制御装置）が適用される移動ロボット１０００の一例を示す図である。
【００２０】
図１を参照して、移動ロボット１０００は、ロボット１０００が追跡する目標対象物を映像として認識するための画像を撮影するカメラ１０と、制御ボード（以下、「制御部」と呼ぶ）１００と、制御部１００からの制御信号によりそれぞれ駆動される駆動モータ２０２および２０４と、駆動モータ２０２および２０４によりそれぞれトルクを与えられて移動ロボット１０００を移動させるためのキャタピラ２１２および２１４とを備える。
【００２１】
図２は、図１に示した移動ロボット１０００を上面から見た図である。
【００２２】
左側キャタピラ２１２は駆動モータ２０２により、右側キャタピラ２１４は駆動モータ２０４により、それぞれ駆動される。
【００２３】
図３は、図１および図２に示した移動ロボット１０００の構成を示す機能ブロック図である。
【００２４】
カメラ１０は、目標対象物２を含む画像を撮像し、制御部１００の撮像系インタフェース１０２に当該画像に対応するデジタル画像データを与える。
【００２５】
制御部１００では、撮像系インタフェース１０２を介して入力されたデジタル画像データは、一旦、画像データバッファ部１０４に格納され、ＣＰＵ（Central Processing Unit）１０８が、画像データバッファ部１０４中のデジタル画像データを、たとえば、１フレームごとに、移動ロボット１０００の移動動作を制御するための処理を実行する。
【００２６】
すなわち、ＣＰＵ１０８では、メモリ１０６に格納されているプログラムに基づいて、まず、画像認識処理部１１２が、上述した１フレームの画像データ中で、目標対象物２の位置を認識する処理を行なう。このような画像認識は、周知の画像認識処理により、たとえば、色情報や形状情報に基づいて行なわれる。さらに、ＣＰＵ１０８の制御処理学習部１１０は、画像認識処理部により認識された目標対象物２の位置を特定するための情報に基づいて、駆動モータを制御するための制御信号、たとえば、駆動モータ２０２および２０４に与える駆動トルクに対応した制御信号を計算して、制御系インタフェース１１４に与える。
【００２７】
なお、メモリ１０６は、たとえば、ＲＯＭ（Read Only Memory) およびＲＡＭ （Random Access Memory）を含んでおり、ＲＯＭには上述した制御プログラムが記憶されており、ＲＡＭは、この制御プログラムの動作のための一時記憶メモリとして動作する。したがって、後に説明する各エージェントの属性や評価値は、このＲＡＭに格納される。あるいは、ＲＯＭには、制御プログラムを走らせるためのＯＳ（Operating System）が記憶されており、制御プログラムは、ＲＡＭに読み込まれて実行されることとしてもよい。この場合は、ＲＡＭに読み込む制御プログラムを格納するための記憶装置（たとえば、ハードディスクや外部記憶媒体など）が、このメモリ１０６と結合していてもよい。
【００２８】
本発明のマルチエージェント型制御装置の主要部は、制御部１００を構成するコンピュータハードウェアと、ＣＰＵ１０８により実行されるソフトウェアとにより構成される。一般的にこうしたソフトウェアはメモリカード等の記憶媒体に格納されて流通させることも可能で、この場合は、ドライブ装置により記憶媒体から読取られてメモリ１０６に一旦格納される。図３に示すようなコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の最も本質的な部分は、メモリ１０６に記憶されるソフトウェアである。
【００２９】
以下では、上述したＤＳ−ＧＡを改良して、移動ロボット１０００の動作の制御を行なえるようにしたアルゴリズムを、ｓＤＳ−ＧＡ（Serial Dynamically Separating Genetic Algorithm）と呼ぶことにする。
【００３０】
［ｓＤＳ−ＧＡのアルゴリズム］
まず、図４は、カメラ１０により撮像された画像の１フレーム分の画像を示す概念図である。
【００３１】
図４に示すとおり、画像認識処理部１１２により、目標対象物２は、画面中で中心線から距離ｄ（ｄ≧０：座標ｘの絶対値）だけ離れた位置にあると認識される。
【００３２】
図５は、ｓＤＳ−ＧＡのアルゴリズムの流れを示す概念図である。
【００３３】
ｓＤＳ−ＧＡでは、自律型の移動ロボット１０００の機能に合わせて、それぞれをエージェントとし、全体をマルチエージェントシステムとして設計する。それぞれのエージェントの相互作用を時分割コロニーに制限し、エージェントレベルでの遺伝的アルゴリズムによるシステム最適化を行なう。
【００３４】
例えば、制御エージェントであれば、ロボット制御の役割ごとにエージェントを設計する。このとき、同じ役割のエージェントでも、別々のパラメータ調整などが必要な場合は、それぞれ別のエージェントとして設計する方が好ましい。たとえば、図１〜図３で説明した移動ロボット１０００では、左駆動モータ２０２と右駆動モータ２０４を制御する制御信号の生成はそれぞれ別の制御エージェントによるものとして設計される。
【００３５】
自律移動ロボットを制御するこれらのエージェントは、制御の担当を時間的に交替し、自らが担当の時間帯に個々に制御の役割を果たす。
【００３６】
すなわち、コロニーと呼ばれる集団にそれぞれ属するエージェントは、時間ｔｃごとに各エージェントがロボットを制御し、この時間ｔｃの間で制御された結果、制御量がどの程度目標値に近づいたかに応じて、各エージェントに報償を与える。この報償に基づいて、エージェントの分裂と消滅が行なわれる。
【００３７】
各コロニーごとに上述したような分裂と消滅が行なわれた後に、コロニーが動的に離隔され、また、必要に応じてコロニーの消去が行なわれる。
【００３８】
以上の処理を単位として、この単位の処理が順次繰り返されると、移動ロボットを制御するために最適なエージェントが選択的に生き残り、最終的には、いずれのコロニーに属するエージェントも、同様の制御則を実行するようになる。
【００３９】
図６は、ｓＤＳ−ＧＡのアルゴリズムを説明するためのフローチャートである。
【００４０】
以下、図６を参照して、ｓＤＳ−ＧＡのアルゴリズムについて、さらに詳しく説明する。
【００４１】
まず、以下のような初期設定の処理が行われる（ステップ１００）。
【００４２】
（１）初期設定
すなわち、制御学習部１１０は、ｓＤＳ−ＧＡを適用するＮａ個（Ｎａ：２以上の自然数）の制御エージェントをランダムに生成する。たとえば、以下では、左駆動モータ２０２と右駆動モータ２０４を制御する制御信号の生成する制御エージェントは、それぞれ、以下の式に基づいて、駆動トルクＴkｌを計算するものとする。
【００４３】
Ｔkｌ＝αkｌ×ｘ        …（１）
ここで、ｋは、左駆動モータ２０２と右駆動モータ２０４のいずれの制御信号を分担するかを識別するための添え字であり、ｌは、制御エージェントを区別するための添え字である。したがって、Ｎａ＝ｋ×ｌである。なお、エージェントの初期個数Ｎａは、ＣＰＵ１０８の処理能力を考慮して、その個数を予め設定するものとする。
【００４４】
ここで、駆動トルクＴkｌを計算するための係数である制御パラメータαkｌは、特に、限定されないが、予め定められた範囲内の数値からランダムに選ばれるものとする。このような制御パラメータαkｌのランダムな選択が、制御エージェントのランダムな生成に対応する。上述した式（１）の例では、制御パラメータαkｌが遺伝子として機能することになる。
【００４５】
なお、駆動トルクＴkｌの計算は、式（１）においては、認識された対象物２の中心線からのずれｘに比例する関数により行なわれるとしたが、たとえば、複数の制御パラメータをそれぞれ多項式の係数とする位置ｘの関数としてもよい。この場合は、複数の制御パラメータの組が遺伝子として機能する。より一般的には、この位置ｘに基づいて駆動トルクＴkｌを計算する関数形を複数個予め準備しておき、このような関数形からランダムに関数形を選択することで、ランダムに制御エージェントを発生させることとしてもよい。このような制御エージェントのランダムな生成を「エージェントの初期生成」と呼ぶことにする。
【００４６】
さらに、各制御エージェントごとに、評価値Ｅ(ｋ、ｌ、t１)の値が初期値として、たとえば、０に設定される。ここで、ｔ１は時間を表し、初期値は０である。
【００４７】
再び、図６を参照して、続いて、コロニーの数Ｎｃｏｌの値がＮ０に設定されるとともに、各コロニーにＮ１個ごとに制御エージェントがランダムに割り当てられる（ステップＳ１０２）。ｉ番目のコロニーに含まれる制御エージェントの組の個数をＮagnt（ｉ）と表す。ここで、「制御エージェントの組の個数」とは、各コロニーにおいて、左駆動モータ２０２と右駆動モータ２０４の制御信号の生成をそれぞれ分担するエージェントの組として排他的に選択しうる最大の組の数である。実施の形態１では、たとえば、コロニーに２ｎ個のエージェントが含まれる場合は、「制御エージェントの組の個数」はｎ個である。また、Ｎａ＝Ｎ０×Ｎ１の関係も成り立つ。
【００４８】
さらに、初期設定として、変数ｉ，ｊの値が、それぞれ１に設定され、ｔ１の値は０とされる。
【００４９】
（２）相互作用:
続いて、各エージェントは、以下に説明するような行動と相互作用を行なう。
【００５０】
まず、処理時間パラメータｔの値が０に設定される（ステップＳ１０４）。
【００５１】
続いて、ｉ番目のコロニーにおいて、ｊ番目のエージェントの組がランダムに選択される。すなわち、左駆動モータ２０２と右駆動モータ２０４の制御信号をそれぞれ分担する制御エージェントの組がランダムに選択され、上記式（１）に基づいて制御信号が計算される（ステップＳ１０６）。
【００５２】
続いて、計算された制御信号により、所定時間ｔｃの間だけ、左駆動モータ２０２と右駆動モータ２０４が駆動される（ステップＳ１０８）。
【００５３】
さらに、ステップＳ１０８の駆動の後に、目標対象物２の位置が再び画像認識処理部１１２において認識される。このとき、目標対象物２が画面の中心線から距離ｄの位置にあると認識されたとすると、以下の式に基づいて、選択されて制御を担当した制御エージェントの組の評価値が更新される（ステップＳ１１０）。
【００５４】
Ｅ(ｋ、ｌ、t１＋１)＝Ｅ(ｋ、ｌ、t１)＋（Ｅ０−ｄ）…（２）
ここで、Ｅ０は所定の定数である。
【００５５】
なお、評価値は、ステップＳ１０８の駆動の後に、測定された距離ｄのみに基づくのではなく、それまでに測定された距離ｄの積算値に基づいて計算されることとしてもよい。
【００５６】
また、評価値の計算は、上記式（２）の方法に限定されることなく、より目標に近づくほど、順次、より評価値が増大するような関数であれば、他の計算式によってもよい。
【００５７】
（３）エージェントの分裂と消滅:
エージェントは、エージェントの評価値が所定の値、たとえば、初期値の倍以上になると分裂を起こすものとする。このとき、各エージェントは、分裂前の評価値を半分ずつ持つ２個体に分裂し、それぞれ遺伝子を引き継ぐ。また、エージェントは、自身の評価値が０以下になると消滅するものとする（ステップＳ１１２）。
【００５８】
なお、遺伝子が、所定の突然変異確率ｐ1で変異するものとしてもよい。すなわち、ｉ番目のコロニー内のエージェントについて、この突然変異確率ｐ1で、再度、「エージェントの初期生成」処理により、遺伝子が変異することとしてもよい。
【００５９】
また、所定の移動確率ｐ２により、ｉ番目のコロニー内のエージェントについて、移動が起こることとしてもよい。このような移動が行なわれる場合は、エージェントは、無作為に選ばれるコロニーに移動するものとする。
【００６０】
次に、時間ｔが、ｔ＝ｔ＋ｔｃと更新され（ステップＳ１１４）、続いて、時間ｔが、所定の処理時間Ｔ０よりも小さいかが判断される（ステップＳ１１６）。
【００６１】
ここで、所定の処理時間Ｔ０は、１つのコロニー内の各エージェントが、少なくとも複数回は制御を担当する程度に十分な長さを有するものとする。
【００６２】
時間ｔが、所定の処理時間Ｔ０よりも小さい場合、続いて、変数ｊが、ｉ番目のコロニーのエージェントの組の数Ｎagnt（ｉ）以上であるかが判断される（ステップＳ１１８）。
【００６３】
変数ｊが、エージェント数Ｎagnt（ｉ）よりも小さい場合、ｊの値が１だけインクリメントされ（ステップＳ１２０）、処理は、ステップＳ１０６に復帰して、次のエージェントの組が選択される。一方、ステップＳ１１８において、変数ｊが、ｉ番目のコロニーのエージェントの組の数Ｎagnt（ｉ）よりも小さいと判断された場合は、変数ｊが１に設定され、処理はステップＳ１０６に復帰する。
【００６４】
（４）コロニーの動的離隔：
一方、ステップＳ１１６において、時間ｔが、所定の処理時間Ｔ０以上であると判断されると、ＣＰＵ１０８は、コロニーの動的離隔処理を行なう（ステップＳ１２４）。動的離隔処理は、コロニー内のエージェント数が限界数Ｎlimを超えた場合に起きる。このとき、１つのコロニー内に存在するエージェントは、２つのコロニーに離隔される。ただし、２つのコロニーの個体数の差は１以下とする。
【００６５】
（５）ランダム消去：
ｓＤＳ−ＧＡのアルゴリズムには、原理的には、存在できるエージェント数に制限はないが、ＣＰＵ１０８の容量には制限がある。そこで、ＣＰＵ１０８は、エージェント総数が初期エージェント数より増えた場合、学習処理を行なうコロニー数を限定する意味で、エージェント総数が初期エージェント数以下になるまで、コロニーを無作為に消去する（ステップＳ１２６）。コロニー数Ｎcolの値は、コロニーの消去後の値に更新される。
【００６６】
また、コロニーの番号ｉと、ｉ番目のコロニー内の制御エージェントの組の個数Ｎagnt（ｉ）とについても、動的離隔と消去とに応じて、適宜、割り当てが更新されるものとする。
【００６７】
次に、変数ｉの値が、コロニーの総数Ｎcolより小さいかが判定され（ステップＳ１２８）、変数ｉの値が、コロニーの総数Ｎcolより小さい場合、変数ｉの値は１だけインクリメントされ、ｊの値は１に設定されて（ステップＳ１３０）、処理はステップＳ１０４に復帰する。
【００６８】
一方、ステップＳ１２８において、変数ｉの値が、コロニーの総数Ｎcol以上である場合、変数ｉの値は１に設定され、ｊの値は１に設定されて（ステップＳ１３２）、処理はステップＳ１０４に復帰する。
【００６９】
以上のステップＳ１０４〜ステップＳ１２８での処理を１単位時間とし、ＣＰＵ１０８は、この処理を繰り返すことで、エージェントの学習処理を実行する。
【００７０】
以上のような処理においては、時間的にエージェントが入れ替わるので、実際には、過去に担当したエージェントの行動により、現在のエージェントの評価が変わる。したがって、一般には、現在のエージェント単体の評価がしにくい。
【００７１】
しかしながら、上述したような集団最適性をもつ動的離隔型遺伝的アルゴリズムＤＳ−ＧＡを用いれば、個々に評価されるエージェントを、集団最適性をもつように学習させることができる。
【００７２】
このＤＳ−ＧＡは、エージェントをある程度の大きさをもつコロニーごとに離隔し、あるコロニーに所属するエージェント間の相互の影響に比べて、当該コロニーに属するエージェントが他のコロニーに所属するエージェントに対して与える影響が小さくなるようにすることで、集団最適性の高いエージェントを増やす仕組みになっている。
【００７３】
つまり、それぞれのエージェントは、時系列的にロボットを動かしているので、過去のエージェントの影響を完全に遮断することはできない。しかし、実行される順番が近いものほど現在のエージェントに影響を与えやすく、遠ければ、影響を与えにくい。そこで、エージェントをある程度の数のコロニーに分ける。あるコロニーを選び、そのコロニーから所定時間Ｔ０の間、集中的にエージェントを選べば、そのコロニー内で相互にエージェントが影響を与え合う。所定時間Ｔ０の間、そのコロニー内のエージェントの処理を実行したら、別のコロニーに実行を移す。実行するコロニーを移すときに、前のコロニーの影響を現在のコロニーのエージェントは受けるが、コロニー内の影響に比べれば、コロニー間の影響は小さくなる。
【００７４】
以上のような処理により、エージェント間の影響に時間的な距離の差をつくるｓＤＡ−ＧＡによって、仮想的な離隔を実現して、エージェントの処理を並列に行なうことができないハードウェアの制御に対して動的離隔型遺伝的アルゴリズムを適用し、制御則の最適化を自律的に適応的に行なうことが可能となる。
【００７５】
（実施の形態１の変形例）
実施の形態１においては、カメラ１０により撮影された図４に示す画像上において、中心線からの目標対象物２の位置ｘに直接基づいて、駆動トルクＴkｌを計算していた。
【００７６】
しかしながら、ロボット１０００と目標対象物２との絶対的な配置は同じでも、カメラ１０に撮影される画像中においては、カメラの配置やカメラの設置角度などにより距離ｄが変化するので、単純に、中心線からの目標対象物２の位置ｘに基づくよりも、たとえば、画像から、ロボット１０００の現在の進行方向に対して、ロボットから目標対象物２を結ぶ線がなす角度θをもとめ、この角度θに基づいて、駆動トルクＴkｌを計算することがより望ましい。また、画像処理により生成される制御信号は、画像処理そのものの処理の時間遅れを考慮して、調整しなければ、その動きの遅さやオーバーシュートを引き起こす。この時間遅れは、ロボットの状況により変化する可能性があるので、自動で調整されることが望ましい。言い換えれば、上述した角度θは、このような時間遅れの影響を考慮した値とすることが望ましく、必ずしも、物理的に正確なロボット１０００の現在の進行方向に対するロボットから目標対象物２を結ぶ線がなす角度というよりも、実効的に制御に対して最適な角度θとして計算されるべきものである。
【００７７】
したがって、実施の形態１の変形例では、画像認識処理部１１２においても、マルチエージェントにより、撮影した画像から角度θを求める処理を最適化するものとする。
【００７８】
つまり、画像処理と制御信号の生成という２つの機能をそれぞれ別の種類のエージェントとして設計し、それぞれの制御を担当するエージェントを時間的に交替させることで、自律移動ロボットを制御する。
【００７９】
すなわち、上述した制御エージェントに加えて、実施の形態１の変形例では、たとえば、以下のような式により、角度θを計算する映像処理エージェントを導入する。
【００８０】
θ＝ｆm（ｘ、ｙ）  …（３）
ここで、ｙは、図４における目標対象物２の垂直方向の座標であり、関数形ｆm（…）は、予め複数の関数形が準備されているものとする。座標ｙは、ロボット１０００から目標対象物２までの距離に依存するから、座標ｘが同じでも、ロボット１０００から目標対象物２までの距離に応じて、時間遅れの影響を異ならせるために関数ｆm（…）の引数としている。したがって、たとえば、特に限定されないが、座標ｘに比例する部分と、座標ｙの増加（ロボット１０００から目標対象物２までの距離の増加）に比例する部分との和の関数形などを用いることができる。
【００８１】
そして、駆動トルクＴkｌを計算する式を以下のように変更する。
【００８２】
Ｔkｌ＝α´kｌ×θ        …（１´）
ただし、このような２種類の映像処理エージェントと制御エージェントを使用する場合も、処理の流れは、基本的に図６に示した流れと同様としてよい。したがって、以下では、図６を参照しつつ、実施の形態１と異なる点についてのみ説明する。
【００８３】
すなわち、実施の形態１の変形例では、図６のステップＳ１００において、制御学習部１１０は、ｓＤＳ−ＧＡを適用するＮａ個（Ｎａ：３以上の自然数）の映像処理エージェントと制御エージェントとをランダムに生成する。このとき、映像処理エージェントは、撮影されたデジタル画像に基づいて認識した目標対象物２に対する角度θを式（３）により算出する。関数形ｆm（…）は、予め複数の関数形からランダムに選択される。制御エージェントは、左駆動モータ２０２と右駆動モータ２０４を制御する制御信号の生成するそれぞれ、式（１´）に基づいて、駆動トルクＴkｌを計算する。
【００８４】
ここで、駆動トルクＴkｌを計算するための係数である制御パラメータα´kｌも、特に、限定されないが、予め定められた範囲内の数値からランダムに選ばれるものとする。このような関数形ｆm（…）のランダムな選択、制御パラメータα´kｌのランダムな選択が、エージェントのランダムな生成に対応する。実施の形態１の変形例では、関数形ｆm（…）および制御パラメータα´kｌが遺伝子として機能することになる。
【００８５】
なお、駆動トルクＴkｌの計算が、認識された角度θに比例する関数により行なわれる場合に限定されないのは、実施の形態１と同様である。このような映像処理エージェントおよび制御エージェントのランダムな生成を、実施の形態１の変形例でも「エージェントの初期生成」と呼ぶことにする。
【００８６】
また、評価値を、Ｅ(ｋ、ｌ、ｍ、t１)と表現することにし、たとえば、ｍ＝０であれば、制御エージェントに対する評価値を、ｍがそれ以外の値であれば、映像処理エージェントに対する評価値を表すものとする。
【００８７】
そして、個数Ｎagnt（ｉ）は、ｉ番目のコロニーに含まれる、映像処理エージェントと制御エージェントの対の組の個数を表すものとする。ここで、「映像処理エージェントと制御エージェントの対の組」とは、各コロニーにおいて、映像処理により角度θを計算する処理および左駆動モータ２０２と右駆動モータ２０４の制御信号の生成をそれぞれ分担するエージェント対の組として排他的に選択しうる最大の組の数である。たとえば、実施の形態１の変形例では、たとえば、コロニーにｎ個の映像処理エージェントと２ｎ個の制御エージェントが含まれる場合は、「映像処理エージェントと制御エージェントの対の組」はｎ個である。
【００８８】
また、図６のステップＳ１０６においては、ｉ番目のコロニーにおいて、ｊ番目のエージェントの組として、映像処理により角度θを計算する処理を行なう１つの映像処理エージェントおよび左駆動モータ２０２と右駆動モータ２０４の制御信号の生成をそれぞれ分担する制御エージェントの対がランダムに選択されて、上記式（３）および（１´）に基づいて制御信号が計算される。
【００８９】
また、ステップＳ１０８の駆動の後に、ステップＳ１１０においては、目標対象物２の位置が画像認識処理部１１２において認識される。このとき、目標対象物２が画面の中心線から距離ｄの位置にあると認識されたとすると、以下の式に基づいて、選択されて制御を担当した画像処理エージェントと制御エージェントの組の評価値が更新される（ステップＳ１１０）。
【００９０】
Ｅ(ｋ、ｌ、ｍ、t１＋１)＝Ｅ(ｋ、ｌ、ｍ、t１)＋（Ｅ０−ｄ）…（２´）
ここで、Ｅ０は所定の定数である。
【００９１】
ただし、評価値の計算が、式（２´）のような関数形に限定されないのも、実施の形態１と同様である。
【００９２】
後のエージェントの分裂、消滅や、コロニーの動的離隔については、制御エージェントについてだけでなく、映像処理エージェントに対しても同様の処理がされることになる。たとえば、動的離隔処理は、コロニー内の画像処理エージェント数と制御エージェント数の和が限界数Ｎlimを超えた場合に起きる。
【００９３】
以上のような処理によっても、実施の形態１と同様の効果が奏される。
【００９４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００９５】
【図１】本発明のマルチエージェント型制御プログラムを用いた制御装置（マルチエージェント型制御装置）が適用される移動ロボット１０００の一例を示す図である。
【図２】図１に示した移動ロボット１０００を上面から見た図である。
【図３】図１および図２に示した移動ロボット１０００の構成を示す機能ブロック図である。
【図４】カメラ１０により撮像された画像の１フレーム分の画像を示す概念図である。
【図５】ｓＤＳ−ＧＡのアルゴリズムの流れを示す概念図である。
【図６】ｓＤＳ−ＧＡのアルゴリズムを説明するためのフローチャートである。
【符号の説明】
【００９６】
２  目標対象物、１０  カメラ、１００  制御部、１０２  撮像系インタフェース、１０４  画像データバッファ部、１０６  メモリ、１０８  ＣＰＵ、１１０  制御処理学習部、１１２  画像認識処理部、１１４  駆動系インタフェース、２００  駆動系、２０２，２０４  駆動モータ、２１２  左キャタピラ、２１４  右キャタピラ、１０００  移動ロボット。
【図３】
2006127411.tif 000003
【図４】
2006127411.tif 000004
【図５】
2006127411.tif 000005
【図６】
2006127411.tif 000006
【図１】
2006127411.tif 000007
【図２】
2006127411.tif 000008