(57)【要約】【課題】エージェントの移動を考慮したプランの実行時間を容易に算出することができるエージェントシステムのシミュレーション装置を提供する。【解決手段】エージェントが現在動作している第１の機器から他の第２の機器へ第１のコンポーネントを移送して第２の機器に第１のコンポーネントを実行させるプランの実行時間を算出する際には、第１の機器から第２の機器へエージェントを移動させる移動ゴールの実行時間を、第１の機器と第２の機器との間を接続するネットワークの通信速度とエージェントのサイズとから算出し、第２の機器に第１のコンポーネントを実行させる処理であるコンポーネント実行ゴールの実行時間を、第２の機器の処理能力と第１のコンポーネントのサイズとから算出する。【選択図】    図１
2004362453.tif 000002
【特許請求の範囲】
【請求項１】
異なる処理能力の複数の機器と、与えられた命題を解決するための複数の処理の順序を表したプランに従って、前記複数の機器間を移動しながら、当該プランの各処理を前記複数の機器のいずれかに実行させるエージェントと、前記複数の機器のいずれかで前記プランの各処理を実行するために前記複数の機器のいずれかに格納される複数のプログラムとからなるエージェントシステムが、前記プランに従って前記命題を解決するまでに要する実行時間を算出するシミュレーション装置であって、
前記プランを記憶する第１の記憶手段と、
前記複数の機器のうち前記エージェントが現在動作している機器の識別情報を記憶する第２の記憶手段と、
前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別情報に対応する機器である第１の機器から前記複数の機器のうちの他の１つである第２の機器へ前記エージェントを移動させる処理である移動処理の実行時間を、前記第１の機器と前記第２の機器との間を接続するネットワークの通信速度と前記エージェントのサイズとから算出する第１の算出手段と、
前記第２の記憶手段に記憶された識別情報を前記第２の機器の識別情報に書き換える手段と、
前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別子情報に対応する機器に前記複数のプログラムのうちの１つである第１のプログラムを実行させる処理であるプログラム実行処理の実行時間を、当該機器の処理能力と、前記第１のプログラムのサイズとから算出する第２の算出手段と、
前記記憶手段に記憶された前記プランに含まれる前記移動処理と前記プログラム実行処理について、前記第１及び第２の算出手段で算出された実行時間の合計値を前記プランの実行時間として算出する第３の算出手段と、
を具備したことを特徴とするシミュレーション装置。
【請求項２】
前記プランの複数の処理のうちのいずれかは、前記第１の機器に格納されている前記複数のプログラムのうちの１つである第２のプログラムを前記エージェントに格納するための取得処理であり、前記取得処理により前記エージェントに格納される前記第２のプログラムのサイズを当該エージェントの現在のサイズに加算して、前記第１の算出手段で前記移動処理の実行時間を算出する際に用いる前記エージェントのサイズを算出する第４の算出手段をさらに具備したことを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記複数の機器のそれぞれと、前記複数のプログラムのうちの前記複数の機器のそれぞれが現在格納しているプログラムの識別情報との対応関係を表すテーブルを記憶する第３の記憶手段と、
前記取得処理の実行として、さらに、前記テーブルから前記第１の機器に対応付けられている前記第２のプログラムの識別情報を削除する手段をさらに具備したことを特徴とする請求項１記載のシミュレーション装置。
【請求項４】
前記プランの複数の処理のうちの、前記エージェントに格納されている前記複数のプログラムのうちの１つである第３のプログラムを前記第２の機器に格納するための配置処理の実行として、前記テーブルに前記第３のプログラムの識別子を前記第２の機器に対応付けて記憶する手段をさらに具備したことを特徴とする請求項１記載のシミュレーション装置。
【請求項５】
前記複数の機器のうちの、前記複数のプログラムのうちの１つである第３のプログラムが実行可能な機器群から求めた、当該第３のプログラムの移送元の機器と移送先の機器とからなる複数の組合せのそれぞれを用いて、前記第３のプログラムを前記移送元の機器から前記移送先の機器へ移送して当該移送先の機器で当該第３のプログラムを実行するための処理の順序を表した、前記第１の記憶手段に記憶するための複数のプランを生成する生成手段をさらに具備したことを特徴とする請求項１記載のシミュレーション装置。
【請求項６】
前記第１の記憶手段に記憶された前記命題を解決するための複数のプランのそれぞれの実行時間が、前記第１乃至第３の算出手段を用いて算出されたとき、前記複数のプランと前記複数の組合せに対し、前記実行時間が最も小さいものから順に高い優先度を設定する手段をさらに具備したことを特徴とする請求項１記載のシミュレーション装置。
【請求項７】
前記複数の機器のそれぞれに、前記複数のプログラムのいずれかを当該機器が最初に格納するプログラムとして設定する手段をさらに具備したことを特徴とする請求項１記載のシミュレーション装置。
【請求項８】
異なる処理能力の複数の機器と、与えられた命題を解決するための複数の処理の順序を表したプランに従って、前記複数の機器間を移動しながら、当該プランの各処理を前記複数の機器のいずれかに実行させるエージェントと、前記複数の機器のいずれかで前記プランの各処理を実行するために前記複数の機器のいずれかに格納される複数のプログラムとからなるエージェントシステムが、前記プランに従って前記命題を解決するまでに要する実行時間を算出するためのシミュレーション方法であって、
前記プランを第１の記憶手段に記憶する第１のステップと、
前記複数の機器のうち前記エージェントが現在動作している機器の識別情報を第２の記憶手段に記憶する第２のステップと、
前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別情報に対応する機器である第１の機器から前記複数の機器のうちの他の１つである第２の機器へ前記エージェントを移動させる処理である移動処理の実行時間を、前記第１の機器と前記第２の機器との間を接続するネットワークの通信速度と前記エージェントのサイズとから算出する第３のステップと、
前記第２の記憶手段に記憶された識別情報を前記第２の機器の識別情報に書き換える第４のステップと、
前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別子情報に対応する機器に前記複数のプログラムのうちの１つである第１のプログラムを実行させる処理であるプログラム実行処理の実行時間を、当該機器の処理能力と、前記第１のプログラムのサイズとから算出する第５のステップと、
前記第１の記憶手段に記憶された前記プランに含まれる前記移動処理と前記プログラム実行処理について、前記第３及び第５のステップで算出された実行時間の合計値を前記プランの実行時間として算出する第６のステップと、
を有することを特徴とするシミュレーション方法。
【請求項９】
前記プランの複数の処理のうちの、前記第１の機器に格納されている前記複数のプログラムのうちの１つである第２のプログラムを前記第２の機器へ移送するために前記エージェントに当該第２のプログラムを格納するための取得処理の実行として、当該エージェントの現在のサイズに前記第２のプログラムのサイズを加算して、前記第３のステップで前記移動処理の実行時間を算出する際に用いる前記エージェントのサイズを算出する第７のステップをさらに有することを特徴とする請求項８記載のシミュレーション方法。
【請求項１０】
前記複数の機器のうちの、前記複数のプログラムのうちの１つである第３のプログラムが実行可能な機器群から求めた、当該第３のプログラムの移送元の機器と移送先の機器とからなる複数の組合せのそれぞれを用いて、前記第３のプログラムを前記移送元の機器から前記移送先の機器へ移送して当該移送先の機器で当該第３のプログラムを実行するための処理の順序を表した、前記第１の記憶手段に記憶するための複数のプランを生成する第８のステップをさらに有することを特徴とする請求項８記載のシミュレーション方法。
【請求項１１】
異なる処理能力の複数の機器と、与えられた命題を解決するための複数の処理の順序を表したプランに従って、前記複数の機器間を移動しながら、当該プランの各処理を前記複数の機器のいずれかに実行させるエージェントと、前記複数の機器のいずれかで前記プランの各処理を実行するために前記複数の機器のいずれかに格納される複数のプログラムとからなるエージェントシステムが、前記プランに従って前記命題を解決するまでに要する実行時間を算出するためのプログラムであって、
コンピュータに、
前記プランを第１の記憶手段に記憶する第１のステップと、
前記複数の機器のうち前記エージェントが現在動作している機器の識別情報を第２の記憶手段に記憶する第２のステップと、
前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別情報に対応する機器である第１の機器から前記複数の機器のうちの他の１つである第２の機器へ前記エージェントを移動させる処理である移動処理の実行時間を、前記第１の機器と前記第２の機器との間を接続するネットワークの通信速度と前記エージェントのサイズとから算出する第３のステップと、
前記第２の記憶手段に記憶された識別情報を前記第２の機器の識別情報に書き換える第４のステップと、
前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別子情報に対応する機器に前記複数のプログラムのうちの１つである第１のプログラムを実行させる処理であるプログラム実行処理の実行時間を、当該機器の処理能力と、前記第１のプログラムのサイズとから算出する第５のステップと、
前記第１の記憶手段に記憶された前記プランに含まれる前記移動処理と前記プログラム実行処理について、前記第３及び第５のステップで算出された実行時間の合計値を前記プランの実行時間として算出する第６のステップと、
を実行させるプログラム。
【請求項１２】
前記プランの複数の処理のうちの、前記第１の機器に格納されている前記複数のプログラムのうちの１つである第２のプログラムを前記第２の機器へ移送するために前記エージェントに当該第２のプログラムを格納するための取得処理の実行として、当該エージェントの現在のサイズに前記第２のプログラムのサイズを加算して、前記第３のステップで前記移動処理の実行時間を算出する際に用いる前記エージェントのサイズを算出する第７のステップをさらに有することを特徴とする請求項１１記載のプログラム。
【請求項１３】
前記複数の機器のうちの、前記複数のプログラムのうちの１つである第３のプログラムが実行可能な機器群から求めた、当該第３のプログラムの移送元の機器と移送先の機器とからなる複数の組合せのそれぞれを用いて、前記第３のプログラムを前記移送元の機器から前記移送先の機器へ移送して当該移送先の機器で当該第３のプログラムを実行するための処理の順序を表した、前記第１の記憶手段に記憶するための複数のプランを生成する第８のステップをさらに有することを特徴とする請求項１１記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク接続された情報機器間を移動し処理を行う移動エージェントシステムのシミュレータ（シミュレーション装置）に関する。
【０００２】
【従来の技術】
従来から、ネットワーク接続された情報機器間を移動し、情報機器上の情報を統合、処理する技術として移動エージェントシステムが知られている。エージェントとは、ソフトウェア上の処理単位であって、プログラムとして構成され、周囲の状況に合わせて自律的に動作するものである。移動エージェントシステムは、このようなエージェントが、ある情報機器上で情報の処理を行うシステムである。
【０００３】
移動エージェントは複数のデバイス（情報機器）間をエージェントの持つプランに従って移動して動作する。エージェントがデバイス上でユーザの要求を受け入れ、動作を開始するためには、エージェントがユーザの要求を解決するための適切なコンポーネント（ソフトウェア部品）を利用する必要がある。
【０００４】
コンポーネントはデバイス上に分散配置され、必要に応じてエージェントによってデバイス間を移送される。各デバイスには、リソース（メモリサイズなど）に制限があり、配置可能なコンポーネントの数には制限がある。
【０００５】
エージェントシステム開発者は、ネットワーク上のデバイスのリソースを把握し、適切なコンポーネントサイズを見積もる必要がある。しかし、コンポーネントはエージェントなどによってネットワーク上を移送され、必要に応じて各デバイスにインストールされたり、アンインストールされたりする。そのため、コンポーネント配置は動的に変化するものであり、その適切なサイズや適切な移送方法を見積もるのは困難である。
【０００６】
例えば、メモリ資源やＣＰＵなどのハードウエアの性能に依存する処理能力等の実行環境の異なる複数の情報機器のそれぞれで、各実行環境の範囲内でその実行環境に合わせてエージェントを柔軟に動作せるための技術が開示されている（例えば、特許文献１参照）。
【０００７】
【特許文献１】
特開２００２−１４０１９４公報
【０００８】
【発明が解決しようとする課題】
メモリ資源や処理能力等の実行環境の異なる複数の情報機器間を移動し、ネットワークを介して接続される当該複数の情報機器間をコンポーネントはエージェントにより移送され、コンポーネント配置が動的に変化する移動エージェントシステムでは、ユーザの要求をより高速に解決する必要がある。ユーザの要求を解決するための複数の処理の順序を表した複数のプランが与えられているとき、そのうち最も短時間で解決することのできるプランを優先的に選択することでエージェントシステムの動作の高速化が図れる。
【０００９】
プランの実行に要する時間には、コンポーネントのサイズや当該コンポーネントが配置されている情報機器の実行環境、情報機器間を接続するネットワークの通信速度の他、エージェント自身のサイズやコンポーネントの配置状況などによっても大きく変化する。
【００１０】
しかし、上記のように動的に変化する要素の多い移動エージェントシステムでは、プランの実行時間を容易に推定することができないという問題点があった。
【００１１】
そこで、本発明は、上記問題点に鑑み、エージェントの移動を考慮したプランの実行時間を容易に算出することができるエージェントシステムのシミュレーション装置およびシミュレーション方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
（１）本発明は、異なる処理能力の複数の機器と、与えられた命題を解決するための複数の処理（ゴール）の順序を表したプランに従って、前記複数の機器間を移動しながら、当該プランの各処理を前記複数の機器のいずれかに実行させるエージェントと、前記複数の機器のいずれかで前記プランの各処理を実行するために前記複数の機器のいずれかに格納される複数のプログラム（コンポーネント）とからなるエージェントシステムが、前記プランに従って前記命題を解決するまでに要する実行時間を算出するためのものであって、（ａ）前記プランを第１の記憶手段に記憶し、（ｂ）前記複数の機器のうち前記エージェントが現在動作している機器の識別情報を第２の記憶手段に記憶し、（ｃ）前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別情報に対応する機器である第１の機器から前記複数の機器のうちの他の１つである第２の機器へ前記エージェントを移動させる処理である移動処理（移動ゴール）の実行時間を、前記第１の機器と前記第２の機器との間を接続するネットワークの通信速度と前記エージェントのサイズとから算出して、（ｄ）前記第２の記憶手段に記憶された識別情報を前記第２の機器の識別情報に書き換え、（ｅ）前記プランの複数の処理のうち、前記第２の記憶手段に記憶されている識別子情報に対応する機器に前記複数のプログラムのうちの１つである第１のプログラムを実行させる処理であるプログラム実行処理（コンポーネント実行ゴール）の実行時間を、当該機器の処理能力と、前記第１のプログラムのサイズとから算出し、（ｆ）前記第１の記憶手段に記憶された前記プランに含まれる前記移動処理と前記プログラム実行処理について算出された実行時間の合計値を前記プランの実行時間として算出する。
【００１３】
本発明によれば、エージェントの移動を考慮したプランの実行時間を容易に算出することができる。
【００１４】
また、前記プランの複数の処理のうちのいずれかは、前記第１の機器に格納されている前記複数のプログラム（コンポーネント）のうちの１つである第２のプログラムを前記エージェントに格納するための取得処理であり、前記取得処理により前記エージェントに格納される前記第２のプログラムのサイズを当該エージェントの現在のサイズに加算して、前記第１の算出手段で前記移動処理の実行時間を算出する際に用いる前記エージェントのサイズを算出することにより、エージェントの移動、特に、コンポーネントの移送を伴うエージェントの移動を考慮したプランの実行時間を容易にしかも高精度に算出することができる。
【００１５】
（２）  前記複数の機器のうちの、前記複数のプログラムのうちの１つである第３のプログラムが実行可能な機器群から求めた、当該第３のプログラムの移送元の機器と移送先の機器とからなる複数の組合せのそれぞれを用いて、前記第３のプログラムを前記移送元の機器から前記移送先の機器へ移送して当該移送先の機器で当該第３のプログラムを実行するための処理の順序を表した、前記第１の記憶手段に記憶するための複数のプランを生成する。
【００１６】
また、前記第１の記憶手段に記憶された前記命題を解決するための複数のプランのそれぞれの実行時間が算出されたとき、前記複数のプランと前記複数の組合せに対し、前記実行時間が最も小さいものから順に高い優先度を設定する。
【００１７】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して説明する。
【００１８】
（第１の実施形態）
図１は、第１の実施形態に係るエージェントシミュレータシステムの構成例を示したもので、例えば、パーソナルコンピュータなどの機器上に構築されるエージェントシミュレータシステム（以下、簡単にシステムと呼ぶ）の構成例を示したものである。このシステムは、ユーザからの要求を解決するための情報処理を実行するためのエージェント（エージェントシステム）の動作をシミュレートするために、仮想エージェントと仮想プラットフォームを生成する。
【００１９】
ここで一般的なエージェントシステムにおけるエージェントとプラットフォームの機能に簡単に説明する。エージェントは、パーソナルコンピュータや、ＰＤＡ、携帯電話等の端末などの情報通信機器（ここでは、デバイスとも呼ぶ）の実行環境を用いて動作するプラットフォームから実行環境を提供されて、動作し、ユーザからの入力された命題を受け付けて、その命題を解決するための処理を、ユーザに代行してプラットフォームに依頼するものである。
【００２０】
また、プラットフォームは、ネットワーク接続されたデバイス上に配置されるソフトウェアであり、エージェントが動作する場である。エージェントから依頼された処理（あるいは、その一部の処理）を実行するための複数のコンポーネント（ソフトウエア部品であって、具体的にはプログラム等）を有する。プラットフォームは、エージェント、複数のコンポーネントに対し、それらが動作するための動作環境を提供するためのものである。
【００２１】
コンポーネントとしては、例えば、インターネットに接続するため処理を実行するコンポーネント、検索エンジンに情報検索を依頼するための文字列を作成するための処理を実行するコンポーネント、この作成された文字列を用いて検索エンジンに問い合わせる（検索させる）ための処理を実行するコンポーネント、Ｗｅｂページを取得するための処理を実行するコンポーネント、取得したＷｅｂページを表示可能に加工するための処理を実行するコンポーネント、ユーザへの問い合わせを行うための処理を実行するコンポーネント等がある。コンポーネントは、上記のコンポーネントに限らない。例えば、上記のコンポーネントの処理をさらに細分化して、それぞれを１つのコンポーネントとしたものがあってもよい。例えば、Ｗｅｂページを取得するためには、まず、インターネットに接続して、その後、ＵＲＬを指定して当該Ｗｅｂページを取得する。この２つの段階の処理を実行するためのコンポーネントがそれぞれあってもよい。さらに、インターネットに接続するコンポーネントであっても、専用線にてインターネットに接続するためのコンポーネントと、電話回線を用いてインターネットに接続するためのコンポーネントがあってもよい。
【００２２】
例えば、パーソナルコンピュータには、数多くのコンポーネントが配置されていてもよいが、携帯情報端末には、その構成上必要最小限のコンポーネントしか配置することができない。
【００２３】
エージェントは、ユーザから入力された命題とその命題を解決するための、プラットフォームに依頼すべき複数の処理（ゴール）の順序を表した複数のプランをプランツリーとして保持する。
【００２４】
各プランは、与えられた命題を解決するためにプラットフォームに依頼すべき複数の処理ステップの処理の依頼（ゴール）が並べられたものである。各ゴールを並べられた順序でプラットフォーム上の適当なコンポーネントに解決（処理）させることにより、当該与えられた命題が解決されたことになる。
【００２５】
なお、本システムでシミュレート対象のエージェントは、ネットワークで互いに接続されたデバイス間を移動して、移動した先のデバイス上のプラットフォームに格納されている適当なコンポーネントに各ゴールを解決してもらい、与えられた命題を解決する、いわゆる移動エージェントである。そして、あるデバイスに配置されているコンポーネントを他のデバイスへ移送する機能を有するものとする。
【００２６】
図１の説明に戻り、図１において、本システムは、大きく分けて、シミュレータ１と仮想プラットフォーム２と、仮想エージェント３とから構成されている。なお、仮想プラットフォーム２と仮想エージョント３は、シミュレータ１の実行時にシミュレータ１により生成される。また、仮想プラットフォーム２として、ここでは複数種類（例えば、ここでは、３種類）の仮想プラットフォーム２ａ〜２ｃが、それぞれ必要に応じて生成される。なお、以下の説明において、これら３種類の仮想プラットフォームのそれぞれを区別する必要のない場合には、これらのうちのいずれか１つという意味で仮想プラットフォーム２と呼ぶ。各仮想プラットフォームの種類は、それが形成されている情報通信機器（デバイス）の種類（例えば、ここでは、サーバ装置（ｓｅｒｖｅｒ１）、携帯電話（ｐｈｏｎｅ１、ｐｈｏｎｅ２）、ＰＤＡ（ｐｄａ１）など）に対応したものである。なお、ここで仮定する各デバイスは、ネットワークを介して互いに接続されているものである。
【００２７】
シミュレータ１は、仮想エージェント生成部１１と、移動コスト計算部１２と実行コスト計算部１３と、コンポーネント仮想配置部１４と、仮想プラットフォーム生成部１５と、コンポーネント仮想配置表記憶部１６と、仮想コンポーネント初期配置表記憶部４と、仮想プラットフォームスペック表記憶部５と、仮想プラットフォーム接続表記憶部６とから構成されている。
【００２８】
仮想プラットフォーム生成部１５は、エージェントが動作するプラットフォームを模擬する複数種類の（ここでは、例えば３種類の）仮想プラットフォーム２を生成する。
【００２９】
仮想プラットフォーム生成部１５は、複数の仮想プラットフォームのそれぞれに対応するプラットフォームが提供する実行環境を表した仮想プラットフォームスペック表と、各プラットフォームへ接続する際に必要な情報やネットワークの状態などを記述した仮想プラットフォーム接続表と、当該複数のプラットフォームのそれぞれが配置されているデバイスに最初に配置するコンポーネントを記述した仮想コンポーネント初期配置表を基に、仮想プラットフォーム２を生成する。上記各表は、仮想プラットフォームスペック表記憶部５、仮想プラットフォーム接続表記憶部６と、仮想コンポーネント初期配置表記憶部４にそれぞれ記憶されている。
【００３０】
図２は、仮想プラットフォームスペック表の具体例を示したものである。仮想プラットフォームスペック表は、プラットフォーム名、プラットフォームＩＤおよびデバイスメタ情報から成る。デバイスメタ情報は、そのプラットフォームが配置されるデバイスの情報を示したものである。仮想プラットフォームスペック表には、デバイスメタ情報のＩＤのみが示され、デバイスメタ情報そのものは、図３に示すような別表として、仮想プラットフォームスペック表記憶部５に記憶されている。
【００３１】
図３は、デバイスメタ情報の具体例を示したものである。各デバイスメタ情報のＩＤ、当該デバイスメタ情報の配置されるデバイスの処理能力を単位時間当たりに実行される所定の命令実行回数を基準値としたときにこの基準値に対する相対数値で表したマシンパワー、そのデバイスに配置可能なコンポーネントのサイズを制限するメモリーの容量を表したメモリーサイズ、コンポーネントをアプリケーション実行中に削除する動的アンロードの可否が記される。なお、マシンパワーの基準値としては、プログラムのサイズに関するものであればよい。図３では、上記基準値を「１」としたときの各デバイスのマシンパワーの値を示している。
【００３２】
図４は、仮想プラットフォーム接続表の具体例を示したものである。仮想プラットフォーム接続表は、それぞれのプラットフォームがどのようにネットワーク接続されているか、各プラットフォームが配置されるデバイスがどのようにネットワークに接続しているか、を示している。仮想プラットフォーム接続表は、あるデバイスに配置されたプラットフォーム（接続元）が他のデバイスに配置されたプラットフォーム（接続先）に接続する場合に、接続元のプラットフォームのＩＤ（接続元ＩＤ）と接続先のプラットフォームのＩＤ（接続先ＩＤ）と、接続元と接続先とを接続するネットワークの通信速度（ネットワークスピード）と、接続元と接続先との接続がどの程度の確率で利用可能かを示す接続安定性を示す数値とを表している。ネットワークスピードが、接続元と接続先の方向で変化する場合は、その両方のネットワークスピードを表記してもよい。
【００３３】
図５は、仮想コンポーネント初期配置表の具体例を示したものである。仮想コンポーネントは、プラットフォームに格納されてエージェントが利用するソフトウェア部品であるコンポーネントを模擬するものである。仮想コンポーネント初期配置表は、プラットフォームＩＤおよびそのプラットフォームＩＤを持つプラットフォーム上に初期配置されるコンポーネントのＩＤから成る。
【００３４】
仮想プラットフォーム生成部１５は、仮想コンポーネント初期配置表と、仮想プラットフォームスペック表と、仮想プラットフォーム接続表を基に、複数種類の仮想プラットフォーム２を生成する。仮想プラットフォーム２は、仮想プラットフォームスペック表（デバイスメタ情報を含む）で表された仕様（スペック）を有し、仮想コンポーネント初期配置表で表されたコンポーネントを格納し、仮想プラットフォーム接続表で表されたように他のプラットフォームに接続するプラットフォームを模擬するために、ネットワークメタ情報とコンポーネントシミュレートメタ情報と、デバイスメタ情報を格納する。ネットワーク構成メタ情報とコンポーネントシミュレートメタ情報と、デバイスメタ情報は、それぞれの格納部２１、２２、２３に格納されている。
【００３５】
各仮想プラットフォームの有するネットワーク構成メタ情報は、図７に示したように、記憶部６に記憶されている仮想プラットフォーム接続表のなかから、当該仮想プラットフォームが接続元となっている情報を抽出したものである。図７では、接続元は当該ネットワーク構成メタ情報を有する仮想プラットフォームであるので、図７では、接続元ＩＤは省略されている。
【００３６】
コンポーネントシミュレートメタ情報は、図６に示したように、当該コンポーネントシミュレートメタ情報を有する仮想プラットフォームに初期配置される各コンポーネントについて、当該コンポーネントのサイズ、その実行にかかる時間（デバイスメタ情報を表す際に用いるマシンパワーの値が「１」であるデバイス上で当該コンポーネントの実行に要する時間であって、これを相対実行コストと呼ぶ）、実行の成功確率が表記される。
【００３７】
コンポーネントサイズが正確に見積もれない場合、サイズの下限と上限を表記しても良い。
【００３８】
なお、各仮想プラットフォームに配置される仮想コンポーネントは、仮想エージェント３により取得されて他の仮想プラットフォームへ移動することがあり、各仮想プラットフォームからコンポーネントシミュレートメタ情報にはない仮想コンポーネントが配置されたときや、コンポーネントシミュレートメタ情報にある仮想コンポーネントが移動してなくなってしまったときには、コンポーネントシミュレートメタ情報は随時更新される。すなわち、コンポーネントシミュレートメタ情報は、現在、当該仮想プラットフォームに配置されている仮想コンポーネントに関する情報（相対実行コスト、当該コンポーネントのサイズ、実行の成功確率など）が表されている。
【００３９】
仮想プラットフォームの有するデバイスメタ情報は、図３に示したデバイスメタ情報のうち、当該仮想プラットフォームが配置されているデバイスに関する情報（デバイス名とマシンパワーとメモリーサイズと動的アンロードの可否）のみを表したものである。
【００４０】
仮想エージェント３は、上記エージェントを模擬したもので、シミュレータ１の仮想エージェント生成部１１によって生成される。すなわち、仮想エージェント３は、仮想プラットフォーム間を移動しながら移動した先の仮想プラットフォーム２上の仮想コンポーネントを用いて、エージェントの動作を表したプランの各ゴールを解決するソフトウェアである。
【００４１】
仮想エージェント３は、プランツリー格納部３１と、仮想プラットフォームポインタ格納部３４と、プロファイラ３２と、仮想エージェントサイズ管理部３６と、仮想コンポーネント保持部３５と、プランツリー管理部３３を有する。
【００４２】
仮想プラットフォームポインタ格納部３４には、仮想エージェントが現在どの仮想プラットフォーム上で動作しているかを表す情報、すなわち、仮想プラットフォームポインタ（以下、簡単にポインタと呼ぶ）を格納する。このポインタは、例えば、仮想エージェントが現在動作している仮想プラットフォームのＩＤである。
【００４３】
プランツリー格納部３１に格納されているプランツリーは、例えば、与えられたある命題を解決するための複数のプランを、当該命題に枝として繋げられて構成されたものである。前述したように、各プランは、当該命題を解決するためにプラットフォーム２に依頼すべき複数の処理ステップの処理の依頼（ゴール）を並べたものである。
【００４４】
プランツリー格納部３１に格納されている各プランを構成するゴールには、取得ゴールと、配置ゴールと、移動ゴールと、コンポーネント実行ゴールという４つの種類がある。
【００４５】
取得ゴールは、エージェントがプラットフォーム上のコンポーネントを取り込むゴールである。基本的には、コンポーネントのコピーを取り込む。取り込まれたコンポーネントは、配置ゴールによって他のプラットフォーム上に配置される。取得ゴールと配置ゴール、およびエージェントを移動させる移動ゴールを使うことで、コンポーネントを他のデバイスにインストールすることが可能となる。なお、取得ゴールには、取得すべきコンポーネントが指定されている。また、移動ゴールには、移動先のプラットフォームが指定されている。コンポーネント実行ゴールには、実行すべきコンポーネントが指定されており、この指定されたコンポーネントの実行をプラットフォーム２に依頼するゴールである。
【００４６】
プランツリー管理部３３は、格納部３１に格納されたプランツリーの中からプランを選択し、その選択されたプランの中から未解決のゴールを取り出して、この未解決のゴールをプラットフォーム２に依頼するためのゴール解決要求を作成する。なお、ゴール解決要求により処理の依頼（ゴール）を受けたプラットフォーム２は、このゴールを解決（処理）するために、１つの（または複数の）コンポーネントに処理を実行させる。
【００４７】
ゴールには、上記４種類があるので、各ゴールにて指定されたコンポーネントが、仮想コンポーネント初期配置表にて上記仮想プラットフォーム２のいずれかに初期配置される。
【００４８】
仮想コンポーネント保持部３５は、当該仮想エージェントが配置されている仮想プラットフォーム上で上記取得ゴールを実行した結果、当該取得ゴールで指定されたコンポーネント（ここでは、仮想コンポーネント）を取得し、それを格納する。これと同時に、当該仮想プラットフォーム２の有する図６に示したようなコンポーネントシミュレートメタ情報から当該取得ゴールで指定された仮想コンポーネントに関する情報（サイズ、相対実行コストや成功確立など）を取得し、それを格納する。
【００４９】
仮想コンポーネント保持部３５で取得された、仮想コンポーネントに関する情報のうち、コンポーネントサイズは、仮想エージェントサイズ管理部３６に渡される。ここでは、仮想コンポーネント保持部３５で仮想コンポーネントを取得するたびに、仮想エージェント３が仮想コンポーネント保持部３５で現在保持している仮想コンポーネントのサイズの合計値や、当該仮想コンポーネントのサイズを現在のエージェント自身のサイズに加算して当該エージェント３自身のサイズを求めて、それらを格納する。仮想エージェント３のサイズの変化の履歴は、後述するプロファイラ３２が記録するようにしてもよい。
【００５０】
プロファイラ３２には、実行コスト計算部１３で算出されたコンポーネント実行ゴールを解決する（実行する）際に要した時間（実行時間）や、移動コスト計算部１２で算出されたネットワーク上を移動する際に要する時間（移動コスト）から、それらの合計を求めて、各プランを解決する際に要する時間（実行時間）を算出する。ここでは、各ゴールや各プランを解決するまでに要する時間を実行時間や実行コスト、あるいは単にコストとも呼ぶ。本システムでは、シミュレータ１内の移動コスト計算部１２や実行コスト計算部１３で計算された実行時間がプロファイラ３２に渡される。プロファイラ３２では、それらを格納するとともに、それら実行時間の合計を求めてエージェントがあるプランを解決するる際に要するコストを算出する。
【００５１】
エージェントシステムの開発者である、本システムのユーザは、プロファイラ３２で求める各プランのコストを比較することにより、プランツリー格納部３１に格納されている複数のプランのうち、低コストのプランを予め知ることができる。
【００５２】
シミュレータ１の説明に戻る。
【００５３】
実行コスト計算部１３は、エージェントが、コンポーネント実行ゴールを解決する際に要する実行コストを算出する。すなわち、仮想エージェント３が仮想プラットフォーム２の有する図６に示したようなコンポーネントシミュレータメタ情報中の上記ゴールにて指定されたコンポーネントの実行に要する時間を表した実行コストやサイズ、成功確率、さらに、当該仮想プラットフォーム２の有するデバイスメタ情報などを基に、上記ゴールにて指定されたコンポーネントを当該仮想プラットフォーム２に対応する実際のプラットフォームに配置されたコンポーネントを用いて実行した場合に要する時間を算出する。
【００５４】
移動コスト計算部１２は、エージェントが、移動ゴールを解決する際にネットワーク上を移動する際に要するコスト（移動コスト）を算出する。すなわち、仮想エージェント３が配置されているプラットフォーム２の有する図７に示したようなネットワーク構成メタ情報を基に、当該移動ゴールにて指定された接続先のプラットフォームに接続して移動するまでに要する時間を算出する。
【００５５】
コンポーネント仮想配置部１４では、コンポーネント仮想配置表記憶部１６に記憶されているコンポーネント仮想配置表で表されている各仮想プラットフォームで現在保持されている仮想コンポーネントと、各仮想プラットフォームの有するデバイスメタ情報と、図６に示したようなコンポーネントシミュレートメタ情報を基に、例えば、配置ゴールを解決する際などに、仮想エージェント３の仮想コンポーネント保持部３５で保持するコンポーネントを（現在仮想エージェント３が存在する仮想プラットフォーム２に代わり）受け取り、それが当該仮想プラットフォーム２に配置可能か否かなどを判断する。
【００５６】
なお、コンポーネント仮想配置表は、複数のデバイスのそれぞれと、当該複数のデバイスのそれぞれが現在格納しているコンポーネントの識別情報（コンポーネントＩＤ）との対応関係を表すテーブルである。
【００５７】
また、仮想コンポーネントを処理対象とする取得ゴール、配置ゴールを解決することにより、仮想プラットフォームに配置される仮想コンポーネントが変化する場合には、コンポーネント仮想配置表記憶部１６に記憶されているコンポーネント仮想配置表を現状に合わせるべく更新する。すなわち、配置ゴールを解決することによりあるデバイスに新たに格納されるコンポーネントのＩＤを当該デバイスの欄に追加する。
【００５８】
また、各仮想プラットフォームの有するコンポーネントシミュレート情報も、仮想コンポーネントの配置の変化に応じて更新する。
【００５９】
次に、図８に示すフローチャートを参照して、図１のシステムの処理動作について説明する。
【００６０】
まず、シミュレータ１の仮想プラットフォーム生成部１５は、仮想コンポーネント初期配置表にて指定されているコンポーネントが初期配置された複数の仮想コンポーネント２ａ〜２ｃを生成する。次に、仮想エージェント生成部１１は、仮想エージェント３を生成し、それを上記複数の仮想コンポーネントのうち、予め定められた仮想コンポーネントに配置する。従って、仮想エージェント３が生成されたとき、仮想プラットフォームポインタには、当該仮想エージェント３が初期配置される仮想エージェントのＩＤが格納されている。
【００６１】
図８では、仮想エージェント３のプランツリー管理部３３は、プランツリー格納部３１に格納されている、予め与えられた命題を解決するための複数のプランのうちの１つのプランを解決するための処理を実行する際の処理動作を示している。
【００６２】
仮想エージェント３の処理動作は、当該プラン中のすべてのゴールが解決され、プランの実行が完了するまで続く（ステップＳ１）。プランツリー管理部３３は、まず、当該プランから、予め定められた順にゴールを１つ取り出す（ステップＳ２）。さらに、仮想プラットフォームポインタ格納部３４に格納されているポインタの値を読み出して、当該エージェント３が、現在配置されている仮想プラットフォームを検出する（ステップＳ３）。
【００６３】
ステップＳ２で取り出したゴールの種類に応じて、ステップＳ４〜ステップＳ７のいずれかへ進み、当該ゴールの種類に応じた処理動作を行う。実行コスト計算部１３や移動コスト計算部１２でコストなどが算出されると、ステップＳ８へ進み、解決したゴールと算出されたコストをプロファイラ３２などに記録して、ステップＳ１へ戻る。ステップＳ１では、当該プラン中の全てのゴールが解決されていなければ、次に解決すべきゴールを１つ取り出して、上記同様に動作する。
【００６４】
ステップＳ２でプランツリー管理部３３により取り出されたゴールが取得ゴールである場合（ステップＳ６）の図１のシステムの処理動作について、図９に示すフローチャートを参照して説明する。
【００６５】
取得ゴールには、取得すべきコンポーネントのＩＤが記述されている。仮想エージェントは、現在仮想エージェント２ａにいるものとする。仮想エージェント３の仮想コンポーネント保持部３５は、仮想プラットフォーム２ａに配置されている仮想コンポーネントのうち、当該取得ゴールにて指定された仮想コンポーネントを取得するとともに、当該仮想プラットフォーム２ａの有する図６に示したようなコンポーネントシミュレートメタ情報から当該取得ゴールで指定された仮想コンポーネントに関する情報（サイズ、相対実行コストや成功確立など）を取得し、それらを格納する（ステップＳ２１）。
【００６６】
仮想コンポーネント保持部３５は、取得した仮想コンポーネントに関する情報のうち、コンポーネントサイズは、仮想エージェントサイズ管理部３６に渡す。仮想エージェントサイズ管理部３６は、現在の仮想エージェント３のサイズに、当該仮想コンポーネントサイズを加算して、仮想エージェント３のサイズを更新する（ステップＳ２２）。
【００６７】
次に、ステップＳ２でプランツリー管理部３３により取り出されたゴールが配置ゴールである場合（ステップＳ５）の図１のシステムの処理動作について、図１０に示すフローチャートを参照して説明する。
【００６８】
配置ゴールは、エージェントが保持するコンポーネントをプラットフォーム上に配置する。ここでは、仮想エージェント３が仮想コンポーネント保持部３５に保持されている仮想コンポーネントを、シミュレータ１に設けられたコンポーネント仮想配置部１４に配置することで、実際のエージェントの配置ゴールを解決する際の動作を模擬する。すなわち、仮想エージェント３は、配置ゴールが与えられると、当該配置ゴールで指定された、仮想コンポーネント保持部３５に保持されている仮想コンポーネントのサイズを、シミュレータ１に設けられたコンポーネント仮想配置部１４に渡す。
【００６９】
コンポーネント仮想配置部１４は、まず、コンポーネント仮想配置表から、現在仮想エージェント３がいる仮想プラットフォーム（例えば、仮想プラットフォーム２ｂとする）に現在配置されているコンポーネントが何であるかを調べる。そして、仮想プラットフォーム２ｂから、当該仮想プラットフォーム２ｂが有するデバイスメタ情報で表されているメモリサイズを受け取る。また、仮想プラットフォーム２ｂから当該仮想プラットフォームが有するコンポーネントシミュレートメタ情報から、仮想プラットフォーム２ｂに現在配置されている仮想コンポーネントに関する情報（サイズ、相対実行コストや成功確立など）を受け取る。
【００７０】
コンポーネント仮想配置部１４は、仮想エージェント３が保持する仮想コンポーネントのサイズ（コンポーネントのサイズが、その上限値・下限値で表れているときは、例えば、上限値）が、デバイスメタ情報に含まれているメモリサイズから、仮想プラットフォーム２ｂに現在配置されている仮想コンポーネントのサイズの合計値を減算した値（残りメモリサイズ）より小さいあるいは以下であるとき、仮想エージェント３が保持する仮想コンポーネントを仮想プラットフォーム２ｂに配置可能であると判断する（ステップＳ３１）。
【００７１】
仮想エージェント３が保持する仮想コンポーネントを仮想プラットフォーム２ａに配置可能であるときには、仮想プラットフォーム２ｂへ当該仮想コンポーネントを（仮想的に）配置すべく、コンポーネント仮想配置部１４は、仮想プラットフォーム２ｂに配置される当該仮想コンポーネントに関する情報（サイズ、実行コストや成功確立など）を仮想プラットフォーム２ｂに伝える。これは、コンポーネントシミュレートメタ情報に追加される。また、コンポーネント仮想配置部１４は、コンポーネント仮想配置表を現状に合わせて更新する（ステップＳ３２）。
【００７２】
配置ゴールに、配置した仮想コンポーネントを削除するよう指定されている場合は（ステップＳ３３）、仮想コンポーネント保持部３５は、仮想エージェントサイズ管理部３６に削除する仮想コンポーネントのサイズを通知する。仮想エージェントサイズ管理部３６は、当該仮想コンポーネントのサイズを、仮想エージェントの現在のサイズから減算する（ステップＳ３４）。
【００７３】
なお、配置ゴールに、配置した仮想コンポーネントを削除するよう指定されていない場合は（ステップＳ３３）、そのまま図８のステップＳ８へ進む。
【００７４】
ステップＳ３１で、仮想エージェント２ａが保持する仮想コンポーネントのサイズが、残りメモリサイズより大きいあるいは以上であるとき、当該仮想コンポーネントは仮想プラットフォーム２ａに配置不可能である。そこで、現在仮想プラットフォーム２ａ上に配置されている仮想コンポーネントのうち削除可能なコンポーネントを判別し、削除可能な仮想コンポーネントがある場合は当該仮想コンポーネントを削除する（ステップＳ３５、ステップＳ３６）。例えば、ある仮想コンポーネントを削除することにより、これから配置したい仮想コンポーネントのサイズよりも大きい残りメモリサイズが得られるようであれば、その仮想コンポーネントを削除するようにしてもよいし、過去の使用頻度が最も少ないものから順に削除するようにしてもよい。削除する仮想コンポーネントを選択する方法は特に限定するものではない。なお、コンポーネント仮想配置部１４は、仮想プラットフォーム２ａの有するデバイスメタ情報を参照する。デバイスメタ情報で動的アンロードが禁止されている場合は、仮想プラットフォーム２ａからはコンポーネントは削除できない。
【００７５】
仮想エージェント３の保持する仮想コンポーネントが配置可能になったら（ステップＳ３１）、当該仮想コンポーネントを仮想プラットフォーム２ａに配置する（ステップＳ３２）。
【００７６】
なお、配置するコンポーネントのサイズが、その上限値・下限値で表れている場合、まず上限値で配置不可能と判断されたときには、上限値と下限値の中間の値や、下限値をコンポーネント仮想配置部１４に通知して、配置可否を判断するようにしてもよい。そのいずれかで配置可能と判断されたときには、ステップＳ３１からステップＳ３２へ進むようにしてもよい。このようにして、プラットフォームからコンポーネントを削除することなく新たなコンポーネントを配置することができるように、配置するコンポーネントのサイズを見積もることができる。
【００７７】
あるプラットフォームからそこに配置されているコンポーネントを削除すると、当該プラットフォームで、当該削除されたコンポーネントを実行する場合には、他のプラットフォームから当該コンポーネントを移送する必要があり、そのために実行コストが大きくなることがある。従って、プラットフォームからコンポーネントを削除することなく新たなコンポーネントを配置することできるようなコンポーネントのサイズを予め知ることは有益である。
【００７８】
次に、ステップＳ２でプランツリー管理部３３により取り出されたゴールが移動ゴールである場合（ステップＳ４）の図１のシステムの処理動作について、図１１に示すフローチャートを参照して説明する。
【００７９】
移動ゴールは、エージェントに他のプラットフォームへの移動を指示するゴールである。移動ゴールには、移動先の仮想プラットフォームが指定されている（移動先の仮想プラットフォームのＩＤが含まれている）。例えば、仮想エージェント３が現在仮想プラットフォーム２ａに存在し、移動ゴールに移動先として仮想プラットフォーム２ｂが指定されているとする。
【００８０】
プランツリー管理部３３は、移動ゴールを受け取ると、移動コスト計算部１２は、仮想プラットフォーム２ａのもつ図７に示したようなネットワーク構成メタ情報を読み取り、その中から、接続先が仮想プラットフォーム２ｂのＩＤであるデータ（ネットワークスピードと接続安定性）を取り出す。また、仮想エージェントサイズ管理部３６から、仮想エージェント３の現在のサイズを読み出す。原理的には、仮想エージェント３のサイズを、接続先が仮想プラットフォーム２ｂのＩＤであるデータ中のネットワークスピードで除することで、仮想エージェント３が仮想プラットフォーム２ａから仮想プラットフォーム２ｂへの移動にかかる時間（移動コスト）を算出することができる（ステップＳ４１）。
【００８１】
なお、仮想プラットフォーム２ａのもつネットワーク構成メタ情報中に、仮想プラットフォーム２ｂを接続先とするときの情報がない場合には、当該移動ゴールは失敗する。また、接続安定性で指定された確率に従って移動ゴールは失敗する。移動ゴールが成功した場合に、移動コスト計算部１２は、仮想エージェント３の仮想エージェントサイズ管理部３６から得られるエージェントサイズ、およびネットワークスピードからエージェントの移動にかかるコストを上記のようにして計算する。
【００８２】
その後、プランツリー管理部３３は、仮想プラットフォームポインタを、移動先の仮想プラットフォーム２ｂのＩＤに変更する（ステップＳ４２）。
【００８３】
次に、ステップＳ２でプランツリー管理部３３により取り出されたゴールがコンポーネント実行ゴールである場合の図１のシステムの処理動作（ステップＳ７）について説明する。
【００８４】
例えば、仮想エージェント３が、現在、仮想プラットフォーム２ａに存在するものとする。この場合、ステップＳ７において、実行コスト計算部１３は、仮想プラットフォーム２ａの有する図６に示したようなコンポーネントシミュレータメタ情報中の上記コンポーネント実行ゴールにて指定されたコンポーネントの実行に要する時間を表した相対実行コストやサイズ、成功確率、さらに、仮想プラットフォーム２ａの有するデバイスメタ情報（仮想プラットフォーム２ａの配置されているデバイスのマシンパワーなど）を基に、上記指定された仮想コンポーネントを仮想プラットフォーム２ａ上で実行する際に要する時間（実行コスト）を計算する。例えば、当該コンポーネントの相対実行コストを仮想プラットフォーム２ａの配置されているデバイスのマシンパワーで除することにより実行コストを求めることができる。
【００８５】
このようにして、与えられたプランを構成するゴールのうち、エージェントを一方のプラットフォーム（デバイス）から他方のプラットフォーム（デバイス）へ移動させる移動ゴールの実行時間（特に、移動にかかる時間（移動コスト））を、当該一方のプラットフォームから当該他方のプラットフォームとの間を接続するネットワークの通信速度とエージェントのサイズとから算出し、当該プランのうち、いずれかのプラットフォームに、そこに配置されているコンポーネントを実行させる処理であるコンポーネント実行ゴールの実行時間（コスト）を、当該プラットフォームの配置されているデバイスの処理能力と、当該コンポーネントのサイズとから算出する。
【００８６】
以上のようにして、仮想エージェント３が上記各ゴールを解決する際に求めたコストなどをプロファイラ３２に記録する（ステップＳ８）。
【００８７】
プロファイラ３２は、移動コスト計算部１２や実行コスト計算部１３で計算されたコストを受け取り、それらを格納するとともに、それらコストの合計を求めてエージェントがあるプランを解決する際に要するコストを算出する。すなわち、与えられたプラン中に存在する上記移動ゴールやコンポーネント実行ゴールについて算出されたコストの合計値が当該プランのコストとなる。
【００８８】
ある１つの命題を解決するために複数のプランがあるとき、これら各プランのコストの大小は、移動ゴールやコンポーネント実行ゴールのコストに大きく影響される。移動ゴールやコンポーネント実行ゴール以外のゴールのコストは、どのプランおいても同じとみてよい。従って、移動ゴールやコンポーネント実行ゴールのコストの合計値が小さいプランほど、プラン全体としてのコストは小さい。
【００８９】
以上説明したように、上記第１の実施形態によれば、エージェントの移動やコンポーネントの移送を伴う場合を含む）考慮した、プランの実行時間を容易に算出することができる。また、コンポーネントの移送に伴い、各機器におけるコンポーネントの配置状況が変化し、よって、各機器がコンポーネントを新たに格納するために利用可能なメモリのサイズも変化する。このような、エージェントの移動に伴うコンポーネントの配置状況や各機器の残りメモリサイズといった動的変化はコンポーネント仮想配置部１４が、コンポーネント仮想配置表を更新しながら管理しているので、エージェントの移動に考慮したプランの実行時間が高精度に算出することができる。
【００９０】
また、配置ゴールである機器にサイズが確定していないコンポーネントを格納する場合に、当該機器の残りメモリサイズ内に当該コンポーネントが収まるように、サイズを見積もることができる。
【００９１】
エージェントシステム開発者がコンポーネントを実装する前に、エージェントの動作をシミュレートし、あるコンポーネントの適切なサイズや、プランのコストをあらかじめ知ることができ、コンポーネントやプランを実装する際の目安とすることができる。
【００９２】
なお、仮想コンポーネントの初期配置を変化させることにより、すなわち、複数種類の仮想コンポーネント初期配置表を用いることにより、あらゆるコンポーネント配置状況下でのプランのコストを算出することができる。
【００９３】
実際のエージェントシステムでは、ある１つの命題を解決するために複数のプランがあるとき、そのコストが小さいものから順に選択することにより、解決までの時間短縮が図れるのである。以下、第２の実施形態では、各プランについて算出されたコストを基に、エージェントがプランツリーからプランを選択する際に利用する優先度を設定する場合について説明する。
【００９４】
（第２の実施形態）
次に、図１のエージェントシミュレータシステムに、当該システムに入力する複数のプランを生成する手段と、各プランに対して算出されたコストに基づき各プランの優先度を設定する手段とを追加したエージェントシミュレータシステムについて説明する。
【００９５】
図１２は、第２の実施形態に係るエージェントシミュレータシステム（以下、簡単にシステムと呼ぶ）の機能構成例を示したものである。
【００９６】
図１２において、プラン生成システムは、主に、移送ルールジェネレータ１０１とプラナー１０２とプラン群管理部１０３と、図１に示した構成のシミュレーション部１００とから構成される。
【００９７】
移送ルールジェネレータ１０１は、図１３に示したような、各コンポーネントがどのデバイス上で動作可能であるかを表したコンポーネント移送ルールメタ情報１１１と、図５に示したような、各プラットフォーム上に初期配置されるコンポーネントを定めた仮想コンポーネント初期配置表１１２を用いて、図１４に示したような移動ルール１１３を生成する。
【００９８】
図１３に示すコンポーネント移送ルールメタ情報では、予め与えられた複数のコンポーネントのそれぞれについて、予め与えられえた複数のデバイス（サーバ装置（ｓｅｒｖｅｒ１）、携帯電話（ｐｈｏｎｅ１）、ＰＤＡ（ｐｄａ１））のうち、当該コンポーネントが動作可能なデバイスに対しては「○」、動作不可能なデバイスに対しては「×」で表している。
【００９９】
ここで、「ｐｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」というＩＤのコンポーネントは、現在位置をチェックする機能を有するコンポーネントである。「ＰｏｓｉｔｉｏｎＤＢＡｃｃｅｓｓ」というＩＤのコンポーネントは、位置に対応付けられた情報（例えば地域情報など）を記憶する位置データベース（ＤＢ）へアクセスして情報を取得する機能を有するコンポーネントである。「ＧＰＳｈａｎｄｌｅｒ」というＩＤのコンポーネントはＧＰＳハンドラーの機能を有するコンポーネントである。「ＭｅｓｓａｇｅＤｉｓｐｌａｙ」というＩＤのコンポーネントは、メッセージをデバイスのディスプレイに表示するという機能を有するコンポーネントである。
【０１００】
移送ルールジェネレータ１０１は、仮想コンポーネント初期配置表から、各コンポーネントの初期配置されているプラットフォームを求め、その初期配置されているプラットフォーム（移送元のプラットフォーム）と当該コンポーネントが動作可能なプラットフォーム（移送先のプラットフォーム）との組合せにより複数の移送ルールを生成する。
【０１０１】
図１４は、移送ルールジェネレータ１０１により生成された移送ルールの一例を示したものである。例えば、「ｐｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」というコンポーネントが初期配置されるプラットフォームがサーバ装置（ｓｅｖｅｒ１）であるとする。すなわち、ｓｅｒｖｅｒ１上に予め配置されている「ＰｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」コンポーネントをエージェントが利用する場合を考える。「ＰｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」というコンポーネントは、サーバ装置（ｓｅｒｖｅｒ１）、携帯電話（ｐｈｏｎｅ１）、ＰＤＡ（ｐｄａ１）のいずれにおいても動作可能であるので、▲１▼ｓｅｒｖｅｒ１上で実行する場合、▲２▼ｓｅｒｖｅｒ１からｐｈｏｎｅ１上に移送して実行する場合、▲３▼ｓｅｒｖｅｒ１からｐｄａ１に移送して実行する場合が考えられる。上記各場合を移送元の機器と移送先の機器との組合せで表したものが移送ルールである。なお、移送先の機器がない場合も当該組合せの１つであるとする。
【０１０２】
プラナー１０２は、上記移送ルールと、ある目的（例えば、プランの命題に等しい）を有するアプリケーションの処理手順であって、当該目的を達成するために利用すべきコンポーネントのＩＤを実行順序に従って並べられたアプリケーションプラン生成ルール１１４とを用いて、エージェントの実際の動作を記述した複数のプラン（エージェント動作プラン群１１５）を生成する。
【０１０３】
アプリケーションプラン生成ルールの一例を図１５に示す。ここでは、例えば、「ある位置に達したときに当該位置に関する情報を表示する」という目的を達成するために実行すべきコンポーネントのＩＤが実行順序に従って並べられている。
【０１０４】
図１５に示したアプリケーションプラン生成ルールによれば、上記目的を達成するために、例えば、次のごとき実行手順が表されている。▲１▼「ＧＰＳｈａｎｄｌｅｒ」コンポーネントを用いてＧＰＳ（ｇｒｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）を起動して現在位置を調べる。▲２▼「ｐｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」コンポーネントを用いてＧＰＳで得られた現在位置が予め定められた位置であるか否かをチェックする。現在位置が予め定められた位置であるときには、▲３▼「ＰｏｓｉｔｉｏｎＤＢＡｃｃｅｓｓ」コンポーネントを用いて、位置ＤＢへアクセスして、当該位置に対応する地域情報を取得する。▲４▼取得した地域情報を「ＭｅｓｓａｇｅＤｉｓｐｌａｙ」コンポーネントを用いてデバイスのディスプレイに表示する。
【０１０５】
アプリケーションプラン生成ルールには、コンポーネントを実行する際にどのデバイス（プラットフォーム）で実行するかは定められておらず、また、コンポーネントを移送するという動きも定められていない。
【０１０６】
プラナー１０２は、このアプリケーションプラン生成ルールの各コンポーネントを実行する際に、実行場所のデバイス（プラットフォーム）やコンポーネントの移送という動きを加えて、各コンポーネントを実行するための複数のプラン、すなわち、エージェント動作プラン群を生成する。
【０１０７】
例えば、図１５のアプリケーションプラン生成ルールに表されている「ＰｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」コンポーネントに着目すると、このコンポーネントを実行する際には、図１４に移送ルールに示したように３つの実行形態がある。すなわち、図１４に示した移送ルールのうち最初の移送ルールを用いて、「ＰｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」コンポーネントをサーバ装置（ｓｅｒｖｅｒ１）上で実行する、というプランが生成される。また、２番目の移送ルールを用いて、「ＰｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」コンポーネントをサーバ装置から携帯電話（ｐｈｏｎｅ１）へ移送して、携帯電話上で実行する、というプランが生成される。さらに、３番目のルールを用いて、「ＰｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」コンポーネントをサーバ装置からＰＤＡ（ｐｄａ１）へ移送して、ＰＤＡ上で実行する、というプランが生成される。
【０１０８】
このようなアプリケーションプラン生成ルールに記述されている各コンポーネントについて生成されたエージェント動作プラン群と、さらに、その各プランが、どの移送ルールを用いて生成されたかを表す、プランと移送ルールとの対応関係を表したデータが、プラン群管理部１０３に渡される。
【０１０９】
プラン群管理部１０３は、エージェント動作プラン群から１つずつプランを取り出し、シミュレーション部１００に入力する。シミュレーション部１００では、入力されたプランをプランツリー格納部３１に格納する。第１の実施形態で説明したように、プランツリー格納部３１に格納されたプラン１１６に対するコストシミュレーション部１００で計算されると、当該計算されたコスト１１７はプラン管理部１０３に渡される。プラン群管理部１０３は、エージェント動作プラン群の全てのプランについて、シミュレーション部１００からコストが得られたら、プランのコストが小さいものほど優先度が高くなるように、プランと当該プランを生成する際に用いた移送ルールに優先度を設定する。
【０１１０】
プラン群管理部１０３は、プラナー１０２から出力される情報を基に、例えば、図１６に示したようなテーブルを作成して記憶するとともに、シミュレーション部１００で計算された各プランについてのコストを書き込む。そしてこのコストから定められる優先度を当該テーブルに書き込む。
【０１１１】
図１６に示したテーブルでは、「ＰｏｓｉｔｉｏｎＣｈｅｃｋｅｒ」コンポーネントについて生成された３つのプランからなるエージェント動作プラン群について、各プランを生成する際に用いられた移送ルールを対応付けるとともに、各プランについてシミュレーション部１００で計算されたコストも記述されている。コストの最も小さいプランと当該プランを生成した移送ルールには、最も高い優先度「１」が設定されている。
【０１１２】
なお、コンポーネント移送ルール生成用メタ情報１１１、仮想コンポーネント初期配置表１１２、アプリケーションプラン生成ルール１１４は、予め所定の記憶手段に記憶しておき、移送ルールジェネレータ１０１により生成される移送ルールや、プラナー１０２により生成されるエージェント動作プラン群や、図１５に示したテーブルも、それらが生成されと所定の記憶手段に記憶される。
【０１１３】
次に、図１７に示すフローチャートを参照して、図１２のプラン生成システムの処理動作について説明する。
【０１１４】
移送ルールジェネレータ１０１は、所定の記憶手段に記憶されている、コンポーネント移送ルール生成用メタ情報１１１と仮想コンポーネント初期配置表１１２を読み取り、それらを基に、移送ルール１１３を生成する（ステップＳ１０１）。生成された移送ルール１１３はプラナー１０２へ渡される。
【０１１５】
プラナー１０２は、所定の記憶手段から移送ルール１１３と、アプリケーション生成ルール１１４を読み出して、それらを基に、エージェント動作プラン群１１５を生成する（ステップＳ１０２）。エージェント動作プラン群１１５と、その各プランと当該プランを生成する際に用いた移送ルールとの対応関係を表したデータはプラン群管理部１１５へ渡される。
【０１１６】
プラン群管理部１０３は、プラナー１０２から得られたデータを基に、図１６に示したテーブルを作成する。なお、ここで作成するテーブルには、図１６に示したテーブル上のコストと優先度の項目欄は空欄である。
【０１１７】
プラン群管理部１０３３は、エージェント動作プラン群から１つずつプランを採り出し、図１に示した構成のシミュレーション部１００のプランツリー格納部３１に格納する。シミュレーション部１００は、プランツリー格納部３１に格納されたプランについて、図８〜図１１に示したようにコストを算出すると、プラン群管理部１０３に、当該算出したコストを渡す（ステップＳ１０３）。プラン群管理部１０３は、図１６のテーブル上の各プランについて、システム１００で計算されたコストを同テーブル上に記録する。図１６のテーブル上の全てのプランについて、シミュレーション部１００でコストが計算されると（ステップＳ１０４）、プラン群管理部１０３は、コストが小さいものほど高い優先度を設定する（ステップＳ１０５）。図１６では、優先度「１」が最も優先度が高く、数値が大きくなるほど優先度は低くなっている。
【０１１８】
以上説明したように、上記第２の実施形態によれば、ある命題を解決するための複数のプランに対しそのコストを求めて、各プランに、エージェントがプランツリーからプランを選択する際の目安となる優先度を、そのコストが小さいほど高く設定するので、エージェントシステムが当該優先度を用いてプランツリーからプランを選択することにより、命題解決までの処理時間の高速化を図ることができる。また、プランだけでなく、当該プランを生成する際に用いた移送ルールにも優先度を設定することができ、プランを生成する際に、コストの小さいプランを生成する移送ルールを優先的に利用することで、エージェントに与えるプランの質を高めることができる。
【０１１９】
本発明の実施の形態に記載した本発明の手法（図８〜図１１参照）は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、半導体メモリなどの記録媒体に格納して頒布することもできる。
【０１２０】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【０１２１】
【発明の効果】
以上説明したように、本発明によれば、エージェントの移動を考慮したプランの実行時間を容易に算出することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るシミュレーション装置（エージェントシミュレータシステム）の構成例を示した図。
【図２】仮想プラットフォームスペック表の一例を示した図。
【図３】デバイスメタ情報の一例を示した図。
【図４】仮想プラットフォーム接続表の一例を示した図。
【図５】仮想コンポーネント初期配置表の一例を示した図。
【図６】コンポーネントシミュレートメタ情報の一例を示した図。
【図７】ネットワーク構成メタ情報
【図８】図１のシミュレーション装置の処理動作について説明するためのフローチャート。
【図９】取得ゴールを処理する際の図１のシミュレーション装置の処理動作を説明するためのフローチャート。
【図１０】配置ゴールを処理する際の図１のシミュレーション装置の処理動作を説明するためのフローチャート。
【図１１】移動ゴールを処理する際の図１のシミュレーション装置の処理動作を説明するためのフローチャート。
【図１２】本発明の第２の実施形態に係るシミュレーション装置（エージェントシミュレータシステム）の構成例を示した図。
【図１３】コンポーネント移送ルール生成用メタ情報の一例を示した図。
【図１４】移送ルールの一例を示した図。
【図１５】プリケーションプラン生成ルールの一例を示した図。
【図１６】プラン群管理部で作成されて記憶されるテーブルの一例を示した図。
【図１７】図１２のシミュレーション装置の処理動作について説明するためのフローチャート。
【符号の説明】
１…シミュレータ、２…仮想プラットフォーム、３…仮想エージェント、４…仮想コンポーネント初期配置表記憶部、５…仮想プラットフォームスペック表記憶部、６…仮想プラットフォーム接続表記憶部、１１…仮想エージェント生成部、１２…移動コスト計算部、１３…実行コスト計算部、１４…コンポーネント仮想配置部、１５…仮想プラットフォーム生成部、２１…ネットワーク構成メタ情報格納部、２２…コンポーネントシミュレートメタ情報、２３…デバイスメタ情報、３１…プランツリー格納部、３２…プロファイラ、３３…プランツリー管理部、３４…仮想プラットフォームポインタ
【図１】
2004362453.tif 000003
【図２】
2004362453.tif 000004
【図３】
2004362453.tif 000005
【図４】
2004362453.tif 000006
【図５】
2004362453.tif 000007
【図６】
2004362453.tif 000008
【図７】
2004362453.tif 000009
【図８】
2004362453.tif 000010
【図９】
2004362453.tif 000011
【図１０】
2004362453.tif 000012
【図１１】
2004362453.tif 000013
【図１２】
2004362453.tif 000014
【図１３】
2004362453.tif 000015
【図１４】
2004362453.tif 000016
【図１５】
2004362453.tif 000017
【図１６】
2004362453.tif 000018
【図１７】
2004362453.tif 000019