JP3688471B2 - エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体 - Google Patents

エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体 Download PDF

Info

Publication number
JP3688471B2
JP3688471B2 JP19627498A JP19627498A JP3688471B2 JP 3688471 B2 JP3688471 B2 JP 3688471B2 JP 19627498 A JP19627498 A JP 19627498A JP 19627498 A JP19627498 A JP 19627498A JP 3688471 B2 JP3688471 B2 JP 3688471B2
Authority
JP
Japan
Prior art keywords
agent
platform
profile
move
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP19627498A
Other languages
English (en)
Other versions
JP2000029847A (ja
Inventor
隆浩 川村
康之 田原
直樹 加瀬
哲夫 長谷川
昭彦 大須賀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP19627498A priority Critical patent/JP3688471B2/ja
Priority to US09/289,598 priority patent/US6477563B1/en
Publication of JP2000029847A publication Critical patent/JP2000029847A/ja
Priority to US10/236,959 priority patent/US6662207B2/en
Application granted granted Critical
Publication of JP3688471B2 publication Critical patent/JP3688471B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、ネットワーク上に分散して存在する情報を処理する技術の改良に関するものである。
【0002】
【従来の技術】
近年、コンピュータを中心とした情報処理システム技術においては、ダウンサイジングの進行や、インターネットなどネットワーク環境の整備が進んでいる。このため、情報処理の装置や方法における主流は、データファイルや機能ライブラリなどの構成要素がネットワーク上の各マシンに分散した分散システムに移行しつつある。これに伴い、企業や研究所などのローカルネットワークでも、広域ネットワークとの接続によって環境のオープン化がより進展している。このように広域ネットワークと接続されたネットワークを開放型ネットワークと呼ぶ。
【0003】
このような開放型ネットワークに代表される大規模ネットワークでは、しばしば、複数のマシン上に分散したいくつかのデータファイルや機能ライブラリなどの構成要素を組み合わせることによって、一つのソフトウェアを構成する。このように構成されるソフトウェアを分散システムと呼ぶ。そして、分散配置された構成要素は、マシンすなわちノードに関する管理上の事情や、ネットワークに関する管理上の事情などで、別のマシンやディレクトリに移動されたり、名称やアクセス権などの属性が変更されることが考えられるが、このような変更は、次のような問題を生ずる。
【0004】
まず、ソフトウェアに処理を要求するときは、メッセージやコマンドなどの要求記述を入力し、この入力の際に、あるマシン上に配置されている処理に関わる特定の構成要素が指定される。しかし、指定された構成要素が他のマシンに移動されると、移動先の新しいマシンを指定するために、ソフトウェアに対する入力をやり直すか、修正しなければならない。特に、ソフトウェアの一部が、移動された構成要素にアクセスするように構成されている場合は、構成要素の移動は、ソフトウェアの構成そのものの変化を意味する。この場合、アクセスする側のソフトウェアの部分を変更して、移動先の新しいマシンを指定しなければならない。
【0005】
従来では、マシン・機能・ファイルなどは、具体的に名指しされていたため、このように機能又はファイルが移動されると、変更に合わせてソフトウェアや入力を変更しなければならなかった。しかも、このような指定は処理開始前に行なう必要があった。
【0006】
このため、分散システムにおいて、ユーザに対してサービスを確実に提供するには、こうした変化に対して適応する柔軟なソフトウェアを構築することが重要である。特に、このような変化に対応して、処理開始後であっても指定を変更し、かつこの変更は極力人手を介さず自動的に行われることが望ましい。
【0007】
ネットワークにおいて、このような柔軟なソフトウェアのアーキテクチャを実現する技術として、近年、エージェント指向技術が注目され、数多くの試みがなされている。このエージェント指向技術は、エージェントを単位としてソフトウェアを構成しようとするソフトウェア開発技術であり、ここでいうエージェントは、ソフトウェア上の処理の単位で、環境の変化に自律的かつ柔軟に対応するものである。
【0008】
例えば特開平7−182174では、リモートプログラミングの実施方法を開示している。このリモートプログラミングは、分散システムにおいて、処理が開始されたノード(ローカルマシンと呼ぶ)から、エージェントが他のノード(リモートマシンと呼ぶ)に転送されるようなプログラミングである。
【0009】
ところで、エージェントが活動するには、インストラクションと内部状態が必要である。インストラクションは、エージェントの動作(振る舞い)を記述したもので、内部状態は、エージェントの動作によって操作される情報である。このうち内部状態は、より具体的には、変数や配列のほかスタック、バッファ、キュー、フラグなど、エージェントの動作に関連する一切の情報を含む。また、これらインストラクション及び内部状態を合わせてエージェント情報と呼ぶ。
【0010】
インストラクションは、ファイルのオープンやクローズなど、さまざまな動作の単位ごとに記述されるが、リモートプログラミングでは、特殊なインストラクションとして、goオペレーションが用いられる。このgoオペレーションは、エージェントをリモートマシンに転送する処理を行なわせるもので、例えば、ある処理中に、別のマシンにあるファイルに対するインストラクションが含まれる場合は、そのインストラクションに先立って、goオペレーションが記述され、実行される必要がある。
【0011】
このようなエージェントを用いるリモートプログラミングを実施する装置の一例について、構成を表す機能ブロック図を図12に示す。この装置では、ネットワークNに接続されたローカルマシンLとリモートマシンRが相互に同様の構成を有し、プロセスとしてエージェントを取り扱う。なお、ここでいうプロセスは、オペレーティングシステムによって管理の対象となる処理の単位であり、複数のプロセスを同時に管理することをマルチプロセスと呼ぶ。
【0012】
エージェント管理手段51L,51Rは、このようなエージェントについて、資源管理、設定、終了、スケジューリング及び転送など、エージェント自身を対象とする処理を司る。このような装置において、エージェントによる処理を開始するには、まず、エージェント情報を、ローカルマシンL上のエージェント情報記憶手段31Lに格納する。なお、エージェント情報をエージェント情報記憶手段31Lに格納するには、入出力手段41Lから入力したり、図示しない外部記憶装置からロードするなどすればよい。
【0013】
また、入出力手段41Lからエージェントによる処理の開始が指示されると、解釈実行手段61Lが、エージェント情報記憶手段31L内のインストラクションを逐次解釈実行することによって処理を進め、エージェント情報記憶手段31L内の内部状態を操作する。そして、インストラクション中のgoオペレーションが解釈実行されると、解釈実行手段61Lがその旨をエージェント管理手段51Lに通知し、エージェント管理手段51Lは次のようなエージェントを転送する処理を行う。
【0014】
すなわち、まず、エージェント管理手段51Lは、ネットワークNを通じてリモートマシンR上のエージェント管理手段51Rにエージェントの受け入れ準備を要求する。すると、要求を受けたエージェント管理手段51Rは、資源の割当や、エージェントとして管理するプロセスの設定など、エージェントの受け入れ準備を行なった後、ローカルマシンL上のエージェント管理手段51Lに準備完了を通知する。
【0015】
この通知を受けたエージェント管理手段51Lは、エージェント情報記憶手段31L内のインストラクションと、上記goオペレーションの解釈実行時におけるエージェントの内部状態を読み出し、双方をリモートマシンRに転送する。リモートマシンR上のエージェント管理手段51Rは、転送されたインストラクションと内部状態をエージェント情報記憶手段31Rに格納したうえ、解釈実行手段61Rにその旨を通知し、解釈実行を開始させる。
【0016】
このようにエージェントの転送が無事に終了すると、ローカルマシンL側のエージェント管理手段51Lはプロセスを終了し、不要になったメモリやCPU時間など資源を開放する。
【0017】
一方、転送された側のリモートマシンRでは、エージェント情報記憶手段31R内のインストラクションと内部状態を用いて、処理が続行される。なお、続行された処理がリモートマシンR上で終了する場合もあれば、エージェントがもとのローカルマシンLに再度転送される場合もありうる。このようにエージェントが再度転送されると、インストラクションの実行は再度ローカルマシンL上で行われることになる。以上のようなリモートプログラミングによって、分散システム上における柔軟な処理が実現される。
【0018】
また、このようなリモートプログラミングにおいて、各マシン間で共通のインストラクション及び内部状態を用いながら、解釈実行手段やエージェント管理手段などを各マシン固有のハードウェアやOSに合わせて構成すれば、構成の異なるマシン間で互換性が実現される。このような構成により、オペレーティングシステムおよびハードウェアが異なるコンピュータシステムにおいて、インストラクションを移動し実行できるなど、上述のような柔軟な対応が可能となる。
【0019】
一方、ネットワーク上の複数のノードにまたがって処理を行なうための別の従来技術として、次のようなものも知られている(参考文献:Oren Etzioni and Daniel Weld "A Softbot-Based Interface to the Internet" (Communications of ACM))。この技術では、ファイルを転送を行なうftp、遠隔ログインのための仮想端末機能を実現するtelnetなど、通常のネットワーク機能を利用して、複数のマシンにまたがった処理を行なう。そして、動作中に収集した情報に基づき、ソフトウェアによって自動的に各機能を試行錯誤的に利用し、状況に応じて柔軟にプランニングを行なうことによって、ファイルなどの構成変化に対応した機能選択を行う。
【0020】
例えば、目的の機能が他のノードに移転された場合、移転前のノードでその機能にアクセスしようとすると失敗するので、元のマシン(ノード)においてプランニングを行ない、アクセス先を第2候補に変更し再度アクセスする。この技術によれば、システムの各時点での状態に対応して、柔軟な動作が可能である。なお、telnetやftpなどの利用は互換性が予め判明している範囲内で行なう。
【0021】
【発明が解決しようとする課題】
しかしながら、上記のような従来技術には次のような問題点が存在していた。まず、リモートプログラミングの実施方法(特開平7−182174)では、エージェントの動作系列をインストラクションとして全て利用者が記述しなければならなかったため、プログラミング作業が煩雑である上、エージェントの柔軟性に限界があった。
【0022】
特に、また、goオペレーションによるエージェントの移動先や、利用すべき構成要素が存在するマシンのノード名(ネットワークにおける識別子)のような、ソフトウェアの構成要素の変化に対応するためには、このような変化を捕捉したり、変化に応じてインストラクションを変更する必要がある。しかし、従来は、アクセス先のマシン名が具体的に名指しされていたため、アクセス先を変更しなければ目的を達成できない場合においても、その場でインストラクションを変更することは不可能であった。このため、構成要素の変化に柔軟に対応する技術が求められていた。特に、開放型ネットワークのような大規模ネットワークになるほど変化が頻繁になるため、変化への対応が強く求められていた。
【0023】
また、Etzioniらの方法では、処理中に、ローカルマシンとリモートマシンとの間で相互にアクセスを続け、継続して情報をやり取りする必要がある。このため、処理の途中で回線障害が生じ、アクセスのルートが切断されると正常な処理の続行ができない、という問題があった。また、遠隔ノードにおける情報の内容をきめこまかく参照して処理内容を変えたり、遠隔ノードの情報へのアクセスを何度か実施する必要がある場合、また、処理に何らかのリアルタイム性が要求される場合などは、リモートマシン上のプロセスとして情報処理を行ったほうが効率的な場合もある。
【0024】
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、その目的は、状況に応じてエージェントの行動プランを作成し、他のノードでの処理を実現するために、ノード間で移動するか他のエージェントと協調するかを条件に応じて動的に選ぶことで、変化に対応して効率よく情報を処理するエージェントシステムを提供することである。
【0025】
また、本発明の他の目的は、移動にかかわる一連の処理手順をエージェントの側で主体的に行うかプラットフォームの側で主体的に行うかも動的に選ぶことで、エージェントの自律性と全体の処理効率が優れたエージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体を提供することである。
【0026】
また、本発明の他の目的は、適切な移動のタイミングを選ぶことで、円滑に情報を処理するエージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体を提供することである。また、本発明の他の目的は、移動先プラットフォームの複数の候補のなかから、適切なものを選ぶことで、処理を効率的に行うエージェントシステム及び情報処理方法を提供することである。また、本発明の他の目的は、複数のプラットフォームに順番に移動するとき、条件に応じて最適な移動順序を決めることで、処理を効率的に行うエージェントシステム及び情報処理方法を提供することである。また、本発明の他の目的は、各プラットフォームの状態に応じてエージェントを割り振ることで処理を効率的に行うエージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体を提供することである。
【0027】
また、本発明の他の目的は、移動にかかわる以上のような判断で参照する情報を予めプロファイルとして用意しておくことで、処理を効率的に行うエージェントシステム及び情報処理方法を提供することである。また、本発明の他の目的は、どのようにプロファイルを参照するかを動的に選ぶことで、処理を効率的に行うエージェントシステムを提供することである。
【0028】
【課題を解決するための手段】
上に述べた目的を達成するため、請求項1の発明は、複数のプラットフォームを備えたネットワーク上でソフトウェアエージェント動作させることで情報を処理するエージェントシステムにおいて、プラットフォーム上でエージェントを活動させる手段と、エージェントをプラットフォーム間で移動させる手段と、複数のエージェントの間で協調を行わせる手段と、それぞれのプラットフォームについて、移動にかかわる判断の基礎となる情報を表すプラットフォームプロファイルと、それぞれのエージェントについて、移動にかかわる判断の基礎となる情報を表すエージェントプロファイルとを備え、エージェントが現在いるプラットフォームとは異なる他のプラットフォームでの処理が必要になった場合に、当該他のプラットフォームへエージェント移動させるか、エージェント当該他のプラットフォームに存在する他のエージェントと協調を行なわせるかを、前記プラットフォームプロファイルとエージェントプロファイルに基づいて判断する手段と、エージェント他のプラットフォームへ移動させるための手順を、エージェント主体的に管理させるか、プラットフォームが主体的に管理するかを、前記プラットフォームプロファイルとエージェントプロファイルに基づいて判断する手段とを備えたことを特徴とする。
なお、請求項9の発明は、前記請求項1の発明を方法の観点から把握したものであり、請求項14の発明は、前記請求項1の発明をコンピュータを使って、複数のプラットフォームを備えたネットワーク上でエージェントが動作することで情報を処理するための情報処理用ソフトウェアを記録した記録媒体として把握したものである。
【0029】
前記のような構成を有する請求項1の発明では、エージェントがあるプラットフォームで活動しているときに他のプラットフォームでの処理が必要になった場合、エージェントを当該他のプラットフォームに移動させるか、エージェントは現在のプラットフォームに留めたまま、当該他のプラットフォーム上のエージェントとメッセージ通信などで処理を依頼する、すなわち協調を行うかが判断される。このような判断は、エージェントやそれぞれのノードが移動をサポートしているか、プラットフォーム間のネットワーク回線の信頼性が高いか低いかといった情報を予め用意しておいてそのような情報に基づいて行うことができるが、例えば、移動や協調のためのメッセージを目的のプラットフォームに試験的に送信し、しかるべきメッセージが返ってくるかどうかなどに基づいて判断したり、移動や協調のために使う特有のファイル名のファイルが目的のプラットフォーム上に存在するかなどに基づいて判断することもできる。この結果、エージェントやプラットフォームによって移動をサポートしているかどうかが異なっていたり、プラットフォームの組み合わせによって、その間の回線の信頼性が異なるような場合でも、他のプラットフォームでの処理を円滑に行うことができる。例えば、エージェントを他のプラットフォームに移動させるには、移動元と移動先の両方のプラットフォームと、エージェント自身が移動をサポートしている必要がある。また、他のプラットフォームとの間の回線の信頼性が低いときは、協調を行おうとしても途中でメッセージの受渡が途切れることも考えられるので、移動が適している。
【0030】
また、請求項1の発明では、エージェントが他のプラットフォームへ移動するための手順、例えば、エージェントのプランや内部状態などの情報転送や移動先でのエージェント用プロセスの設定といった処理を、エージェントとプラットフォームのどちらが主体的に管理するかが判断される。このため、エージェントの移動の仕方に自由度が増え、システムの状況や構成に応じて円滑に効率良くエージェントを移動させることができる。例えば、移動の態様が複数考えられるような場合、その選択をプラットフォームに行わせると移動の態様について自由度が減るが、このような選択をエージェントに行わせることによって、エージェントの自律性を確保することが容易になる。また、移動のための手順を実行する機能をエージェントかプラットフォームのどちらか一方だけが持っているときは、その持っているほうが移動を主体的に管理する必要があり、また、両方がそのような機能を持っている場合は、どちらか現在の負荷が軽い方が手順を主体的に管理することで、負荷の片寄りを防ぎ、システム全体の処理を効率化することができる。
【0031】
さらに、請求項1の発明では、それぞれのプラットフォームについて、エージェントの移動をサポートしているか、そのプラットフォームを接続しているネットワーク回線の信頼性が高いか低いかといった情報が、予めプラットフォームプロファイルに用意されている。このため、移動にかかわる判断を行うとき、プラットフォームやネームサーバなどに直接アクセスして調べるまでもなく、そのような情報を容易に得ることができるので、移動にかかわる判断が効率化される。なお、「移動にかかわる判断」とは、移動か協調かの判断、移動先の選択や順序の決定などを含む概念である。
また、請求項1の発明では、それぞれのエージェントについて、プラットフォーム間での移動をサポートしているか、どのようなリソースやサービスを必要とするかといった情報が、予めエージェントプロファイルに用意されている。このため、移動にかかわる判断を行うとき、エージェントの内部状態や生成履歴などを参照して調べるまでもなく、そのような情報を容易に得ることができるので、移動にかかわる判断が効率化される。
【0032】
請求項2の発明は、エージェントが他のプラットフォームに移動しようとするとき、直ちに移動するかどうかを判断する手段を備えたことを特徴とする。請求項10の発明は、エージェントが他のプラットフォームに移動しようとするとき、直ちに移動するかどうかを判断するステップを含むことを特徴とする。請求項15の発明は、前記ソフトウェアは前記コンピュータに、エージェントが他のプラットフォームに移動しようとするとき、直ちに移動するかどうかを判断させることを特徴とする情報処理用ソフトウェアを記録した記録媒体に関する。
請求項2、請求項10または請求項15の発明では、エージェントが他のプラットフォームに移動しようとするとき、プラットフォームの状況や移動に使うネットワーク回線の状態などに応じて、直ちに移動するかしばらく待ってから移動するかが判断されるので、エージェントの移動のタイミングが多様化し、移動を確実に効率良く行うことができる。例えば、移動先のプラットフォームの負荷が高く、移動しようとするエージェントが必要とするリソースが確保できなそうな場合や、移動経路となっているネットワーク回線について現在の負荷(トラフィック)が大きかったり不安定なときは、しばらく待ってから移動したほうがよい。また、現在いるプラットフォームの負荷が大きかったりシャットダウンが間近などの場合は直ちに移動したほうがよい。
【0033】
請求項3の発明は、移動先のプラットフォームの候補が複数あるとき、どのプラットフォームに移動するかを選択する手段を備えたことを特徴とする。請求項11の発明は、移動先のプラットフォームの候補が複数あるとき、どのプラットフォームに移動するかを選択するステップを含むことを特徴とする。請求項16の発明は、前記ソフトウェアは前記コンピュータに、それぞれのプラットフォーム上のエージェントを他のプラットフォームへ移動させるかを判断させ、判断の結果をエージェントに指示させることを特徴とする情報処理用ソフトウェアを記録した記録媒体に関する。
請求項3、請求項11または請求項16の発明では、移動先のプラットフォームの候補が複数あるとき、移動先として最適なプラットフォームが選択されるので、処理が円滑に効率良く行われる。例えば、複数の候補があっても、移動先としては、エージェントが必要とするリソース、サービス、動作の許諾を与えてくれるといった条件を満たす必要がある。また、このような条件を満たすプラットフォームが複数あっても、現在の負荷が軽いもの、そこに至るネットワーク回線の状態が安定しているもの、移動して行ったエージェントを永続的に存在させてくれるといった基準で最適なものを選ぶことが望ましい。
【0034】
請求項4の発明は、エージェントが複数のプラットフォームに順次移動しようとするとき、それぞれのプラットフォームにどのような順序で移動するかを決定する手段を備えたことを特徴とする。請求項12の発明は、エージェントが複数のプラットフォームに順次移動しようとするとき、それぞれのプラットフォームにどのような順序で移動するかを決定するステップを含むことを特徴とする。
請求項4または請求項12の発明では、エージェントが複数のプラットフォームに順次移動しようとするとき、それぞれのプラットフォームの負荷やそこに至るネットワーク回線の状態などに基づいて、最適な移動の順序が決定されるので、エージェントごと、プラットフォームごと、及びシステム全体の処理効率が向上する。例えば、負荷が軽いプラットフォームや、移動のためのネットワーク回線が空いていて安定しているプラットフォームを順序の最初にすれば、そのようなプラットフォームで処理を行っている間に他のプラットフォームの負荷や、他のプラットフォームまでのネットワーク回線の状態が改善する可能性が高いため、システム全体の負荷が平均化され、処理が滞る可能性を少なくすることができる。
【0035】
請求項5の発明は、前記プラットフォームは、自プラットフォーム上のエージェントを他のプラットフォームへ移動させるか、及び、他のプラットフォーム上のエージェントを自プラットフォームへ移動させるかを判断する手段と、判断の結果をエージェントに指示する手段と、を備えたことを特徴とする。請求項13の発明は、前記プラットフォームは、自プラットフォーム上のエージェントを他のプラットフォームへ移動させるか、及び、他のプラットフォーム上のエージェントを自プラットフォームへ移動させるかを判断するステップと、判断の結果をエージェントに指示するステップと、を実行することを特徴とする。
請求項5または請求項13の発明では、それぞれのプラットフォームの状態に応じて、エージェントにプラットフォーム間での移動の指示が伝えられる。このため、エージェントがそれぞれのプラットフォームに動的に割り振られ、システム全体の処理が効率化される。例えば、自プラットフォームの負荷が非常に高い場合や、提供していないサービスやリソースをエージェントから求められた場合などに、他のプラットフォームが該当する機能を有しているかどうかを調べ、その結果をもとに他のプラットフォームへの移動を指示する。また、他のプラットフォームの負荷が高い場合などに、自プラットフォームへの移動をエージェントに指示するといった例が考えられる。
【0036】
請求項6の発明は、前記プラットフォームプロファイルは、それぞれのプラットフォームについて、
a)エージェントを移動させるための機能を備えているかどうか、
b)そのプラットフォームにかかわるネットワーク回線の信頼性が高いか低いか、
c)エージェントを永続的に存在させることができるか、
d)エージェントにどのような種類の動作を認めているか、
e)どのようなプログラミング言語を実行することができるか、
f)前記移動のための処理をプラットフォームが主体的に管理するか、
g)どのような種類及び分量のリソースを提供するか、
h)どのようなエージェントが存在しているか、
i)どのようなサービスを提供するか、
j)いつまで活動するか、
のうち少なくとも1つの情報を表すことを特徴とする。
請求項6の発明では、エージェントの移動をサポートしているかだけでなく、プラットフォームが提供するリソース、サービス、動作の種類ごとの許諾(パーミッション)など、いろいろな項目をプラットフォームプロファイルに登録しておくことができるので、このようなプラットフォームプロファイルを参照することで、移動に関してきめ細かな判断を容易に行うことが可能になる。
【0037】
請求項7の発明は、前記エージェントプロファイルは、それぞれのエージェントについて、
k)エージェントがプラットフォーム間で移動する能力を持つかどうか、
l)前記移動のための処理をエージェントが主体的に管理するか、
m)エージェントがどのような種類及び分量のリソースを必要とするか、
n)いつまで活動するか、
o)エージェントの動作がどのようなプログラミング言語で記述されているか、
p)エージェントがどのようなサービスを必要とするか、
のうち少なくとも1つの情報を表すことを特徴とする。
請求項7の発明では、プラットフォーム間での移動能力だけでなく、エージェントの動作がどのような言語やバージョンで記述されているか、どのようなリソース、サービス、パーミッションが必要かなど、いろいろな項目をエージェントプロファイルに登録しておくことができるので、このようなエージェントプロファイルを参照することで、移動に関してきめ細かな判断を容易に行うことが可能になる。
【0038】
請求項8の発明は、前記プロファイルをどのように参照するかを判断する参照判断手段を備えたことを特徴とする。
請求項8の発明では、移動にかかわる判断を行うとき、プラットフォームプロファイルやエージェントプロファイルの参照をどのように行うかが決定されるので、それらプロファイルがどのハードウェア上にあるかなどの状況に応じて、最も効率的な参照の仕方を選ぶことができる。例えば、あるエージェントやそのエージェントが現在いるプラットフォームがあるプロファイルを参照しようとするとき、負荷が高かったり、そのプラットフォームのファイルを参照する権限がなかったり、そのプラットフォームのファイルが他のプラットフォーム上にあって途中のネットワーク回線の状態が悪い、といった事情のため自ら参照できない場合、他のエージェントに参照を依頼する必要がある。また、例えば、このように参照を依頼されたエージェントやそのプラットフォームは、最新の正確な情報を得るためには、指定されたプロファイルを新たに調べることが望ましいが、負荷が高いような場合は、既知の情報、すなわち前回参照してエージェントのメモリ領域内に保存されている情報を回答するほうが応答時間の点で望ましい場合も考えられる。
【0039】
【発明の実施の形態】
以下、本発明の実施の形態(以下「実施形態」という)について図面を参照しながら説明する。なお、本発明は、周辺機器を持つコンピュータを、ソフトウェアで制御することによって実現されることが一般的と考えられる。この場合、そのソフトウェアは、この明細書の記載にしたがった命令を組み合わせることで作られ、上に述べた従来技術と共通の部分には従来技術で説明した手法も使われる。また、そのソフトウェアは、プログラムコードだけでなく、プログラムコードの実行のときに使うために予め用意されたデータも含む。
【0040】
そして、そのソフトウェアは、CPU、コプロセッサ、各種チップセットといった処理装置、キーボードやマウスといった入力装置、メモリやハードディスク装置といった記憶装置、ディスプレイやプリンタといった出力装置などの物理的な資源を活用することで本発明の作用効果を実現する。
【0041】
但し、本発明を実現する具体的なソフトウェアやハードウェアの構成はいろいろ変更することができる。例えば、ソフトウェアの形式には、コンパイラ、インタプリタ、アセンブラなどいろいろあり、外部との情報をやり取りするにも、フロッピーディスクなどの着脱可能な記録媒体、ネットワーク接続装置などいろいろ考えられる。また、本発明を実現するソフトウェアやプログラムを記録したCD−ROMのような記録媒体は、単独でも本発明の一態様である。さらに、本発明の機能の一部をLSIなどの物理的な電子回路で実現することも可能である。
【0042】
以上のように、コンピュータを使って本発明を実現する態様はいろいろ考えられるので、以下では、本発明や実施形態に含まれる個々の機能を実現する仮想的回路ブロックを使って、本発明と実施形態とを説明する。
【0043】
〔1.構成〕
〔1−1.全体の構成〕
まず、図1は、本実施形態のエージェントシステムの全体構成を示すブロック図である。すなわち、本実施形態のエージェントシステムは、この図に示すように、複数の電子計算機(マシンと呼ぶ)100,110,120,130,140をネットワーク回線Nで接続したコンピュータネットワークであり、図1では、これらマシンの代表例として、マシン100のハードウェア構成を示している。
【0044】
つまり、マシン100は、ハードウェアとして、CPU101と、RAMなどを使ったメインメモリ102と、補助記憶装置であるハードディスク装置103と、CRTディスプレイやプリンタなどの出力装置104と、キーボードやマウスなどの入力装置105と、ネットワーク接続装置106と、それらを結線するバスなどを備えていて、このネットワーク接続装置106を通じてネットワーク回線Nに接続されている。また、マシン110〜140もマシン100と同様のハードウェア構成を備えている。
【0045】
また、物理的には単一のマシン上に、ネットワークを管理する理論的な単位として複数のノードを設定することも可能であるが、ここでは、両者を含めてマシンと総称する。そして、各マシン上には、1つ又は複数のプラットフォーム107が設定される。このプラットフォーム107は、エージェント108が活動する舞台であり、エージェントが必要とするコンピュータ上のリソース(資源)や、サービスなどを提供する。
【0046】
このようなプラットフォーム107は、起動前はハードディスク装置103上にデータとして存在し、起動することでメインメモリ102上にロードされる。このように起動されメインメモリ102上にロードされたプラットフォーム107の動作は、プラットフォーム107の動作を記述したプログラムコードをCPU101が実行するという処理によって実現される。また、他のマシン110,120,130,140の上にも、同様に、それぞれプラットフォーム117,127,137,147が設定されるが、以下、これらの107,117,127,137,147を代表してプラットフォーム107と表す。
【0047】
また、それぞれのプラットフォーム107は、後に述べるように、そのプラットフォームのいろいろな属性を表す情報として、プラットフォームプロファイルを持つ。この情報は、そのプラットフォーム107が使っているハードディスク装置103などの上に保持され、後で説明するようなデータ構造を有する。また、プラットフォームの活動を実現する以下のような構成は、プラットフォームの内部に用意される。
【0048】
〔1−2.プラットフォームの具体的な構成〕
また、図2は、プラットフォーム107に代表される各プラットフォームと、その上で動作するエージェントの構成を示す機能ブロック図であり、この図ではエージェントを符号Aで表す。すなわち、プラットフォームは、まず、この図に示すように、プラットフォーム上でエージェントを活動させる手段として、エージェント管理部1と、エージェント情報2と、プラン実行部3と、プラン生成部4と、プラン生成用知識5と、を備えている。
【0049】
このうち、エージェント管理部1は、エージェントを新しく生成したり、登録して監視したり、メモリなどのリソースを割り当てたり、消滅させたりといった管理を行う部分である。また、エージェント情報2は、個々のエージェントが活動するために必要な情報であり、エージェント情報2の具体例としては、プランと、内部状態とを挙げることができる。このうちプランは、エージェントがどのような場合にどのような行動を取るべきかを記述したもので、内部状態とは、そのようなプランを実行するときに使う変数、スタック、ポインタ、バッファなど各種の情報を総称したものである。
【0050】
また、プラン実行部3は、上に述べたようなプランを実行することで、プラットフォーム上でエージェントAを存在させ、活動させる部分である。また、プラン生成部4は、上に述べたようなプランを、エージェントが生成されたときに生成したり、その後も状況に応じて再生成する部分である。
【0051】
また、プラン生成用知識5は、プラン生成に使う知識であり、その具体例として、アクション知識と、ローカル知識とを挙げることができる。このうちアクション知識は、プランを構成する部品となる動作として、どのような種類のアクションがあるかを表すもので、ローカル知識は、ネットワーク上のどのようなプラットフォーム上にどのようなファイルや機能があるかといった事実に関する知識である。
【0052】
このローカル知識には、不確実知識が含まれる。この不確実知識は、プランが生成されたプラットフォーム以外の他のプラットフォームでの何らかの処理が必要な知識であり、例えば、あるプラットフォームF1上において、ある目的のファイルが他のプラットフォームF2に「存在する可能性がある」といった知識である。このような不確実知識を使って生成されたプランは、実行するときに、不確実知識を確認するためにそのような他のプラットフォームでの処理が必要となる。
【0053】
また、プラットフォームは、移動部6と、協調部7と、通信部8と、を備えている。このうち移動部6は、エージェントをプラットフォーム間で移動させる手段であり、具体的には、エージェント情報2を他のプラットフォームに転送したうえで、エージェント管理部1に指示してエージェントを抹消させたり、他のプラットフォームからエージェント情報2の転送を受け、エージェント管理部1に指示してそのエージェント情報2を使ってエージェントを生成させ、活動を開始させたりする部分である。
【0054】
また、協調部7は、複数のエージェントの間で協調を行わせる手段であり、特に、互いに異なったプラットフォーム上に存在する複数のエージェントの間で協調を行わせる点に特に実益がある。具体的には、この協調部7は、契約ネットプロトコルなどにしたがって、自プラットフォーム上のエージェントから他のプラットフォーム上のエージェントに作業を依頼させたり、逆に、他のプラットフォーム上のエージェントから自プラットフォーム上のエージェントに作業の依頼を請け負わせたりする部分である。また、通信部8は、移動部6や協調部7などの指示に基づいて、ネットワーク回線を通して他のプラットフォームとの間でデータ転送などの通信を行う部分である。
【0055】
〔1−3.エージェントの構成〕
また、エージェントは、システムを構成する単位で、実行可能なプログラムコードと、その実行で使うデータ、特にプラン及び内部状態の集合であり、条件に応じて自律的に行動する。このエージェントは、生成されて起動される前はハードディスク装置などの記憶装置上にデータとして保存しておくことができ、この場合、生成されたり起動されることでメモリ上にロードされる。このように起動されてメモリ上にロードされたエージェントの活動は、エージェントを構成するプログラムコードをCPUが実行するという処理によって実現される。
【0056】
また、それぞれのエージェントは、そのエージェントのいろいろな属性を表す情報として、エージェントプロファイルを持つ。この情報は、エージェントの内部に保持されるか、又はエージェントと対応付けてプラットフォーム内に保持され、後で説明するようなデータ構造を有する。また、エージェントの活動を実現する構成は、以下に述べるようにエージェントの内部に用意される。
【0057】
すなわち、プラットフォーム上では、エージェント管理部1によって生成され、プラン実行部3がプランを実行することでエージェントAが活動するが、このエージェントAは、移動協調判断部11と、主体判断部12と、タイミング判断部13と、移動先選択部14と、順序決定部15と、を備えている。
【0058】
このうち移動協調判断部11は、エージェントAが現在いるプラットフォームとは異なる他のプラットフォームでの処理が必要になった場合に、当該他のプラットフォームへ移動するか、当該他のプラットフォームに存在する他のエージェントと協調を行うかを判断する手段である。また、主体判断部12は、エージェントAが他のプラットフォームへ移動するための手順を、エージェントAが主体的に管理するか、プラットフォームが主体的に管理するかを判断する手段である。
【0059】
また、タイミング判断部13は、エージェントAが他のプラットフォームに移動しようとするとき、直ちに移動するかどうかを判断する手段である。また、移動先選択部14は、移動先のプラットフォームの候補が複数あるとき、どのプラットフォームに移動するかを選択する手段である。また、順序決定部15は、エージェントが複数のプラットフォームに順次移動しようとするとき、それぞれのプラットフォームにどのような順序で移動するかを決定する手段である。
【0060】
〔1−4.プラットフォームの他の構成〕
また、プラットフォームは、割り振り部9と、プラットフォームプロファイル21と、上に述べたエージェントプロファイル22と、参照判断部23と、を備えている。このうち割り振り部9は、エージェントシステム内の各プラットフォームについて、状況に応じてエージェントを移動させることでエージェントの割り振りを行う部分である。
【0061】
具体的には、割り振り部9は、自プラットフォーム上のエージェントを他のプラットフォームへ移動させるかどうか、また、他のプラットフォーム上のエージェントを自プラットフォームへ移動させるかどうかといった判断を、各プラットフォームやネットワーク回線の状況に応じて行い、この判断の結果にしたがって、エージェントに移動を指示するように構成されている。
【0062】
また、プラットフォームプロファイル21は、それぞれのプラットフォームについて、移動にかかわる判断の基礎となる情報を表すもので、後で詳しく説明するが、
a)エージェントを移動させるための機能を備えているかどうか、
b)そのプラットフォームにかかわるネットワーク回線の信頼性が高いか低いか、
c)エージェントを永続的に存在させることができるか、
d)エージェントにどのような種類の動作を認めているか、
e)どのようなプログラミング言語を実行することができるか、
f)前記移動のための処理をプラットフォームが主体的に管理するか、
g)どのような種類及び分量のリソースを提供するか、
h)どのようなエージェントが存在しているか、
i)どのようなサービスを提供するか、
j)いつからいつまで活動するか、
という項目の情報を含んでいる。
【0063】
また、エージェントプロファイル22は、それぞれのエージェントについて、移動にかかわる判断の基礎となる情報を表すもので、後で詳しく説明するが、
k)エージェントがプラットフォーム間で移動する能力を持つかどうか、
l)前記移動のための処理をエージェントが主体的に管理するか、
m)エージェントがどのような種類及び分量のリソースを必要とするか、
n)いつからいつまで活動するか、
o)エージェントの動作がどのようなプログラミング言語で記述されているか、
p)エージェントがどのようなサービスを必要とするか、
という項目の情報を含んでいる。
【0064】
これらプラットフォームプロファイル21やエージェントプロファイル22を、どこに、どのように保存しておくかについてはいろいろな形が考えられる。典型的には、それぞれのエージェントに関するエージェントプロファイル22はそのエージェントの一部としておけばよく、また、プラットフォームに関するプラットフォームプロファイル21は、それぞれのプラットフォームに置いておけばよい。しかし、これらプラットフォームプロファイル21やエージェントプロファイル22は、予め決めた特定のプラットフォームや、一部のいくつかのプラットフォームに集中保存することもできる。
【0065】
また、参照判断部23は、これらのプロファイル21をどのように参照するかを判断する参照判断手段であり、具体的には例えば、プラットフォームの負荷、プロファイルを参照するための権限をエージェントが持っているかどうか、目的のプロファイルがあるプラットフォームまでのネットワーク回線の状態などに応じて、他のエージェントに参照を依頼するかどうかを判断したり、他のプラットフォームや他のプラットフォーム上のエージェントから協調部7を通じて参照を依頼された場合は、負荷の程度などに応じて、改めてプロファイルから最新の情報を調べるか、前回の参照などで既に判明している範囲で回答するかなどを判断するように構成されている。
【0066】
〔1−5.プラットフォームプロファイルのデータ構造〕
また、プラットフォームプロファイル21のデータ構造、すなわち項目としては、次のようなものが考えられる。
a)移動サポート
これは、個々のプラットフォームが移動エージェント、すなわちプラットフォーム間を移動するエージェントをサポートしているかを表し、移動サポートaと呼ぶ。この項目では、例えば、あらかじめ決めた「mobility-support」といった適当なキーワードに続けて、次に示すようにYes/Noなどの値として記述しておいたり、そのような名前の属性に属性値として設定しておけばよい。
mobility-support Yes / No
【0067】
b)信頼性
これは、プラットフォーム間の情報のやり取りに使うネットワーク回線やその部分ごとに、ネットワーク回線の信頼性が高いか低いかを表すもので、信頼性bと呼ぶ。この項目では、例えば、あらかじめ決めた「network-reliability 」といった適当なキーワードに続けて、次に例示するようにHigh/Lowなどの値として記述したり、そのような名前の属性に属性値として設定しておけばよい。
network-reliability High / Low
【0068】
c)永続性
これは、個々のプラットフォームが、エージェントを永続的に存在させることができるかどうかを表すもので、永続性cと呼ぶ。例えば、PDAのような小型携帯端末などについては、常時電源をオンにしておく性質のものではなく、またハードディスク装置やメインメモリなどの空き容量にも限りがあるため、エージェントを永続的に存在させることは期待できない。この項目では、例えば、あらかじめ決めた「persistency 」といった適当なキーワードに続けて、次に例示するようにYes/Noなどの値として記述しておいたり、そのような名前の属性に属性値として設定しておけばよい。
persistency Yes / No
【0069】
d)パーミッションリスト
これは、個々のプラットフォームが、それぞれのエージェントごとに、データの書き込みや読み出し、プランの実行といった行動の種類ごとに、許しているかどうか(パーミッション)を表すものであり、パーミッションリストdと呼ぶ。この項目では、例えば、あらかじめ決めた「permission 」といった適当なキーワードに続けて、1つ又は複数のエージェントの名前と、そのエージェントにどのような行動について許可を与えているかを、次に例示するように列挙しておけばよい。
Figure 0003688471
【0070】
e)プラットフォーム言語リスト
これは、個々のプラットフォーム上で動作可能な言語とバージョンのリストであり、プラットフォーム言語リストeと呼ぶ。プラットフォーム上で動作可能な言語としては、例えば「Java言語」の「Ver. 1.1以降」や、「VC++」の「Ver. 5.0以降」などといった範囲が考えられる。この項目では、例えば、あらかじめ決めた「language/version」といった適当なキーワードに続けて、1つ又は複数の言語の種類やバージョンを、次に例示するように列挙しておけばよい。
Figure 0003688471
【0071】
f)プラットフォーム移動管理
これは、個々のプラットフォームの側で、エージェントをプラットフォーム間での移動させるための一連の処理、すなわちプロトコルを主体的に管理するかどうかを表すもので、プラットフォーム移動管理fと呼ぶ。この項目では、例えば、あらかじめ決めた「mobility-protocol-support 」といった適当なキーワードに続けて、次に例示するようにYes/Noなどの値として記述しておいたり、そのような名前の属性に属性値として設定することができる。
mobility-protocol-support Yes / No
【0072】
g)提供リソースリスト
これは、個々のプラットフォームがエージェントに提供するリソースの種類/量と現在のリソースの量とをリストにしたもので、提供リソースリストgと呼ぶ。リソースの種類としては、例えば、マルチタスクシステムにおけるCPUのタイムスライス、ハードディスク容量、メモリ容量などの物理的資源が考えられる。この項目では、あらかじめ決めた「resources 」といった適当なキーワードに続けて、1つ又は複数のリソースの名称、最大限提供可能な量や現在提供可能な量を、次に例示するように列挙しておけばよい。
Figure 0003688471
【0073】
h)エージェントリスト
これは、個々のプラットフォーム上に乗っている、すなわち現在活動中のエージェントのリストであり、エージェントリストhと呼ぶ。この項目では、あらかじめ決めた「agents」といった適当なキーワードに続けて、1つ又は複数の名称や種類を、次に例示するように列挙しておけばよい。
Figure 0003688471
【0074】
i)提供サービスリスト
これは、個々のプラットフォームがエージェントに対してどのようなサービスを提供できるかを表すリストであり、提供サービスリストiと呼ぶ。プラットフォームが提供するサービスとしては、例えば、無線通信、プランニング、データベースへのアクセスなどのソフトウェア的な各種の機能を挙げることができる。この項目では、例えば、あらかじめ決めた「services」といった適当なキーワードに続けて、サービスの名称を、次に例示するように列挙しておけばよい。
services servicename1,servicename2,・・・
j)プラットフォームスケジュール
これは、個々のプラットフォームが動作している時間帯を表すもので、このスケジュールに応じて、そのプラットフォーム上のエージェントがいつまで存続できるか、すなわち存続期間、存続期限、停止期間などが決まる。プラットフォームが動作している時間帯や存続期限などに影響する事柄としては、例えば、寿命、メンテナンス時間帯、電源が供給される時間帯などを挙げることができる。この項目はプラットフォームスケジュールjと呼び、例えば、あらかじめ決めた「schedule」といった適当なキーワードに続けて、そのプラットフォームの起動時刻と終了時刻との組を、次に例示するように1つ又は複数列挙しておけばよい。
Figure 0003688471
〔1−6.エージェントプロファイルのデータ構造〕
また、エージェントプロファイル22のデータ構造、すなわち項目としては、次のようなものが考えられる。
k)移動可能性
これは、エージェント自体がプラットフォーム間で移動する機能を持っているかどうかを表すもので、移動可能性kと呼ぶ。この項目では、例えば、あらかじめ決めた「mobility-possibility」といったキーワードに続けて、次に示すようにYes/Noなどの値で記述しておいたり、そのような名称の属性に属性値として設定することができる。
mobility-possibility Yes / No
【0075】
l)エージェント移動管理
エージェント自身が、プラットフォーム間での移動手順を主体的に管理する機能を持っているかどうかを表すもので、エージェント移動管理lと呼ぶ。エージェントの側で主体的に移動を管理する例としては、例えばエージェントの移動に必要な通信やデータのコピー、手続き終了の監視といった手順をエージェントが行い、プラットフォームはこれらの動作をネットワーク回線に機械的に仲介するのみといった例が考えられる。この項目は、例えば、あらかじめ決めた「mobility-protocol-support 」といったキーワードに続けて、次に例示するようにYes/Noなどの値で記述しておいたり、そのような名称の属性に属性値として設定することができる。
mobility-protocol-support Yes / No
【0076】
m)必要リソースリスト
これは、エージェントが必要とするリソースの種類と量のリストであり、必要リソースリストmと呼ぶ。この項目では、例えば、あらかじめ決めた「resources 」といったキーワードに続けて、次に例示するようにリソースの名称や必要量を列挙しておけばよい。
Figure 0003688471
【0077】
n)エージェントスケジュール
これは、エージェントがいつからいつまで活動を継続できるかを表し、エージェントの側の存続期間、停止期間を決めるもので、エージェントスケジュールnと呼ぶ。このようなエージェントの側の存続期限はいわばエージェントの寿命にあたるものであり、予め決められた終了時刻などをタイマーで監視し、時刻が到来するとエージェントが自発的に消滅したり外部からエージェントを抹消するなどの処理によって実現することができる。この項目では、あらかじめ決めた「schedule」といったキーワードに続けて、エージェントの起動時刻や終了時刻を次に例示するように列挙しておけばよい。
Figure 0003688471
【0078】
o)エージェント言語バージョン
これは、エージェントを構成するプログラムコードがどのような言語のどのようなバージョンで記述されているかを表すもので、エージェント言語バージョンoと呼ぶ。この項目は、例えば、あらかじめ決めた「language/version」といった適当なキーワードに続けて、次に例示するように、言語の種類やバージョンを記述しておけばよい。
language/version 言語の種類、バージョン
【0079】
p)必要サービスリスト
これは、エージェントが活動するためにどのようなサービスを必要とするかを表すもので、必要サービスリストpと呼ぶ。この項目では、例えば、あらかじめ決めた「services」といったキーワードに続けて、次に例示するようにサービスの名称を記述しておけばよい。
services servicename1,servicename2,・・・
以上説明したようなデータ構造を持つプラットフォームプロファイル21及びエージェントプロファイル22は、具体的には例えば、それぞれ図3及び図4に示すような形式のデータとして、個々のプラットフォームごとに、メインメモリ上又はハードディスク装置のような補助記憶装置上に格納されている。なお、図3に示すプラットフォームプロファイルの例と、図4に示すエージェントプロファイルの例は、それぞれ、上に説明したデータの項目に加えて、プラットフォーム名などの識別子や、移動や協調などにどのようなプロトコルを使うかなどの項目を加えた例であるが、具体的なデータ構造は実施の際に自由に決めることができる。
【0080】
〔2.作用〕
上に述べたように構成された本実施形態は、次のように働く。まず、図5は、本実施形態における処理手順を示すフローチャートである。
【0081】
〔2−1.要求記述の入力と初期化〕
すなわち、まず、利用者が、本システムへの要求記述を入力する(ステップ201)。この要求記述は、情報処理の結果として達成したい状態を、予め定められた形式で記述したものであり、このように入力された要求記述はゴールに変換される。このゴールは、エージェントによる情報処理によって達成したい状態を、エージェントやプラン生成部4が処理できる形式で表わしたものである。
【0082】
続いて、初期化の処理として、プラットフォームのエージェント管理部1が、ゴールの達成に使うエージェントを生成し、プラットフォームプロファイル21のエージェントリストhに生成したエージェントの名称を登録したり、生成したエージェントのエージェントプロファイル22を設定したり、エージェントの内部状態に所定の初期値を設定したり、エージェントに資源を割り当てるといった初期化の処理を行う(ステップ202)。
【0083】
〔2−2.プランニング〕
このようにエージェントが生成されると、プラン生成部4が、変換されたゴールを達成するためのプランを生成(プランニング)する(ステップ203)。ここで、プラン生成用知識5には、プランを構成する部品として、エージェントはどのような種類の動作を実行できるかという情報、すなわちアクション知識が含まれている。このような単位となる動作はアクションとも呼ばれ、動作ごとに、事前条件と事後条件とが予め決められている。
【0084】
ここで、事前条件とは、その動作を実行するために必要な条件であり、事後条件とは、その動作の実行によって作りだされる条件である。このため、ある動作である事後条件が達成されれば、その事後条件に対応する事前条件を持つ動作が実行できる状態となる。例えば、「ファイルをコピーする」という動作を行うには、「現在いるプラットフォームにファイルが存在する」という事前条件が必要であり、コピーの動作を行なった結果として「ファイルのコピーが存在する」という事後条件が産み出される。
【0085】
すなわち、プランの生成は、最終的なゴールを事後条件として産み出す動作を発見し、この動作の事前条件を事後条件として産み出すさらに別の動作を発見する、という処理を続けることによって、プランを実行する前の状態(現在の状態)と最終的なゴールとの間をつなぐ動作の列を得ることである。なお、図6は、生成途中におけるプランの例を示す図であり、この例では、動作P2の一方の事前条件C5と、動作P3の事前条件C7について、これら事前条件を事後条件として産み出す動作がまだ見つかっていない。このように、事後条件として産み出す他の動作がまだ見つかっていない事前条件は未達成ゴールと呼ばれる。
【0086】
このようなプラン生成の処理は、ゴールの側から因果を逆に遡って行ない、プランの実行を開始する時点で存在している状態(現在の状態)に到達すると終了する。図7は、このような処理によって完成したプランの例を示す図である。
【0087】
続いて、プラン生成の具体的な手順を図8に示す。すなわち、この手順では、ゴールを記録しておくゴールリストの一部を、図6に示したような未達成ゴールを記録しておく未達成ゴールリストとしておき、次のような処理を行う。まず、ゴールリストに未達成ゴールが存在しなくなるまで(ステップ401)、未達成ゴールリストから未達成ゴールを1つずつ選択し(ステップ402)、ゴールが満足されている場合を除いて(ステップ403)、次のような動作を行う。すなわち、ゴールである事前条件を事後条件によって達成可能な動作が存在すれば(ステップ404)この動作を選択し(ステップ405)、このように選択した動作(選択動作)を図6に示したような動作の系列(プラン木)に追加する(ステップ405)。
【0088】
また、ゴールを達成可能な動作が存在しない場合は、ゴールが不確実知識で達成可能かを判断する。ここで、不確実知識とは、上に述べたように、ネットワークの構成に関する知識のうち、他のプラットフォームで実際に何らかの処理を行なってみないと、真偽などの具体的な値がわからない知識である。ゴールが不確実知識で達成可能な場合はこの不確実知識を選択動作としてプラン木に追加するが(ステップ405)、不確実知識でも達成不可能な場合は、処理をバックトラックさせ(ステップ408)、現在の未達成ゴールを生じさせている動作を他の動作に置き換えて再度処理を行う。
【0089】
例えば、利用者が使用するプラットフォームの知識で、「ファイルaがプラットフォームF1に存在する」とされているとする。この場合、ファイルaを得るというゴールを利用者が与えると、プラットフォームF1に存在するという知識が参照されるので、生成されたエージェントのプランは、「プラットフォームF1に移動してファイルaのコピーを利用者のプラットフォームに送信する」、といった内容になる。
【0090】
しかし、エージェントがプラットフォームF1に移動した時点で、ファイルaはプラットフォームF2に移動されていると、ファイルaが発見できないためにプランは実行失敗となり、プラットフォームF1上で再プランニングが行なわれる。このとき、プラットフォームF2の知識をファイルの移動にあわせて「ファイルaはプラットフォームF2に存在する」のように更新しておく。これによって、新しいプランは「プラットフォームF2に移動してファイルaのコピーを利用者のプラットフォームに送信する」、という内容に変更される。この結果、エージェントはプラットフォームF2に自律的に移動し、ファイルaを無事発見して利用者のプラットフォームに送信することができる。
【0091】
〔2−3.プランの実行〕
上に述べたようなプランニング手順(図5のステップ203)が終了すると、プラン実行部3が、生成されたプランを実行する。プランの実行では、ゴールが達成されたと判定されるまで(ステップ204)、プランに含まれるアクションを1つずつ取り出し(ステップ206)、アクションに不確実知識が含まれている場合など、他のプラットフォームでの処理が必要な場合は、エージェントが目的のプラットフォームに移動するか(移動と呼ぶ)、目的のプラットフォームに存在するエージェントに処理を依頼(協調と呼ぶ)することで処理を実行する(ステップ209)。
【0092】
この移動又は協調の具体的な手順について、図9に示しながら、以下に詳しく説明する。
【0093】
〔2−4.移動か協調かの判断〕
図9の手順では、現在いるプラットフォームと異なるプラットフォームでの処理が必要になった場合、エージェントの移動協調判断部11は、その処理を行うために移動するか協調するかを、プラットフォームプロファイル21の移動サポートa、信頼性bや、エージェントプロファイル22の移動可能性kなどに基づいて、動的に選択する(ステップ31)。
【0094】
例えば、プラットフォームF1上のエージェントA1では、プラットフォームF2上での作業を必要とした際に、移動協調判断部11が、エージェントプロファイル22から移動可能性kを検索することによって、自分が移動可能であるかどうかを調べる。そして、自分が移動可能でないことがわかったときは、移動協調判断部11は協調を選択するので(ステップ32)、エージェントA1は協調部7を通して、プラットフォームF2上のエージェントA2とメッセージをやり取りすることで、必要な作業を依頼する(ステップ38)。
【0095】
一方、自分が移動可能であることがわかった場合、エージェントA1の移動協調判断部11は、さらにプラットフォームF1の内部にあるプラットフォームプロファイル21から移動サポートaを検索することによって、プラットフォームF1がエージェントを移動させる機能すなわち移動エージェントをサポートしているかどうかを調べる。なお、このようにプラットフォームプロファイル21の内容を知りたい場合は、プラットフォームF1にこれを問い合わせ、プラットフォームF1がプラットフォームプロファイル21を検索したうえで、その結果をエージェントA1に返すようにしてもよい。
【0096】
そして、プラットフォームF1が移動エージェントをサポートしていないことがわかった場合、移動協調判断部11は協調を選択し(ステップ32)、その結果、エージェントA1は協調部7を通して、プラットフォームF2上のエージェントA2に対して、必要な作業を依頼する(ステップ38)。
【0097】
一方、プラットフォームF1が移動エージェントをサポートしていることがわかった場合、エージェントA1の移動協調判断部11は、さらに、移動先となるプラットフォームF2の内部にあるプラットフォームプロファイル21から移動サポートaを検索することによって、プラットフォームF2も移動エージェントをサポートしているかどうかを調べる。なお、このようにプラットフォームF2のプラットフォームプロファイル21の内容を知りたい場合は、プラットフォームF2にこれを問い合わせ、プラットフォームF2がプラットフォームプロファイル21を検索したうえで、その結果をエージェントA1に返すようにしてもよい。
【0098】
そして、プラットフォームF2が移動エージェントをサポートしていないことがわかった場合、移動協調判断部11は協調を選択し(ステップ32)、その結果、エージェントA1は協調部7を通して、プラットフォームF2上のエージェントA2に対して、必要な作業を依頼する(ステップ38)。
【0099】
一方、プラットフォームF2が移動エージェントをサポートしていた場合、エージェントA1は、さらに、上に説明したのと同じように、移動元となるプラットフォームF1をネットワークに接続しているネットワーク回線の信頼性と、移動先となるプラットフォームF2をネットワークに接続しているネットワーク回線の信頼性とを、それぞれのプラットフォームプロファイル21から信頼性bを検索することによって調べる。
【0100】
そして、両者の信頼性が高い場合、移動協調判断部11は協調を選択し(ステップ32)、その結果、エージェントA1は協調部7を通して、プラットフォームF2上のエージェントA2に対して、必要な作業を依頼する(ステップ38)。一方、両者または片方のネットワーク回線の信頼性が低い場合、移動協調判断部11は移動を選択し(ステップ32)、その結果、エージェントA1は、プラットフォームF2上に移動するための動作に入り、例えば次に説明する主体判断部12を起動する(ステップ33)。
【0101】
〔2−5.主体の判断〕
上に説明したように、移動協調判断部11が移動すると判断した場合、主体判断部12は、移動手順をエージェントの側が主体的に管理するか、プラットフォームの側が主体的に管理するかを判断する(ステップ33)。すなわち、移動に関わる一連の処理手順をエージェントが管理する場合はエージェントの負荷が高くなる。一方で、移動手順をプラットフォームが管理する場合は、エージェントの移動の仕方に自由度がなくなり、結果として効率が悪い場合がある。
【0102】
このため、エージェントでは、主体判断部12が、エージェント自身が主体となって移動にかかわる手順を管理して進行するか、それらの手順をプラットフォームに任せるかを、プラットフォームプロファイル21のプラットフォーム移動管理fや提供リソースリストg、エージェントプロファイル22のエージェント移動管理lなどに基づいて動的に選択する。
【0103】
例えば、プラットフォームF1上のエージェントA1では、プラットフォームF2上へ移動すると判断された場合に、主体判断部12が、まずエージェントプロファイル22からエージェント移動管理lを検索することによって、自分が移動手順を主体的に管理する能力を持っているかどうかを調べる。また、エージェントA1の主体判断部12は、プラットフォームF1のプラットフォームプロファイル21からプラットフォーム移動管理fを検索することによって、プラットフォームF1が移動手順を主体的に管理する能力を持っているかどうかを調べる。
【0104】
なお、これらの事柄を調べるには、プラットフォームF1にこれを問い合わせ、プラットフォームF1がプラットフォームプロファイル21を検索した結果をエージェントA1に返すようにしてもよい。
【0105】
この結果、エージェントA1が移動を主体的に管理する機能を有している一方、プラットフォームF1は移動を主体的に管理する機能を有していない場合、主体判断部12はエージェント主体による移動を選択する。逆に、プラットフォームF1が移動を主体的に管理する機能を有している一方、エージェントA1は移動を主体的に管理する機能を有していない場合、主体判断部12はプラットフォーム主体による移動を選択する。この場合、エージェントA1は、移動手順をプラットフォームF1に依頼し、プラットフォームF1が主体となって、後で詳しく説明する通常移動とクローン移動を移動の態様として選択し、それを実行する。
【0106】
エージェントA1とプラットフォームF1の両方が移動を管理する機能をもつ場合、エージェントA1の主体判断部12は、プラットフォームF1のプラットフォームプロファイル21を検索し、プラットフォームF1におけるリソースの使用状況(負荷)を調べる。なお、このとき、プラットフォームF1に負荷を問い合わせ、プラットフォームF1がプラットフォームプロファイル21を検索したうえ、その結果をエージェントA1に返すようにしてもよい。
【0107】
そして、プラットフォームF1のリソース使用状況すなわち負荷が高い場合、主体判断部12はエージェント主体による移動を選択し、その結果、エージェントA1が主体となって、後で詳しく説明する通常移動とクローン移動を移動の態様として選択し、それを実行する。
【0108】
一方、プラットフォームF1の負荷が低い場合、主体判断部12はプラットフォーム主体による移動を選択し、その結果、エージェントA1は、移動手順をプラットフォームF1に依頼する。この場合、プラットフォームF1が主体となって、後で詳しく説明する通常移動とクローン移動を移動の態様として選択し、それを実行する。
【0109】
なお、エージェントA1とプラットフォームF1のどちらも移動を管理する機能を持たない場合、主体判断部12は移動不可能と判断する。この場合、エージェントA1は他の行動を検討することになるが、他の行動としては、例えば、協調によって他のエージェントに作業を依頼することや(ステップ38)、ゴール達成を諦めて作業を中断する、などが挙げられる。
【0110】
〔2−6.タイミングの判断〕
また、他のプラットフォームに移動する場合、エージェントは、直ちに移動するかしばらく待ってから移動するかというタイミングを判断する必要がある。つまり、例えば移動先のプラットフォームの負荷が高い場合や、移動先のプラットフォームとの間のネットワーク回線の信頼性が低い場合は、自身が使用するリソースの量などを考慮して、しばらく待ってから移動する方が良い場合がある。逆に、現在いるプラットフォームの負荷や存続時間によっては早く移動した方が良い場合もある。
【0111】
このため、エージェントが他のプラットフォームに移動することになった場合、エージェントのタイミング判断部13は、直ちに移動するかしばらく待ってから移動するかという移動のタイミングを、プラットフォームプロファイル21の信頼性b、永続性c、提供リソースリストg、プラットフォームスケジュールjや、エージェントプロファイル22のエージェントスケジュールnなどから動的に判断する(ステップ34)。
【0112】
例えば、プラットフォームF1上のエージェントA1が、プラットフォームF2上へ移動しようとする場合、エージェントA1のタイミング判断部13は、移動元であるプラットフォームF1について次のような判断を行う。すなわち、タイミング判断部13は、エージェントプロファイル22を検索することによって、自分がいつまで存続しうるかを表すエージェントスケジュールnを調べる。その結果、エージェントスケジュールnに示される自分の存続期限がもうすぐ、であった場合、タイミング判断部13は直ちに移動すると判断し、この結果、エージェントA1は直ちに移動する処理を開始する。
【0113】
エージェントA1の存続期限が間近に迫っていない場合、エージェントA1のタイミング判断部13は、プラットフォームF1のプラットフォームプロファイル21を検索することによって、プラットフォームF1上でエージェントが永続的に存在することができるかを表す永続性cと、自分がいつまで存続しうるかを表すプラットフォームスケジュールjと、を調べる。なお、これらの項目については、エージェントA1のタイミング判断部13からプラットフォームF1にこれを問い合わせ、プラットフォームF1がプラットフォームプロファイル21を検索したうえ、その結果をエージェントA1に返すようにしてもよい。
【0114】
その結果、永続性cに基づいてプラットフォームF1上でいつまでも活動することが不可能であることが判明した場合や、プラットフォームスケジュールjに基づいて、プラットフォームF1の存続期限がもうすぐ、であった場合、タイミング判断部13は直ちに移動すると判断し、この結果、エージェントA1は直ちに移動する処理を開始する。
【0115】
移動元にかかわる以上の処理において、直ちに移動すると判断されなかった場合、エージェントA1のタイミング判断部13は、続いて、移動先のプラットフォームF2にかかわる判断を次のように行う。すなわち、タイミング判断部13は、プラットフォームF2のプラットフォームプロファイル21を検索することによって、自分がプラットフォームF2に移動していった場合に、いつまで存続しうるかを表すプラットフォームスケジュールjを調べる。なお、この項目については、プラットフォームF2にこれを問い合わせ、プラットフォームF2がプラットフォームプロファイル21を検索したうえで、その結果をエージェントA1に返すようにしてもよい。
【0116】
その結果、プラットフォームスケジュールjに基づいて、移動先での自分の存続期限がもうすぐ、であった場合、タイミング判断部13は直ちに移動と判断し、その結果、エージェントはすぐに移動する処理に入る。
【0117】
移動先での存続期限も間近に迫っていない場合、エージェントA1のタイミング判断部13は、プラットフォームF1とF2について、それぞれのプラットフォームプロファイル21を検索することによって、ネットワークの信頼性bと、プラットフォームが提供するリソースの種類/量と現在のリソースの種類/量を表す提供リソースリストgを調べる。なお、これらの項目については、プラットフォームF1、F2にこれを問い合わせ、プラットフォームF1,F2がプラットフォームプロファイル21を検索し、その結果をエージェントA1に返すようにしてもよい。
【0118】
その結果、プラットフォームF1、F2ともに信頼性bが低い場合や、提供リソースリストgに基づいて、現在いるプラットフォームF1のリソースが移動先となるプラットフォームF2と比べて豊富であることが判明したような場合、タイミング判断部13は直ちに移動せずに留まると判断する。この場合、エージェントA1は移動する処理に入る前に、一定時間待つ。逆にプラットフォームF1かF2ともに信頼性bが高い場合や、提供リソースリストgに基づいて、現在いるプラットフォームF1のリソースが移動先と比べて豊富でないことが判明したような場合は、タイミング判断部13は直ちに移動と判断し、この結果、エージェントA1は直ちに移動する処理に入る。
【0119】
〔2−7.移動先の選択〕
また、移動先のプラットフォームとして複数の候補がある場合は、それぞれのプラットフォームの負荷や提供リソース、提供サービス、移動先での動作が可能であるかどうか、権限が与えられるか否か、そこに至るネットワーク回線の状態、移動先で永続的に存続しうるか、などから移動先を1つを選びだす必要がある。
【0120】
すなわち、移動先プラットフォームの候補が複数あるときは、エージェントの移動先選択部14が、各候補についての信頼性b、永続性c、パーミッションリストd、プラットフォーム言語リストe、提供リソースリストg、提供サービスリストi、プラットフォームスケジュールjなどに基づいて、移動先プラットフォームを選択する(ステップ35)。なお、これらの項目については、最低限満足しなければならないもののほか、重視する順に重み付けをしておき、重みの大きい順に判断の対象とすることが考えられる。
【0121】
例えば、プラットフォームF1上のエージェントA1では、移動先の候補としてプラットフォームF2とF3とが考えられる場合、移動先選択部14がそれぞれのプラットフォームF2,F3について、プラットフォームプロファイル21を検索することによって、エージェントに認めている行動の種類を表すパーミッションリストdと、サポートしている言語とバージョンを表すプラットフォーム言語リストeと、提供しているサービスの種類を表す提供サービスリストiと、を調べる。
【0122】
なお、これらの項目については、プラットフォームF2,F3にこれを問い合わせ、プラットフォームF2,F3が自己のプラットフォームプロファイル21を検索したうえ、その結果をエージェントA1に返すようにしてもよい。
【0123】
また、移動先選択部14は、同様に、プラットフォームF2,F3について、ネットワークの信頼性bと、エージェントが永続的に存在できるかを表す永続性cと、最大限提供できるリソースすなわち提供リソースと現在提供されているリソースを表す提供リソースリストgと、プラットフォームがいつまで存続しうるかを表すプラットフォームスケジュールjと、についても調べておく。
【0124】
このように、いろいろな項目を調べた結果、パーミッションリストdに基づいて、プラットフォームがエージェントA1にその上で動作するための権限を与えていないことが判明した場合や、そのプラットフォームのプラットフォーム言語リストeがエージェントA1の必要条件を満たさなかった場合、すなわち移動しようとするエージェントの動作を記述している言語やバージョンをそのプラットフォームが実行できない場合は、移動先選択部14はそのプラットフォームを移動先候補から外す。なお、エージェントの動作を記述するのに使われている言語やバージョンは、エージェントプロファイル中のエージェント言語バージョンoを参照することで判断することができる。
【0125】
また、提供サービスリストiに基づいて、プラットフォームがエージェントA1が必要とするサービスを提供していないことが判明した場合も、移動先選択部14はそのプラットフォームを移動先候補から外す。このとき、エージェントが必要とするサービスの種類は、エージェントプロファイル22中の必要サービスリストpを参照することで判断することができる。
【0126】
なお、このようにプラットフォームを移動先から外していった結果、移動先候補が存在しなくなった場合、移動先選択部14は、移動不可能であると判断し、その結果、エージェントA1は協調(ステップ38)など他の動作を検討することになる。
【0127】
次に、移動先選択部14は、残ったプラットフォームのなかから、一番適したプラットフォームを選択する。具体的には、例えば、信頼性bに関して各プラットフォームを比較して、信頼性の高い方に1点を与え、永続性cに関して各プラットフォームそれぞれに存続できるならばに1点を与え、提供リソースリストgに関して各プラットフォームを比較して、リソースの余裕が多い方に1点を与え、プラットフォームスケジュールjに関して各プラットフォームを比較して、存続時間の長い方に1点を与え、最も点数の高いプラットフォームを移動先として選択する。
【0128】
〔2−8.順序の決定〕
また、複数の移動先プラットフォームを順番に移動したい場合に、候補である移動先プラットフォームの負荷やそこに至るネットワーク状態などから最も適切な順序を決定する必要がある。このため、複数の移動先プラットフォームを順番に移動したい場合、エージェントの順序決定部15は、移動先プラットフォームそれぞれの信頼性b、永続性c、パーミッションリストd、プラットフォーム言語リストe、提供リソースリストg、提供サービスリストi、プラットフォームスケジュールjなどに基づいて、どのような順序で個々の移動先プラットフォームに移動するかを決定する(ステップ36)。
【0129】
例えば、プラットフォームF1上のエージェントA1について、移動先の候補であるプラットフォームF2及びF3に順番に移動する際、エージェントA1の順序決定部15は、プラットフォームF2,F3のプラットフォームプロファイル21を検索することによって、パーミッションリストd、プラットフォーム言語リストe、提供サービスリストi、信頼性b、永続性c、提供リソースリストg、プラットフォームスケジュールjを調べる。なお、これらの項目については、プラットフォームF2,F3にこれを問い合わせ、プラットフォームF2,F3が自己のプラットフォームプロファイル21を検索したうえ、その結果をエージェントA1に返すようにしてもよい。
【0130】
その結果、パーミッションリストdに基づいて、例えば、移動先のプラットフォームF2又はF3がエージェントA1にその上で動作するための権限を与えていないことが判明した場合、順序決定部15は、順序の決定が不可能であると判断する。
【0131】
また、プラットフォーム言語リストeに基づいて、移動先のプラットフォームF2又はF3がエージェントA1の必要条件を満たさないことが判明した場合、すなわちエージェントA1の動作を記述している言語やバージョンを実行できない場合や、提供サービスリストiに基づいて、移動先のプラットフォームF2やF3がエージェントA1の必要とするサービスを提供していないことが判明した場合も、順序の決定が不可能であると判断する。この場合、エージェントA1は他の動作を検討するが、この場合の他の動作としては、移動先の候補となるプラットフォームを選び直す、などが挙げられる。
【0132】
なお、エージェントが必要とする言語やバージョン、サービスの種類は、エージェントプロファイル22中のエージェント言語バージョンoや必要サービスリストpを参照することで判断することができる。
【0133】
次に、順序決定部15は、残ったプラットフォームについて、どのような順序で移動するかを決定する。具体的には、例えば信頼性bに関して各プラットフォームを比較して、信頼性の高いものに1点を与え、永続性cに関して各プラットフォームそれぞれに存続できるならば1点を与え、提供リソースリストgに関して各プラットフォームを比較して、リソースの余裕が多い方に1点を与え、プラットフォームスケジュールjに関して各プラットフォームを比較して、存続時間の長い方に1点を与え、合計点数の最も高いプラットフォームから順番に移動先として決定する。
【0134】
〔2−9.参照の判断〕
以上のような判断、選択、決定を行うときは、参照判断部23が、プラットフォームプロファイル21やエージェントプロファイル22プロファイルの情報(「プロファイル情報」と呼ぶ)をどのように参照するかを判断する。ここで、どのように参照するかについては、典型例として、エージェントが自ら参照してプロファイル情報を調べるか、又は他のエージェントやプラットフォームに参照を依頼するか、また、このように参照を依頼された側でもプロファイル情報を新たに調べるか、既に判明している既知の情報を使うかといった判断が考えられるが、具体的には自由に定めることができる。
【0135】
例えば、あるエージェントが独自にプラットフォームの状態を調べることができない場合、すなわちエージェントの負荷が高い場合、エージェントが目的とするプラットフォームプロファイル21を参照するためのアクセス権限(パーミッション)を持っていない場合、目的のプラットフォームとの間の通信状態が悪い場合などには、他のエージェントに依頼する必要がある。
【0136】
例えば、プラットフォームF1上のエージェントA1は、別のプラットフォームF2のプラットフォームプロファイル21から提供リソースリストgなどの項目を調べようとする場合、参照判断部23を使って以下のような判断を行う。すなわち、まず、エージェントA1の参照判断部23は、現在いるプラットフォームF1のプラットフォームプロファイル21を検索することによって、現在いるプラットフォームF1のリソース使用状況(負荷)を調べる。なお、この項目について、プラットフォームF1にこれを問い合わせ、プラットフォームF1が自己のプラットフォームプロファイル21を検索したうえ、その結果をエージェントA1に返すようにしてもよい。
【0137】
この結果、プラットフォームF1の負荷が高い場合、参照判断部23は、目的のプラットフォームプロファイル21の参照を他のエージェントなどに依頼することを選択する。その結果、エージェントA1は、目的のプラットフォームF2上のエージェントA2に対して、プラットフォームF2のプラットフォームプロファイル21の検索を依頼する。一方、プラットフォームF1の負荷が低い場合、参照判断部23は、プラットフォームプロファイル21を自ら直接参照して調べることを選択する。その結果、エージェントA1は、プラットフォームF2のプラットフォームプロファイル21を自ら直接検索する。
【0138】
また、他のプラットフォームからプロファイル情報の調査を依頼された側のエージェントは、自分が今いるプラットフォームの現在の負荷やネットワーク状態、および調査の対象となるプラットフォームの状態などから、現在知っている限りの情報、すなわち既に判明していて自分のメモリ領域などに記録されている既知の情報に基づいて参照結果を回答するか、新たにプロファイル情報を調べ直して回答するかを動的に選択する必要がある。
【0139】
そこで、他のプラットフォームからプロファイル情報の調査を依頼された側のエージェントでは、参照判断部23は、調査を依頼された情報をプラットフォームプロファイル21の提供リソースリストgなどを参照することで新たに調べ直すか、上に述べたような既知の情報に基づいて回答するかを選択する。例えば、上の例において、プラットフォームF2上のエージェントA2では、プラットフォームF2のプラットフォームプロファイル21を調べるよう依頼されると、参照判断部23が、プラットフォームF2のプラットフォームプロファイル21を検索することによって、現在いるプラットフォームF2のリソース使用状況(負荷)を調べる。なお、この項目について、プラットフォームF2にこれを問い合わせ、プラットフォームF2が自己のプラットフォームプロファイル21を検索したうえ、その結果をエージェントA2に返すようにしてもよい。
【0140】
この結果、プラットフォームF2の負荷が高い場合、参照判断部23は、既知の情報に基づくことを選択する。その結果、プラットフォームF2上で参照を依頼されたエージェントA2は、依頼してきた側のプラットフォームF1上のエージェントA1に対して、現在知っている限りの情報に基づいて回答する。一方、プラットフォームF2の負荷が低い場合、参照判断部23は、依頼された情報を新たに調べることを選択する。その結果、参照を依頼されたエージェントA2は、プラットフォームF2のプラットフォームプロファイル21から改めて最新の情報を検索し、その情報に基づいて依頼側のエージェントA1に対して回答する。
【0141】
〔2−10.指示手段〕
以上は、エージェントがプランを実行している際に他のプラットフォーム上での処理を必要とした場合についての説明であるが、エージェント自身が他のプラットフォームへの移動が必要と判断していない場合でも、プラットフォームの割り振り部9は、自プラットフォーム上のエージェントを他のプラットフォームへ移動させる必要がないかどうか、及び、他のプラットフォーム上のエージェントを自プラットフォームへの移動させる必要がないかどうかを監視して判断し、そのような移動が必要と判断すると、対象のエージェントに対して、判断にしたがった移動を指示する。
【0142】
すなわち、プラットフォームは自プラットフォームの状態や、自プラットフォームと関連する他のプラットフォームの状態に応じて、それらの上で動作するエージェントの割り振りを動的に行う必要がある。ここで、「関連する他のプラットフォーム」とは、例えば自プラットフォームとプラットフォームプロファイル21の全部又は一部が共通するプラットフォームである。
【0143】
例えば、自プラットフォームの負荷が非常に高い場合や、エージェントから自己が有していない機能を求められた場合などに、この割り振り部9は、他のプラットフォームが該当する機能を有しているかどうかを調べ、その結果をもとに他のプラットフォームへの移動をエージェントに指示するなどが考えられる。また、他のプラットフォームの負荷が高い場合など、そのプラットフォーム上のエージェントに自プラットフォームへの移動を指示するなどが考えられる。
【0144】
つまり、プラットフォームの割り振り部9は、プラットフォームプロファイル21の移動サポートa、信頼性b、永続性c、パーミッションリストd、プラットフォーム言語リストe、提供リソースリストg、エージェントリストhや、エージェントプロファイル22の移動可能性k、エージェント移動管理、必要リソースリストm、エージェント言語バージョンo、必要サービスリストpなどに基づいて、エージェントに移動を指示するかどうか判断する。なお、このようなプロファイル情報を参照するときも、上に説明したのと同じように、プロファイル情報をどのように参照するかを参照判断部23が判断する。
【0145】
例えば、プラットフォームF1は、任意のタイミングで、自プラットフォームのプラットフォームプロファイル21と他のプラットフォームのプラットフォームプロファイル21とを検索し、それぞれについて移動サポートa、つまり移動エージェントをサポートしているかと、提供リソースリストgすなわち提供するリソースの種類/量と現在のリソースの量のリストと、を調べる。
【0146】
その結果、両方のプラットフォームが移動エージェントをサポートし、かつ、他のプラットフォームを比較して自プラットフォームの負荷が少ない場合は、さらに、他のプラットフォームのプラットフォームプロファイル21を検索することによって、そのプラットフォーム上に存在しているエージェントのリストであるエージェントリストhを調べる。
【0147】
次に、他のプラットフォーム上のエージェントのエージェントプロファイル22を検索することによって、エージェントリストhに含まれている個々のエージェントについて移動可能かどうかを表す移動可能性kを調べる。その結果、移動可能なエージェントが含まれていた場合、そのエージェントについてエージェントプロファイル22を検索することによって、必要リソースリストm、エージェント言語バージョンo、必要サービスリストpを調べる。
【0148】
続いて、今度は自プラットフォームのプラットフォームプロファイル21を検索することによって、パーミッションリストd、提供リソースリストg、プラットフォーム言語リストe、提供サービスリストiを調べる。
【0149】
その結果、先にプロファイル情報を調べたエージェントが、自プラットフォーム上においても、実行パーミッションを有することになり、かつ、そのエージェントの必要とするリソース、サービス、言語、バージョンを全て提供できる場合、割り振り部9は、そのエージェントを自プラットフォームへ移動させるべきであると判断し、通信部8を通じてそのエージェントに対してそのような移動を指示する。
【0150】
一方で、自プラットフォームと比べて他のプラットフォームの負荷が少ない場合、割り振り部9はさらに、自プラットフォームのプラットフォームプロファイル21を検索することによってエージェントリストhを調べる。次に、このエージェントリストhに含まれるエージェント、すなわち自プラットフォーム上のエージェントについて、エージェントプロファイル22を検索することによって、移動可能性kを調べる。
【0151】
その結果、自プラットフォーム上のエージェントのなかに移動可能なエージェントが含まれていた場合は、割り振り部9はさらにそのエージェントについて、エージェントプロファイル22を検索することによって必要リソースリストm、エージェント言語バージョンo、必要サービスリストpを調べる。また、他のプラットフォームについて、プラットフォームプロファイル21を検索することによってパーミッションリストd、提供リソースリストg、プラットフォーム言語リストe、提供サービスリストiを調べる。
【0152】
その結果、先にプロファイル情報を調べたエージェントが、他のプラットフォーム上においても、実行パーミッションを有しており、かつ、そのエージェントの必要とするリソース、サービス、言語、バージョンの全てについて提供を受けられる場合、割り振り部9は、その自プラットフォーム上を他プラットフォームへ移動させるべきであると判断し、通信部8を通じてそのエージェントに対して、他のプラットフォームへの移動を指示する。
【0153】
〔2−11.エージェントの移動の詳細〕
以上に説明したような処理において、エージェントが他のプラットフォームに移動することになった場合、エージェントは、例えば自分が存在しているプラットフォームの移動部6を使ってプラットフォーム間での移動を行う(ステップ37)。ここで、移動の態様には、通常移動とクローン移動があり、エージェントA1は、移動の態様を選択してそれを実行する。
【0154】
すなわち、通常移動は、移動元のプラットフォーム(現在のプラットフォームと呼ぶ)ではエージェントが登録を解除されて抹消されるもので、例えば次のような手順で行われる。
−移動先プラットフォームへの移動要求の送信
−移動先プラットフォームからの返信の受信
−移動先プラットフォームへのエージェント情報の送信
−移動先プラットフォームからの移動成功/失敗通知の受信
−移動先プラットフォームでの実行開始
−現在のプラットフォームへのエージェントの登録解除
−現在のプラットフォーム上のエージェントの抹消
一方、クローン移動は、移動先にエージェントの複製(クローン)が送られるだけでなく、移動元である現在のプラットフォームでもクローンの原形となったエージェントが抹消されずに活動を続けるもので、ネットワーク全体としてはエージェントの総数が増えることになる。このクローン移動は、複数の違った知識やプランに基づいて複数の系統の処理を並行して行う場合に利用される。
【0155】
このクローン移動の手続きは、上に述べた通常移動の手順から、現在のプラットフォーム上でのエージェントの登録解除や抹消のステップを除いたもので、例えば次のような手順で行われる。
−移動先プラットフォームへの移動要求の送信
−移動先プラットフォームからの返信の受信
−移動先プラットフォームへのエージェントコードの送信
−移動先プラットフォームからの移動成功/失敗通知の受信
−移動先プラットフォームでの実行開始
このうち、上に述べた通常移動の手順を図10に示す。すなわち、この例では、エージェントの移動元のプラットフォームをローカルノード、移動先のプラットフォームをリモートノードと呼ぶ。この場合、ローカルノードからの移動要求(ステップ501)を受信したリモートノードは(ステップ502)、エージェント用のプロセスを設定する(ステップ503)。
【0156】
続いて、リモートノードから、プロセスの設定が完了した旨の通知(ステップ504)を受信したローカルノードは(ステップ505)、エージェントのプランや変数領域などのエージェント情報をリモートノードに送信する(ステップ506)。このエージェント情報を受信したリモートノードは(ステップ507)、エージェント情報を格納し(ステップ508)、ローカルノードへ移動成功の通知を送信し(ステップ509)、プランの解釈実行を開始する(ステップ510)。一方、成功の通知を受信したローカルノードは(ステップ511)、不要になったエージェント用のプロセスを消去する(ステップ512)。
【0157】
〔2−12.契約ネットプロトコル手続き〕
また、以上に説明したような処理において、エージェントが他のエージェントと協調を行うことになった場合、本実施形態では、それぞれのエージェントは、自分が存在しているプラットフォームの協調部7を使って、いわゆる契約ネットプロトコルによって協調を行う(ステップ38)。
【0158】
ここで、契約ネットプロトコル(Contract Net Protocol) 手続きの詳細を図11に示す(参考文献:Smith, R. G., "The Contract Net Protocol: High-level Communication and Control in a Distributed Problem Solver", IEEE Trans. Computers, Vol. 29, pp. 1104-1113(1980). )。この契約ネットプロトコルでは、エージェントから他のエージェントに依頼される作業をタスクと呼ぶ。また、タスクをエージェント間で依頼する契約ネットプロトコルは、それぞれのエージェントが存在するプラットフォームの協調部7同士の間で、通信部8を経由して行なわれる。
【0159】
〔2−12−1.タスクアナウンス〕
契約ネットプロトコルにおいてタスク実行を依頼する場合は、まず、タスクを持つエージェント(以下、タスクマネジャと呼ぶ)が、ステップ601において、タスクを依頼したいプラットフォーム群に対して依頼に関する情報(以下「タスク情報」という)をブロードキャストする。なお、ブロードキャストとは一定範囲の相手に対して無差別に情報を送信することであり、タスク情報をブロードキャストすることをタスクアナウンスという。ブロードキャストするタスク情報としては、例えば、タスクID、タスクの内容、タスクマネジャのID、プラン評価基準、入札期限などがある。
【0160】
〔2−12−2.入札〕
上に述べたようなタスク情報を受信したプラットフォームはエージェントを生成し、それらにタスク情報を転送する(ステップ602)。タスク情報を受け取った各エージェントは、自らが所属しているプラットフォームにおいてタスクを実行可能かどうか判断し(ステップ603)、タスク内容を実行可能なエージェントは、入札する旨の情報(以下「入札情報」や「入札メッセージ」という)をタスクマネジャに送信(入札)する(ステップ604)。なお、入札情報を送信したエージェントを入札エージェントと呼ぶ。
【0161】
入札情報には、例えば、タスクID、エージェントID、タスク実行プラン評価値などがあり、このうちタスク実行プラン評価値は、タスクアナウンスで示されたプラン評価基準に基づいて、入札エージェントが、自分がタスクを実行する場合における評価を計算したものである。
【0162】
〔2−12−3.入札締切と落札〕
タスクマネジャは、入札を締め切る入札期限と現在時刻を比較しながら入札情報を受信し、ステップ605において入札期限に到達すると、次のステップ606において入札締切を示すメッセージを発信する。この締切のメッセージは、タスク情報のブロードキャスト先とした全ての依頼プラットフォームに対してブロードキャストする。そして、タスクマネジャは、ステップ609において、落札するエージェントを決定する。この決定は、入札期限までに受信した各入札情報のタスク実行プラン評価値と、予め定めた決定の基準に基づいて、各エージェントの入札情報を比較することによって行なう。
【0163】
落札するエージェント(落札エージェントと呼ぶ)の決定は、タスクマネジャが、実際にタスクを依頼する先としてそのエージェントを決定することを意味するが、実際にタスクを依頼する時期は処理の内容に応じて異なっていてもよく、契約ネットプロトコルの終了後に直ちに依頼する場合もあれば、所定の時期まで待って依頼する場合もある。
【0164】
落札エージェントを決定すると、タスクマネジャは、ステップ610において、各入札エージェントに、落札の内容を表す落札情報をマルチキャスト(同報送信)する。この落札情報を受信することによって、落札エージェントは、タスクを実際に実行すべき旨の実行依頼を待つ状態となる。タスクマネジャは、落札されたタスクの実行をその後、落札エージェントに依頼し、その結果、落札エージェントは依頼されたタスクの内容を実際に実行する。
【0165】
上に述べたように、本実施形態では、エージェント間協調を実現するために契約ネットプロトコルを用いる。そして、契約ネットプロトコルで処理を他のプラットフォームに依頼する場合は、依頼側プラットフォームの持つ条件と請負側プラットフォームの持つ能力との間で、入札制による調和が図られる。このため、システム全体として優れた処理効率が実現される。
【0166】
〔3.効果〕
以上説明したように、本実施形態では、エージェントがあるプラットフォームで活動しているときに他のプラットフォームでの処理が必要になった場合、エージェントを当該他のプラットフォームに移動させるか、エージェントは現在のプラットフォームに留めたまま、当該他のプラットフォーム上のエージェントとメッセージ通信などで処理を依頼する、すなわち協調を行うかが、移動協調判断部11によって判断される。この結果、エージェントやプラットフォームによって移動をサポートしているかどうかが異なっていたり、プラットフォームの組み合わせによって、その間の回線の信頼性が異なるような場合でも、他のプラットフォームでの処理を円滑に行うことができる。
【0167】
また、本実施形態では、エージェントが他のプラットフォームへ移動するための手順、例えば、エージェントのプランや内部状態などの情報転送や移動先でのエージェント用プロセスの設定といった処理を、エージェントとプラットフォームのどちらが主体的に管理するかが、主体判断部12によって判断される。このため、エージェントの移動の仕方に自由度が増え、システムの状況や構成に応じて円滑に効率良くエージェントを移動させることができる。
【0168】
また、この実施形態では、エージェントが他のプラットフォームに移動しようとするとき、プラットフォームの状況や移動に使うネットワーク回線の状態などに応じて、直ちに移動するかしばらく待ってから移動するかがタイミング判断部13によって判断されるので、エージェントの移動のタイミングが多様化し、移動を確実に効率良く行うことができる。
【0169】
また、この実施形態では、移動先のプラットフォームの候補が複数あるとき、移動先として最適なプラットフォームが移動先選択部14によって選択されるので、処理が円滑に効率良く行われる。また、この実施形態では、エージェントが複数のプラットフォームに順次移動しようとするとき、それぞれのプラットフォームの負荷やそこに至るネットワーク回線の状態などに基づいて、最適な移動の順序が順序決定部15によって決定されるので、エージェントごと、プラットフォームごと、及びシステム全体の処理効率が向上する。
【0170】
また、この実施形態では、それぞれのプラットフォームの状態に応じて、エージェントにプラットフォーム間での移動の指示が割り振り部9によって伝えられる。このため、エージェントがそれぞれのプラットフォームに動的に割り振られ、システム全体の処理が効率化される。
【0171】
また、この実施形態では、それぞれのプラットフォームについて、エージェントの移動をサポートしているか、そのプラットフォームを接続しているネットワーク回線の信頼性が高いか低いかといった情報が、予めプラットフォームプロファイル21に用意されている。このため、移動にかかわる判断を行うとき、プラットフォームやネームサーバなどに直接アクセスして調べるまでもなく、そのような情報を容易に得ることができるので、移動にかかわる判断が効率化される。
【0172】
特に、この実施形態では、エージェントの移動をサポートしているかだけでなく、プラットフォームが提供するリソース、サービス、動作の種類ごとの許諾(パーミッション)など、いろいろな項目をプラットフォームプロファイル21に登録しておくことができるので、このようなプラットフォームプロファイル21を参照することで、移動に関してきめ細かな判断を容易に行うことが可能になる。
【0173】
また、本実施形態では、それぞれのエージェントについて、プラットフォーム間での移動をサポートしているか、どのようなリソースやサービスを必要とするかいった情報が、予めエージェントプロファイル22に用意されている。このため、移動にかかわる判断を行うとき、エージェントの内部状態や生成履歴などを参照して調べるまでもなく、そのような情報を容易に得ることができるので、移動にかかわる判断が効率化される。
【0174】
特に、本実施形態では、プラットフォーム間での移動能力だけでなく、エージェントの動作がどのような言語やバージョンで記述されているか、どのようなリソース、サービス、パーミッションが必要かなど、いろいろな項目をエージェントプロファイル22に登録しておくことができるので、このようなエージェントプロファイル22を参照することで、移動に関してきめ細かな判断を容易に行うことが可能になる。
【0175】
さらに、本実施形態では、移動にかかわる判断を行うとき、プラットフォームプロファイルやエージェントプロファイルの参照をどのように行うかが参照判断部23によって判断されるので、それらプロファイルがどのハードウェア上にあるかなどの状況に応じて、最も効率的な参照の仕方を選ぶことができる。
【0176】
〔4.他の実施形態〕
なお、本発明は上に述べた実施形態に限定されるものではなく、次に例示するような他の実施形態をも含むものである。例えば、本発明において、ネットワークの規模、形式、プラットフォーム数などは自由であり、エージェントを使って行う情報処理の種類や、それに使う具体的な言語や情報の内容も自由に決めることができる。
【0177】
また、上に述べた実施形態では、移動か協調かの判断、主体の判断、タイミングの判断、移動先の選択、移動順序の決定という判断の順序を示したが、これらの判断の順序はある程度入れ替えることが可能で、例えば、タイミングの判断の後で主体の判断を行ったり、移動先や移動の順序を決めた後で、個々の移動先ごとに主体やタイミングの判断を行うこともできる。また、上記実施形態を示す図2では、移動部6を、プラットフォームの構成要素としてエージェントAに含まれない形で示したが、移動部6はエージェント内部に設けてもよい。
【0178】
また、エージェントが他のプラットフォームに直ちに移動しない場合の待ち時間や、複数の候補に基づいて移動先や移動順序を決める具体的な基準は自由に決めることができる。また、プラットフォームプロファイルやエージェントプロファイルに具体的にどのような項目を記録しておくかも自由である。また、上に述べた実施形態では、プランニングを行うエージェントを主に例示したが、本発明は、プランニングを行わないエージェントに適用することもできる。
【0179】
【発明の効果】
以上のように、本発明によれば、状況に応じてエージェントの行動プランを作成し、他のノードでの処理を実現するために、ノード間で移動するか他のエージェントと協調するか条件に応じて動的に選ぶことで、変化に対応して効率よく情報を処理することができる。
【図面の簡単な説明】
【図1】本発明の実施形態の全体の構成を示すブロック図。
【図2】本発明の実施形態におけるプラットフォームの具体的な構成を示す機能ブロック図。
【図3】本発明の実施形態におけるプラットフォームプロファイルのデータ形式の具体例を示す機能ブロック図。
【図4】本発明の実施形態におけるプラットフォームプロファイルのデータ形式の具体例を示す機能ブロック図。
【図5】本発明の実施形態における処理手順を示すフローチャート。
【図6】本発明の実施形態において、生成途中のプランの例を示す概念図。
【図7】本発明の実施形態において、完成したプランの例を示す概念図。
【図8】本発明の実施形態におけるプラン生成の手順を示すフローチャート。
【図9】本発明の実施形態において、他のプラットフォームでの処理を移動又は協調によって行う手順を示すフローチャート。
【図10】本発明の実施形態において、プラットフォーム間でエージェントが移動する手順を示すフローチャート。
【図11】本発明の実施形態において、エージェント間での協調の手順を示すフローチャート。
【図12】従来技術の一例を示す機能ブロック図。
【符号の説明】
1…エージェント管理部
2…エージェント情報
3…プラン実行部
4…プラン生成部
5…プラン生成用知識
6…移動部
7…協調部
8…通信部
9…割り振り部
11…移動協調判断部
12…主体判断部
13…タイミング判断部
14…移動先選択部
15…順序決定部
21…プラットフォームプロファイル
22…エージェントプロファイル
31…エージェント情報記憶手段
41…入出力手段
51…エージェント管理手段
61…解釈実行手段
100,110,120,130,140…マシン
101…CPU
102…メインメモリ
103…ハードディスク装置
104…出力装置
105…入力装置
106…ネットワーク接続装置
107,117,127,137,147…プラットフォーム
N…ネットワーク回線
A,108,118,128,138,148…エージェント
L…ローカルノード
R…リモートノード

