(57)【特許請求の範囲】
【請求項１】
Ｎ個の系のそれぞれの挙動が、ノイズに基づく信号を外部から付加することにより所定の挙動に収束するよう制御する制御装置であって、
前記Ｎ個の系の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を記憶する記憶部と、
前記変数Ａｃｔの値と前記Ｎ個の系のそれぞれの現在の挙動とに応じて、前記系がとるべき次の挙動を決定する決定部と
を備え、
前記決定部は、
前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する判定手段と、
該判定手段で少なくとも一の系の挙動が安定していないと判定した場合、安定していないと判定された系がとるべき次の挙動を、正数である変数Ａｃｔにノイズ値を乗算して決定する乗算手段と
を備えることを特徴とする制御装置。
【請求項２】
前記決定部は、前記判定手段で少なくとも一の系の挙動が安定していないと判定した場合、（式１）に従って安定していないと判定された系ｉ（ｉ＝１，２，・・・，Ｎ）の少なくとも１つがとるべき次の挙動を決定するようにしてあることを特徴とする請求項１記載の制御装置。
ｂ’ｉ＝ｂｉ＋（ｆｉ（ｂ１，ｂ２，・・・，ｂＮ）＋ｇｉ（η’ｉ））
×Ａｃｔ＋ηｉ                          ・・・（式１）
なお、  Ｎ：２以上の任意の整数
ｂ’ｉ：系ｉがとるべき次の挙動
ｂｉ：系ｉの現在の挙動
ｆｉ：任意の挙動ルール
ｇｉ：むだ時間に起因する新たな収束点を探索する探索関数
η’ｉ：第一のノイズ値
ηｉ：第二のノイズ値
【請求項３】
前記判定手段は、前記評価値と前記目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定するようにしてあり、
前記乗算手段は、安定していないと判定された系の現在の挙動に対応する値から順次段階的にノイズ値を大きくし、前記ベクトル距離のｐ乗平均が所定値より小さくなった時点でのノイズ値を乗算するようにしてあることを特徴とする請求項１又は２記載の制御装置。
【請求項４】
Ｎ個の系のそれぞれの挙動が、ノイズに基づく信号を外部から付加することにより所定の挙動に収束するよう制御する制御装置で実行することが可能な制御方法であって、
前記制御装置は、
前記Ｎ個の系の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を記憶する第一工程と、
前記変数Ａｃｔの値と前記Ｎ個の系のそれぞれの現在の挙動とに応じて、前記系がとるべき次の挙動を決定する第二工程と
を含み、
前記第二工程は、
前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する第三工程と、
少なくとも一の系の挙動が安定していないと判定した場合、安定していないと判定された系がとるべき次の挙動を、正数である変数Ａｃｔにノイズ値を乗算して決定する第四工程と
を含むことを特徴とする制御方法。
【請求項５】
前記第二工程は、少なくとも一の系の挙動が安定していないと判定した場合、（式１）に従って安定していないと判定された系ｉ（ｉ＝１，２，・・・，Ｎ）の少なくとも１つがとるべき次の挙動を決定することを特徴とする請求項４記載の制御方法。
ｂ’ｉ＝ｂｉ＋（ｆｉ（ｂ１，ｂ２，・・・，ｂＮ）＋ｇｉ（η’ｉ））
×Ａｃｔ＋ηｉ                          ・・・（式１）
なお、  Ｎ：２以上の任意の整数
ｂ’ｉ：系ｉがとるべき次の挙動
ｂｉ：系ｉの現在の挙動
ｆｉ：任意の挙動ルール
ｇｉ：むだ時間に起因する新たな収束点を探索する探索関数
η’ｉ：第一のノイズ値
ηｉ：第二のノイズ値
【請求項６】
前記第三工程は、前記評価値と前記目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定し、
前記第四工程は、安定していないと判定された系の現在の挙動に対応する値から順次段階的にノイズ値を大きくし、前記ベクトル距離のｐ乗平均が所定値より小さくなった時点でのノイズ値を乗算することを特徴とする請求項４又は５記載の制御方法。
【請求項７】
Ｎ個の系のそれぞれの挙動が、ノイズに基づく信号を外部から付加することにより所定の挙動に収束するよう制御する制御装置で実行することが可能なコンピュータプログラムであって、
前記制御装置を、
前記Ｎ個の系の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を記憶する記憶手段、及び
前記変数Ａｃｔの値と前記Ｎ個の系のそれぞれの現在の挙動とに応じて、前記系がとるべき次の挙動を決定する決定手段
として機能させ、
前記決定手段を、
前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する判定手段、及び
該判定手段で少なくとも一の系の挙動が安定していないと判定した場合、安定していないと判定された系がとるべき次の挙動を、正数である変数Ａｃｔにノイズ値を乗算して決定する乗算手段
として機能させることを特徴とするコンピュータプログラム。
【請求項８】
前記決定手段を、前記判定手段で少なくとも一の系の挙動が安定していないと判定した場合、（式１）に従って安定していないと判定された系ｉ（ｉ＝１，２，・・・，Ｎ）の少なくとも１つがとるべき次の挙動を決定する手段として機能させることを特徴とする請求項７記載のコンピュータプログラム。
ｂ’ｉ＝ｂｉ＋（ｆｉ（ｂ１，ｂ２，・・・，ｂＮ）＋ｇｉ（η’ｉ））
×Ａｃｔ＋ηｉ                          ・・・（式１）
なお、  Ｎ：２以上の任意の整数
ｂ’ｉ：系ｉがとるべき次の挙動
ｂｉ：系ｉの現在の挙動
ｆｉ：任意の挙動ルール
ｇｉ：むだ時間に起因する新たな収束点を探索する探索関数
η’ｉ：第一のノイズ値
ηｉ：第二のノイズ値
【請求項９】
前記判定手段を、
前記評価値と前記目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する手段
として機能させ、
前記乗算手段を、
安定していないと判定された系の現在の挙動に対応する値から順次段階的にノイズ値を大きくし、前記ベクトル距離のｐ乗平均が所定値より小さくなった時点でのノイズ値を乗算する手段
として機能させることを特徴とする請求項７又は８記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、むだ時間を含むＮ個（Ｎは自然数）の系の動作を制御する制御装置、制御方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
従来のノイマン型コンピュータは、処理の流れを記述した手続き型言語で記載されたコンピュータプログラムにより、所定の処理を実行する。処理を順次実行するコンピュータプログラムでは、予め予期することが可能なイベントには対処することができる。すなわち、どのようなイベントに対してどのように処理を実行するべきかを示す仕様さえ決定していれば、その仕様を満たすコンピュータプログラムを作成することは容易である。
【０００３】
一方、予め予期することが不可能なイベントに対しては、処理を順次実行するコンピュータプログラムでは対応することができない。予め予期することが不可能なイベントの発生条件等をコンピュータプログラムにより記述することができないからである。
【０００４】
そこで、例えば特許文献１では、制御目標から離れている場合には大きいノイズを、近づくにつれて小さいノイズを加算することで、予め予期することが不可能なイベントが発生した場合であっても、評価値を制御目標となる収束点（目標値）へと近づけることができ、収束点に収束させることが可能なシステムが開示されている。また、非特許文献１では、人間が指先に載せた棒を、バランスを維持しつつ指先に立たせる動作の実験において、一定の条件下ではランダムにノイズを付加することにより、より安定して立たせることができることが報告されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３８２１３８８号公報
【非特許文献】
【０００６】
【非特許文献１】ジュアン  エル  カブレラ（Ｊｕａｎ  Ｌ．Ｃａｂｒｅｒａ）、ジョン  ジー  ミルトン（Ｊｏｈｎ  Ｇ．Ｍｉｌｔｏｎ）、「人間のバランス維持動作におけるオンオフ制御（Ｏｎ−Ｏｆｆ  Ｉｎｔｅｒｍｉｔｔｅｎｃｙ  ｉｎ  ａ  Ｈｕｍａｎ  Ｂａｌａｎｃｉｎｇ  Ｔａｓｋ）」、フィジカル  レビュー  レターズ、ボリューム８９、ナンバー１５、２００２年９月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示されているシステムでは、制御目標となる収束点に系の動作が収束した場合、単調増加関数Ｆ（Ａｃｔ）の値が大きくなることから、ノイズは比較的小さくなる。この状態で外部環境が急変する場合等を考えたとき、制御目標となる収束点は当初の収束点とは異なるため、新たな収束点を探索するためには単調増加関数Ｆ（Ａｃｔ）の値を小さく、すなわち変数Ａｃｔの値を小さくする必要が生じる。しかし、実際には一定のむだ時間を伴って変数Ａｃｔの値は変化するので、変数Ａｃｔの値が大きい状態、すなわち単調増加関数Ｆ（Ａｃｔ）の値が大きい状態で新たな収束点の探索を開始する。したがって、新たな収束点を見出すことができないおそれがあり、系の動作が収束しないおそれがあるという問題点があった。
【０００８】
また、系の数が膨大な場合、系ごとに適切なノイズを特定することが困難であり、すべての系の動作をそれぞれに固有の収束点に収束させることが困難であることは周知である。
【０００９】
本発明は、斯かる事情に鑑みてなされたものであり、制御対象となる系の数が膨大であっても、収束点に系の動作を収束させることができる制御装置、制御方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために第１発明に係る制御装置は、Ｎ個の系のそれぞれの挙動が、ノイズに基づく信号を外部から付加することにより所定の挙動に収束するよう制御する制御装置であって、前記Ｎ個の系の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を記憶する記憶部と、前記変数Ａｃｔの値と前記Ｎ個の系のそれぞれの現在の挙動とに応じて、前記系がとるべき次の挙動を決定する決定部とを備え、前記決定部は、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する判定手段と、該判定手段で少なくとも一の系の挙動が安定していないと判定した場合、安定していないと判定された系がとるべき次の挙動を、正数である変数Ａｃｔにノイズ値を乗算して決定する乗算手段とを備えることを特徴とする。
【００１１】
また、第２発明に係る制御装置は、第１発明において、前記決定部は、前記判定手段で少なくとも一の系の挙動が安定していないと判定した場合、（式１）に従って安定していないと判定された系ｉ（ｉ＝１，２，・・・，Ｎ）の少なくとも１つがとるべき次の挙動を決定するようにしてあることを特徴とする。
ｂ’ｉ＝ｂｉ＋（ｆｉ（ｂ１，ｂ２，・・・，ｂＮ）＋ｇｉ（η’ｉ））
×Ａｃｔ＋ηｉ                          ・・・（式１）
なお、  Ｎ：２以上の任意の整数
ｂ’ｉ：系ｉがとるべき次の挙動
ｂｉ：系ｉの現在の挙動
ｆｉ：任意の挙動ルール
ｇｉ：むだ時間に起因する新たな収束点を探索する探索関数
η’ｉ：第一のノイズ値
ηｉ：第二のノイズ値
【００１２】
また、第３発明に係る制御装置は、第１又は第２発明において、前記判定手段は、前記評価値と前記目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定するようにしてあり、前記乗算手段は、安定していないと判定された系の現在の挙動に対応する値から順次段階的にノイズ値を大きくし、前記ベクトル距離のｐ乗平均が所定値より小さくなった時点でのノイズ値を乗算するようにしてあることを特徴とする。
【００１３】
次に、上記目的を達成するために第４発明に係る制御方法は、Ｎ個の系のそれぞれの挙動が、ノイズに基づく信号を外部から付加することにより所定の挙動に収束するよう制御する制御装置で実行することが可能な制御方法であって、前記制御装置は、前記Ｎ個の系の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を記憶する第一工程と、前記変数Ａｃｔの値と前記Ｎ個の系のそれぞれの現在の挙動とに応じて、前記系がとるべき次の挙動を決定する第二工程とを含み、前記第二工程は、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する第三工程と、少なくとも一の系の挙動が安定していないと判定した場合、安定していないと判定された系がとるべき次の挙動を、正数である変数Ａｃｔにノイズ値を乗算して決定する第四工程とを含むことを特徴とする。
【００１４】
また、第５発明に係る制御方法は、第４発明において、前記第二工程は、少なくとも一の系の挙動が安定していないと判定した場合、（式１）に従って安定していないと判定された系ｉ（ｉ＝１，２，・・・，Ｎ）の少なくとも１つがとるべき次の挙動を決定することを特徴とする。
ｂ’ｉ＝ｂｉ＋（ｆｉ（ｂ１，ｂ２，・・・，ｂＮ）＋ｇｉ（η’ｉ））
×Ａｃｔ＋ηｉ                          ・・・（式１）
なお、  Ｎ：２以上の任意の整数
ｂ’ｉ：系ｉがとるべき次の挙動
ｂｉ：系ｉの現在の挙動
ｆｉ：任意の挙動ルール
ｇｉ：むだ時間に起因する新たな収束点を探索する探索関数
η’ｉ：第一のノイズ値
ηｉ：第二のノイズ値
【００１５】
また、第６発明に係る制御方法は、第４又は第５発明において、前記第三工程は、前記評価値と前記目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定し、前記第四工程は、安定していないと判定された系の現在の挙動に対応する値から順次段階的にノイズ値を大きくし、前記ベクトル距離のｐ乗平均が所定値より小さくなった時点でのノイズ値を乗算することを特徴とする。
【００１６】
次に、上記目的を達成するために第７発明に係るコンピュータプログラムは、Ｎ個の系のそれぞれの挙動が、ノイズに基づく信号を外部から付加することにより所定の挙動に収束するよう制御する制御装置で実行することが可能なコンピュータプログラムであって、前記制御装置を、前記Ｎ個の系の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を記憶する記憶手段、及び前記変数Ａｃｔの値と前記Ｎ個の系のそれぞれの現在の挙動とに応じて、前記系がとるべき次の挙動を決定する決定手段として機能させ、前記決定手段を、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する判定手段、及び該判定手段で少なくとも一の系の挙動が安定していないと判定した場合、安定していないと判定された系がとるべき次の挙動を、正数である変数Ａｃｔにノイズ値を乗算して決定する乗算手段として機能させることを特徴とする。
【００１７】
また、第８発明に係るコンピュータプログラムは、第７発明において、前記決定手段を、前記判定手段で少なくとも一の系の挙動が安定していないと判定した場合、（式１）に従って安定していないと判定された系ｉ（ｉ＝１，２，・・・，Ｎ）の少なくとも１つがとるべき次の挙動を決定する手段として機能させることを特徴とする。
ｂ’ｉ＝ｂｉ＋（ｆｉ（ｂ１，ｂ２，・・・，ｂＮ）＋ｇｉ（η’ｉ））
×Ａｃｔ＋ηｉ                          ・・・（式１）
なお、  Ｎ：２以上の任意の整数
ｂ’ｉ：系ｉがとるべき次の挙動
ｂｉ：系ｉの現在の挙動
ｆｉ：任意の挙動ルール
ｇｉ：むだ時間に起因する新たな収束点を探索する探索関数
η’ｉ：第一のノイズ値
ηｉ：第二のノイズ値
【００１８】
また、第９発明に係るコンピュータプログラムは、第７又は第８発明において、前記判定手段を、前記評価値と前記目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで、前記Ｎ個の系のそれぞれの挙動が安定しているか否かを判定する手段として機能させ、前記乗算手段を、安定していないと判定された系の現在の挙動に対応する値から順次段階的にノイズ値を大きくし、前記ベクトル距離のｐ乗平均が所定値より小さくなった時点でのノイズ値を乗算する手段として機能させることを特徴とする。
【００１９】
第１発明、第４発明及び第７発明では、Ｎ個の系の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を記憶する。変数Ａｃｔの値とＮ個の系のそれぞれの現在の挙動とに応じて、系がとるべき次の挙動を決定する。Ｎ個の系のそれぞれの挙動が安定しているか否かを判定し、少なくとも一の系の挙動が安定していないと判定した場合、安定していないと判定された系がとるべき次の挙動を、正数である変数Ａｃｔにノイズ値を乗算して決定する。これにより、外部の環境が大きく変化した場合、ノイズ値を加算するだけでは挙動が発散するおそれがあったが、ノイズ値を乗算することにより、安定していないと判定された系の挙動についても収束させることが可能となる。また、系の数が膨大であっても、むだ時間による影響を最小限にしつつ挙動を収束させることが可能となる。
【００２０】
第２発明、第５発明及び第８発明では、少なくとも一の系の挙動が安定していないと判定した場合、（式１）に従って安定していないと判定された系ｉ（ｉ＝１，２，・・・，Ｎ）の少なくとも１つがとるべき次の挙動を決定する。これにより、外部の環境が大きく変化した場合、ノイズ値を加算するだけでは挙動が発散するおそれがあったが、ノイズ値を引数として変数Ａｃｔに乗算された探索関数ｇｉを用いることにより、安定していないと判定された系の挙動についても収束させることが可能となる。また、系の数が膨大であっても、むだ時間による影響を最小限にしつつ挙動を収束させることが可能となる。
【００２１】
第３発明、第６発明及び第９発明では、評価値と目標値とのベクトル距離のｐ乗平均が所定値より小さいか否かで、Ｎ個の系のそれぞれの挙動が安定しているか否かを判定し、安定していないと判定された系の現在の挙動に対応する値から順次段階的にノイズ値を大きくし、ベクトル距離のｐ乗平均が所定値より小さくなった時点でのノイズ値を乗算する。これにより、安定していないと判定された系であっても、確実に挙動を収束させることができるノイズ値を乗算することができ、外部の環境の変化に応じて挙動を制御することが可能となる。
【発明の効果】
【００２２】
上記構成により、外部の環境が大きく変化した場合、ノイズ値を加算するだけでは挙動が発散するおそれがあったが、ノイズ値を乗算することにより、安定していない系の挙動についても収束させることが可能となる。また、系の数が膨大であっても、むだ時間による影響を最小限にしつつ挙動を収束させることが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施の形態に係る制御装置を含む制御システムの構成を示すブロック図である。
【図２】本発明の実施の形態に係る制御装置を、ＣＰＵを用いて構成した例を示すブロック図である。
【図３】本発明の実施の形態に係る制御装置の機能ブロック図である。
【図４】被制御体として倒立振子を用いる場合の構成例を示す模式図である。
【図５】本発明の実施の形態に係る制御装置で定義されるポテンシャル関数の一例を示すグラフである。
【図６】本発明の実施の形態に係る制御装置の制御対象となる倒立振子の模式図である。
【図７】倒立振子の動作を制御する制御フローを示すブロック図である。
【図８】目標値の候補点を‘１’とした場合の目標値の時間変化を示すグラフである。
【図９】目標値の候補点を‘０’とした場合の目標値の時間変化を示すグラフである。
【図１０】目標値の候補点を‘−１’とした場合の目標値の時間変化を示すグラフである。
【図１１】ノイズ値を乗算した場合の倒立振子の動作を制御する制御フローを示すブロック図である。
【図１２】乗算ノイズ強度を０．１として傾斜角度の時間変化を示すグラフである。
【図１３】本発明の実施の形態に係る制御装置のＣＰＵの処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、以下の実施の形態では、ランダムな移動を繰り返す台車の上面に設置した倒立振子を例に挙げて説明するが、ノイズを外部から付加することにより所定の挙動へ収束させる制御系に用いる制御装置であれば、特に限定されるものではない。
【００２５】
図１は、本発明の実施の形態に係る制御装置を含む制御システムの構成を示すブロック図である。本発明の実施の形態に係る制御装置１は、被制御体（系）２、２、・・・の挙動を示す物性値を検出する各種のセンサ３、３、・・・が発する信号を受信し、被制御体２ごとの挙動を把握する。挙動に応じて、被制御体２、２、・・・を動作させるアクチュエータ４、４、・・・に動作信号を送信する。
【００２６】
図２は、本発明の実施の形態に係る制御装置１を、ＣＰＵを用いて構成した例を示すブロック図である。図２に示すように、制御装置１は、少なくともＣＰＵ（中央演算装置）１１、メモリ１２、記憶装置１３、Ｉ／Ｏインタフェース１４、ビデオインタフェース１５、可搬型ディスクドライブ１６、通信インタフェース１７及び上述したハードウェアを接続する内部バス１８で構成されている。
【００２７】
ＣＰＵ１１は、内部バス１８を介して制御装置１の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置１３に記憶しているコンピュータプログラム１００に従って、種々のソフトウェア的機能を実行する。メモリ１２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１００の実行時にロードモジュールが展開され、コンピュータプログラム１００の実行時に発生する一時的なデータ等を記憶する。
【００２８】
記憶装置１３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置１３に記憶しているコンピュータプログラム１００は、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体９０から、可搬型ディスクドライブ１６によりダウンロードされ、実行時には記憶装置１３からメモリ１２へ展開して実行される。もちろん、通信インタフェース１７を介して、接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。
【００２９】
通信インタフェース１７は内部バス１８に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワークに接続されることにより、外部のコンピュータ、あるいはセンサ３、３、・・・、アクチュエータ４、４、・・・等とデータ送受信を行うことが可能となっている。
【００３０】
Ｉ／Ｏインタフェース１４は、キーボード２１、マウス２２等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース１５は、ＣＲＴモニタ、ＬＣＤ等の表示装置２３と接続され、所定の画像を表示する。
【００３１】
なお、図１の例では、制御装置１が全てのアクチュエータ４、４、・・・の動作を制御しているが、特にこの形態に限定されるものではなく、所定数のアクチュエータ４、４、・・・の動作を制御するコンピュータを設け、制御装置１がそれらのコンピュータの動作を制御するようにしても良いし、被制御体２ごとにマイクロコンピュータを設け、アクチュエータ４の動作を制御しても良い。また、制御装置１と、センサ３、３、・・・、アクチュエータ４、４、・・・との間はデータ通信を行うことができれば足り、図１に示すような有線通信であっても良いし、無線通信であっても良い。
【００３２】
以下、上述した構成の制御装置１の動作について説明する。図３は、本発明の実施の形態に係る制御装置１の機能ブロック図である。Ａｃｔ記憶部（記憶部）３０１は、Ｎ個の被制御体２、２、・・・の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を、記憶装置１３に記憶する。
【００３３】
挙動決定部（決定部）３０２は、変数Ａｃｔの値とＮ個の被制御体２、２、・・・のそれぞれの現在の挙動とに応じて、被制御体２ごとにとるべき次の挙動を決定する。
【００３４】
ここで、変数Ａｃｔの値は、複数（Ｎ個）の系、すなわち複数の被制御体２、２、・・・の状態の活性度（Ａｃｔｉｖｉｔｙ）を示す。被制御体２、２、・・・の状態の活性度とは、被制御体２、２、・・・の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した指標である。例えば、変数Ａｃｔの値は、１／｜（評価値）−（目標値）｜と定義することができる。ここで、評価値は計測することが可能な値である必要がある。目標値は、被制御体２、２、・・・の状態に基づいて決定される評価値を収束させる所望の値として任意に設定される。
【００３５】
図４は、被制御体２として倒立振子を用いる場合の構成例を示す模式図である。図４に示すように、倒立振子４１は、台車４２の上面に設置されており、台車４２をアクチュエータ４により矢印方向へランダムに移動させることにより、倒立振子４１が鉛直方向を向いている状態に維持する。アクチュエータ４として、例えば空気圧を用いるタイプでは、電磁弁を用いることで、ポンプ４３からの圧縮空気の供給を、パルス信号を用いる場合のようにオンオフ制御することができる。また、レギュレータを用いることで、ポンプ４３からの圧縮空気を連続的に供給することができる。
【００３６】
倒立振子４１の傾斜角度は、センサ３により制御装置１が取得する。センサ３は、例えば倒立振子４１を側面から撮像するカメラであり、撮像した画像データを画像処理することにより、鉛直方向からの倒立振子４１の傾斜角度を取得することができる。
【００３７】
このように、被制御体２、２、・・・を複数の倒立振子４１、４１、・・・とした場合、複数の倒立振子４１、４１、・・・の状態に基づいて決定される評価値は、各倒立振子４１の傾斜角度である。目標値は、倒立振子４１が釣り合う角度、すなわち傾斜角度０度に設定する。
【００３８】
記憶装置１３に記憶される変数Ａｃｔの値は、時間の経過につれて変化する倒立振子４１の挙動を反映するように更新される。変数Ａｃｔの値を更新するタイミングは任意のタイミングで構わない。変数Ａｃｔの値を更新する態様も特に限定されるものではない。
【００３９】
例えば、所望の状態が「倒立振子４１が鉛直方向を向いている状態」であり、目標値が「傾斜角度０度」である場合、変数Ａｃｔの値の更新は、以下の手順で行う。一定の期間（例えば、１秒）ごとに記憶装置１３に記憶する変数Ａｃｔの値をＣＰＵ１１がリセットし、各倒立振子４１の傾斜角度を検出するセンサ３が、一定の期間内における傾斜角度を検出して、各センサ３が一定の期間内に検出した傾斜角度を制御装置１へ送信する。制御装置１のＣＰＵ１１は、受信した傾斜角度の平均値を評価値として算出し、評価値が目標値にどれくらい近いかを反映した値（例えば、評価値と目標値との差の絶対値の逆数）を算出し、算出した値を変数Ａｃｔの値として記憶装置１３に記憶（更新）する。
【００４０】
図３に戻って、挙動決定部３０２は、安定判定部（判定手段）３０３及びノイズ乗算部（乗算手段）３０４を備えている。安定判定部３０３は、Ｎ個の系のそれぞれ、すなわちＮ個の被制御体２、２、・・・のそれぞれの挙動が安定しているか否かを判定する。被制御体２が倒立振子４１である場合、倒立振子４１が鉛直方向を向いている状態へ収束するように挙動していることを「挙動が安定している」と定義する。
【００４１】
特許文献１に開示されている制御方法では、「挙動が安定している」と判定された場合には効果的に次の挙動を決定することができる。しかし、大きな外力が作用する等の、外部環境が大きく変化する場合には、制御目標となる収束点も変動する。例えば外力が急に作用して倒立振子が大きく傾斜した場合、加算するべきノイズ値は、探索する範囲を広げる必要があるため、傾斜角度が小さいときの目標値のままでは、系の挙動を収束させることができずに発散する可能性が高くなる。そこで、新たな目標値を探索する必要が生じる。そして、新たな目標値を探索するためには変数Ａｃｔの値を小さくして、探索する範囲を広くする必要がある。しかし、実際には一定のむだ時間を伴って変数Ａｃｔの値は変化するので、変数Ａｃｔの値が大きい状態、すなわち狭い範囲で新たな目標値の探索を開始する。したがって、新たな目標値を見出すことができない場合が多く、「挙動が安定していない」と判定される可能性が高いという問題があった。
【００４２】
各被制御体２の挙動が安定しているか否かを判定する方法は特に限定されるものではない。例えば、評価値と目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで安定しているか否かを判定しても良い。
【００４３】
実際には、目標値近傍において目標値の候補をポテンシャル関数で複数個想定して、いわゆるランジュバン方程式に従って状態を記述する。制御対象となる倒立振子４１の傾斜角度をθ、目標値をθ* とした場合であって、目標値の候補点を｛−１、０、１｝とする。このとき、ランジュバン方程式におけるポテンシャル関数Ｕ（θ* ）は、目標値θ* の候補点が｛−１、０、１｝のときに最小値０（ゼロ）となる関数として定義される。
【００４４】
図５は、本発明の実施の形態に係る制御装置１で定義されるポテンシャル関数Ｕ（θ* ）の一例を示すグラフである。図５に示すように、ポテンシャル関数Ｕ（θ* ）は、目標値θ* の候補点が｛−１、０、１｝のときにポテンシャル関数Ｕ（θ* ）が０（ゼロ）となる関数として定義される。もちろん、図５に示すような折れ線状の関数に限定されるものではなく、目標値θ* の候補点が｛−１、０、１｝のときにポテンシャル関数Ｕ（θ* ）が極小値０（ゼロ）となる関数であれば特に限定されるものではない。
【００４５】
ポテンシャル関数Ｕ（θ* ）を用いて、ランジュバン方程式は（式２）に示すように表すことができる。なお、（式２）において、σはノイズ強度パラメータを、η（ｔ）はノイズ値を、それぞれ示している。
【００４６】
【数１】
0005471401.tif 000002
【００４７】
そして、目標値θ* の候補点それぞれにおいて、安定しているか否かを判定する。例えば初期値θ（０）をθ* ＋０．０１とし、一定時間Ｔだけ経過した時点での傾斜角度θ（Ｔ）と目標値θ* との差分が、初期値として設定した誤差の期待値０．０１よりも小さい場合には安定していると、大きい場合には安定していないと、それぞれ判定する。
【００４８】
以下、制御対象となる倒立振子４１を、図６のように簡素化して具体的な判定処理について説明する。図６は、本発明の実施の形態に係る制御装置１の制御対象となる倒立振子４１の模式図である。図６に示すように、以下の検討では、質量ｍの球体を先端に備え、長さｌの剛体にて回転中心Ｏを中心として所定の平面内にて傾斜する倒立振子４１の挙動に基づいて、安定しているか否かを判定する。
【００４９】
図６に示す倒立振子４１では、慣性モーメントＩがｍｌ2 となり、（式３）に示すような運動方程式が成立する。
【００５０】
【数２】
0005471401.tif 000003
【００５１】
（式３）において、ωは倒立振子４１の傾斜角度の角速度を、γは係数を、ｃはフィードバックゲインを、τはむだ時間を、それぞれ示している。図７は、倒立振子４１の動作を制御する制御フローを示すブロック図である。
【００５２】
図７に示すように、目標値θ* の候補点θ**の入力を、それぞれ定数の入力として受け付けている。図７では、目標値θ* の候補点θ**として定数‘１’の入力を受け付けた場合を示しているが、目標値θ* の候補点θ**が‘０’又は‘−１’の場合には、それぞれ定数‘０’、定数‘−１’の入力を同様に受け付ける。
【００５３】
制御プロセスは、まず、むだ時間τだけ遅れる目標値θ* と入力を受け付けた目標値θ* の候補点θ**との差分εを算出して、算出した差分εに基づいて、台車４２の操作量ｇ（ε）を求める。図７の例ではフィードバックゲインｃを定数と仮定しているので、台車４２の操作量ｇ（ε）は−ｃε（作用する方向が逆）となる。
【００５４】
操作量ｇ（ε）に従って台車４２を動作させることにより、倒立振子４１は所定の挙動ｂ’を行う。すなわち、倒立振子４１の挙動を示す運動方程式は、（式３）の代わりに、（式４）のように表すことができる。
【００５５】
ｂ’＝ｂ＋ｆ（ｂ）＋ｇ（ε）            ・・・（式４）
【００５６】
次に、センサ３が検出する傾斜角度θに基づく現在の挙動ｂと、運動方程式（式４）から求まる次の挙動ｂ’との時間差、すなわちむだ時間τを求めて、差分εの算出へとフィードバックする。これを繰り返すことにより、一定時間Ｔが経過した時点で挙動が安定しているか否かを判定することができる。すなわち、一定時間Ｔが経過した時点で、算出した差分εが、初期値として設定した誤差の期待値０．０１よりも小さい場合には安定していると、大きい場合には安定していないと、それぞれ判定することができる。
【００５７】
図８は、目標値θ* の候補点θ**を‘１’とした場合の目標値θ* の時間変化を示すグラフであり、図９は、目標値θ* の候補点θ**を‘０’とした場合の目標値θ* の時間変化を示すグラフであり、図１０は、目標値θ* の候補点θ**を‘−１’とした場合の目標値θ* の時間変化を示すグラフである。図８及び図１０では、それぞれ一定時間Ｔが経過した時点で、目標値θ* は、目標値θ* の候補点θ**‘１’、‘−１’の近傍へと収束しており、目標値θ* の候補点θ**と目標値θ* との差分εが、初期値として設定した誤差の期待値０．０１よりも小さいことが読み取れる。したがって、安定していると判定することができる。
【００５８】
一方、図９では、一定時間Ｔが経過した時点で、目標値θ* は、目標値θ* の候補点θ**‘０’から離れるように発散しており、目標値θ* の候補点θ**と目標値θ* との差分εが、初期値として設定した誤差の期待値０．０１よりも大きいことが読み取れる。したがって、安定してしないと判定することができる。
【００５９】
図３に戻って、ノイズ乗算部３０４は、安定判定部３０３にて安定していないと判定された系、すなわち安定してしないと判定された被制御体２について、（式１）に従って次の挙動を決定する。
【００６０】
ｂ’ｉ＝ｂｉ＋（ｆｉ（ｂ１，ｂ２，・・・，ｂＮ）＋ｇｉ（η’ｉ））
×Ａｃｔ＋ηｉ                          ・・・（式１）
【００６１】
なお、（式１）において、Ｎは２以上の任意の整数を、ｂ’ｉは系ｉがとるべき次の挙動を、ｂｉは系ｉの現在の挙動を、ｆｉは任意の挙動ルールを、ｇｉはむだ時間τに起因する新たな収束点を探索する探索関数を、η’ｉは第一のノイズ値を、ηｉは第二のノイズ値を、それぞれ示している。
【００６２】
具体的には、ｂ’ｉは倒立振子４１がとるべき次の挙動を示し、ｂｉは倒立振子４１の現在の挙動を示している。ｆｉは所定のルールを示し、他の倒立振子４１、４１、・・・の状態に応じて次の挙動を決定する。
【００６３】
所定のルールｆｉは、例えば公知の「ｉｆ〜ｔｈｅｎ〜ｅｌｓｅ〜」形式で記述されたルールであっても良い。このようなルールは、予め予期することが可能なイベントに対処することができるよう、事前に設定しておくことができる。当業者であれば、どのようなイベントに対してどのように対処すべきかを示す仕様さえ与えられれば、その仕様を満たす１以上のルールを容易に設定することができる。
【００６４】
ただし、予め予期することが不可能なイベントに対しては、このようなルール指向のプログラミングは無力である。予め予期することが不可能なイベントの発生条件等をコンピュータプログラムにて記述することができないからである。
【００６５】
なお、所定のルールｆｉは必ずしも最適なルールである必要はない。本発明は、与えられた所定のルールｆｉの範囲内で最適化を図る方法だからである。また、所定のルールｆｉは、必ずしも制御対象の物理法則に基づいたルールである必要はない。制御対象が過剰に複雑であり、最適なルールを物理法則に従って決めることが困難な場合であっても、扱いやすいシンプルなルールｆｉを設定し、制御を実行することが可能である。
【００６６】
また、所定のルールｆｉが、被制御体２、２、・・・の現在の挙動ｂ１〜ｂＮのすべてに依存していることも必須ではない。所定のルールｆｉは、被制御体２、２、・・・の現在の挙動ｂ１〜ｂＮの少なくとも１つに依存していればよい。また、所定のルールｆｉは、被制御体２、２、・・・の現在の挙動ｂ１〜ｂＮの少なくとも１つに加えて、被制御体２の状態に基づいて決定される少なくとも１つの変数に依存するようにしてもよい。
【００６７】
ｇｉは探索関数であり、運動方程式（式４）における操作量ｇに相当する。探索関数ｇｉは、第一のノイズ値η’ｉを引数として変数Ａｃｔに乗算されている。例えば探索関数ｇｉを、スカラー積として乗算ノイズ強度（ノイズ値）σ’を乗算する関数とした場合、ｇｉ（η’ｉ）はσ’η’ｉとなる。
【００６８】
このようにノイズ値を変数Ａｃｔに乗算することにより、安定していないと判定された系の挙動を安定させることができる。図１１は、ノイズ値を乗算した場合の倒立振子４１の動作を制御する制御フローを示すブロック図である。
【００６９】
図１１に示すように、目標値θ* を設定し、むだ時間τだけ遅れた傾斜角度θの値と設定した目標値θ*
との差分εを算出して、算出した差分εに基づいて、台車４２の操作量ｇ（ε）を求める。図１１の例では、フィードバックゲインｃを定数と仮定しているが、台車４２の操作量ｇ（ε）は、ノイズη’の関数ともなるので、操作量ｇ（ε、η’）は、（ｃ＋σ’η’）εとなる。
【００７０】
操作量ｇ（ε、η’）に従って台車４２を動作させることにより、倒立振子４１は所定の挙動ｂ’を行う。すなわち、倒立振子４１の挙動を示す運動方程式は、（式５）のように表すことができる。
【００７１】
ｂ’＝ｂ＋ｆ（ｂ）＋ｇ（ε、η’）            ・・・（式５）
【００７２】
次に、センサ３が検出する傾斜角度θに基づく現在の挙動ｂと、運動方程式（式５）から求まる次の挙動ｂ’との時間差、すなわちむだ時間τを求めて、差分εの算出へとフィードバックする。これを繰り返すことにより、一定時間Ｔが経過した時点で挙動が安定しているか否かを判定することができる。すなわち、一定時間Ｔが経過した時点で、算出した差分εが、設定した期待値、例えば０．０１よりも小さい場合には安定していると、大きい場合には安定していないと、それぞれ判定することができる。したがって、乗算ノイズ強度σ’を変更することで、挙動が安定していない系であっても安定させることが可能な乗算ノイズ強度σ’を見出してノイズ値として乗算することにより、挙動を収束させることができる。
【００７３】
乗算ノイズ強度σ’の大きさを特定する方法は、特に限定されるものではない。例えば、所定の初期値から順次段階的に乗算ノイズ強度σ’を大きくしていき、それぞれ算出した差分εが、設定した期待値、例えば０．０１よりも小さくなった時点でのノイズ値を乗算ノイズ強度σ’に特定しても良い。
【００７４】
また、安定しているか否かを、差分ではなくベクトル距離のｐ乗平均にて判定しても良い。すなわち、評価値と目標値とのベクトル距離のｐ乗（ｐは自然数）平均が所定値より小さいか否かで安定しているか否かを判定する。この場合、ベクトル距離のｐ乗平均が所定値より小さくなった時点での乗算ノイズ強度σ’をノイズ値として乗算する。
【００７５】
図９では、目標値θ* の候補点θ**を‘０’とした場合、目標値θ* の候補点θ**と目標値θ* との差分εが、初期値として設定した誤差の期待値０．０１よりも大きいので安定していないと判定している。この場合について、乗算ノイズ強度σ’を０．１として傾斜角度θの時間変化を調べた。
【００７６】
図１２は、乗算ノイズ強度σ’を０．１として傾斜角度θの時間変化を示すグラフである。乗算ノイズ強度σ’を乗算しない場合の傾斜角度θの時間変化１２１に対して、５回試行したところ、うち３回は設定した期待値０．０１よりも小さい差分へと収束していることがわかる。実際には１０００個前後のデータから、確率的に収束しているか否かを判定する。したがって、乗算ノイズ強度σ’を乗算することにより、従来は収束することがなく安定させることができなかった系の挙動を収束させることが可能となる。
【００７７】
図１３は、本発明の実施の形態に係る制御装置１のＣＰＵ１１の処理手順を示すフローチャートである。図１３において、本実施の形態に係る制御装置１のＣＰＵ１１は、Ｎ個の被制御体２、２、・・・の状態に基づいて決定される評価値が目標値にどれくらい近いかを反映した変数Ａｃｔの値を、記憶装置１３に記憶する（ステップＳ１３０１）。
【００７８】
ＣＰＵ１１は、Ｎ個の被制御体２、２、・・・のそれぞれの挙動の目標値の候補点の入力を受け付け（ステップＳ１３０２）、目標値の候補点の全てにおいて挙動が安定しているか否かを判定する（ステップＳ１３０３）。挙動が安定しているか否かの判定方法は、上述した方法を含めて特に限定されるものではない。
【００７９】
ＣＰＵ１１が、目標値の候補点の全てにおいて挙動が安定していると判定した場合（ステップＳ１３０３：ＹＥＳ）、ＣＰＵ１１は、従来の方法、例えば特許文献１にて開示してある方法により挙動を決定する（ステップＳ１３０４）。ＣＰＵ１１が、挙動が安定していない目標値の候補点が存在すると判定した場合（ステップＳ１３０３：ＮＯ）、ＣＰＵ１１は、安定していないと判定された目標値の候補点について、所定の乗算ノイズ強度（ノイズ値）σ’を変数Ａｃｔに乗算して（ステップＳ１３０５）、挙動が安定しているか否かを判定する（ステップＳ１３０６）。挙動が安定しているか否かの判定は確率的に行い、所定の確率の範囲内で一定値に収束する場合を挙動が安定していると判定する。
【００８０】
ＣＰＵ１１が、挙動が安定していないと判定した場合（ステップＳ１３０６：ＮＯ）、ＣＰＵ１１は、所定値αだけ乗算ノイズ強度（ノイズ値）σ’をインクリメントし（ステップＳ１３０７）、インクリメントした値を乗算ノイズ強度（ノイズ値）σ’として、処理をステップＳ１３０５へ戻して、上述した処理を繰り返す。ＣＰＵ１１が、挙動が安定していると判定した場合（ステップＳ１３０６：ＹＥＳ）、その時点での乗算ノイズ強度（ノイズ値）σ’を用いて挙動を決定する（ステップＳ１３０８）。
【００８１】
以上のように本実施の形態によれば、外部の環境が大きく変化した場合、ノイズを加算するだけでは挙動が発散するおそれがあったが、ノイズ値を乗算することにより、安定していない系の挙動を収束させることが可能となる。また、系の数が膨大であっても、むだ時間による影響を最小限にしつつ挙動を収束させることが可能となる。
【００８２】
その他、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変形、置換等が可能であることは言うまでもない。
【符号の説明】
【００８３】
１  制御装置
２  被制御体
３  センサ
４  アクチュエータ
１１  ＣＰＵ
１２  メモリ
１３  記憶装置
１４  Ｉ／Ｏインタフェース
１５  ビデオインタフェース
１６  可搬型ディスクドライブ
１７  通信インタフェース
１８  内部バス
４１  倒立振子
９０  可搬型記録媒体
１００  コンピュータプログラム
【図１】
0005471401.tif 000004
【図２】
0005471401.tif 000005
【図３】
0005471401.tif 000006
【図４】
0005471401.tif 000007
【図５】
0005471401.tif 000008
【図６】
0005471401.tif 000009
【図７】
0005471401.tif 000010
【図８】
0005471401.tif 000011
【図９】
0005471401.tif 000012
【図１０】
0005471401.tif 000013
【図１１】
0005471401.tif 000014
【図１２】
0005471401.tif 000015
【図１３】
0005471401.tif 000016