(57)【特許請求の範囲】
【請求項１】
通信網と、
エージェント制御プログラムを備えた第１の計算機と、
通信リンクを介して第１の計算機に接続された少なくとも１の第２の計算機と、を含む遠隔計算システムであって、
該第１の計算機は、該リンクを介して該第２の計算機に、計算タスクを実行する計算チームを定義するデータを送るようにプログラムされており、
該チームは、エージェントコーディネーティングプログラムと、該エージェントコーディネーティングプログラムとは異なり、該第２の計算機上で、該エージェントコーディネーティングプログラムと並行して実行する少なくとも１のタスクプログラムとを含み、
前記第２の計算機は、前記データを受信して、前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムとを並行して実行するようにプログラミングされていて、
各該タスクプログラムは、
該計算タスクの少なくとも一部を実行し、
該エージェントコーディネーティングプログラムと通信するコードを含み、
該エージェントコーディネーティングプログラムは、
該第１の計算機と通信し、
各タスクプログラムと通信し、
各該タスクプログラムをコーディネートするコードを含み、
したがって、該エージェントコーディネーティングプログラムは、各第２の計算機上で、
機械状態を監視し、
必要な場合には移動を開始し、
該エージェント制御プログラムと該タスクプログラムとの間の通信をコーディネートする中央制御機能を提供する、遠隔計算システム。
【請求項２】
前記エージェントコーディネーティングプログラムは、前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムとを前記少なくとも１の第２の計算機に、所定の基準に応答して、送信するためのコードを含んでいる請求項１に記載のシステム。
【請求項３】
前記エージェントコーディネーティングプログラムは、前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムとを送信するための前記コードを移動する少なくとも１の第２の計算機を決定するように構成されている請求項２に記載のシステム。
【請求項４】
少なくとも２の第２の計算機を含み、前記エージェントコーディネーティングプログラムは、前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムとを送信するための前記コードを移動する少なくとも２の第２の計算機に対する優先順序を定義するシーケンスを記憶するように構成されている請求項２に記載のシステム。
【請求項５】
前記エージェントコーディネーティングプログラムは、前記少なくとも１の第２の計算機の状態を監視するための監視コードを含んでいる請求項１に記載のシステム。
【請求項６】
前記所定の基準は、前記少なくとも１の第２の計算機の計算能力の低減を含んでいる請求項２に記載のシステム。
【請求項７】
前記エージェントコーディネーティングプログラムは、前記監視に依存して前記少なくとも１のタスクプログラムの各々を制御するように構成されている請求項５に記載のシステム。
【請求項８】
前記エージェントコーディネーティングプログラムは、前記監視に依存して前記少なくとも１のタスクプログラムの数を制御するように構成されている請求項７に記載のシステム。
【請求項９】
前記少なくとも１のタスクプログラムは、前記エージェントコーディネーティングプログラムからの移動命令に応答して、前記少なくとも１のタスクプログラムを前記少なくとも１の第２の計算機の１つへ送信するためのコードを含み、また前記エージェントコーディネーティングプログラムは該移動命令を送るように構成されている請求項１に記載のシステム。
【請求項１０】
前記エージェントコーディネーティングプログラムは、前記少なくとも１の第２の計算機の状態の前記監視に応答して、移動命令を送るように構成されている請求項９に記載のシステム。
【請求項１１】
前記エージェントコーディネーティングプログラムは、前記少なくとも１のタスクプログラムの各々を前記少なくとも１の第２の計算機の各々から取外すことができるように構成され、かつその実行を終了させるように構成されている請求項１に記載のシステム。
【請求項１２】
前記少なくとも１のタスクプログラムは、少なくとも１の第２の計算機に該少なくとも１のタスクプログラムの取外しと終了とを行なえるようにするコードを含み、また該エージェントコーディネーティングプログラムからの信号がないときにそれを行なうように構成されている請求項１１に記載のシステム。
【請求項１３】
前記第１の計算機は、少なくとも１の第２の計算機にアクセスし、各々に対してそれが前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムをサポートしているかを判断し、第２の計算機が前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムをサポートしていない場合には、前記少なくとも１の第２の計算機に前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムをサポートさせるためにサポートプログラムを該第２の計算機へ送ってそこで実行させるようにプログラミングされている請求項１に記載のシステム。
【請求項１４】
前記第１の計算機は、前記リンクを介して少なくとも１の第２の計算機に向けて、それぞれの前記少なくとも１の第２の計算機を監視するための監視コードと前記第１の計算機と通信するためのコードとを含む監視プログラムを定義するデータを送るようにプログラミングされており、前記第１の計算機は前記監視プログラムから状態データを受信するように構成されており、また前記第１の計算機はそれに依存して前記エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムの動作を制御するように構成されている請求項１に記載のシステム。
【請求項１５】
前記第１の計算機は、前記状態データに依存して、新しい計算機に移る命令を備えているメッセージをエージェントコーディネーティングプログラムに送信するように構成されている請求項１４に記載のシステム。
【請求項１６】
前記監視コードは前記少なくとも１の第２の計算機のメモリを監視するためのものである請求項１４に記載のシステム。
【請求項１７】
前記監視コードは前記少なくとも１の第２の計算機のプロセッサの利用を監視するためのものである請求項１４に記載のシステム。
【請求項１８】
前記監視コードは前記少なくとも１の第２の計算機の記憶容量を監視するためのものである請求項１４に記載のシステム。
【請求項１９】
前記監視コードは前記少なくとも１の第２の計算機の入力デバイスの使用を監視するためのものである請求項１４に記載のシステム。
【請求項２０】
前記監視コードは前記第２の計算機のバッテリィを監視するためのものである請求項１４に記載のシステム。
【請求項２１】
エージェント制御プログラムを備えた第１の計算機から少なくとも１の第２の計算機へ少なくとも１の並行処理タスクプログラムを供給するステップと、
前記第１の計算機から第２の計算機へエージェントコーディネーティングプログラムを供給するステップと、
前記第２の計算機上で実行されたエージェントコーディネーティングプログラムによって前記第２の計算機上で該少なくとも１の並行処理タスクプログラムの動作をコーディネートするステップ、とを備え、
該エージェントコーディネーティングプログラムは、各第２の計算機上で、
機械状態を監視し、
必要な場合には移動を開始し、
該エージェント制御プログラムと該並行処理タスクプログラムとの間の通信をコーディネートする中央制御機能を提供する、遠隔計算方法。
【請求項２２】
遠隔計算によりタスクを実行する方法であって、該方法は、
通信網と、エージェント制御プログラムを備えた第１の計算機と、該第１の計算機から離れて位置し、該第１の計算機に通信リンクを介して接続された少なくとも１の第２の計算機とを提供するステップと、
該第１の計算機から該少なくとも１の第２の計算機へ該通信リンクを介してエージェントコーディネーティングプログラムと前記タスクを実行する少なくとも１のタスクプログラムとを送信するステップと、
前記少なくとも１の第２の計算機にて該エージェントコーディネーティングプログラムと該少なくとも１のタスクプログラムとを受信し、該エージェントコーディネーティングプログラムと該少なくとも１のタスクプログラムとを並行して実行するステップ、とを備え、
該エージェントコーディネーティングプログラムの実行は、
該第１の計算機と通信し、
各タスクプログラムと通信し、
該第２の計算機上での各該タスクプログラムの動作をコーディネートし、
該少なくとも１のタスクプログラムの各々の実行は、
前記タスクの少なくとも一部を実行し、
該エージェントコーディネーティングプログラムと通信し、
したがって、該エージェントコーディネーティングプログラムは、各第２の計算機上で、
機械状態を監視し、
必要な場合には移動を開始し、
該エージェント制御プログラムと該タスクプログラムとの間の通信をコーディネートする中央制御機能を提供する、方法。
【請求項２３】
該エージェントコーディネーティングプログラムの実行は、該エージェントコーディネーティングプログラムの別の計算機への送信を生じる請求項２２に記載の方法。
【請求項２４】
前記所定の基準は、前記少なくとも１の第２の計算機の計算能力の低減に関する請求項２３に記載の方法。
【請求項２５】
該エージェントコーディネーティングプログラムの実行は、複数の他の計算機の中のどの１の計算機に該エージェントコーディネーティングプログラムが送信されるかの決定を生じる請求項２３に記載の方法。
【請求項２６】
該エージェントコーディネーティングプログラムの実行は、該少なくとも１の第２の計算機の状態の監視を生じる請求項２３に記載の方法。
【請求項２７】
該エージェントコーディネーティングプログラムの実行は、別の計算機が該エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムをサポートしていないかどうかを判断すること、および該別の計算機が該エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムをサポートしていないと判断した場合には、該少なくとも１の第２の計算機からサポートプログラムを送信して、該別の計算機に該エージェントコーディネーティングプログラムと前記少なくとも１のタスクプログラムをサポートさせることを可能にする請求項２２に記載の方法。
【発明の詳細な説明】
【０００１】
発明の属する技術分野
この発明はリモートコンピューテング（遠隔計算機処理と訳出する）、とくにしかしこれに限定するわけではないが、いわゆる“エージェント”を用いる遠隔計算機処理（リモートコンピューティング）に関する。
【０００２】
従来の技術
“モバイルエージェント（移動可能なエージェント）”の形態でソフトウェアを用意することが知られている。このようなエージェントはプログラムを含んでいて、このプログラムは実行を停止し、そのコードを直列形式（シリアルフォーム）に変換して遠隔通信網のような伝送媒体を介して送るのに適したものとし、またこのコードが他の計算機に送られるようにして、後にそこで実行されるようにすることが可能となっている。したがって、このようなエージェントは単一で移動可能な存在（モバイルエンティティ）としての外観を呈し、このエンティティは計算機から計算機へと移り進むことができる。用語“エージェント”は技術の世界の異なる文脈（コンテキスト）では異なる意味で使用されている。ここでいうところの“モバイルエージェント（移動可能なエージェント）”はプログラムを指し、このプログラムは命令の受領でその自体が他の計算機に移動に移動して、連続性を損うことなくそこで実行を開始できるものである。
【０００３】
このようなモバイルエージェントはＵＳ５，６０３，０３１（Whiteら）に記述されていて、California州Sunnyvale在General Magic Inc.によって市販された“Telescript”言語と関係している。“JAVA”計算機言語は“バーチャルマシン（仮想機械）”をいずれかの計算機上で作るためのコードで構成されていて、これはインターネットを介して受領したコードを実行できる。したがって、JAVAはモバイルエージェントコンピューテングにとって必要とされる若干の要素を与えている。もっと最近になって、JAVA１．１が登場し、またその使用がこの技術分野で拡がった結果としてエージェントプログラムを書くための多数の言語と、エージェントをサポート（支持）するためのサポートプラットホームの開発がされ、このプラットホームはJAVA言語とランタイム環境（“仮想機械”）を“ベータ”もしくは予めレリース（発表）された形式で使用している。
【０００４】
これらのうちの１つが“VOYAGER”であり、OBJECTSPACE Inc.,14901 Quorum Drive, Dallas, Texas, TX 75240 USAから入手することができる。VOYAGERはJAVAコードを変換してモバイルエージェントプログラムを用意できる形式とするようにされていて、このモバイルエージェントプログラムはそれ自体を別の特定された計算機に移動して、そこで動作を再開できるようにし、またこのようなプログラムを自動的に終結する能力といった強化策を含んでいる。VOYAGERはBata２バージョンとしてOBJECTSPACE Inc.から入手できる(http://www.ObjectSpace.com/voyger/voyger.html参照)。
【０００５】
他のものにはIBM Inc.から供給され、Bataレリースとしてそのウェブサイト（http://www.tri.ibm.co.jp/aglets参照）から利用できるAglet systems;Odyssey−これはGeneral Magic Inc.からのもので、そのウェブサイト（http://www.genmagic.com/agents参照）からBeta形式で利用できるもの；及びConcordia−これは三菱からであり（http://www.meitca.com/HSL/Projects/Comcordia）;及びAgent TLC言語を含んだ他のものがある。
【０００６】
発明が解決しようとする課題
一般に、このようなモバイルエージェントシステムは特定目的のための単一プログラムで構成されている。
【０００７】
異種混合（ヘテロジニアス）エージェント設計についての若干の議論がAridor and Lange,“Agent design patterns:element of agent application design”（２nd International Conference on Mobile Agent（Agents′98）Minneapotis／St.Paul, 10〜13 May 1998）で発表の中に与えられており、これを現在の発明者はこの発明の開発後に受取った。この論文は訪問先となる連続している計算機のシーケンスを特定する旅程(itinerary)を有しているモバイルエージェントを記述している。これらのエージェントはマスタ／スレーブ（主／従）関係にあってよい。この場合に“マスタ”エージェント（これは静的である）は第１のサイトに留まり、また“スレーブ”エージェントは別のサイトを訪ねて、マスタエージェントにレポートを送り返す。スレーブエージェントは“メッセンジャ”エージェントを使用することにより、マスタエージェントに向けたデータを運ばせるために報告をすることができる。
【０００８】
また、そこには簡単に述べられていることであるが、一緒に旅をするエージェントの“組織されたグループ（団体）”を用意することの可能性があげられている。
【０００９】
この発明は既存のエージェント提案に対する各種の改良を与えることとしており、上述の利用可能なエージェント言語とサポートプラットホームの１つを用いて実施できるものとしている。
【００１０】
課題を解決するための手段
１つの特徴として、この発明は遠隔計算機処理の方法を与えており、その構成は、複数の並列処理タスクプログラムを第１の計算機から少くとも１つの第２の計算機に供給し、共働用（コオーディネーテング、協調という訳出もある）プログラムを該第１の計算機から該第２の計算機に供給し、該タスクプログラムを該共働用プログラムを介して動作を共働することを含んでいる。
【００１１】
エージェントの異種混合チームを第２の（遠隔の）計算機上で使用することは制御と通信タスクとして必要とされるものを単純化するが、その理由は遠隔サイトにおける共働用プログラムがそこでのタスクプログラムの局部的な（ローカルな）動作を管理でき、またそこでのタスクプログラムに対して通信を集めたり配信する点として動作でき、したがって第１の（ホーム）計算機との通信が減らされることによる。
【００１２】
別な特徴として、この発明は遠隔計算機処理システムを提供しており、その構成は第１の計算機と、通信リンクを経て第１の計算機に接続された少くとも１つの第２の計算機とで成り該第１の計算機は計算機上で実行するための計算機処理タスクを実行しかつ該タスクの少くとも一部を実行するためのコードを含んでいて、また該第１の計算機と通信をするための、移動可能なプログラムを定義する移動可能プログラムデータを送るようにプログラムされており、ここで該第１の計算機は該第２の計算機が該移動可能なプログラムの実行をサポートできるかどうかを判断するようにされていて、もしできないときには該第２の計算機に向けて該リンクを経て移動プログラムサポート環境を定義するデータを送ってそこで実行をさせて、該第２の計算機が該移動可能なプログラムデータを受けて、該移動可能なプログラムを実行できるようにするシステムとなっている。
【００１３】
したがって、第１の（ホーム）計算機は他の計算機でそこと通信ができるものを監視することができるし、また遠隔計算機処理網を拡張することができ、拡張はVOYAGERサーバなどのモバイルエージェントサポートプラットホームをそこへ自動的にダウンロードして対象となっている計算機が遠隔計算機処理に使用できるようにすることにより行なわれる。好ましいのは、この実施形態で、第１の計算機が使用後にこのようなプラットホームを取外せることもできるようにされていることである。
【００１４】
別の特徴によると、この発明は第１の計算機と、通信リンクを経て第１の計算機に接続された少くとも１つの第２の計算機とで成る遠隔計算機処理用システムを提供し、その構成は該第１の計算機は該第２の計算機上で実行するための計算機処理タスクを実行しかつ該タスクの少くとも一部を実行するためのコードを含んでいて、また該第１の計算機と通信をするための、移動可能なプログラムを定義する移動可能プログラムデータを該リンクを経て該第２の計算機に送るようにプログラムされており、ここで該第１の計算機は該第２の計算機とそこに置かれている各該移動可能なプログラムとを示すグラヒカルディスプレイを生成するようにされているようなシステムである。
【００１５】
第１の（ホーム）計算機及び／又は第２の（遠隔）計算機にグラヒカルディスプレイを用意することはモバイルエージェントを応用した遠隔計算機処理の受入れを高めることになるであろうが、それはユーザによるプログラムについての知識とプログラムについての制御を増大させることによっている。
【００１６】
この発明についての他のアスペクト、実施形態及び特徴は以下の記述と特許請求の範囲の記述とから明らかになると思う。
【００１７】
発明の実施の形態
この発明を添付の図面を参照し、例としての目的に限って説明して行く。
【００１８】
第１実施例
図１を参照すると、計算機の網がユーザ計算機１０を備え、それが遠隔通信網２０を経由して複数の遠隔計算機３０ａ，３０ｂ，３０ｃと相互接続されている。ユーザ計算機１０は、例えば、Sunのワークステーションを備え、またターケット計算機３０ａ，３０ｂ，３０ｃは網サーバ３０ａ、ワークステーション３０ｂ、及びラップトップパーソナルコンピュータ３０ｃを備えるものでよい。
【００１９】
各遠隔計算機３０は中央処理ユニット（ＣＰＵ）３１、メモリ３２、ディスクドライブ３３、ビジュアルディスプレイユニット（ＶＤＵ）３４、キーボード（ＫＢＤ）３５、及び通信ポート３６で成り、ポート３６は通信チャンネル３７（ＩＳＤＮリンクのようなもの）に接続されている。これらの要素は通常のバス構造（図示せず）を経て相互接続されている。
【００２０】
図３を参照すると、各遠隔計算機３０のメモリ３２の内部には、複数の制御プログラムが実行のために記憶されている。この実施例では、これらがオペレーテングシステム３２１としてWindows 95とかWindows NTとかのようなものを、通信プロトコルスタック３２２としてＴＣＰ／ＩＰのようなものを、Javaバーチャルマシン３２４を、またモバイルエージェントプラットホーム３２６としてVOYAGERのようなもの（ObjectSpace Inc.から入手可能）を備えていて、こういったものが全体で図３の参照番号３２８としてまとめてラベルを付した応用プログラムのための動作環境を構成している。ユーザ計算機１０の構造は概ね図２と３とを参照して記述した遠隔計算機３０のものに対応しているが、ここでは以下に記述するような修正が加えられている点が異なっている。
【００２１】
使用時に、モバイルエージェントプログラムを表わしている直列化した（シリアライズド）コードが通信ポート３７を通って受領されるときには、モバイルエージェントプラットホーム３２６とJavaバーチャルマシン３２４とがこのプログラムをメモリ３２の応用エリア３２８内に記憶されるようにする。モバイルエージェントプラットホーム３２６はそこでこのコードをローカルJavaコードに変換し、ローカルオペレーテングシステム３２１を使用しているJavaバーチャル機械３２４上で実行するようにする。モバイルエージェントプラットホーム３２６とJavaバーチャルマシン３２４との動作の一般的な詳細はVOYAGERユーザガイド、バージョン１．０，Beta３．０，July １９９７（OBJECTSPACE Inc.から入手可能）の中で見付けることができる。このようにして、ここまで上述してきたシステムは通常のモバイルエージェント計算機処理システムのやり方で動作する。
【００２２】
第１実施例の動作の概観
図４を見て、この実施例のランタイム（実動時）動作の際に存在するソフトウェアを記述して行く。
【００２３】
ユーザ計算機１０内部では、エージェント制御プログラム４０が用意されている。このエージェント制御プログラム４０は遠隔通信網２０を経由して第１のターゲットと計算機３８上に置かれているコオーディネーテング（共働用）エージェントプログラム４２と通信状態にある。また第１のターゲットと計算機３８上に置かれているのが複数のタスクエージェントプログラム４４ａ〜４４ｄであり、その各々はコオーディネーテングエージェントプログラム４２と通信をするようになっている。
【００２４】
別の遠隔計算機３０ｂ上には、スカウト（内偵）エージェントプログラム４６が備えられている。
【００２５】
動作の際には、タスクエージェントプログラム４４ａ〜４４ｄがタスクの一部を並列に処理する。典型的なのはすべてのタスクエージェントプログラム４４が同一であることである。
【００２６】
コオーディネーテングエージェントプログラム４２は遠隔計算機上に置かれているオペレーテングシステムと対話（相互作用）を行なう。それはローカルメッセージパッシングを介してタスクエージェントプログラム４４ａ〜４４ｄと通信し、また遠隔通信網２０を介して送られたメッセージを介してエージェント制御プログラム４０と通信をする。スカウトエージェントはコオーディネーテングエージェント４２とまたエージェント制御プログラム４０と網２０を通ってメッセージを送ることによって通信する。
【００２７】
このようにして、高度の計算機処理を必要とする若干の繰返しタスクを実行するために、タスクエージェント４４ａ〜４４ｄは各々が計算機処理タスクの一部分を並列に実行する。コオーディネーテングエージェント４２は遠隔計算機３０ａ上のタスクエージェントによって使用される計算機処理用資源の量を制御するし、また、タスクエージェントによって計算された結果をエージェント制御プログラム４０に通信することもする。最後に、遠隔計算機３８から別の遠隔計算機３０ｂへ移動しそこで実行を再開始すべきかどうかまたそれはいつかを判断することになる。
【００２８】
エージェント制御プログラム４０はユーザ計算機１０上で恒久的に動作できる状態にあり、遠隔計算機へ移動はしない。動作時には連続して遠隔計算機３０ａ〜３０ｄ上の計算機処理用資源の使用と使用可能性とを監視し、そのためにスカウトエージェントプログラム４６からのメッセージを受けることとし、また必要であれば、新しいスカウトエージェントプログラム４６を新しく位置決めされたターゲット計算機３０に向けて送ることをする。
【００２９】
ユーザが新しいタスクが実行されるのを望む場合には、エージェント制御プログラム４０はユーザが実行されるべきタスクを定義できるようにしてタスクエージェント４４のための適切なコードを作成する。
【００３０】
そこで次にどの遠隔計算機がこのタスクを実行するのに適切であるかをエージェント４４が決めて、それらをランク付けしてシーケンスとするか旅程とする。次にコオーディネーテングエージェントプログラム４２に対するコードを作り、これを旅程に入っている第１の遠隔計算機３０ａに向けて、コードと一緒に送ってタスクエージェントプログラム４４の作成を可能とする。
【００３１】
コオーディネーテングエージェントプログラム４２が第１のこのような遠隔計算機３０ａに到達すると、それが複数のエージェントプログラム４４を作り、遠隔計算機３０ａで利用できる計算機処理用資源に依存してそれらの動作を制御する。資源（複数）が適当であるとして停止するときは、例えば遠隔計算機３０ａのユーザが別のタスクをそこで開始したといった理由があってそうなったときは、コオーディネーテングエージェント４２は別の遠隔計算機３０ｂを（旅程からか、スカウトエージェント４６の報告からのいずれかで）移動することを決めて、自分自身とタスクエージェント４４を遠隔通信網２０を経由して遠隔計算機３０ｂに向けて移動する。
【００３２】
エージェント制御プログラム４０の動作
エージェント制御プログラム４０の動作を図５及び図６ないし１０を参照して記述して行く。段階１１０では、ユーザ計算機１０はエージェント制御プログラム４０を開始して、初期化が図６で以下に詳述するように実行される。
【００３３】
段階１１０では、新しい適当なホストで遠隔計算機処理用のものが図７で記述した方法で作成される。段階１３０では、使用可能な遠隔計算機のデータベースが作られて、以下に図８で詳述するように作られて維持され、段階１４０では、ホスト計算機の旅程が作られることになる各エージェントチームに対して計算される。
【００３４】
段階１６０では、モバイルエージェントのいくつかのチームが作られて、各旅程上の第１の計算機に送られる。段階１７０では、エージェント制御プログラム４０が基準、終結、及び移動をチームについて監視するがこれは図９で以下に詳述されるところであり、また段階１９０では所望のタスクが完了した後に、エージェント制御プログラム４０が終結する。
【００３５】
最初に、図６を参照すると、段階１０１で、エージェント制御プログラム４０がユーザ計算機１０のＩＰアドレスを判断する。段階１０３では、エージェント制御プログラム４０がグラヒカルユーザインターフェース（ＧＵＩ）で図１８に示したようなディスプレイを含んでいるものを作る。
【００３６】
段階１０５では、エージェント制御プログラム４０はスカウトエージェント４６と、コオーディネーテングエージェント４２とタスクエージェント４４のインスタンスを作り、段階１０７では、エージェント制御プログラム４４のインスタンスを作り、段階１０７では、エージェント制御プログラム４０はすべての存在するエージェントとその場所（すなわちこの実行されている計算機のＩＰアドレスである）のリストで成るレジストリィ（登録、Registry）を作り出して更新する。
【００３７】
段階１０９では、エージェント制御プログラム４０は実行されることになるタスクを定義するが、これは、ユーザがＧＵＩを介して対話ができて存在している予め定義されたタスクを選ぶか実行のためのコードを供給することにより新しいタスクを作るかのいずれかをするようにして行なわれる。適切なタスクの例は、複数の時間に実行されることを要するタスクであり、方程式に対する解を捜し出す莫大な手間のかかるものとか、コードブレーキング（code breaking）などである。この実施例を採用して成功のうちに実行されたものの一例は遺伝子アルゴリズム評価である。
【００３８】
ここで図７を参照すると、新しいホストを作る段階が次のように実行される。段階１１１では、遠隔計算機でまだエージェントプラットホームを実行していないものが遠隔通信網２０を経て位置決めされ、段階１１２では、認証対話がこのような計算機と行なわれる。もし認証対話が成功すると（段階１１３）、そのときは段階１１４で、Telnetセッションが遠隔計算機３０に向けて設定され、段階１１５ではエージェントプラットホーム（例えばVOYAGERサーバ）がその遠隔計算機３０に向けてダウンロードされる。段階１１６では、エージェントプラットホームは遠隔計算機３０上で開始されて、次に段階１１７で、Telnetセッションが閉じて終る。
【００３９】
図８を参照して、遠隔ホスト３０のデータベースを作り、また更新する際に実行される段階を詳細に記述して行く。段階１３１では、複数のスカウトエージェント４６が作られて、その各々が遠隔計算機３０ａ〜３０ｄのそれぞれの１つに送られる。各エージェントを送る際に、エージェント制御プログラム４０は各エージェントにメッセージを送って、そこに命令してそこが監視することになる計算機のＩＰアドレスへ移動するようにし、スカウトエージェントがそれぞれの計算機に行ってしまったことを示すためにその登録を更新する。
【００４０】
段階１３２では、エージェント制御プログラムはスカウトエージェント４６の１つから信号を受領し、段階１３３では遠隔計算機３０のデータベースを更新し（あるいは信号を何も以前に受けたことがなければ作成し）その内容は、例えば各遠隔計算機について、プロセッサ形式、利用可能なメモリ、計算機の形式（例えばラップトップとかデスクトップとか）、ＩＰアドレス、ハードディスク寸法と利用可能なスペース、オペレーテングシステム形式、JAVAバージョン番号、現在のＣＰＵ使用のレベル、及びスカウトエージェント４６から入手可能な他の何らかのデータを含んでいる。また（知れているときには）地理的な場所を含んでいる。これはＩＰアドレスからか、システムクロツクによって保持されている一日の中の時間（経度を示している（原文はlatitude(緯度)としてあるが誤りと思う：訳者））とか電話番号（国及び／又は地域を示している）のような遠隔計算機に置かれているデータから判断してもよい。
【００４１】
段階１３４では図１８のディスプレイは、手短かに、各遠隔計算機についての目視可能な表現上で利用可能な能力をグラヒカルに示すように更新される。
【００４２】
図１８を見ると、このディスプレイは制御パネル領域１０５０を含んでいて、それがユーザによって“マウス”または他のカーソル制御デバイスで選択をするように多数の領域で構成されていて、この実施例では、“ソフトボタン”１０５１があって、Telnetプログラムが新しいエージェントサーバプラットホームをインストールするために開始するようにしている。１０５２と１０５３とは後述するマップ表示領域１０７０をそれぞれ示したりあるいは隠したりするものであり、１０５４は選ばれたエージェントを終結させるためであり、１０５５は選ばれたエージェントの状態読取りを命令するためであり、また１０５６は選ばれたサーバの状態読取りを命令するものである。各々の場合には、エージェントもしくはサーバがユーザによってグラヒカルに選ばれることは以下に述べる通りである。状態領域１０５８は各チームに対してタスクの進捗（すなわち完了に至るまでの時間の割合のようなもの）を示す。
【００４３】
マップ表示領域１０７０で上でほのめかしたものはマップ（ここではフロアプラン、床配置）でホームサーバの地理的領域（この場合では周辺の部屋）内の計算機処理用資源についてのものを備えている。その構成はアイコン１０３０ａ〜１０３０ｈで成り、各々が遠隔計算機３０ａ〜３０ｃの１つを表わしており、アイコン１０１０はユーザ計算機１０を表わしている。またアイコン１０４０があり、これがユーザ計算機１０上のエージェント制御プログラム４０の存在を示しており、スクリーン上の近くにこれが表現されている。
【００４４】
同じように、図１８には示していないが、アイコン（１０４２），（１０４４）もしくは（１０４６）がそれぞれコオーディネーテングプログラム４２、タスクエージェント４４もしくはスカウトエージェント４６をそれぞれ表わしていて、プログラムが現在置かれているホスト計算機に対するアイコン１０３０の隣の表示上に示される。
【００４５】
この実施例では、遠隔計算機３０とユーザ計算機１０との間の通信は、接続され、接続されたラインによって、グラヒカルに表現され、その幅が情報伝送の速度を示している。
【００４６】
また図１８の表示内部に備えてあるのがデータ領域１０８０であって。計算機は処理用チームから受領したデータを表示するのに当てられ、またエージェントサポートプラットホーム表示領域１０９０があって、それがどの計算機サポートプラットホームがインストールされているかを示している。
【００４７】
ユーザは照会されることになるエージェントもしくは計算機をカーソル制御入力デバイスを用いて選ぶことができる。図１８のディスプレイは通常のインターフェース技術である“Windows”オペレーテングシステムのようなものを用いて実現されている。
【００４８】
好ましいのは、この実施例では、エージェント制御プログラム４０が定期的なＴＣＰ／ＩＰ“PING”信号を生成して、各遠隔計算機についての時間遅延を検出することである。この場合の時間遅延データは各計算機について、遠隔計算機データベース内に記憶されて、旅程を選ぶ際に利用でき、それによって全体の遅延を低く保つようにする。
【００４９】
この場合に、ＧＵＩはまた“バルズアイ（bullseye、標的の中心）”もしくは標的の眺望（ターゲットビュー）を表示している表示（ディスプレイ）フレームを含んでもいて、そこではユーザ計算機１０がビュー内の中心にあり、遠隔計算機３０はユーザ計算機からのそのものの方位に対応した方位に置かれ、その距離はそこから測定された時間遅延に対応している。
【００５０】
ユーザ計算機１０を表わすアイコン２０１０でディスプレイは構成されていて、またアイコン２０３０ａ〜２０３０ｃの各々は遠隔計算機３０ａ〜３０ｃのそれぞれの１つを表わしている（図１９）。
【００５１】
段階１３５では、エージェント制御プログラム４０はスカウトエージェント４６が移動対象とされるべきかどうか（例えば、遠隔計算機３０がサービスから外れていくこと）を判断し、何らかの必要な移動命令の実効が上るようにする。こういった監視と更新の段階１３２〜１３５はエージェント制御プログラム４０の動作全体を介して連続的に実行されるか、定期的な間隔で実行される。この実施例では、スカウトエージェント４６は遠隔計算機３０上で自分自体を終結するようにされている。すなわちこの遠隔計算機上ではスカウトエージェントが実行されていて、所定時間にわたって、スカウトエージェントがエージェント制御プログラム４０からメッセージを受領しない場合にそれが行なわれる。
【００５２】
旅程を作る段階１４０を次に詳述する。利用可能なホスト計算機のデータベースを構築してしまうと、エージェント制御プログラム４０はどのくらいの数のエージェントチームを作るべきかを判断することに進む。例として、遠隔計算機３０は多数の比較的強力な網サーバ計算機と、多数の（より強力ではない）エンジニアリングワークステーションと、多数の（より強力ではない）パーソナルコンピュータと、多数のラップトップコンピュータとを備えていると仮定してよい。このような遠隔計算機の各々では多数のプログラムがすでに実行されているので、実行されるべきタスクにとって利用可能な資源は程度の差はあれ制限される。
【００５３】
エージェント制御プログラム４０は各遠隔計算機について有用度因子を計算機のもつパワーの指数（例えばこれはそのプロセッサの速度と利用可能なメモリとの重み付けした和で構成される）と利用可能とされる能力（キャパシティ）の割合との積として決める。
【００５４】
遠隔計算機についての混乱を生じさせる侵襲を回避するために、またこの回避はスカウトエージェント４６が遠隔計算機３０の能力のほとんど何も利用されていないと報告をする場合についても行なわれるように、エージェント制御プログラム４０は（例えば遠隔計算機の資源の５０％の）利用について最大容量を設定する。
【００５５】
このように各遠隔計算機について計算されたインデックスはそのタスクを解決するのに使用するための計算機について望まれることの度合を表わすことになる。
【００５６】
次にエージェント制御プログラム４０はどのくらいの数のエージェントのチームが設定されるべかを決める。並列計算処理問題に対しては、一般に、ある性能利益が与えられた単一のプロセッサ上で問題を解くためのプログラムの多数のインスタンスを設定することによって得られ、ここでこの数の上でも下でも性能が劣化することになる。このようにして、実行されることになるタスクが例えば１００の出発点をもつ方程式の解についての莫大な探索である場合には、エージェント制御プログラム４０は１００のタスクエージェント４４を用意するためにエージェントチームの十分な数を作ることになり、各チームにはＮのタスクエージェントがあり、ここでＮは異なる遠隔計算機当りのタスクエージェントの最適数を表わしており、また遠隔計算機の数（したがってエージェントチームの数）は１００／Ｎ＝Ｍとなる。
【００５７】
次に遠隔計算機のデータベースから、最高の有用性インデックスを備えたＭの計算機（すなわち、最も利用可能な能力を備えた最もパワーのある計算機）が各エージェントチームに対する旅程のそれぞれの出発点として選ばれる。
【００５８】
概ね等価の容量をもった適切な計算機が多数利用可能な場合には、（どこで利用可能かという）場所情報が各計算機について利用されて、各旅程に対する出発点を選ぶようにされ、この出発点は空間的に離れていたりユーザ計算機１０とは比較的近くにあったりしている。
【００５９】
空間的な隔りは異なるエージェントチーム間での競合（コンフリクト）を妨げる助けとなり、また１つの地理的な（したがって恐らくは業務上の）領域に集中するというのではなく、遠隔計算機処理タスクの衝撃（インパクト）を分散するのを助ける。
【００６０】
エージェント制御プログラム４０はそこで遠隔計算機デーベースを調べて（同じやり方で）次のＭの一番使用可能な計算機を決めて、これから（あるいは非常によく似た能力のＭ以上の計算機が利用可能として存在する場合には、この大きなグループから）各エージェントチームに対して次の旅程点を、位置情報が利用可能であればそれを利用して選び、関係している旅程内の第１のものに比較的近い計算機を選ぶようにする。
【００６１】
このプロセスは、所定数Ｐの計算機が各旅程について選ばれるまで繰返される。
【００６２】
さらに、スカウトエージェント４６からのデータを用いて、各旅程が定期的に精細なものとされ、また必要な場合には、その旅程に対する変更が各コオーディネーテングエージェント４２に向けた信号として送られる。チームが現在置かれているものよりももっとパワーのある計算機が利用可能となる場合には、エージェント制御プログラム４０はいくつかのチームに信号を送って新しく利用可能となった計算機に移動するようにする。
【００６３】
この実施例での旅程は、単純なリンクされたリストをＩＰアドレスで構成したものであり、このアドレスに向けてエージェントのチームが継続して移動されることになる。
【００６４】
図５の段階１７０であるエージェント監視段階をここで図９を参照して詳細に記述して行く。
【００６５】
段階１７１では、エージェント制御プログラムはコオーディネーテングエージェント４２からいくつかのタスクエージェント４４からの結果データについてのいくつかのアイテムを含んでいるメッセージを受領する。このようなメッセージを受領すると、段階１７５ではエージェント制御プログラム４０がタスクの現在の結果を更新して、ＧＵＩ上にその結果を表示する。
【００６６】
例えば、タスクがある方程式についての解を探すことを実行するものである場合には、タスクエージェント４４のいずれかからの現在の最良結果がＧＵＩ上に表示される。
【００６７】
もしこのタスクが終りの条件（エンドコンディション）を含むものであるとすると、例えば暗号文から平文を作り出すとか方程式を解くタスクにおける所定収束レベルの達成といったものであるとすると、制御プログラム４０はその条件が適っているかどうかを判断して、さらにもしそうであれば終結する（後述の段階１９０）。
【００６８】
エージェント制御プログラム４０は段階１７２で、コオーディネーテングエージェント４２もしくはスカウトエージェント４６からのいずれかのメッセージであって、いずれかのタスクエージェント４４が場所を移したことを示しているものを検出して、段階１７６では関係しているエージェントについてのエージェント登録記録を更新して、エージェントが置かれることになる計算機３０のＩＰアドレスを示すようにする。
【００６９】
段階１７３では、エージェント制御プログラム４０はコオーディネーテングエージェント４２からの、タスクエージェントもしくはコオーディネーテングエージェントの作成もしくは破壊を示すメッセージを検出して、これを段階１７６で登録内に記録する。
【００７０】
段階１７４では、エージェント制御プログラム４０はエージェントがユーザ計算機１０へ戻るものがあればそれを検出し、そのエージェントに対する登録記録を段階１７６で更新して、そのエージェントの新しい位置を記録する。そこでエージェントに照会して、もっている結果データをいずれも読取り、上述のように段階１７５でそのタスクを更新する。
【００７１】
段階１９０では（図１０参照）、所望の結果が得られている場合は、あるいは何らかの理由（計算機処理用資源が利用できないといったもの）では、制御プログラム４０は段階１９２でタスクの結果を例えばハードディスク上に記憶されたファイルに向けて出力し、それから信号を各コオーディネーテングエージェント４２に向けて送ってそれ自体とそのタスクエージェントとを終りとし、また各スカウトエージェント４６に信号を送ってそれ自体を終りとする（段階１９４）。段階１９６では、エージェントプラットホーム３２６はそれらが図７で記述したようにTelnetセッションを作ることによりインストールされていた遠隔計算機３０から取外される。最後にエージェントプログラム４０は実行を停止する。
【００７２】
大まかに言うと、したがって、エージェント制御プログラムは次のような機能を実行していると見ることができよう。
１．最初に新しいモバイルエージェントプラットホーム３２６を作り、これらをセッションの終りで取除く。（こういった動作はタスクの間にもまた実行できて、その場合にエージェント制御プログラムは新しい計算機を検出するかもしくは既存の計算機が使用できないものとなる）
２．スカウトエージェントプログラム４６を各遠隔計算機３０に送り出して、各々から受領したデータを監視して、分散形計算機処理環境のモデルを維持するようにする。この活動はタスクの間に連続して実行されて、エージェント制御プログラム４０の１つの実行スレッドを構成している。
３．エージェントの位置と動きとを監視し制御する。これはエージェント制御プログラム４０の別の実行スレッドを構成している。
４．タスクエージェントによって送られた結果を受領して、ある程度利用する。これはエージェント制御プログラムの実行についての第３のスレッド構成している。
５．各エージェントチームに対する遠隔計算機３０の最初の旅程を構築するために利用可能な資源を解析する。この解析プロセスはしたがって、エージェント制御プログラムの実行についての別のスレッドを構成している。
６．遠隔計算機３０の地理的位置と、そこに置かれているエージェントチームと、好ましいのは各計算機３０の能力とを示す表示を、これまでのタスクの結果の表示と一緒に維持し、動的に更新する。この表示（ディスプレイ）はＧＵＩの形式であり、これを介してユーザはプロセスの動作の要素を制御することができ、例えばチームを移動させたり、チームを作ったりあるいは取除くことができる。
【００７３】
結果データとエージェントからのデータを監視することは上述のようにエージェント制御プログラム４０に戻すことができて、それには遠隔通信網２０を経て送り戻されたメッセージによるか、あるいは関係しているエージェントを戻すことが行なわれ、その後にローカルな照会が行なわれるようにしている。
【００７４】
前の方の方法は結果もしくはモニタデータが比較的頻繁に生成される場合にはより好都合であり、その理由は、エージェントについてのコードを移動するよりも結果データを単に送信することがより高速であることによる。後の方の方法はデータの監視が比較的頻度少なく求められる場合に好ましいとされ、その理由は遠隔計算機３０のメモリからスカウトエージェントプログラム４６を取除き、これによって遠隔計算機処理プロセスが遠隔計算機３０自体の中に侵入していくことを減らせるからである。この実施例では、後の方の方法がこの理由で一般に好ましいとされている。
【００７５】
スカウトエージェントプログラム４６の動作
図１１を見るとして、遠隔計算機３０に到達すると、段階２０２ではスカウトエージェントプログラムは計算機状態を読取る、したがって、スカウトエージェントプログラム４６は次の試験を実行する。
１．オペレーテングシステムの形式とバージョン（JAVAバーチャルマシン３２４内部で標準ルーチンへの呼出しを実行することによって実行される）。
２．JAVAバージョン番号（JAVAバーチャルマシン３２４への呼出しを実行することによって得られる）。
３．全体のメモリ３２と空いているメモリ。同様にJAVAプラットホームへの呼出しを実行することによりこれらが得られる。
４．キーボード活性度検知。キーボード３５（あるいはマウスのような他の入力デバイス）をユーザが操作したことにより生ずる事象をオペレーテングシステムが検知するといつでもこれがトリガされる。他の入力ストリーム（例えばＬＡＮポート）もまた監視されてよい。
５．ＣＰＵ活性度。これは次のプロセスによって監視される：
ａ）短時間について最大有線度実行スレッドを開始し、実行の数の整数計数値を記録する。
【００７６】
ｂ）最小優先度スレッドを開始し、別の計数値読取りを行う。
【００７７】
ｃ）第１のスレッド上の第２のスレッドの衝撃（インパクト）のメッセージを送る。ＣＰＵ３１がビジィであればある程、効果は大きくなる。
【００７８】
スカウトエージェント４６はオペレーテングシステム３２１がポータブルコンピュータのものかデスクトップコンピュータのものかどうかを判断する。もしポータブルコンピュータが検出されると、電池の寿命、ハードディスク３３の状態、及びディスプレイ（表示）３４の状態が検出されて監視されるのが好ましい。
【００７９】
状態変化が記録される場合は（段階２０４）、段階２０６でそれがエージェント制御プログラム４０に返信される。これに代って、上述したように、スカウトプログラム４６はユーザ計算機１０に戻るよう移動できる。
【００８０】
別の実行スレッド内部では、スカウトエージェント４６はエージェント制御プログラム４０からメッセージを受領する（段階２０８）。もしメッセージがスカウトエージェントに対する終結せよとの命令を構成していれば（段階２１０）、段階２１２でそのようにする。もし新しい計算機へ移動せよとの命令を構成していれば（段階２１０）、段階２１４でスカウトエージェント４６はそのようにする。移動と終結との両方の方法はこの実施例で使用されたVOYAGERエージェントシステム内部に用意されている。
【００８１】
この実施例では、各スカウトエージェント４６が制限された所定の寿命をもっており、また段階２１２を呼出して自らを終結することになるが、その条件はこの所定時間期間内にエージェント制御プログラム４０からメッセージを受領しなかった場合とある。
【００８２】
最後に、スカウトエージェントは遠隔計算機３０上でのその存在を示すようにされているのがよく、そのためにはそのＶＤＵ３４上に像を表示するが例えばその存在を告知するアイコンを表示することによる。
【００８３】
コオーディネーテング（共働用）エージェント４２の動作
図１２を参照して、コオーディネーテングエージェント４２を記述して行くこととする。
【００８４】
作られたときには、コオーディネーテングエージェント４２はその旅程についての記憶されたコピィを読取って、旅程の中にある次の遠隔計算機を決めるようにされている（段階５０２）。
【００８５】
段階５０４では、コオーディネーテングエージェント４２はそのチーム移動することは図１４を参照して以下に述る通りである。
【００８６】
段階５０６では、コオーディネーテングエージェント４２はそれが到達した先の計算機の状態を読取る。この実施例では、実行される状態チェックはスカウトエージェント４６により実行されるのと同じであり、同じコードによって実施されている。
【００８７】
段階５０８では、コオーディネーテングエージェント４２はどのくらいの量の使用可能な能力（キャパシティ）が利用されるべきかを判断するが、その基礎となるのは空いているメモリと、ＣＰＵ利用データであり、前段階で得られたものである。一般に、コオーディネーテングエージェント４２は若干の空いているメモリとＣＰＵ時間とを残しており、遠隔計算機３０のユーザが同時に何らかの他のタスクを実行したい場合に備えている。例えば、メモリのいうなれば３０％まではコオーディネーテングエージェント４２により自由に割当てられる。
【００８８】
段階５１０では、コオーディネーテングエージェント４２は残っている能力（空いた状態で残されるもののほかに）が実行にあたって追加のタスクエージェント４４を支持することになるかどうか、あるいは空いているスペースの必要量を確保するために、タスクエージェント４４は終りとされなければならないかどうかを判断する。段階５１２ではもし十分な追加のスペースが追加のタスクエージェントを収容できるのであれば、そのときは追加のタスクエージェント４４が作られるし、もしタスクエージェントの数を減らす必要があればそのときは以下に詳述するように１つが終結される。いずれの場合もエージェントの作成又は破壊が段階５１４でエージェント制御プログラム４０に向けて送信される。プロセスは次に段階５０６で繰返されて、必要とされるだけ多数のタスクエージェント４４が作られるか、あるいは遠隔計算機３０上で支援できるまで続けられる。
【００８９】
次に、段階５１６では、コオーディネーテングエージェント４２が遠隔計算機３０のＶＤＵ３４上で表示を作って、そのものの存在とタスクエージェント４４の存在とを示す。
【００９０】
コオーディネーテングエージェント４２の動作中には、それが計算機３０を監視する（図１３の段階５２０）。変更の場合には（段階５２２）、結果はエージェント制御プログラム４０に報告される。この変更が顕著なものであるとすると（段階５２４）、例えばユーザがキーボード３５を操作しているとか、ＣＰＵ３１上で高優先度のタスクを開始したとすると、そのときはコオーディネーテングエージェント４２は段階５０２に戻って移動を開始する。
【００９１】
計算機３０の活動を監視することはコオーディネーテングエージェント４２の実行の１つのスレッドを構成している。
【００９２】
実行の別のスレッドとしては、コオーディネーテングエージェント４２が結果を送っているタスクエージェントからのメッセージを検出し（段階５２６）、これをエージェント制御プログラム４０に送信する（段階５２８）ことである。この実施例では、全ての結果を直ちに送るのではなく、結果についての何がしかの照合がコオーディネーテングエージェント４２によって実行される。個別信号の数を減らすために、したがってアドレスをするオーバーヘッド（総負荷）を減らすために、結果データのグループが送りのために単一のメッセージに結合される。
【００９３】
段階５３０では、コオーディネーテングエージェント４２はエージェント制御プログラム４０からのメッセージをチェックし、これがそれらの内容（コンテンツ）により解釈される（段階５３２）。もしこのメッセージが旅程を更新するものであると、そのときは図１６に示すように新しいＩＰアドレスで関係している計算機のものが旅程の中に代入される（段階５５２）。
【００９４】
もし信号がエージェントのチームを移動するためのものであると、コオーディネーテングプログラム４２は段階５０２へ戻る。図１４を参照して旅程内での次のアドレスを段階５０２で決めた後に、段階５０４が実行され、そこには各タスクエージェントに対して、そのタスクエージェントに命令を送ってそれ自体をそのアドレスに移動するようにし（段階５３４）、また最新のエージェントが処理されていないことを条件として、移動をエージェント制御プログラム４０に戻す送信をして（段階５３８）、次のエージェントを選ぶ（段階５４０）。最新のタスクエージェント４４を処理した後にコオーディネーテングエージェント４２はそれ自体を移動する（段階５０４）。
【００９５】
図１５を参照すると、同じように、エージェントのチームが終結することとなるときには、各タスクエージェント４４がメッセージを送られて（段階５４２）それ自体を終らせ、この終結がエージェント制御プログラム４０に報告され（段階５４６）、それに続いてコオーディネーテングエージェント４２がそれ自体を終らせる（自殺、段階５５０）。
【００９６】
コオーディネーテングエージェント４２は、各遠隔計算機３０上で中央制御機能を用意して、機械状態を監視し、必要な場合には移動を開始する；またエージェント制御プログラム４０とタスクエージェント４４との間の通信をコオーディネート（共働、強調）させる。
【００９７】
単一の制御機能を複数のタスクエージェント４４のために用意することによって、各々の複雑さは低減され、遠隔通信網２０を介しての送信量も減らされる。
【００９８】
ローカルな監視に基いて、新しい遠隔計算機への移動がローカルにいつ行なわれるかについて決定をするようにして、計算機状態に対するより高速な応答が得られる。このようにして、遠隔計算機３０のユーザがマシン（機械）を使用したいとするときには、遠隔計算機３０がモバイルエージェントプログラムを空けることができる前に、遠隔に置かれたエージェント制御プログラム４０との信号を送るプロセスの結果を待つ必要がなくなっている。
【００９９】
各網コオーディネーテングエージェント４２は、本質的にはその構造内部で標準化されている。その理由は、エージェント４２がチームの移動と通信との機能を制御するが、しかしこの実施例ではタスク自体の実行には関与していないことによる。
【０１００】
この実施例では、遠隔計算機３０がコオーディネーテングエージェント４２の何らかの動作故障の事象で、望んでいないタスクエージェント４４と、めちゃめちゃ状態（クラッタ）となることを避けるために、タスクエージェント４４には限られた寿命スパン（間隔）だけが与えられていて、この寿命スパン内にコオーディネーテングエージェント４２からメッセージを受領しなければそれ自体を終ることとしている。コオーディネーテングエージェント４２はこのようなメッセージを定期的に、関係する寿命スパンよりも短い間隔で送るようになっている。したがって、コオーディネーテングエージェント４２がチームを別の遠隔計算機３０に移動させたか、あるいはそれ自体を終らせた場合には、タスクエージェント４４は終結することになる。
【０１０１】
タスクエージェント４４の動作
各タスクエージェント４４は二つの部分から構成されていて、それは一般的な（ジェネリックな）部分と、タスクに固有な（タスクスペシフィックな）部分である。一般的な部分はVOYAGERモバイルエージェントで成り、上述の通り、それがコオーディネーテングエージェント４２から信号を受けないときには所定時間後にそれ自体を終結するように、またコオーディネーテングエージェント４２からの信号を待って移動させるようにするかそれ自体を終結するように、またさらに結果をコオーディネーテングエージェント４２に送るようにされている。
【０１０２】
タスクに固有な部分は、方程式を解くとか、暗号を解号するとか、ストリング探索といった反復性計算機処理タスクを実行するようにされていて、定期的もしくはタスク条件を満足できるやり方で結果を生成して、それをコオーディネーテングエージェント４２に送る。
【０１０３】
したがって、図１７を参照すると、段階４０２はタスクの実行を含んでおり、段階４０６はコオーディネーテングユニット４２から信号を受領することを含んでおり、また段階４０８はその内容（コンテンツ）に依存して終結（自殺、段階４１０）もしくは移動（段階４１２）の適当な方をとるとしている。こういった段階は、上述のように２つの繰返し実行されるスレッドとされている。
【０１０４】
コオーディネーテングエージェント４２は新しいタスクエージェントを作るための方法を含んでおり、それが記憶されたタスクエージェントクラスから作られ、そのうちの一般的な部分は、網コオーディネーテングエージェントの一部として記憶されており、またそのタスクに固有な部分は最初にエージェント制御プログラム４０により供給される。
【０１０５】
詳細に記述しなかったところについては、VOYAGERシステムの特徴がこの発明を実施するための機能を与えていることが理解されよう。例えば、終結はこの実施例ではVOYAGER dieNow（  ）機能を用いて実行され、また移動はVOYAGER MoveTo（“場所名（placename）”）機能によって実行される。
【０１０６】
可能な応用
この発明の可能な応用についての全部網羅はしていないリストは次の通り。
１．並列処理（例えば、一般的なアルゴリズム、解の探索）
２．暗号、分散されたキーのクラッキング（分解）
３．話し言葉（スピーチ）の処理
４．遠隔計算機の探索
５．分散形実時間処理（例えばモバイルロボットについて）
６．グラヒックス；三次元を含む
７．モバイルコンピュータ資源の利用
モバイルリモートコンピュータ（移動可能な遠隔計算機）
好ましいのは、この実施例では、コオーディネーテングエージェント４２は通信ポート３７を監視するようにされていて、このポートが遠隔通信網に接続されるのを停止するときは、タスクエージェント４４から受領したすべての結果をバッファするようにされていることである。
【０１０７】
次の機会には、遠隔通信網２０は利用可能となり、コオーディネーテングエージェント４２はエージェント制御プログラム２０に向けて、網が最後に利用不能となって以降に得られたいずれものモニタデータと結果とを送信する。同様に、エージェント制御プログラム２０では、エージェントのチームに向けて送られた全メッセージ（そこから受けた最後のメッセージ以降のもの）がバッファされて、遠隔通信網を介して再送信されて、そこからメッセージを次に受領する。
【０１０８】
このようにして、この発明の実施例はエージェントチームをモバイルコンピュータに向けて送り、モバイルコンピュータの資源の使用ができるようにし、その間に遠隔通信網２０と通信をせずに、次に利用可能となるときに結果を集める。
【０１０９】
他の実施例と修正変更
これまでのところでは、遠隔計算機の使用のレベルを報告する際のスカウトエージェントの動作が記述されている。スカウトエージェントはローカル事象を監視してキーボードが押されたかどうかチェックしたり、空いているメモリの量が静止しているか上昇しているかあるいは下降しているかどうかを記憶することによって遠隔計算機の状態を評価することもまた考慮の対象とされている。遠隔マシンにおける使用量の変化を使用の実際レベルではなく報告することもできる。
【０１１０】
エージェント制御プログラムは異なる遠隔計算機の過去の活動を監視するようにされていて（また、遠隔計算機の異なる使用者が知られている場合には各ユーザの活動パターンを監視する）、さらにこれを使って各エージェントプログラムに対する旅程を作成して、エージェントが現在利用可能であるが、すぐにビジィ（使用中）となるような計算機には送られないことを確かにするようにする。
【０１１１】
デフォールトによって、使用情報が利用できない場合には、計算機が置かれている時間帯についての知識が使用されて、例えば計算機がその時間帯内で夜間の時間中がもっと利用可能性があることを予測するようにする。
【０１１２】
プログラムのエージェントチームが遠隔計算機上に置かれていて、その計算機上で活動が始まる場合には、他の計算機に向けてプログラムのチームを移動する代りに、エージェントコオーディネーテングプログラムもしくはコオーディネーテングエージェントは一時的にエージェントプログラムの動作を留保はするが、その遠隔計算機上にそれらを残すように決めることができる。これは例えばその遠隔計算機の過去の活動の監視が次のことを示唆しているときに適切とされる。すなわち、使用は僅かな期限だけとして、それにより計算機がエージェントチームによってすぐに利用されるようになることとする示唆である。
【０１１３】
タスクエージェントプログラムが遠隔計算機上で独立して動作するように記述してきたが、実施形態ではこういったプログラムがコオーディネーテングエージェントを介してのみ遠隔計算機上の資源にアクセスすることが許されるというのが好ましい。したがって、コオーディネーテングエージェントはオペレーテングシステムルーチンにアクセスしてディスクもしくは割当て用メモリを読み書きし、このルーチンがタスクエージェントプログラムによって呼出されるようになる。
【０１１４】
このような実施形態では、コオーディネーテングエージェントはセキュリティ（安全）チェックを実行するようにされていて、例えば個々のタスクエージェントが自分が作成したファイルを変更だけできることを確かとする。この種のセキュリティは各タスクエージェントによりコオーディネーテングエージェントに向けてキーの交換を用いて要求信号を通信するようになっていてよく、したがって“ビールス”プログラムはタスクエージェントのチームを受入れるようにプログラムされている遠隔計算機上には導入されない。
【０１１５】
加えて、各タスクエージェントはそれが実行しているタスクをシステム資源へのアクセス要求をするときに識別できる。これがコオーディネーテングエージェントをして、その本質（例えば所与の識別されたユーザ向けのものということ）をもつタスクがタスクエージェントが置かれている所与の遠隔マシン上で実行が許されているかどうかを判断できるようにする。
【０１１６】
以上のことにてらしてみれば、数多くの他の代替とか変種とか修正とかが当業者にとっては明らかであろう。例えば、エージェントプラットホームとして上述のVOYAGERプラットホーム以外のものを使用することができる。同様に、この発明の特徴は“エージェント”技術を必要としないが、しかしこの用語はその実施のために定義されている。
【０１１７】
エージェント制御プログラム２０はユーザ計算機１０上の静的なプログラムとして記述されてきたが、望むのであれば他の計算機にそれを移動できるようにすることも可能である。スカウトエージェントプログラム４６はモバイルエージェントとして記述されてはいるが、エージェントプラットホーム内部で静的な監視（モニタリング）を与えるようにすることも可能であるが、もっともこれには遠隔計算機上の資源を一層恒久的に占有するというコストを伴う。
【０１１８】
上述の実施形態は複数の類似のタスクエージェントプログラムを並列実行用に記述しているけれども、これとは隔りのある異なる形式も用意できることは理解できよう。例えば、遠隔制御応用では、宇宙船のような複雑な機構の異なる部品が異なる並列監視用プログラムによって各々が制御できて、すべてがコオーディネーテング（共働、協調）プログラムによって調和がとられる。
【０１１９】
したがって、この発明は、前述の実施形態に限定されずに他の修正や変種であって当業者である読書には明らかなものにまで展開できることが理解できると思う。すべての新しい主題もしくはその組合せでここに記述したものに対する保護を求めるものである。
【図面の簡単な説明】
【図１】  遠隔計算機網の要素を示す構成図。
【図２】  図１の遠隔計算機の１つの要素を示す構成図。
【図３】  図２の計算機のメモリ内にあるプログラムを示す構成図。
【図４】  この発明の第１の実施例における図１の網内にあるプログラムを示す構成図。
【図５】  図４の一部を形成するエージェント制御プログラムの全体動作を示す流れ図。
【図６】  図５の初期動作部分を示す流れ図。
【図７】  図５のプラットホーム作成を示す流れ図。
【図８】  図５の遠隔計算機監視段を示す流れ図。
【図９】  図５のエージェントプログラム監視段を示す流れ図。
【図１０】  図５の終結段を示す流れ図。
【図１１】  図４のスカウトエージェントの動作を示す流れ図。
【図１２】  図４のコオーディネートエージェントの動作を示す流れ図。
【図１３】  図４のコオーディネートエージェントの動作を示す流れ図。
【図１４】  図４のコオーディネートエージェントの動作を示す流れ図。
【図１５】  図４のコオーディネートエージェントの動作を示す流れ図。
【図１６】  図４のコオーディネートエージェントの動作を示す流れ図。
【図１７】  図４のタスクエージェント形成部分の動作を示す流れ図。
【図１８】  第１の実施例により作られた第１のディスプレイを示す図。
【図１９】  第１の実施例により作られた第２のディスプレイを示す図。
【図１】
0004550278.tif 000002
【図２】
0004550278.tif 000003
【図３】
0004550278.tif 000004
【図４】
0004550278.tif 000005
【図５】
0004550278.tif 000006
【図６】
0004550278.tif 000007
【図７】
0004550278.tif 000008
【図８】
0004550278.tif 000009
【図９】
0004550278.tif 000010
【図１０】
0004550278.tif 000011
【図１１】
0004550278.tif 000012
【図１２】
0004550278.tif 000013
【図１３】
0004550278.tif 000014
【図１４】
0004550278.tif 000015
【図１５】
0004550278.tif 000016
【図１６】
0004550278.tif 000017
【図１７】
0004550278.tif 000018
【図１８】
0004550278.tif 000019
【図１９】
0004550278.tif 000020