Claims (16)

  1. 複数のプラットフォームを備えたネットワーク上でソフトウェアエージェント動作させることで情報を処理するエージェントシステムにおいて、
    プラットフォーム上でエージェントを活動させる手段と、
    エージェントをプラットフォーム間で移動させる手段と、
    複数のエージェントの間で協調を行わせる手段と、
    それぞれのプラットフォームについて、移動にかかわる判断の基礎となる情報を表すプラットフォームプロファイルと、
    それぞれのエージェントについて、移動にかかわる判断の基礎となる情報を表すエージェントプロファイルとを備え、
    エージェントが現在いるプラットフォームとは異なる他のプラットフォームでの処理が必要になった場合に、当該他のプラットフォームへエージェント移動させるか、エージェント当該他のプラットフォームに存在する他のエージェントと協調を行なわせるかを、前記プラットフォームプロファイルとエージェントプロファイルに基づいて判断する手段と、
    エージェント他のプラットフォームへ移動させるための手順を、エージェント主体的に管理させるか、プラットフォームが主体的に管理するかを、前記プラットフォームプロファイルとエージェントプロファイルに基づいて判断する手段とを備えたことを特徴とするエージェントシステム。
  2. エージェントが他のプラットフォームに移動しようとするとき、直ちに移動するかどうかを判断する手段を備えたことを特徴とする請求項1記載のエージェントシステム。
  3. 移動先のプラットフォームの候補が複数あるとき、どのプラットフォームに移動するかを選択する手段を備えたことを特徴とする請求項1または請求項2に記載のエージェントシステム。
  4. エージェントが複数のプラットフォームに順次移動しようとするとき、それぞれのプラットフォームにどのような順序で移動するかを決定する手段を備えたことを特徴とする請求項1から3のいずれか1つに記載のエージェントシステム。
  5. 前記プラットフォームは、自プラットフォーム上のエージェントを他のプラットフォームへ移動させるか、及び、他のプラットフォーム上のエージェントを自プラットフォームへ移動させるかを判断する手段と、判断の結果をエージェントに指示する手段と、を備えたことを特徴とする請求項1から4のいずれか1つに記載のエージェントシステム。
  6. 前記プラットフォームプロファイルは、それぞれのプラットフォームについて、
    a)エージェントを移動させるための機能を備えているかどうか、
    b)そのプラットフォームにかかわるネットワーク回線の信頼性が高いか低いか、
    c)エージェントを永続的に存在させることができるか、
    d)エージェントにどのような種類の動作を認めているか、
    e)どのようなプログラミング言語を実行することができるか、
    f)前記移動のための処理をプラットフォームが主体的に管理するか、
    g)どのような種類及び分量のリソースを提供するか、
    h)どのようなエージェントが存在しているか、
    i)どのようなサービスを提供するか、
    j)いつまで活動するか、
    のうち少なくとも1つの情報を表すことを特徴とする請求項1記載のエージェントシステム。
  7. 前記エージェントプロファイルは、それぞれのエージェントについて、
    k)エージェントがプラットフォーム間で移動する能力を持つかどうか、
    l)前記移動のための処理をエージェントが主体的に管理するか、
    m)エージェントがどのような種類及び分量のリソースを必要とするか、
    n)いつまで活動するか、
    o)エージェントの動作がどのようなプログラミング言語で記述されているか、
    p)エージェントがどのようなサービスを必要とするか、
    のうち少なくとも1つの情報を表すことを特徴とする請求項1記載のエージェントシステム。
  8. 前記プロファイルを参照するに当たり、プラットフォームの負荷に応じてどのプロファイルを参照するかを判断する参照判断手段を備えたことを特徴とする請求項6または請求項7に記載のエージェントシステム。
  9. 複数のプラットフォームを備えたネットワーク上で情報処理装置を使用してソフトウェアエージェントを動作させることで情報を処理する情報処理方法において、
    前記プラットフォーム上でエージェントを活動させる手段により、プラットフォーム上でエージェントを活動させるステップと、
    前記エージェントをプラットフォーム間で移動させる手段により、エージェントをプラットフォーム間で移動させるステップと、
    前記複数のエージェントの間で協調を行わせる手段により、複数のエージェントの間で協調を行わせるステップと、
    前記プラットフォームプロファイルと前記エージェントプロファイルとに基づいて、
    エージェントが現在いるプラットフォームとは異なる他のプラットフォームでの処理が必要になった場合に、当該他のプラットフォームへエージェントが移動するか、エージェントが当該他のプラットフォームに存在する他のエージェントと協調を行うかを判断するステップと、
    エージェントが他のプラットフォームへ移動するための手順を、エージェントが主体的に管理するか、プラットフォームが主体的に管理するかを判断するステップとを含むことを特徴とする情報処理方法。
  10. エージェントが他のプラットフォームに移動しようとするとき、直ちに移動するかどうかを判断するステップを含むことを特徴とする請求項9記載の情報処理方法。
  11. 移動先のプラットフォームの候補が複数あるとき、どのプラットフォームに移動するかを選択するステップを含むことを特徴とする請求項9又は10記載の情報処理方法。
  12. エージェントが複数のプラットフォームに順次移動しようとするとき、それぞれのプラットフォームにどのような順序で移動するかを決定するステップを含むことを特徴とする請求項9から11のいずれか1つに記載の情報処理方法。
  13. 前記プラットフォームは、自プラットフォーム上のエージェントを他のプラットフォームへ移動させるか、及び、他のプラットフォーム上のエージェントを自プラットフォームへ移動させるかを判断するステップと、判断の結果をエージェントに指示するステップと、を実行することを特徴とする請求項9から12のいずれか1つに記載の情報処理方法。
  14. コンピュータを使って、複数のプラットフォームを備えたネットワーク上でエージェントが動作することで情報を処理するための情報処理用ソフトウェアを記録した記録媒体において、
    プラットフォーム上でエージェントを活動させるステップと、
    エージェントをプラットフォーム間で移動させるステップと、
    複数のエージェントの間で協調を行わせるステップと、
    それぞれのプラットフォームについて、移動にかかわる判断の基礎となる情報を予めプラットフォームプロファイルとして用意し、それぞれのエージェントについて、移動にかかわる判断の基礎となる情報を予めエージェントプロファイルとして用意しておき、これらプラットフォームプロファイルとエージェントプロファイルとに基づいて、
    エージェントが現在いるプラットフォームとは異なる他のプラットフォームでの処理が必要になった場合に、当該他のプラットフォームへエージェントが移動するか、エージェントが当該他のプラットフォームに存在する他のエージェントと協調を行うかを判断するステップと、
    エージェントが他のプラットフォームへ移動するための手順を、エージェントが主体的に管理するか、プラットフォームが主体的に管理するかを判断するステップを、
    コンピュータに実行させること特徴とする情報処理用ソフトウェアを記録した記録媒体。
  15. 前記ソフトウェアは前記コンピュータに、エージェントが他のプラットフォームに移動しようとするとき、直ちに移動するかどうかを判断させることを特徴とする請求項14記載の情報処理用ソフトウェアを記録した記録媒体。
  16. 前記ソフトウェアは前記コンピュータに、それぞれのプラットフォーム上のエージェントを他のプラットフォームへ移動させるかを判断させ、判断の結果をエージェントに指示させることを特徴とする請求項14又は15記載の情報処理用ソフトウェアを記録した記録媒体。
