(57)【要約】【課題】プランの実行中に、プラント関係のない他のアクションが入ったとしても、その後も、比較的簡易な方法で正しいプランを保証できるようなプラン実行装置の提供。【解決手段】プラン格納部１１に格納されるプランを実行中に、アクション緊急実行管理部１７から前記プランと関係の無い緊急のアクションを実行した場合、例外アクション副作用知識格納部１５を参照し、実行された緊急のアクションを取り消すための取り消しアクションを得て、この取り消しアクションを用いて前記プランを修正する。【選択図】  図１
2005025407.tif 000002
【特許請求の範囲】
【請求項１】
１又は複数のアクションを示す情報を含むプランを格納するプラン格納手段と、
前記プラン格納手段に格納されるプランの先頭のアクションを示す情報を取り出して出力する第１の出力手段と、
前記プランと関係の無いアクションを示す情報を一つ以上予め定義しておき、必要に応じて一つ選択して出力する第２の出力手段と、
前記第１の出力手段から出力されるアクションを示す情報と、前記第２の出力手段から出力されるアクションを示す情報とを入力し、一つのアクションを示す情報を選択し、選択したアクションを示す情報を含む実行指示を行なう実行指示手段と、
前記実行指示手段からの実行指示を受け、その実行指示に含まれるアクションを示す情報により特定されるアクションを実行するアクション実行手段と、
前記プランと関係の無いアクションを前記アクション実行手段で実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識格納手段と、
前記プランと関係の無いアクションを前記アクション実行手段で実行した際に、当該アクションについて前記アクション副作用知識格納手段に記憶されている知識に基づいて、前記プラン格納手段に記憶されるプランの内容を必要に応じて修正するプラン修正手段とを備えたところを特徴とするプラン実行装置。
【請求項２】
更に、実行したアクションが連続して行うべきサブプランの先頭のアクションで、かつ、該サブプランがプランの先頭に出現するときに、実行済みアクションを取り除いた該サブプランの残りをガード格納領域に格納するサブプラン格納手段を備え、
前記プラン修正手段は、前記ガード格納領域の内容に基づいて、前記プランの複数の先頭のアクションを示す情報から一つを選択し、該情報を基準としてプランを修正するようにしたことを特徴とする請求項１記載のプラン実行装置。
【請求項３】
前記プラン修正手段は、前記プランの先頭に該副作用を取り消すためのアクションを挿入するようにして、プランを修正することを特徴とする請求項１記載のプラン実行装置。
【請求項４】
前記プラン修正手段は、前記ガード格納領域に格納する該サブプランの先頭に該副作用を取り消すためのアクションを挿入するようにして、該サブプランを修正することを特徴とする請求項２記載のプラン実行装置。
【請求項５】
１又は複数のアクションを示す情報を含むプランを備えたエージェントを格納するエージェント格納手段と、
前記エージェントが備えるプランの先頭のアクションを示す情報を取り出して出力する第１の出力手段と、
前記プランと関係の無いアクションを示す情報を一つ以上予め定義しておき、必要に応じて一つ選択して出力する第２の出力手段と、
前記第１の出力手段から出力されるアクションを示す情報と、前記第２の出力手段から出力されるアクションを示す情報とを入力し、一つのアクションを示す情報を選択し、選択したアクションを示す情報を含む実行指示を行なう実行指示手段と、
前記実行指示手段からの実行指示を受け、その実行指示に含まれるアクションを示す情報により特定されるアクションを実行するアクション実行手段と、
前記プランと関係の無いアクションを前記アクション実行手段で実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識格納手段と、
前記プランと関係の無いアクションを前記アクション実行手段で実行した際に、当該アクションについて前記アクション副作用知識格納手段に記憶されている知識に基づいて、前記プランプランの内容を必要に応じて修正するプラン修正手段とを備えたことを特徴とするエージェントプラットフォーム。
【請求項６】
更に、実行したアクションが複数ある先頭のアクションのなかから選ばれたものであり、且つ、実行したアクションに続いて実行しなければならないサブプランがあるときに、該サブプランを前記エージェント内のガード格納領域に格納するサブプラン格納手段を備え、
前記プラン修正手段は、前記ガード格納領域の内容に基づいて、前記プランの複数の先頭のアクションを示す情報から一つを選択し、該情報を基準としてプランを修正するようにしたことを特徴とする請求項５記載のエージェントプラットフォーム。
【請求項７】
１又は複数のアクションを示す情報を含むプランと、前記プランと関係の無いアクションを実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識格納部とを備えたエージェントを格納するエージェント格納手段と、
前記エージェントが備えるプランの先頭のアクションを示す情報を取り出して出力する第１の出力手段と、
前記プランと関係の無いアクションを示す情報を一つ以上予め定義しておき、必要に応じて一つ選択して出力する第２の出力手段と、
前記第１の出力手段から出力されるアクションを示す情報と、前記第２の出力手段から出力されるアクションを示す情報とを入力し、一つのアクションを示す情報を選択し、選択したアクションを示す情報を含む実行指示を行なう実行指示手段と、
前記実行指示手段からの実行指示を受け、その実行指示に含まれるアクションを示す情報により特定されるアクションを実行するアクション実行手段と、
前記プランと関係の無いアクションを前記アクション実行手段で実行した際に、当該アクションについて前記アクション副作用知識格納部に記憶されている知識に基づいて、前記プランの内容を必要に応じて修正するプラン修正手段とを備えたことを特徴とするエージェントプラットフォーム。
【請求項８】
更に、実行したアクションが複数ある先頭のアクションのなかから選ばれたものであり、且つ、実行したアクションに続いて実行しなければならないサブプランがあるときに、該サブプランを前記エージェント内のガード格納領域に格納するサブプラン格納手段を備え、
前記プラン修正手段は、前記ガード格納領域の内容に基づいて、前記プランの複数の先頭のアクションを示す情報から一つを選択し、該情報を基準としてプランを修正するようにしたことを特徴とする請求項７記載のエージェントプラットフォーム。
【請求項９】
１又は複数のアクションを示す情報を含むプランを実行するプラン実行装置で、前記プランの実行中に前記プランと関係の無いアクションが実行された場合に前記プランを修正するプラン修正方法であって、
前記プランと関係の無いアクションを実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識を前記プラン実行装置内に予め記憶し、
前記プランと関係の無いアクションを前記プラン実行装置で実行した際に、前記プラン実行装置によって、当該アクションについての前記アクション副作用知識に基づいて、前記プランの内容を修正するようにしたことを特徴とするプラン修正方法。
【請求項１０】
プランを実行するプラン実行システムとしてコンピュータを機能させるためのプログラムであって、
１又は複数のアクションを示す情報を含むプランを記憶するプラン記憶機能と、
前記プラン記憶機能に記憶されるプランの先頭のアクションを示す情報を取り出して出力する第１出力機能と、
前記プランと関係の無いアクションを示す情報を一つ以上予め定義しておき、必要に応じて一つ選択して出力する第２出力機能と、
前記第１出力機能から出力されるアクションを示す情報と、前記第２出力機能から出力されるアクションを示す情報とを入力し、一つのアクションを示す情報を選択し、選択したアクションを示す情報を含む実行指示を行なう実行指示機能と、
前記実行指示機能からの実行指示を受け、その実行指示に含まれるアクションを示す情報により特定されるアクションを実行するアクション実行機能と、
前記プランと関係の無いアクションを前記アクション実行機能で実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識格納機能と、
前記プランと関係の無いアクションを前記アクション実行機能で実行した際に、当該アクションについて前記アクション副作用知識格納機能に記憶されている知識に基づいて、前記プラン格納機能に記憶されるプランの内容を必要に応じて修正するプラン修正機能とをコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プランに基づいて動作するプラン実行装置、エージェントプラットフォーム、プラン修正方法、及びプログラムに関する。
【０００２】
【従来の技術】
１または複数の計算機を用いて、設定された目的を実現するために複数の処理単位を必要に応じて実行順を規定した計画を立て、これを計算機に実行させることにより目的とする結果を得るようなシステムがある。ここで、目的はゴール、処理単位はアクション、計画はプランと呼ばれる。プランには、各アクションの順序が全て規定されたものと、各アクションの一部が規定され、その他の部分は順不同でも良いものとがある。前者は全順序プラン、後者は半順序プランと区別して呼ぶこともできるが、全順序プランは、半順序プランのうち、アクションの実行順序についてすべて制約があるものといえ、つまり、全順序プランは、半順序プランに含まれる。以下、全順序プランを含む半順序プランを単にプランと呼ぶ。
【０００３】
このようなシステムとしては、例えば、アクションの実体を計算機側に予め備えておき、プランを含むエージェントと呼ばれるソフトウェアが計算機上でプランに基づきアクションを実行されるエージェントシステムなどで用いられている。
【０００４】
プランの作成においては、人間がプランを作成する場合と、ゴールを与えることにより、予め格納する知識に基づいて、自動的にプランを生成するプランナーを用いて作成する場合がある。
【０００５】
プランナーを備えた計算機上では、プランの実行中に、知識が更新されることがあり、すると実行中のプランは、この知識に対し正当性を失ってしまう。なぜなら、知識の更新により、現在実行中のプランはこれ以上実行しても意味がないものになるかもしれないから、あるいは、よりよいプランができるかもしれないからである。そこで、所定の場合にのみ、知識の更新を許し、更新した知識に基づいてプランナーによって、再度プランを修正、更新する方法が提案されている（例えば、特許文献１）。この場合には、プランを変更すべきである制約として所定の条件を与えることにより、不要な再プランを行なわせないようにしたものであった。
【０００６】
【特許文献１】特開２００３−４４２７９公報
【０００７】
【発明が解決しようとする課題】
ところで、プランは一般に、最初のアクションの開始から最後のアクションの終了まで、連続して実行することを想定して作成される。  しかしながら、実際にプランを適用するシステムは、緊急時や、例外（システムにおいて決められた制約を超えた）時などを想定し、優先して実行すべきアクションを規定しておくことが望ましい。例えば、コンピュータは、バッテリ切れになりそうな場合にはこれに対処するアクション（例外アクション）を規定しておき、あるプランの実行中にそのような状態となった時に、プランとは関係なく例外アクションを優先実行するような仕組みは、実装上不可欠であろう。但し、このようにすると、例外アクションの実行によって変化した環境によって、プランの次アクションを継続実行できない場合がある。つまり、プランは保証されなくなってしまう。
【０００８】
従来の技術で説明したプランナーを計算機側に備えておけば、例外アクションが所定の場合には、実行していたプランを破棄し、再度プランを作成し、作成されたプランに基づき、再度実行できる。
【０００９】
しかしながら、プランナーによるプランの再作成（再プランニング）は作成時間が非常に掛かり、また、例えば、多数の計算機上を移動しながらプランを実行していく場合の移動エージェント等の場合には、全ての計算機にプランナーを備えなければならないという問題があり、プランの実行中にプランナによるプランの再生成は有効な解決方法とはいえない。
【００１０】
本発明は、上記問題点に鑑みなされたものであり、プランの実行中に、プラント関係のない他のアクションが入ったとしても、その後も、比較的簡易な方法で正しいプランを保証できるようなプラン実行装置、エージェントプラットフォーム、プラン修正方法、及びプログラムを提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明のプラン実行装置は、１又は複数のアクションを示す情報を含むプランを格納するプラン格納手段と、前記プラン格納手段に格納されるプランの先頭のアクションを示す情報を取り出して出力する第１の出力手段と、前記プランと関係の無いアクションを示す情報を一つ以上予め定義しておき、必要に応じて一つ選択して出力する第２の出力手段と、前記第１の出力手段から出力されるアクションを示す情報と、前記第２の出力手段から出力されるアクションを示す情報とを入力し、一つのアクションを示す情報を選択し、選択したアクションを示す情報を含む実行指示を行なう実行指示手段と、前記実行指示手段からの実行指示を受け、その実行指示に含まれるアクションを示す情報により特定されるアクションを実行するアクション実行手段と、前記プランと関係の無いアクションを前記アクション実行手段で実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識格納手段と、前記プランと関係の無いアクションを前記アクション実行手段で実行した際に、当該アクションについて前記アクション副作用知識格納手段に記憶されている知識に基づいて、前記プラン格納手段に記憶されるプランの内容を必要に応じて修正するプラン修正手段とを備えた。
【００１２】
また、本発明のエージェントプラットフォームは、１又は複数のアクションを示す情報を含むプランを備えたエージェントを格納するエージェント格納手段と、前記エージェントが備えるプランの先頭のアクションを示す情報を取り出して出力する第１の出力手段と、前記プランと関係の無いアクションを示す情報を一つ以上予め定義しておき、必要に応じて一つ選択して出力する第２の出力手段と、前記第１の出力手段から出力されるアクションを示す情報と、前記第２の出力手段から出力されるアクションを示す情報とを入力し、一つのアクションを示す情報を選択し、選択したアクションを示す情報を含む実行指示を行なう実行指示手段と、前記実行指示手段からの実行指示を受け、その実行指示に含まれるアクションを示す情報により特定されるアクションを実行するアクション実行手段と、前記プランと関係の無いアクションを前記アクション実行手段で実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識格納手段と、前記プランと関係の無いアクションを前記アクション実行手段で実行した際に、当該アクションについて前記アクション副作用知識格納手段に記憶されている知識に基づいて、前記プランプランの内容を必要に応じて修正するプラン修正手段とを備えた。
【００１３】
なお、アクション副作用知識格納手段は、エージェントプラットフォームに備えず、エージェント側に備えるようにしても良い。
【００１４】
また、本発明は、１又は複数のアクションを示す情報を含むプランを実行するプラン実行装置で、前記プランの実行中に前記プランと関係の無いアクションが実行された場合に前記プランを修正するプラン修正方法であって、前記プランと関係の無いアクションを実行した際の副作用の有無及び該副作用を取り消すためのアクションに関する知識を記憶するアクション副作用知識を前記プラン実行装置内に予め記憶し、前記プランと関係の無いアクションを前記プラン実行装置で実行した際に、前記プラン実行装置によって、当該アクションについての前記アクション副作用知識に基づいて、前記プランの内容を修正するようにした。
【００１５】
本発明によれば、プランの実行中に、プラント関係のない他のアクションが入ったとしても、その後も、比較的簡易な方法で正しいプランを保証できるようになる。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態を詳細に説明する。
【００１７】
まず、本実施の形態で利用するプランについて説明する。図８は、あるゴールを達成するための、一つの半順序プラン（以下単にプランと呼ぶ）を模式的に示したものである。丸はアクションを、矢印は、アクション間の実行関係（順）を示している。このプランに従って、アクションＡから実行を開始し、アクションＫの実行を終了すると、ゴールを得ることができる。なお、プランの一部を任意に連続的に切り出したものをサブプランと呼ぶ。
【００１８】
このプランは、例えば、アクションＡの実行の後にはアクションＢを実行することを示し、また、アクションＢの実行の後にはアクションＣ、アクションＤの何れを先に実行しても良く、同様にアクションＧの実行の後にはアクションＨ、アクションＩ、アクションＪの何れの順に実施してもよい（順不同）。
また、アクションＧは、アクションＤおよびアクションＦの何れも終了した後でなければ実行できないことを示しており、同様にアクションＫは、アクションＨ、アクションＩ、アクションＪの何れも終了した後でなければ実行できないことを示している。
【００１９】
また、アクションＢの後にはアクションＣとアクションＥとの何れを先に行なっても良いが、アクションＣの後にアクションＤを実行する必要があり、アクションＥの後にアクションＦを実行する必要がある。アクションＣからアクションＤまでの実行と、アクションＥからアクションＦまでの実行は、並行して実行できる場合もあるが、そうでない場合には、一旦何れかのアクション（ＣまたはＥ）を実行すると、それに続くアクション、例えば、アクションＣの場合にはアクションＤを、またアクションＥの場合にはアクションＦを連続して実行しなければならない。後者の場合、アクションＣおよびアクションＤをサブプランａとし、アクションＥとアクションＦをサブプランｂとすると、サブプランａまたは、サブプランｂの何れかの先頭のアクションを実行すると、そのサブプランの残りを他のサブプランより優先的に実行できるよう保護しなければならない。この優先実行を保護することを「サブプランをガード」すると呼ぶこととする。
【００２０】
プランに記述される一つのアクションの実行を完了すると、そのアクションをプランから削除する。このようにして、プランから全てのアクションがなくなったとき、正常にプランの実行が終了し、ゴールを得ることができる。
【００２１】
なお、上記のようなプランは実際には、一般に（  ）や［  ］にある意味的な制約を持たせたデータとして記述される。
【００２２】
さて、このようなプランは一般に、最初のアクションの開始から最後のアクションの終了まで、連続して実行することを想定して作成される。なぜなら、プラン内のアクションの実行によって作り出す実行環境ゆえに、次のアクションを実行できるものがあるからである。
【００２３】
しかしながら、実際にプランを適用するシステムは、緊急時や、例外（システムにおいて決められた制約を超えた）時などを想定し、優先して実行すべきアクションを規定しておくことが望ましく、本実施の形態においてもこれを採用する。例えば、コンピュータは、バッテリ切れになりそうな場合にはこれに対処するアクション（例外アクション）を規定しておき、あるプランの実行中にそのような状態となった時に、プランとは関係なく例外アクションを優先実行する。但し、このようにすると、例外アクションの実行によって変化した環境によって、プランの次アクションを継続実行できない場合がある。つまり、プランは保証されなくなってしまう。本実施の形態は、これに対処する技術を含めて、プランを保証するものである。
【００２４】
図１は、本実施形態のプラン実行システムの全体的な構成例を表すブロック図を示す。
【００２５】
プラン実行システムは、プラン格納部１１、プラン実行管理部１２、アクション実行部１３、プラン修正部１４、例外アクション副作用知識格納部１５、アクション実行指示部１６、例外アクション実行管理部１７とを備えている。
【００２６】
本プラン実行システムは、計算機間を移動しない通常のソフトウェアによっても、計算機間を移動する移動エージェントのようなソフトウェアによっても、半導体チップその他のハードウェアによっても、実現可能である。また、種々のアプリケーションに組み込むことも可能である。
【００２７】
また、本プラン実行システムは、単独の計算機に搭載することも可能であるし、ネットワークに接続する装置を内蔵したもしくは外付け可能な計算機または情報処理機能を有する携帯電話端末などに搭載することも可能であるし、ロボットのような装置等に搭載することも可能である。
【００２８】
プラン格納部１１には、半順序プラン（以下、単にプラン）を格納し、またこのプランの実行時においてガードすべきサブプランがある場合に、そのガードするサブプランの先頭のアクションを識別する情報を格納するガード格納領域を備える。なお、ガード格納領域は先頭のアクションを示す識別する情報としたが、これに限らず、ガードすべきサブプランを示す情報をすべて保持するようにしても良い。このガード格納領域への情報の書き込みについては、プラン修正部１４で説明する。
【００２９】
プラン管理部１２は、プラン格納部１１に格納されるプランを参照し、そのプランの先頭のアクションを、次に行なうべきアクションとして、アクション実行指示部１６へ送信する。このとき、先頭のアクションが複数ある場合には、プラン格納部１１に含まれるガード格納領域に優先すべきサブプランの情報があるか否かを確認する。ここで、プラン管理部１２は、ガード格納領域に優先すべきアクションを示す情報があれば、その情報が示すアクションを次に行なうべきアクションとして、アクション実行指示部１６へ送信し、一方、ガード格納領域が空であれば、プランの複数の先頭のアクションのいずれかを適宜選択してアクション実行指示部１６へ送信する。
【００３０】
一方、例外アクション実行管理部１７は、前記プランとは独立した複数の例外アクションを規定しておいて、ＯＳなどからの諸状態を受け、それらに基づいて所定の条件を満たしたときに、それに対応する例外アクションを示す情報を、次に行なうアクションとして、アクション実行指示部１６へ送信する。
【００３１】
例外アクションの例としては、前記したようにバッテリが切れそうな場合や、ユーザによって、接続されていた通信を切断するような指示や、外部のＩ／Ｏデバイスを切断するような指示が行なわれた場合のような緊急時の場合や、例えば複数のエージェントが共通のデータベースをアクセスする環境下において、重複するデータにアクセスが行なわれた場合に強制的に排他制御を行なうような例外時の場合などがあるが、これらに限るものではない。
【００３２】
アクション実行指示部１６は、プラン実行管理部１２からのアクションと、必要に応じてくる例外アクション実行管理部１７からのアクションとに基づいて、次に実行すべきアクションを決定し、適切なタイミングでアクション実行部１３に決定したアクションを送信し、そのアクションの実行を指示する。なお、アクション実行指示部１６は、例外アクション実行管理部１７から送信される例外アクションをプラン管理部１２から送信されるアクションより、必ず優先実行指示するように設計する場合と、例外アクションの内容に応じて、優先実行要否を判断してその結果によって選択的に指示するよう設計する場合とが通常考えられるが、ここでは、前者の方式で行なうこととする。
【００３３】
アクション実行部１３は、アクション実行指示部１６からの指示に従い、指示されたアクションを実行し、そのアクションの実行結果をプラン修正部１４に報告する。なお、アクションを実行するためのプログラム（コンポーネント）自身は、アクション実行部１３から呼び出し可能な図示しない記憶部に記憶されている。
【００３４】
プラン修正部１４は、アクションの実行が終了すると、その実行したアクションがプランによるアクションであったか否かを、プラン格納部１１に格納されるプランの先頭のアクション、及び、ガード格納領域の情報とに基づいて判断する。もし、実行したアクションがプランによるアクションであったと判断した場合には、プラン格納部１１に格納されるプランの先頭のそのアクションを消去する。
【００３５】
一方、プラン修正部１４は、前記判断の結果、プランによるアクションで無いと判断した時は、実行したアクションは例外アクションであったとわかるので、その実行したアクションに基づいて、例外処理アクション副作用知識格納部１５に記憶されるデータを特定し、プラン格納部１１に格納されるプランを必要に応じて修正する。
【００３６】
また、プラン修正部１４は、プラン格納部１１に格納されるプランからアクションを消去する際に、修正するサブプランをガードする必要があるか否かを判別し、必要があると判断した場合に、そのサブプランをガード格納領域に格納させる。
【００３７】
例外アクション副作用知識格納部１５に格納される各データは、例外処理アクションを実行した時にプランに起き得る副作用を修正するためのものであり、予め例外処理アクションと対応付けて多数格納されている。例外アクション副作用知識格納部１５に記憶される各データの種類は、以下の３つの何れかの形をしている。
（タイプ１）例外アクションの実行は副作用を持たない。
（タイプ２）例外アクションの実行は副作用を持ち、この副作用を無くすためには、例外アクションの実行を取り消すための取り消しアクションを実行すれば良い。
（タイプ３）例外アクションの実行は副作用を持ち、この副作用を無くすことは不可能である。
【００３８】
図２（ａ）に、例外アクション副作用知識格納部１５に例外アクション副作用知識をテーブルの形で格納する場合における該テーブルの一例を示す。この例では、１つのエントリは、対象となる例外アクションを示すデータと、そのタイプ（上記タイプのいずれか）を示すデータと、タイプ２である場合における当該対象となる例外アクションの副作用をなくすためのアクションを示すデータとを含む。なお、仮に、あるアクションに対する例外アクション副作用知識を示すデータが格納されていない場合には、タイプ３として扱う方法、エラーとして異常終了する方法、タイプ１として扱う方法などの種々の方法が可能である。
【００３９】
図２（ｂ）に、該テーブルの別の一例を示す。この例では、１つのエントリは、対象となる例外アクションを示すデータと、当該対象となる例外アクションの副作用をなくすためのアクションを示すデータとを含み、但し、後者の副作用を無くすためのアクションの項目に、予め定められた特定の値（例えば０）が記述されている場合には、タイプ１であることを示し、何も記述されていない場合にはタイプ３であることを示す。また、あるアクションに対する例外アクション副作用知識が例外アクション副作用知識格納部１５に格納されていない場合には、そのアクションをタイプ３として扱うようにしても良い。
【００４０】
図２（ｃ）に、該テーブルの別の一例を示す。この例では、１つのエントリは、対象となる例外処理アクションを示すデータと、当該対象となる例外アクションの副作用をなくすためのアクションを示すデータとを含み、但し、後者の副作用を無くすためのアクションの項目に、予め定められた特定の値（例えば０）が記述されている場合には、タイプ３であることを示し、何も記述されていない場合にはタイプ１であることを示す。また、あるアクションに対する例外アクション副作用知識が例外アクション副作用知識格納部１５に格納されていない場合には、そのアクションをタイプ１として扱うようにしても良い。
【００４１】
もちろん、上記のほかにも種々の方法が可能である。また、例外アクション副作用知識格納部１５にアクション副作用知識をテーブル以外の形で格納するようにしても良い。
【００４２】
ここで例外アクションの実行による副作用や、その副作用を無くすためのアクションについて説明する。
【００４３】
例外アクションの実行が副作用を持たない場合とは、例外アクションを実行した後に、何の取り消しアクションもせずに、例外アクションを実行しなかったとみなすことができる場合であり、それ以外の場合が、例外アクションの実行が副作用を持つ場合である。
【００４４】
なお、ある例外アクションを無くすとは、典型的には、システムの全状態を、ある例外アクションを実行する前の状態に戻す、というものであるが、システムの全状態ではなくそれらのうちの主要な部分を、例外アクションを実行する前の状態に戻せば、例外アクションを実行しなかったものと見なすことができる場合もある。また、例えば、ある例外アクションが複数の実行結果を持ち、それらのうちの一部のみが副作用を持ち、他の部分は副作用を持たないような場合に、当該副作用を与える実行結果の部分のみについて、実行前の状態に戻すようなアクションを実行すれば良い場合なども考えられる。
【００４５】
なお、全く同一のアクションであっても、プランの目的、システムの性質や能力、問題解決にあたってのポリシーや戦略、その時々の外的環境などに応じて、異なったタイプになったり、副作用を無くすためのアクションが異なったりすることがあり得る。
【００４６】
また、ある例外アクションや、ある例外アクションの副作用を無くすための取り消しアクションは、単一の動作のみ包含するものであってもよいし、複数の動作を包含するものであってもよい。ただし、ある例外アクションが単一の動作のみを包含するものであっても、その副作用を無くすための取り消しアクションが単一の動作のみを包含するものになるとは限らず、複数の動作を包含するものであることもある。逆に、ある例外アクションが複数の動作を包含するものであっても、その副作用を無くすための取り消しアクションが複数の動作を包含するものになるとは限らず、単一の動作のみを包含するものであることもある。
【００４７】
また、ある例外アクションや、ある例外アクションの副作用を無くすための取り消しアクションには、条件分岐が用いられてもよい。ただし、ある例外アクションが条件分岐を持っても、その副作用を無くすための取り消しアクションが条件分岐を持つものになるとは限らず、それを条件分岐を持たないものになることもある。逆に、ある例外アクションが条件分岐を持たないものであっても、その副作用を無くすための取り消しアクションが条件分岐を持たないとは限らず、条件分岐を持つものになることもある。
【００４８】
また、ある例外アクションとその副作用を無くすための取り消しアクションとの関係は、それぞれのアクションに応じて様々であり、それらが、（１）全く同一のものになる場合もあるし、（２）同一のコマンドで引数のみ異なるものになる場合もあるし、（３）逆関数の関係あるいは概念的に逆の関係になる場合もあるし、（４）それ以外の関係になる場合もある。
【００４９】
また、ある例外アクションの副作用を無くすための取り消しアクションと同一のアクションについて、その副作用を無くすための取り消しアクションとして、例外アクションを使用できる場合もあるし、そうでない場合もある。
【００５０】
また、ある例外アクションについて、その副作用を無くすための取り消しアクションが存在する場合に、ただ１つ存在することも、複数存在することもある。また、例えば、ランダムに、あるいはその時々状況に適したものなどを、選択して、使用するようにしてもよい。
【００５１】
次に、本実施の形態の動作について説明する。
【００５２】
図３に全体的な処理手順を示す。まず、プラン実行管理部１２は、プラン格納部１１に記憶されるプランを参照する（ステップＳ１）。もし、プランにアクションがなければ、プランの実行は無事に終了したとして、プラン実行成功時の後処理を行い（ステップＳ９）終了する。
【００５３】
一方、ステップＳ１の結果、プランにアクションがあれば、次に先頭のアクションが複数あるか否かを確認する（ステップＳ２）。１つしかない場合には、その先頭のアクションを取り出し、アクション実行指示部１６へ送信する（ステップＳ５）。
【００５４】
ステップＳ２の結果、複数のアクションがある場合には、プラン格納部１１に含まれるガード格納領域に、次に優先すべきアクションを示す情報があるか否かを確認する（ステップＳ３）。ここで、ガード格納領域に優先すべきアクションの情報があれば、その情報が示すアクションを次に行なうべきアクションとして、アクション実行指示部１６へ送信する（ステップＳ５）。一方、ガード格納領域に情報がない場合には、複数の先頭のアクションのいずれかを適宜選択して（ステップＳ４）アクション実行指示部１６へ送信する（ステップＳ５）。
【００５５】
一方、例外アクション実行管理部１７は、緊急や例外の際に実行される例外アクションがある場合にのみ、そのアクションを示す情報をアクション実行指示部１６へ送信する（ステップＳ６）。なお、このアクションは、フローチャートの便宜上この時点で入力されるよう示したが、どの時点で入力されても良い。
【００５６】
次に、アクション実行指示部１６は、送信されたアクションから、例外アクションがある場合にはそれを、ない場合にはアクション管理部１２からのアクションを次に実行するアクションとして、アクション実行部１３に指示する（ステップＳ７）。
【００５７】
アクション実行部１３は、指示されたアクションを実行する（ステップＳ８）。そして、アクション実行部１３はアクションを実行した結果を実行したアクションを示す情報とともにプラン修正部１４へ報告する（ステップＳ９）。
【００５８】
プラン修正部１４は、報告内容を元に、アクションの実行が成功したか否かを確認する（ステップＳ１０）。アクションの実行が失敗した場合には、そのプランを破棄し、プラン実行失敗時の後処理を行い（ステップＳ１１）、終了する。
【００５９】
アクションの実行が成功した場合には、次にプラン修正を行なうか否かを確認する（ステップＳ１２）。プランの修正を行なわない場合（＝プランが実行されなかった場合）には、ステップＳ１へ戻り、次のアクションの実行を開始する。一方、プラン修正を行なう場合には、適宜プラン修正を行った（ステップＳ１３）後、ステップＳ１に戻り、次のアクション実行を開始する。なお、このプラン修正の際に、ガードに関する処理を行なうことがあるが、ここでは省略している。
【００６０】
上記全体のフロー中、プラン修正部１４の動作（Ｓ１２−Ｓ１５）について、図４のフローチャートを用い、より詳細に説明する。
【００６１】
アクション実行部１３から報告を受けたプラン修正部１４は、まず、報告内容がアクションの実行の成功を示すものか否かを確認する（ステップＳ２１）。報告内容の形式は、予め定められた方式を採用すれば、何れであっても良いが、少なくとも実行したアクションを示す情報は含むものとする。
【００６２】
もし、アクションの実行が失敗した旨の報告であれば、プラン修正部１４は、プラン格納部１１に格納されるプランを破棄する（ステップＳ２２）。そして、プラン実行失敗時の後処理を行って（ステップＳ２３）、終了する。プラン実行失敗時の後処理とは、例えば、プラン格納部１１に格納されるプランを破棄して、プランの実行を終了する、などである。
【００６３】
一方、ステップＳ２１の確認の結果、アクションの実行が成功したと判断した場合に、次に、プラン修正部１４は、実行が成功したアクションがプランに基づくアクションであるか否かを確認するために、まず、プラン格納部１１に格納されるガード格納領域に情報があるか否かを調べる（ステップＳ２４）。情報がある場合には、次にその情報が示す先頭のアクションと報告内容に含まれる実行アクションとが一致するか否かを調べる（ステップＳ２５）。一致しない場合は、後述することとし、一方、一致する場合には、プランに基づくアクションがされたと見なすことができ、ガード格納領域の情報が示す先頭のアクションを削除し（ステップＳ２６）、また、プラン格納部１１に格納されるプランの先頭のアクションのうち、一致するアクションを削除する（ステップＳ２７）。
【００６４】
ステップＳ２４において、ガード格納領域に情報が無いと判断された場合に、次にプラン格納部１１のプランの先頭のアクションと報告内容に含まれる実行アクションとが一致するか否かを調べる（ステップＳ２８）。一致しない場合には後述することとし、一方、一致する場合には、プランに基づくアクションがされたと見なすことができ、プラン格納部１１に格納されるプランの先頭のアクションのうち、一致するアクションを削除する（ステップＳ２９）。このとき、プラン修正部１４は、プランを参照し、削除したアクションに続くサブプランをガードする必要があるか否かを判別し（ステップＳ３０）、必要があると判断した場合に、その次に処理すべきアクションからのサブプランを示す情報をガード格納領域に格納させる（ステップＳ３１）。
【００６５】
さて、ステップＳ２５およびステップＳ２８において、先頭のアクションと一致しないと判断された場合には、例外アクションがされたとみなすことができる。このとき、まずプラン修正部１４は、例外アクション副作用知識格納部１５に対し、この実行された例外アクションと同じアクションであるものを検索する（ステップＳ３２）。この検索の結果、例外アクションに対応して登録されている取り消しアクションがあればそれを取り出す（ステップＳ３３）。そして、取り出した取り消しアクションを、プラン修正部１４は、プランの先頭（およびガード格納領域に）に追加する（ステップＳ３４）。
【００６６】
以上説明した本発明の実施形態を適用した一具体例として移動エージェントシステムを示し、以下に説明する。
【００６７】
図５は、ネットワークを介して、２つのエージェントプラットフォームｎｏｄｅ１とｎｏｄｅ２とが接続されている移動エージェントシステムを示している。
【００６８】
各エージェントプラットフォームｎｏｄｅ１、ｎｏｄｅ２は、図６のような構成を備えている。すなわち、エージェントプラットフォームは、先に説明した本実施の形態で示したプラン実行管理部１２、アクション実行部１３、プラン修正部１４、アクション実行指示部１６、例外アクション実行管理部１７を備え、また、エージェント管理部２１、及びエージェント格納部２２を備える。エージェント格納部２２は、ソフトウェアである移動エージェントが、移動してきたときに格納するものである。エージェント管理部２１は、移動エージェントが自身のプラットフォームに移動してきたときから、移動していくまでのエージェントを管理するものである。エージェント２３は、移動エージェントであり、プラン格納部１１と、例外アクション副作用知識格納部１５とを備えている。なお、移動エージェントに係る技術については、既知の技術を用いることとし、ここでは説明を省略する。また、例外アクション副作用知識格納部１５は、ここでは、エージェント２３に備えるものとしたが、エージェント２３の外で、エージェントプラットフォームｎｏｄｅ１、ｎｏｄｅ２のそれぞれに備えるようにしても良い。
【００６９】
このような移動エージェントシステムにおいて、今、ｎｏｄｅ２のエージェント格納部２２にはエージェント２３が１つ存在し、ｎｏｄｅ１のエージェント格納部２２には、エージェント２３が存在しない状態であるとする。ここで、エージェント２３のプラン格納部１１には、図７（ａ）のプランが格納されているとする。ここで、アクションｇｏｔｏ（ｎｏｄｅ１）とアクションｐｒｉｎｔ（ｈｅｌｌｏ１）とからなるサブプランは連続して実行する必要があり、また、アクションｇｏｔｏ（ｎｏｄｅ２）とアクションｐｒｉｎｔ（ｈｅｌｌｏ２）とからなるサブプランも、連続して実行する必要があるとする。
【００７０】
このような状態において、まず、エージェントプラットフォームｎｏｄｅ２のエージェント管理部２１は、プラン実行管理部２２のプラン格納部１１に格納されるプラン図７（ａ）のプランを参照し、アクションｇｏｔｏ（ｎｏｄｅ１）を取り出したとする。また、このとき緊急に実行すべきアクションが存在しないとすれば、アクション実行管理部１６は、アクションｇｏｔｏ（ｎｏｄｅ１）の実行をアクション実行部１３に実行するよう指示する。
【００７１】
アクション実行部１３は、このアクションの実行をして成功すると、エージェント２３は、エージェントプラットフォームｎｏｄｅ２のエージェント格納部２２からエージェントプラットフォームｎｏｄｅ１のエージェント格納部２２に移動する。そして、移動したエージェント２３のエージェントプラットフォームｎｏｄｅ１のプラン修正部１４は、アクションｇｏｔｏ（ｎｏｄｅ１）を実行済としてエージェント２３のプラン格納部１１に格納される図７（ａ）のプランから削除し、図７（ｂ）のプランに修正する。また、プラン修正部１４は、プランを参照した結果、アクションｇｏｔｏ（ｎｏｄｅ１）をサブプランから削除したサブプランｐｒｉｎｔ（ｈｅｌｌｏ１）をエージェント２３のプラン格納部１１のガード格納領域へｐｒｉｎｔ（ｈｅｌｌｏ１）を示す情報を書き込む。なお、ｐｒｉｎｔ（ｈｅｌｌｏ１）を示す情報は、ｐｒｉｎｔ（ｈｅｌｌｏ１）そのものでも良い。
【００７２】
次に、プラットフォームｎｏｄｅ１のプラン実行管理部１２は、そのエージェント２３のプラン格納部１１に格納される、図７（ｂ）のプランとガード格納領域の情報とに基づいて、ガード格納領域の情報からアクションｐｒｉｎｔ（ｈｅｌｌｏ１）を次に実行するべきものと判断し、次に実行すべきアクションとしてｐｒｉｎｔ（ｈｅｌｌｏ１）を、アクション実行指示部１６に送信する。
【００７３】
ところが、ここで、例えば、エージェントプラットフォームｎｏｄｅ１のバッテリーが少なくなってきたため、例外アクション緊急実行管理部１７が、エージェントプラットフォームｎｏｄｅ２へ移動するアクションｇｏｔｏ（ｎｏｄｅ２）を実行するように、アクション実行指示部１６に送信したとする。
【００７４】
アクション実行指示部１６は、アクション実行指示部１６からのアクションｐｒｉｎｔ（ｈｅｌｌｏ１）よりも、例外アクション緊急実行管理部１７からの例外アクションｇｏｔｏ（ｎｏｄｅ２）を優先し、例外アクションｇｏｔｏ（ｎｏｄｅ２）の実行をアクション実行部１３に指示する。
【００７５】
アクション実行部１３は、この指示されたアクションｇｏｔｏ（ｎｏｄｅ２）を実行し、成功したとする。この実行の成功により、エージェント２３は、エージェントプラットフォームｎｏｄｅ１のエージェント格納部２１からエージェントプラットフォームｎｏｄｅ２のエージェント格納部２１へ移動する。
【００７６】
そして、エージェントプラットフォームｎｏｄｅ２のアクション実行部１３は、アクションｇｏｔｏ（ｎｏｄｅ２）が成功した旨の報告を、エージェントプラットフォームｎｏｄｅ２のプラン修正部１４に通知する。
【００７７】
エージェントプラットフォームｎｏｄｅ２のプラン修正部１４は、通知を受けた報告内容に基づいて、移動してきたエージェント２３のプラン格納部１１のガード格納領域に格納される情報を参照してｐｒｉｎｔ（ｈｅｌｌｏ１）を得て、これは、実行が成功したアクションｇｏｔｏ（ｎｏｄｅ２）と一致しないと判断し、実行が成功したアクションｇｏｔｏ（ｎｏｄｅ２）は、例外アクションであることがわかる。
【００７８】
そこで、エージェントプラットフォームｎｏｄｅ２のプラン修正部１４は、エージェントプラットフォームｎｏｄｅ２の例外アクション副作用知識格納部１５に対し、アクションｇｏｔｏ（ｎｏｄｅ２）で検索し、これに対応する副作用知識を得る。ここでは「ｇｏｔｏ（ｎｏｄｅ２）の実行は副作用があり、これを取り消すには、もとのエージェントプラットフォーム（ｎｏｄｅ１）に戻るアクションｇｏｔｏ（ｎｏｄｅ１）を実行する必要がある」旨を示す副作用知識を得る。そして、プラン修正部１４は、ガード格納領域に示されるサブプランｐｒｉｎｔ（ｈｅｌｌｏ１）によって、副作用知識を挿入する位置を確認し、プランの先頭のアクションｐｒｉｎｔ（ｈｅｌｌｏ１）の前に、アクションｇｏｔｏ（ｎｏｄｅ２）を取り消しアクションとして追加挿入する。
【００７９】
また、ガード格納領域に示されるサブプランｐｒｉｎｔ（ｈｅｌｌｏ１）の前にも、アクションｇｏｔｏ（ｎｏｄｅ２）を取り消しアクションとして追加挿入する。以上のように、プラン修正部１３は、プランを修正することにより、次に、プランを実行する際に、アクションｇｏｔｏ（ｎｏｄｅ１）から実行されることになり、正当な動作が保証できるようになる。
【００８０】
なお、この例では、ガード格納領域にサブプランがある場合についての例を示したが、ガード格納領域にサブプランがない場合には、プランにのみ追加挿入を行なえばよい。
【００８１】
以上説明した、本発明の実施の形態およびその具体例によれば、プランの実行中に、プランと関係のない例外アクションが入ったとしても、それに係る副作用を得て、プランを修正することにより、その後のプランの実行を保証できるようになった。
【００８２】
なお、以上の各機能は、ソフトウェアとして実現可能である。
【００８３】
また、本実施形態は、コンピュータに所定の手段を実行させるための（あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための）プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【００８４】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
【００８５】
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
【００８６】
また、この発明の実施の形態は、個別装置としての発明、関連を持つ２以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
【００８７】
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【００８８】
【発明の効果】
以上説明したように本発明によれば、プランの実行中に、プランと関係のない他のアクションが入ったとしても、その後も、比較的簡易な方法で正しいプランを保証できるようになった。
【図面の簡単な説明】
【図１】本発明の一実施形態のプラン実行システムの機能ブロックを示す図。
【図２】本実施形態に係る例外アクション副作用知識格納部が例外アクション副作用知識をテーブルの形で格納する場合におけるテーブルの例を示す図。
【図３】本実施形態の全体的な処理手順を示すフローチャート。
【図４】プラン修正部１４の処理手順を示すフローチャート。
【図５】本実施の形態の一具体例の移動エージェントシステムを示す。
【図６】各エージェントプラットフォームの機能ブロックを示す図。
【図７】実行中のプランの状態を示す図。
【図８】本発明の実施形態のプランを模式的に示した図。
【符号の説明】
１１…プラン格納部    １２…プラン実行管理部
１３…アクション実行部
１４…プラン修正部    １５…例外アクション副作用知識格納部
１６…アクション実行指示部    １７…アクション緊急実行管理部
２１…エージェント管理部    ２２…エージェント格納部
２３…エージェント
【図１】
2005025407.tif 000003
【図２】
2005025407.tif 000004
【図３】
2005025407.tif 000005
【図４】
2005025407.tif 000006
【図５】
2005025407.tif 000007
【図６】
2005025407.tif 000008
【図７】
2005025407.tif 000009
【図８】
2005025407.tif 000010