JP19627498A 1998-04-13 1998-07-10 エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体 Expired - Fee Related JP3688471B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP19627498A JP3688471B2 (ja) 1998-07-10 1998-07-10 エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体
US09/289,598 US6477563B1 (en) 1998-04-13 1999-04-12 Agent system and information processing method for same
US10/236,959 US6662207B2 (en) 1998-04-13 2002-09-09 Agent system and information processing method for same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19627498A JP3688471B2 (ja) 1998-07-10 1998-07-10 エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2000029847A JP2000029847A (ja) 2000-01-28
JP3688471B2 true JP3688471B2 (ja) 2005-08-31

Family

ID=16355088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19627498A Expired - Fee Related JP3688471B2 (ja) 1998-04-13 1998-07-10 エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体

Country Status (1)

Country Link
JP (1) JP3688471B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002108838A (ja) * 2000-10-02 2002-04-12 Ntt Comware Corp エージェント実行装置およびエージェント実行方法
JP3772102B2 (ja) 2001-07-30 2006-05-10 株式会社東芝 情報処理方法、情報処理装置及びプログラム
JP4120436B2 (ja) 2003-03-24 2008-07-16 富士ゼロックス株式会社 連携処理装置及びプログラム
JP2019144684A (ja) * 2018-02-16 2019-08-29 富士ゼロックス株式会社 情報処理システム及びプログラム
JP7308104B2 (ja) * 2019-08-30 2023-07-13 三菱重工業株式会社 無人機協調システム、無人機協調処理方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3622313B2 (ja) * 1996-01-29 2005-02-23 株式会社日立製作所 ドキュメント管理システム
WO1997035262A1 (fr) * 1996-03-15 1997-09-25 Hitachi, Ltd. Procede de generation automatique de programme et procede de commande d'execution
JP3952544B2 (ja) * 1996-09-17 2007-08-01 株式会社東芝 分散システム

Also Published As

Publication number Publication date
JP2000029847A (ja) 2000-01-28

Similar Documents

Publication Publication Date Title
US6477563B1 (en) Agent system and information processing method for same
US6760733B1 (en) Object management system and data processing system with centralized mechanism for managing containment relationships among objects
Fok et al. A lightweight coordination middleware for mobile computing
US6314114B1 (en) Distributed resource management
US6192389B1 (en) Method and apparatus for transferring file descriptors in a multiprocess, multithreaded client/server system
US20060048157A1 (en) Dynamic grid job distribution from any resource within a grid environment
EP0946020A1 (en) Interface between management manager and agents capable of function extension or deletion and multiprotocol conversion
US8775622B2 (en) Computer-based cluster management system and method
JP2010134518A (ja) 計算機システムの構成管理方法、計算機システム及び構成管理プログラム
JPH0660039A (ja) ネットワークコンピュータ・システム処理グループ管理のための方法および装置
US7085831B2 (en) Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client
JPH11184699A (ja) 移動オブジェクト群の実行方法、及び移動オブジェクト群を格納した記憶媒体
US7590618B2 (en) System and method for providing location profile data for network nodes
JP4410608B2 (ja) Webサービス提供方法
US20040068729A1 (en) Non-hierarchical collaborative computing platform
US7237005B2 (en) Job network setup method, job network execution method, job management system, management terminal and program
JP4529812B2 (ja) 分散資源配分システム、分散資源配分方法およびプログラム
JP3688471B2 (ja) エージェントシステム、情報処理方法及び情報処理用ソフトウェアを記録した記録媒体
JP2001175460A (ja) プログラム配付管理システム
JPH10333925A (ja) オートノマス・エージェント・アーキテクチャ
Quang et al. Device-driven on-demand deployment of serverless computing functions
JP2000236583A (ja) モバイルエージェントシステム及びその制御方法
JP3745820B2 (ja) 自律協調情報処理装置並びに自律協調情報処理方法
CZ9903576A3 (cs) Mobilní objekty, zpusob pro rízení mobilních objektu, zpusob a zarízení pro generování skupiny mobilních objektu a pametové médium pro ukládání programu pro generování skupiny mobilních objektu
JP4485428B2 (ja) ネットワークシステム、管理コンピュータ、クラスタ管理方法およびコンピュータプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040921

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050608

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130617

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees