(57)【要約】  ネットワークデータ処理システム内の記憶システムに位置するソースコードの、コンピュータで実行可能な方法、装置、及びコンピュータで使用可能なプログラムコードである。ソースコードは、人の行動を予測するための言語で書かれている。ネットワークデータ処理システム内で動作するインタープリタは、ソースコードを使用してシミュレーションを実行する。ソースコード内には人工的人が定義されており、この人工的人がシミュレーションの間のユーザ入力を生成する。ユーザ入力はソースコードを修正する。グラフィカルユーザインターフェースプロセッサは、インタープリタから変換されたソースコードを受け取り、変換されたソースコードを用いてデバイスに応じた出力を生成する。インタープリタはデバイスを介してリアルタイムユーザ入力を受け取り、人工的人により生成されたユーザ入力を置換する。インタープリタは、リアルタイムユーザ入力を受け取ると、人工的人によって生成された入力の使用を停止し、インタープリタは変換されたソースコードと共にリアルタイムユーザ入力を含む。
2010520535.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークデータ処理システム（１００）内の記憶システムに位置するソースコード（４０２、５１０、６００）であって、人の行動を予測するための言語で書かれているソースコード、
ネットワークデータ処理システム（１００）上で動作するインタープリタ（４０４、５１８、１７００）であって、ソースコード（４０２、５１０、６００）を用いてシミュレーションを実行し、変換されたソースコードを生成するインタープリタ、
ソースコード（４０２、５１０、６００）に定義された人工的人であって、シミュレーションの間のユーザ入力を生成し、このユーザ入力が、ソースコード（４０２、５１０、６００）を修正するために使用される現在の変換済みソースコードとなる、人工的人、及び
ネットワークデータ処理システム（１００）上で動作するグラフィカルユーザインターフェースプロセッサ（４０６、５２２、５２４、５２８、２６００）であって、インタープリタ（４０４、５１８、１７００）から変換されたソースコードを受け取って、受け取った変換済みソースコードを形成し、受け取った変換済みソースコードを使用してデバイスに応じた出力を生成するグラフィカルユーザインターフェースプロセッサ
を備え、
インタープリタ（４０４、５１８、１７００）が、グラフィカルユーザインターフェースプロセッサ（４０６、５２２、５２４、５２８、２６００）と通信するデバイスを介して実際の人からリアルタイムのユーザ入力を受け取って、これで人工的人により生成されたユーザ入力を置換し、且つインタープリタ（４０４、５１８、１７００）は、リアルタイムのユーザ入力を受け取ると、ソースコード（４０２、５１０、６００）に定義されている人工的人により生成される入力の使用を停止し、さらにはインタープリタ（４０４、５１８、１７００）が、ソースコード（４０２、５１０、６００）の修正に使用される変換済みソースコードを有するリアルタイムのユーザ入力を含む、装置。
【請求項２】
人工的人が人工知能プログラムである、請求項１に記載の装置。
【請求項３】
実際の人によるリアルタイムの入力が、シミュレーションを中断することなく人工的人の入力を置換する、請求項１に記載の装置。
【請求項４】
人工的人により生成されたユーザ入力に固有の識別子が関連付けられ、リアルタイムのユーザ入力に当該人工的人の固有の識別子が関連付けられることにより、リアルタイムのユーザ入力で当該ユーザ入力が置換される、請求項１に記載の装置。
【請求項５】
人による入力を受け取るための、コンピュータで実施される方法であって、
ネットワークデータ処理システム（１００）内の記憶システムに位置するソースコード（４０２、５１０、６００）からデータを取り出して、取り出されたデータを形成する工程であって、取り出されたデータに人工的人が含まれる工程、
取り出したデータを変換し、ネットワークデータ処理システム（１００）上で動作するインタープリタ（４０４、５１８、１７００）を用いて人の行動のシミュレーションを実行し、取り出したデータを変換する間に人工的人により生成された入力を含む結果を生成する工程、
結果を使用してソースコード（４０２、５１０、６００）を修正し、修正されたソースコードを形成する工程、
リアルタイムのユーザ入力の使用に対するリクエストに応じて、シミュレーションの実行に人工的人を使用することを停止する工程、及び
人工的人による入力を置換するリアルタイムのユーザ入力を受け取ると、ソースコード（４０２、５１０、６００）に、リアルタイムのユーザ入力を含む結果を書き込むことにより修正されたソースコードを形成する工程であって、修正されたソースコードが、人の行動を予測するためのシミュレーションの実行において、取り出したデータのその後の変換に利用される新規データを提供する工程
を含む方法。
【請求項６】
人の行動を予測するためのシミュレーションの間に、取り出す工程、変換する工程、修正する工程、停止する工程、及び書き込む工程を繰返す、請求項５に記載のコンピュータで実施される方法。
【請求項７】
ネットワークデータ処理システム（１００）上で動作するグラフィカルユーザインターフェースプロセッサ（４０６、５２２、５２４、５２８、２６００）と通信するデバイスからリアルタイムのユーザ入力を受け取る工程、及び
リアルタイムのユーザ入力をグラフィカルユーザインターフェースプロセッサ（４０６、５２２、５２４、５２８、２６００）からインタープリタ（４０４、５１８、１７００）へ送る工程
をさらに含む、請求項５に記載のコンピュータで実施される方法。
【請求項８】
人工的人によって生成された入力に、当該入力を人工的人によって生成された入力として識別する固有の識別子を関連付け、リアルタイムのユーザ入力に当該人工的人の固有の識別子が関連付けられると、リアルタイムのユーザ入力で当該入力を置換する、請求項５に記載のコンピュータで実施される方法。
【請求項９】
デバイスから固有の識別子を有するユーザ入力を受け取ると、当該ユーザ入力が、リアルタイムのユーザ入力の生成を許可されたユーザによるものかどうかを判断する工程、及び
ユーザがリアルタイムのユーザ入力の生成を許可されている場合、当該ユーザ入力をリアルタイムのユーザ入力として使用する工程
をさらに含む、請求項５に記載のコンピュータで実施される方法。
【請求項１０】
リアルタイムのユーザ入力を送るデバイスでユーザによるリクエストを受け取る工程、及び
ユーザがリアルタイムのユーザ入力を送る権限を有している場合、固有の識別子をデバイスに送る工程であって、固有の識別子を含むあらゆるユーザ入力がリアルタイムのユーザ入力として識別される工程
をさらに含む、請求項５に記載のコンピュータで実施される方法。
【請求項１１】
人工的人によって生成された入力の、リアルタイムのユーザ入力による置換が、シミュレーション中にユーザに意識されること無く実行される、請求項５に記載のコンピュータで実施される方法。
【請求項１２】
書き込む工程が、インタープリタ（４０４、５１８、１７００）のディスパッチャーによって実行される、請求項５に記載のコンピュータで実施される方法。
【請求項１３】
固有の識別子を、インタープリタ（４０４、５１８、１７００）によりリアルタイムのユーザ入力に加える、請求項５に記載のコンピュータで実施される方法。
【請求項１４】
リアルタイムのユーザ入力を生成する実際の人によって使用されるデバイスにおいて、リアルタイムのユーザ入力に固有の識別子を加える、請求項５に記載のコンピュータで実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２００７年３月１日に出願された「Human Transparency Paradigm」と題する米国特許仮出願番号第６０／８９２４７２号に関連し、且つ当該米国特許仮出願の優先権を主張する。ここで明示したことにより、この米国特許仮出願の内容全体が本明細書に包含される。
【０００２】
本開示内容は、改良型データ処理システムを提供し、具体的にはデータ処理の方法と装置を提供するものである。更に詳細には、本開示内容は、人の行動をモデル化及びシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードに関する。
【背景技術】
【０００３】
人の行動は、人間によって実行される活動の集積である。これらの活動は、例えば、文化、態度、感情、価値観、倫理観、権力、説得、及び／又は強制力といった要因に影響される。人間の行動は、通常の行動、異常な行動、許容可能な行動、及び許容限界を超えた行動を含む範囲に納まる。人々の行動は、心理学、社会学、及び人類学などの多数の学問分野により研究されている。近年は、人の行動の研究にコンピュータが使用されている。
さらに、人の行動のシミュレーションは、軍事上の演習及び計画の実行に使用されている。人の行動のシミュレーションは、経済的及び社会的行為などのその他の状況の予測に関して使用することもできる。人の行動を予測することができれば、訓練プログラムの開発に有用であると思われる。異なる刺激に訓練生がどのように反応するかを知ることは、訓練プログラムの開発及び修正に使用できる。
【０００４】
現在のモデル及びシミュレーションプログラムは、様々な理由により、人の行動を適切にシミュレートしない。例えば、現在入手可能なシミュレーションプログラムは、特定の種類のシミュレーションにしか適していない。その結果、異なる種類のシミュレーションが必要な場合、そのようなシミュレーションを実行するために新規プログラムを書かなければならない。加えて、リレーションの数と、それらリレーションの修正機能が制限される。
従って、訓練プログラムに使用される、人の行動のモデル化及びシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードを改良することが有利であると考えられる。
【発明の概要】
【０００５】
有利な実施形態は、ネットワークのデータ処理システム内の記憶システムに位置するソースコードのための、コンピュータで実行可能な方法、装置、及びコンピュータで使用可能なプログラムコードを低要する。ソースコードは、人の行動を予測するための言語で書かれている。インタープリタは、ネットワークのデータ処理システム上で動作するもので、このインタープリタはソースコードを使用してシミュレーションを実行することにより、変換されたソースコードを生成する。人工的人がソースコードに定義されている。人工的人は、シミュレーションの間のユーザ入力を生成し、このユーザ入力は、ソースコードの修正に使用される、現在の変換済みソースコードである。グラフィカルユーザインターフェースプロセッサはネットワークのデータ処理システム上で動作する。グラフィカルユーザインターフェースプロセッサは、インタープリタから変換されたソースコードを受け取って、受け取った変換済みソースコードを形成し、受け取った変換済みソースコードを使用してデバイスに応じた出力を生成する。インタープリタは、グラフィカルユーザインターフェースプロセッサと通信するデバイスを介して実際の人からリアルタイムのユーザ入力を受け取り、人工的人により生成されたユーザ入力を置換する。インタープリタは、リアルタイムユーザ入力を受け取ると、ソースコード内に定義された人工的人により生成された入力の使用を停止し、そしてインタープリタは、ソースコードの修正に使用される変換済みソースコードと共にリアルタイムユーザ入力を含む。
有利な実施形態は、人から入力を受け取るためのコンピュータで実行される方法も提供する。データは、ネットワークのデータ処理システム内の記憶システムに位置するソースコードから取り出され、取り出されたデータを形成し、この取り出されたデータは人工的人を含む。取り出されたデータは、ネットワークのデータ処理システム上で動作するインタープリタを用いて変換され、人の行動のシミュレーションを実行し、取り出されたデータを変換する間に人工的人によって生成される入力を含む結果を生成する。ソースコードは、この結果を使用して修正されて、修正されたソースコードを形成する。シミュレーションの実行において、リアルタイムユーザ入力の使用に対するリクエストに応答して人工的人の使用は停止される。人工的人による入力を置換するリアルタイムユーザ入力を受け取ると、リアルタイムユーザ入力を含む結果がソースコードに記述され、修正されたソースコードを形成する。修正されたソースコードは、人の行動を予測するためのシミュレーションの実行において、後で行われる取り出されたデータの変換に利用される新規のデータを提供する。
【０００６】
本発明の特徴、機能、及び利点は、ここに開示される様々な実施形態においてそれぞれ単独で達成することができるか、又は他の実施形態において組み合わせることができる。
新規な特徴と考えられる本発明の特徴は、請求の範囲に規定される。しかしながら、開示内容自体、並びに好ましい使用モード、さらなる目的とその利点は、有利な実施形態に関する後述の詳細な説明を、添付図面を参照して読むことにより最もよく理解される。
【図面の簡単な説明】
【０００７】
【図１】有利な実施形態を実施することができる、データ処理システムのネットワークを図式化したものである。
【図２】有利な一実施形態によるデータ処理システムの図である。
【図３】有利な一実施形態によるシミュレーションシステムを表わす図である。
【図４】有利な一実施形態による、人の行動のモデル化及びシミュレーションの開発フレームワークの図である。
【図５】有利な一実施形態によるフレームワークにおけるモジュールの配分を示す図である。
【図６】有利な一実施形態によるソースモジュールコードを示す図である。
【図７】有利な一実施形態によるソースコードの定義部分を示す図である。
【図８】有利な一実施形態によるオブジェクトのブロック図である。
【図９】有利な一実施形態によるオブジェクトの図である。
【図１０】有利な一実施形態による動作オブジェクトの図である。
【図１１】有利な一実施形態による動作の適用を示す図である。
【図１２】有利な一実施形態による、スケジューラの介入を有する時間軸に対する動作の適用を示す図である。
【図１３】有利な一実施形態による、時間帯が重複したイベントの適用を示す図である。
【図１４】有利な一実施形態による、存続イベントを示す図である。
【図１５】有利な一実施形態による、存続イベントを示す図である。
【図１６】有利な一実施形態による、存続イベントを示す図である。
【図１７】有利な一実施形態によるインタープリタを示す図である。
【図１８】有利な一実施形態による、字句解析器のデータフローを示す図である。
【図１９】有利な一実施形態による、文法構文解析ツールによって実行される構文解析を示す図である。
【図２０】有利な一実施形態による、解析木の別の実施例を示す図である。
【図２１】有利な実施形態による、インタープリタの実行モジュールの図である。
【図２２】有利な一実施形態による、トークン生成方法のフローチャートである。
【図２３】有利な一実施形態による、人の行動のシミュレーション実行方法のフローチャートである。
【図２４】有利な一実施形態による、文又は命令書の生成方法のフローチャートである。
【図２５】有利な一実施形態による、命令書の一命令文を実行する方法のフローチャートである。
【図２６】有利な一実施形態による、グラフィカルユーザインターフェース（ＧＵＩ）プロセッサを示す図である。
【図２７】有利な一実施形態による、グラフィカルユーザインターフェースを通るデータフローを示す図である。
【図２８】有利な一実施形態によるディスプレイを示す図である。
【図２９】有利な一実施形態によるディスプレイの操作を示す図である。
【図３０】有利な一実施形態による、ビットマップの変化を識別する方法のフローチャートである。
【図３１】有利な一実施形態による、差分データの処理方法のフローチャートである。
【図３２】有利な一実施形態による人の透明性パラダイムの提供に使用されるコンポーネントを示す図である。
【図３３】有利な一実施形態による、人工的人を実際の人で置換する方法のフローチャートである。
【図３４】有利な一実施形態による、入力ニューロンの実施例を示す図である。
【図３５】有利な一実施形態による、入力ニューロンの左オペランド（ｌｅｆｔ  ｏｐｅｒａｎｄ）に規定される入力範囲の実施例を示す図である。
【図３６】有利な一実施形態による、入力行動に関する命令文の図である。
【図３７】有利な一実施形態による、出力宣言文を示す図である。
【図３８】有利な一実施形態による、ニューラルネットワーク内の出力範囲に関する命令文を示す図である。
【図３９】有利な一実施形態による、出力行動の修正に関する命令文を示す図である。
【図４０】有利な一実施形態による、隠れ層に関する命令文を示す図である。
【図４１】有利な一実施形態による、サンプルニューラルネットワークを示す図である。
【図４２】有利な一実施形態による、ニューラルネットワークの訓練に関する例示的命令文である。
【図４３】有利な一実施形態による、ニューラルネットワークの演算機能を示す図である。
【図４４】有利な一実施形態による、ニューラルネットワークの一実施例を示す図である。
【図４５】有利な一実施形態による、ニューラルネットワークの操作の結果を示す図である。
【図４６】有利な一実施形態によるリストの一実施例を示す図である。
【図４７】有利な一実施形態による、リストからの変数の削除を示す図である。
【図４８】有利な一実施形態による、アイテムを削除するためのコードの図である。
【図４９】有利な一実施形態による、リスト中のアイテムを操作するためのコードを示す図である。
【図５０】有利な一実施形態による、キューとしてのリスト中のアイテムの読み取りを示す図である。
【図５１】有利な一実施形態による、リスト中のアイテムの読み取りを示す図である。
【図５２】有利な一実施形態による、リスト中の分類属性を示す図である。
【図５３】有利な一実施形態による、燃料、距離及び速度を使用したファジー理論実施の一実施例である。
【図５４】有利な一実施形態による、遺伝的アルゴリズムを用いた方程式の解法を示す図である。
【図５５Ａ】有利な一実施形態による、ソースコード中のオブジェクトのコードを示す図である。
【図５５Ｂ】有利な一実施形態による、ソースコード中のオブジェクトのコードを示す図である。
【発明を実施するための形態】
【０００８】
ここで図面を参照する。特に図１−２には、実施例を実施できるデータ処理環境の例示的な図が示されている。図１−２は例示のみを目的としており、有利な別の実施形態を実行可能な環境に関して限定を主張又は暗示するものではない。図示の環境に多数の変更を加えることができる。
本明細書において、アイテムのリストについて「少なくとも〜の一つ」という表現が使用されるとき、それは、アイテムの一つ又は複数の、異なる組み合わせが使用可能であり、且つリスト中のアイテムのうち一つのみが必要であることを意味する。例えば、「アイテムＡ、アイテムＢ、及びアイテムＣの少なくとも一つ」は、例えば、限定するものではないが、アイテムＡ、又はアイテムＢとアイテムＢを含みうる。これの例には、アイテムＡ、アイテムＢ、及びアイテムＣ、或いはアイテムＢとアイテムＣも含まれる。
【０００９】
ここで図面を参照する。図１は、有利な実施形態を実施できるデータ処理システムのネットワークを図解的に示している。図示されたこのような実施例では、ネットワークデータ処理システム１００を使用して、人の行動のモデル化及びシミュレーションの開発フレームワークが実施される。このフレームワークは人の行動を予測する能力を提供する。
ネットワークデータ処理システム１００は、有利な実施形態を実施可能な、コンピュータ及びその他のデバイスからなるネットワークである。ネットワークデータ処理システム１００はネットワーク１０２を含み、このネットワークは、ネットワークデータ処理システム１００内で互いに接続される様々なデバイス及びコンピュータ間をリンクする通信を行うために使用される媒体である。ネットワーク１０２は、有線、無線通信リンク、及び／又は光ファイバケーブルなどの接続を含むことができる。
【００１０】
図示の実施例では、サーバ１０４とサーバ１０６が、記憶ユニット１０８と共にネットワーク１０２に接続している。これに加えて、クライアント１１０、１１２、及び１１４がネットワーク１０２に接続している。これらのクライアント１１０、１１２、及び１１４は、例えば、パーソナルコンピュータ、ワークステーションコンピュータ、及び携帯情報端末とすることができる。図示の実施例では、サーバ１０４は、ブートファイル、オペレーティングシステムイメージ、及びアプリケーションなどのデータをクライアント１１０、１１２、及び１１４に提供する。クライアント１１０、１１２、及び１１４は、本実施例ではサーバ１０４及びサーバ１０６のクライアントである。ネットワークデータ処理システム１００は、追加のサーバ、クライアント、及び図示しないその他デバイスを含んでもよい。有利な実施形態における人の行動予測フレームワークは、ネットワークデータ処理システム１００内の一又は複数のデータ処理システムを使用して実施することができる。
【００１１】
次に、一実施例によるデータ処理システムを示す図２を参照する。この実施例では、データ処理システム２００は通信ファブリック２０２を含み、この通信ファブリックによって、プロセッサユニット２０４、メモリ２０６、固定記憶域２０８、通信ユニット２１０、入力／出力（Ｉ／Ｏ）ユニット２１２、及びディスプレイ２１４間における通信が行われる。
プロセッサユニット２０４は、メモリ２０６にロードできるソフトウェアの命令を実行する機能を有する。プロセッサユニット２０４は、用途に応じて、一又は複数のプロセッサの組とすることができるか、又はマルチプロセッサコアとすることができる。さらに、プロセッサユニット２０４は、メインプロセッサが単一のチップ上に二次プロセッサと共に存在する一又は複数の異種プロセッサシステムを用いて実施することができる。別の実施例では、プロセッサユニット２０４は、同種のプロセッサを複数個含む対象なマルチプロセッサシステムとすることができる。
【００１２】
このような実施例におけるメモリ２０６は、例えば、ランダムアクセスメモリ又はその他任意の適切な揮発性又は非揮発性記憶装置とすることができる。固定記憶域２０８は、用途に応じて様々な形態を採ることができる。例えば、固定記憶域２０８は一又は複数のコンポーネント又はデバイスを含むことができる。例えば、固定記憶域２０８は、ハードドライブ、フラッシュメモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記の何れかの組み合わせとすることができる。固定記憶域２０８によって使用される媒体はまた、取り外し可能である。例えば、取り外し可能なハードドライブを固定記憶域２０８に使用することができる。
このような実施例における通信ユニット２１０は、他のデータ処理システム又はデバイスとの通信を可能にする。これらの実施例では、通信ユニット２１０は、ネットワークインターフェースカードである。通信ユニット２１０は、物理的通信リンク及び無線通信リンクの一方又は両方の使用により通信を提供することができる。
【００１３】
入力／出力ユニット２１２は、データ処理システム２００に接続することができる他のデバイスによるデータの入力及び出力を可能にする。例えば、入力／出力ユニット２１２は、キーボードとマウスによりユーザ入力のための接続を提供できる。さらに、入力／出力ユニット２１２は、プリンタに出力を送信することができる。ディスプレイ２１４は、ユーザに対して情報を表示するためのメカニズムを提供する。
オペレーティングシステムとアプリケーション、又はプログラムのための命令は、固定記憶域２０８に位置している。これらの命令はメモリ２０６にロードされて、プロセッサユニット２０４によって実行される。コンピュータで実施される命令を使用するプロセッサユニット２０４により異なる実施形態のプロセスを実行することができ、そのような命令はメモリ、例えばメモリ２０６に位置させることができる。これらの命令は、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読み取り可能なプログラムコードと呼ばれ、プロセッサユニット２０４内の一のプロセッサにより読み取られて実行される。異なる実施形態のプログラムコードは、メモリ２０６又は固定記憶域２０８のような、異なる物理的又は有形のコンピュータで読み取り可能な媒体上に実現することができる。
【００１４】
プログラムコード２１６は、選択的に取り外し可能であり、且つデータ処理システム２００にロードするか又は移動させてプロセッサユニット２０４によって実行することが可能な、コンピュータで読み取り可能な媒体２１８の上に機能形態で位置している。このような実施例において、プログラムコード２１６及びコンピュータで読み取り可能な媒体２１８は、コンピュータプログラム製品２２０を形成する。一実施例では、コンピュータで読み取りイ可能な媒体２１８は、例えば、固定記憶域２０８の一部であるドライブ又は他のデバイスに挿入又は配置される光又は磁気ディスクのような有形の形態であり、固定記憶域２０８の一部であるハードドライブのような記憶装置に移動させることができる。有形形態の場合、コンピュータで読み取り可能な媒体２１８は、データ処理システム２００に接続されるフラッシュメモリ、ハードドライブ、又はサムドライブのような固定記憶域の形態を採ることもできる。コンピュータで読み取り可能な媒体２１８の有形形態は、コンピュータで記録可能な記憶媒体とも呼ばれる。場合によっては、コンピュータで読み取り可能な媒体２１８は取り外しできない。
別の実施例では、プログラムコード２１６は、コンピュータで読み取り可能な媒体２１８から、通信ユニット２１０への通信リンクを介して及び／又は入力／出力ユニット２１２を介して、データ処理システム２００へ転送可能である。この実施例では、通信リンク及び／又は接続は、物理的なもの又は無線とすることができる。コンピュータで読み取り可能な媒体は、プログラムコードを含む無線送信又は通信リンクのような無形媒体の形態を採ることもできる。
【００１５】
データ処理システム２００に示された様々なコンポーネントは、アーキテクチャに制限を加えることを意図するものではなく、異なる実施形態が実施可能である。データ処理システム２００に示されているものに加えて、又はそれらに替えて、コンポーネントを含むデータ処理システムに様々な実施例を実施することができる。図２に示す他のコンポーネントは、図示された実施例から変更することができる。
一実施例として、データ処理システム２００内の記憶装置は、データを記憶できる任意のハードウェア装置である。メモリ２０６、固定記憶域２０８及びコンピュータで読み取り可能な媒体２１８は、有形形態の記憶装置の実施例である。
【００１６】
別の実施例では、バスシステムを使用して通信ファブリック２０２を実施することができ、このバスシステムは、システムバス又は入力／出力バスなどの一又は複数のバスから構成することができる。当然のことながら、バスシステムは、バスシステムに取り付けられた様々なコンポーネント又はデバイス間でのデータ転送を行うことができる、あらゆる適切な種類のアーキテクチャを用いて実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタといったデータの送受信に使用される一又は複数のデバイスを含むことができきる。さらに、メモリは、例えば、メモリ２０６又は通信ファブリック２０２に含まれうるメモリコントローラハブ及びインターフェースに見られるキャッシュとすることができる。
図示の実施例では、ネットワークデータ処理システム１００は、ネットワーク１０２を有するインターネットであり、互いに通信するためのプロトコルのパッケージソフト、伝送制御プロトコル（ＴＣＰ／ＩＰ）を使用するネットワークとゲートウェイの世界的な集合である。当然のことながら、ネットワークデータ処理システム１００は、インターネットに加えて、又はインターネットの代わりに、異なる種類の多数のネットワークとして実施することもできる。これらの他のネットワークには、例えば、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、及び広域ネットワーク（ＷＡＮ）が含まれる。図１は、一実施例であり、異なる実施形態のアーキテクチャを限定するものではない。
【００１７】
ここで、有利な一実施形態によるデータ処理システムを示す図２を参照する。データ処理システム２００は、サーバ及びクライアント、例えば図１のサーバ１０４及び１０６と、クライアント１１０、１１２、及び１１４とを実施するために使用することができきる。この実施例では、データ処理システム２００は通信ファブリック２０２を含み、この通信ファブリックはプロセッサユニット２０４、メモリ２０６、固定記憶域２０８、通信ユニット２１０、入力／出力（Ｉ／Ｏ）ユニット２１２、及びディスプレイ２１４間の通信を行なう。
プロセッサユニット２０４は、メモリ２０６にロードされるソフトウェアのために命令を実行する機能を有する。プロセッサユニット２０４は、用途に応じて、一又は複数のプロセッサのセットとすることができるか、又はマルチプロセッサコアとすることができる。さらに、プロセッサユニット２０４は、単一のチップ上にメインプロセッサが二次プロセッサと共に存在する一又は複数の異種プロセッサシステムを使用して実施することができる。別の実施例として、プロセッサユニット２０４は、同種のプロセッサを複数個含む対称なマルチプロセッサシステムとすることができる。
【００１８】
これらの実施例において、メモリ２０６は、例えば、ランダムアクセスメモリ、又はその他任意の適切な揮発性又は非揮発性記憶装置とすることができる。固定記憶域２０８は、用途に応じて様々な形態を採ることができる。例えば、固定記憶域２０８は、一又は複数のコンポーネント又はデバイスを含むことができる。例えば、固定記憶域２０８は、ハードドライブ、フラッシュメモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記の何らかの組み合わせとすることができる。固定記憶域２０８によって使用される媒体は、取り外し可能とすることもできる。例えば、取り外し可能なハードドライブを固定記憶域２０８に使用することができる。
このような実施例において、通信ユニット２１０は、他のデータ処理システム又はデバイスとの通信を行う。このような実施例では、通信ユニット２１０はネットワークインターフェースカードである。通信ユニット２１０は、物理的通信リンク及び無線通信リンクの一方又は両方を介して通信を行うことができる。
【００１９】
入力／出力ユニット２１２は、データ処理システム２００に接続可能な他のデバイスによる入力及び出力を可能にする。例えば、入力／出力ユニット２１２は、キーボード及びマウスによるユーザ入力のための接続手段となる。さらに、入力／出力ユニット２１２は、出力をプリンタに送信することができる。ディスプレイ２１４は、ユーザに対して情報を表示するためのメカニズムを提供する。
オペレーションシステムとアプリケーション、又はプログラムのための命令は、固定記憶域２０８に位置する。これらの命令は、メモリ２０６にロードしてプロセッサユニット２０４により実行することができる。異なる実施形態のプロセスは、コンピュータで実施される命令を使用してプロセッサユニット２０４により実行することができ、この場合、このような命令は、メモリ２０６などのメモリに置くことができる。これらの命令は、プロセッサユニット２０４内の一のプロセッサによって読み込まれて実行される、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読み取り可能なプログラムコードとも呼ばれる。異なる実施形態のプログラムコードは、物理的な又は有形のコンピュータで読み取り可能な種々の媒体、例えばメモリ２０６又は固定記憶域２０８上に実現することができる。
【００２０】
プログラムコード２１６は機能的形態で、コンピュータで読み取り可能な媒体２１８上に位置する。この媒体は、選択的に取り外すことができ、データ処理システム２００にロードするか又は転送し、プロセッサユニット２０４により実行することができる。このような実施例において、プログラムコード２１６及びコンピュータで読み取り可能な媒体２１８はコンピュータプログラム製品２２０を形成する。一実施例では、コンピュータで読み取り可能な媒体２１８は、例えば、固定記憶域２０８の一部であるドライブ又はその他デバイスに挿入又は配置され、固定記憶域２０８の一部であるハードドライブのような記憶装置への転送を行う光又は磁気ディスクのような有形形態である。有形形態では、コンピュータで読み取り可能な媒体２１８は、データ処理システム２００に接続されるハードドライブ、サムドライブ、又はフラッシュメモリのような固定記憶域の形態を採ることもできる。コンピュータで読み取り可能な媒体２１８の有形形態は、コンピュータで記録可能な媒体とも呼ばれる。場合によっては、コンピュータで読み取り可能な媒体２１８は取り外しできない。
別の構成では、プログラムコード２１６は、コンピュータで読み取り可能な媒体２１８から、通信ユニット２１０への通信リンクを介して、及び／又は入力／出力ユニット２１２への接続部を介して、データ処理システム２００に転送可能である。通信リンク及び／又は接続部は、本実施例では物理的なもの又は無線とすることができる。コンピュータで読み取り可能な媒体は、プログラムコードを含む無線送信又は通信リンクのような無形媒体の形態を採ることもできる。
【００２１】
データ処理システム２００について図示された様々なコンポーネントは、アーキテクチャを限定するものではなく、異なる実施形態が実施可能である。データ処理システム２００について図示されたものに加えて、又はそれらの替わりに、コンポーネントを含むデータ処理システムにおいて異なる実施例を実施することができる。図２に示す他のコンポーネントは、図示の実施例から変更することができる。
一実施例として、データ処理システム２００の記憶装置は、データを記憶することができる任意のハードウェア装置とすることができる。メモリ２０６、固定記憶域２０８及びコンピュータで読み取り可能な媒体２１８は、有形形態の記憶装置の実施例である。
【００２２】
別の実施例では、バスシステムを使用して通信ファブリック２０２を実施することができる。このバスシステムは、システムバス又は入力／出力バスのような一又は複数のバスから構成される。当然のことながら、バスシステムは、バスシステムに取り付けられた異なるコンポーネント又はデバイス間でデータの転送を行う任意の適切な種類のアーキテクチャを用いて実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタのような、データの送受信に使用される一又は複数のデバイスを含むことができる。さらに、メモリは例えば、通信ファブリック２０２に含めることができるインターフェース及びメモリコントローラハブに見られるようなメモリ２０６又はキャッシュとすることができる。
クライアントとして、データ処理システム２００は様々な形態を採ることができる。例えば、データ処理システム２００は、タブレットコンピュータ、ラップトップコンピュータ、ワークステーション、パーソナルコンピュータ、電話機、又は携帯情報端末（ＰＤＡ）の形態を採ることができる。
【００２３】
複数の異なる実施形態において、一連の動作及び／又はイベントに対して人のグループが個々に及び／又はグループとしてどのように反応するかを予測するのに使用できるシミュレーション環境が提供される。このように、異なる「もし〜なら」というシナリオをシミュレートし、その結果を使用することで、当該グループに対して採るべき動作の最終セットに関する決定を補助することができる。
複数の異なる実施形態において、人の行動をシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードが提供される。一実施形態では、ソースコードは、図１に示すネットワークデータ処理システム１００のようなネットワークデータ処理システム内の記憶システムに位置する。このソースコードは、人の行動を予測するために使用される。インタープリタは、ネットワークデータ処理システムのハードウェア上で動作する。このインタープリタは、ソースコードを用いてシミュレーションを実行し、新規定義及び変換されたソースコードを生成する。ネットワークデータ処理システムのハードウェア上で動作するグラフィカルユーザインターフェースプロセッサは、変換されたソースコードを受け取り、この変換されたソースコードを使用してデバイスに応じた出力を生成する。デバイスに応じた出力は、グラフィカルユーザーインターフェースプロセッサと通信する一組のデバイスに送信される。
【００２４】
これらのデバイスは、デバイスに応じた出力を表示し、ユーザ入力を受け取る。受け取られたユーザ入力はグラフィカルユーザインターフェースプロセッサに返され、するとこのプロセッサは受け取ったユーザ入力をインタープリタに送る。インタープリタは受け取ったユーザ入力と新規定義とを使用してソースコードを変更又は修正する。このような実施例において、新規定義とは、既存のソースコードの変更又は既存のソースコードへの新規情報の追加に使用される情報である。次いでこのように修正されたソースコードが実行され、新規定義及び新規に変換されたソースコードが生成される。このようにして、このような有利な実施形態では、ソースコードを変更するためのフィードバックループが生成される。
【００２５】
次に、有利な一実施形態によるシミュレーションシステムを示す図３を参照する。システム３００は、図１のネットワークデータ処理システム１００において実施することができるシミュレーションシステムの一実施例である。具体的には、システム３００は、図２のデータ処理システム２００のような一又は複数のデータ処理システムを使用して実施することができる。
このような実施例では、定義３０２は、動作３０４に基づいてシステム３００により処理される。動作３０４を定義３０２に適用することにより人の行動のシミュレーションが実行される。このような実施例では、システム３００のユーザが動作３０４を選択することができる。動作３０４は、環境設定ファイルから、或いはプログラム又はプロセスによって、選択することもできる。このような実施例では、定義３０２は、シミュレーションに使用されるソースコードの一部である。
【００２６】
システム３００は、動作３０４を用いて定義３０２を修正し、定義３０６を生成する。図示のような実施例では、定義３０６は新規の定義であり、定義３０２に動作３０４を適用した結果を提供する出力として使用されている。加えて、定義３０６は定義３０２の修正に使用され、次いでシミュレーションの実行を継続するために使用される。このような連続的なフィードバックは、システム３００に複数の異なる反復から学習する能力を与えるために行われる。加えて、前回のシミュレーションの結果が定義３０２に記憶され、よってシステム３００は前回のシミュレーションから学習することができる。
このような実施例では、定義３０２は、人のグループ及び人のグループが生きる環境を表している。環境の説明には、有形無形両方の形態のアセットが含まれている。加えて、定義３０２には、グループを構成する様々な人の説明、並びに人のグループ及び環境に適用される様々なイベント又は入力に対する動作及び反応を定義する内部関係の説明も含まれる。
【００２７】
システム３００をシミュレーションツールとして使用することにより、定義３０２に記述される人のグループに対して特定の動作が適用されたときの、結果及び様々な反応及び／又は影響を予測することができる。つまり、システム３００は、定義３０２に対して動作３０４が適用又は採用されたときの、例えば経済的影響、社会的影響、及び心理的影響といった影響を評価するようにプログラムすることができる。
この実施例では、定義３０２はコンピュータ言語を用いて書かれている。図示のような実施例のコンピュータ言語は、シミュレーションの実行にインタープリタを使用するが実行にコンパイルを必要としないインタープリタ型原語である。シミュレーションプロセスに関与する様々なオブジェクトを定義することができるあらゆる原語を使用することができる。例えば、Ｃ及びＣ＋＋は、このような実施例に使用できるインタープリタ型原語の例である。このような実施例では、オブジェクトの定義には、人及び人が生きる環境が含まれる。他の有利な実施形態では、定義３０２及び動作３０４だけでなくシステム３００のフレームワークが提供される。
【００２８】
次に、有利な一実施形態による人の行動のモデル化及びシミュレーションの開発フレームワークを示す図４を参照する。フレームワーク４００は、図３のシステム３００のアーキテクチャの一実施例である。この実施例では、フレームワーク４００は、ソースコード４０２、インタープリタ４０４、グラフィカルユーザインターフェース（ＧＵＩ）プロセッサ４０６、及びデバイス４０８を含む。
ソースコード４０２は、データベースの情報をすべて含むフレームワーク４００内の一のモジュールである。シミュレーションについて判明したことの全ては、この特定のコンポーネントに記憶される。このような情報には、例えば、人のグループの定義と、当該定義を使用してシミュレーションを実行するのに必要なコードとが含まれる。ソースコード４０２には、定義に対して適用される動作、並びにその結果を提示するのに使用されるコードも含まれる。
【００２９】
ソースコード４０２に使用される言語を修正し、人の行動のシミュレーション及び予測に特異的な機能及び特徴を含めることができる。これらの特徴を有する言語を、人間行動定義言語（Human Behavior Definition Language）（ＨＢＤＬ）と呼ぶ。ＨＢＤＬは、Ｃ又はＣ＋＋のような現在利用可能な言語を使用して実施することができる。当然のことながら、このような実施例では、ＨＢＤＬを実施するためにあらゆるインタープリタ型言語を使用することができる。
さらに、ＨＢＤＬは、人の行動のシミュレーションを行うために、既存の言語を修正して使用するのではなく、完全に新規の言語を使用することにより実施することができる。図示の実施形態では、異なる言語を使用してＨＢＤＬの異なるコンポーネントを実施することができる。このような実施例では、ソースコード４０２はＨＢＤＬで書かれたデータベースであり、異なる地理的所在地に位置させることができる異なる記憶装置内に分配することができる。
【００３０】
インタープリタ４０４は、ソースコード４０２からデータ４１０を収集してシミュレーションを実行する。このような実施例では、データ４１０は、人のグループ及びその環境、並びに人に適用される動作の定義を含む。さらに、データ４１０は、ソースコード４０２の生成に使用されるプログラム可能な言語による命令文又は命令行も含む。データ４１０に含まれるこれらの命令文は、シミュレーションを実行するためにインタープリタ４０４によって使用される。
データ４１０に含まれる命令文は、例えば、人工的人のシミュレーションを行う人工知能プログラムのコードを含むことができる。これらの命令文は、例えば、シミュレーションを実行するためのファジー理論のコード、ニューラルネットワーク及びその他プロセスを含むこともできる。加えて、データ４１０は、結果を提示するためのグラフィカルユーザインターフェース（ＧＵＩ）を生成するためのプロセス又はコードを含むこともできる。このように、ソースコード４０２は、人のグループとその環境に関する情報、並びにシミュレーションを実行するのに必要なプロセス又はコードの両方を含むこともできる。用途に応じて、これらの命令文はＣ又はＣ＋＋によるものとすることができる。或いは、命令文は、インタープリタ４０４がＣ又はＣ＋＋の命令文に変換することにより実行されるさらに高レベルの言語によるものでもよい。
【００３１】
このシミュレーションによりグラフィックデータ４１２が生成されてＧＵＩプロセッサ４０６に送信される。このような実施例では、グラフィックデータ４１２は、ネットワークの速度を低下させうる大量のデータ処理を必要としない形態である。図示の実施形態では、グラフィックデータ４１２はプリミティブ型である。さらに多くのデータの送信を要するビットマップ又はその他のフォーマットではなくプリミティブを送信することにより、ネットワークにおいて使用される帯域幅の量が低減される。場合によっては、グラフィックデータ４１２に含めて何らかのビットマップを送ることが必要になりうるが、可能であればプリミティブが使用される。
代わりに、グラフィックデータ４１２がＧＵＩプロセッサ４０６により処理されてデバイスデータ４１４が生成され、デバイスデータはデバイス４０８によって表示される。このような実施例では、デバイスデータ４１４は、例えば、デバイス４０８によって表示されるピクセルデータ又はビットマップとすることができる。
【００３２】
デバイス４０８は、ユーザ入力を受け取ってデバイスデータ４１６を生成することもできる。デバイスデータ４１６は、ＧＵＩプロセッサ４０６によって受け取られる。ＧＵＩプロセッサ４０６は、デバイスデータ４１６を、送信に必要なネットワークリソースが少なくて済むフォーマットに変換する。このような実施例では、ユーザ入力４１８はインタープリタ４０４に返される。ユーザ入力４１８と、データ４１０に基づくシミュレーションの結果とを使用して、修正４２０が生成される。修正４２０は、ソースコード４０２の上書き又は修正に使用される。これらの修正は、ソースコード４０２中の定義の修正に使用される。修正４２０は、図３の定義３０２の修正に使用される、図３の定義３０６に類似している。このように、ソースコード４０２は、インタープリタ４０４によって実行されるシミュレーションの結果と、デバイス４０８から受け取るユーザ入力とを考慮するように変更することができる。
修正４２０は、例えば、インタープリタ４０４によって実行されているシミュレーションに適用又は包含される動作の選択を含むことができる。このような実施例では、このような動作の選択と修正４２０は、デバイス４０８で生成されるユーザ入力から受け取ることができる。
【００３３】
データ４１０は、図３の定義３０２及び３０４のような情報を含むことができる。修正４２０は、図３の定義３０６に対する変更のような情報を含むことができる。これらの変更は、例えば、既存の定義の修正又は新規定義の追加とすることができる。このような実施例では、グラフィックデータ４１２を使用して図３の定義３０６を提示することができる。
フレームワーク４００に含まれる種々のモジュールの説明は、これらのモジュールを実施可能なアーキテクチャの限定を意図するものではない。例えば、これら種々のモジュールは、フレームワーク４００内において、異なる機能を実施する異なるサブモジュール又はプロセスを含んでもよい。また、特定のモジュールを、単一のデータ処理システムで実施するか、又は複数のデータ処理システムに拡散させることができる。
【００３４】
フレームワーク４００のモジュール方式により、種々のモジュールをネットワークの異なる位置に分配し、ハードウェアリソースを最大限利用することができる。フレームワーク４００のこのようなモジュール方式は、ネットワークデータ処理システム内において、一部の機能性の集中化を可能にすると同時に、他の機能を遠隔位置に移動又は分配することができる。例えば、グラフィック処理とデバイス依存性のデータとを集中化した環境に置き、次いでネットワークを介してこの情報を遠隔デバイスに送信することにより、わずかな利点が得られる。グラフィックデータは、一般に、サイズが大きくネットワークの速度を低下させる可能性がある。その結果、この種の情報の集中化及び処理により、待ち時間、データ送信及びデータの同期に関する問題が生じる。フレームワーク４００は、フレームワーク４００の実施によりこのような問題を回避できるように設計される。
【００３５】
次に、有利な一実施形態によるフレームワーク内のモジュールの分配を示す図５を参照する。この実施例では、システム５００内に示される種々のモジュールは、図４のフレームワーク４００に基づいている。図示の実施例に示されるように、システム５００は、インターネット５０２、ローカルエリアネットワーク（ＬＡＮ）５０４、広域ネットワーク（ＷＡＮ）５０６及びローカルエリアネットワーク（ＬＡＮ）５０８を含んでいる。これらの異なるネットワークは、図１のネットワーク１０２のコンポーネントの一実施例である。
図示のように、ソースコード５１０は記憶装置５１２、５１４、及び５１６に見られる。記憶装置５１２は、ローカルエリアネットワーク５０４に接続されており、記憶装置５１４は広域ネットワーク５０６に接続されており、記憶装置５１６はローカルエリアネットワーク５０８に接続されている。別々のネットワーク内の種々のデバイスに基づくソースコード５１０の分布は、ソースコード５１０を記憶可能な一方式の一実施例である。
【００３６】
ソースコード５１０は、異なる所在地に分散されるのでなく、特定のネットワーク上の単一の記憶システムに記憶させることもできる。ソースコード５１０を記憶する一部の記憶装置は、ソースコード５１０の複製を保存するバックアップデバイスとすることができる。このような実施形態では、実施を特定の場所に限るのではなく、他の所在地に見られる利点を活用するために、そのような所在地のシステムの一部を移動することが可能である。
この実施例では、インタープリタ５１８はデータ処理システム５２０に位置している。データ処理システム５２０は、図２のデータ処理システム２００のようなデータ処理システムを用いて実施することができる。データ処理システム５２０はローカルエリアネットワーク５０８に接続される。インタープリタ５１８は、異なるネットワークに亘る種々の記憶装置内のソースコード５１０からデータを収集してシミュレーションを実行することができる。
【００３７】
シミュレーションの結果は、ＧＵＩプロセッサ５２２に送信される。このプロセッサ５２２もデータ処理システム５２０上に位置している。ＧＵＩプロセッサ５２２は、デバイス５２３に表示されるデバイスデータを生成する。加えて、インタープリタ５１８は、データ処理システム５２６上で動作するＧＵＩプロセッサ５２４と、データ処理システム５３０上で動作するＧＵＩプロセッサ５２８とにグラフィックデータを送信することができる。ＧＵＩプロセッサ５２４は、デバイス５３０上に表示されるデバイスデータを生成し、ＧＵＩプロセッサ５２８はデバイス５３２上に表示されるデバイスデータを生成する。ＧＵＩプロセッサ５２２、５２４、及び５２８は、それぞれデバイス５２３、５３０、及び５３２の近くに位置している。
このように、これらのプロセッサによって生成されたデータは、大量のネットワークリソースを必要としない。このような実施例では、図４のフレームワーク４００に記載されるＧＵＩプロセッサモジュールが、システム５００内の複数の異なる所在地に複写され、速度を低下させるか、又はネットワークリソースを大量に使用するような、ネットワークを介した遠隔装置へのグラフィックデータの送信の必要性を最小化する。
【００３８】
ここで、有利な一実施形態によるソースモジュールコードを示す図６を参照する。この実施例では、ソースコード６００は、図４のソースコード４０２を詳細に示したものである。
ソースコード６００は、定義６０２、動作６０４、及びグラフィカルユーザインターフェース（ＧＵＩ）言語６０６を含む。定義６０２及び動作６０４は、一の環境内での人のグループのシミュレーションを目的としている。ＧＵＩ言語６０６は、結果を提示し、シミュレーションのエンドユーザからユーザ入力を受け取るために使用される。ＧＵＩ言語６０６により、ソースコード６００はデバイス上に提示される結果の外観を制御する。このような実施例では、このような結果の外観は、ＧＵＩ言語６０６を用いて制御される。
【００３９】
さらに、これらの実施例のソースコード６００は適応性であり且つオープンである。ソースコード６００は、シミュレーションのための情報、及びシミュレーションの実行又は実施に使用される実際の言語の両方を含む。ソースコード６００は、データベースを読み取って変換する従来のアプリケーションから意志決定を排除する。反対に、ソースコード６００は、シミュレーションの実行により生成される結果に基づいて変更可能な情報及びアプリケーションの両方を含むデータベースである。
データ６０８は、図４のインタープリタ４０４のようなインタープリタへのデータの流れを表わしている。修正６１０は、インタープリタから受け取られているソースコード６００に対する変更を表わす。データ６０８は、シミュレーションの実行に使用するために、定義６０２、動作６０４、及びＧＵＩ言語６０６からインタープリタに送られる情報を含む。このような実施例では、ソースコード６００はフリーフォーマットデータベースである。
【００４０】
これらの実施例では、ソースコード６００はＨＢＤＬで書かれている。フリーフォーマットデータベースであるので、ソースコード６００は、異なるコンポーネント間にセパレータを必要としない。ソースコード６００内のプログラムは、単一の行を用いて記述されている。ソースコード６００は、シミュレーションの実行を変更するための、ループ、ケース文、条件付飛び越し、及びその他類似の命令文も含む。
さらに、ソースコード６００は、コードの一部を記憶するオブジェクトを含む。結果として、反復の必要なくオブジェクトを何度も呼び出すことができる。さらに、ソースコード６００内において、オブジェクトに索引を付け、デフォルトパラメータを含むように定義することができる。このようにして、ソースコード６００内にインテリジェントオブジェクトの生成が可能となる。
【００４１】
また、ソースコード６００内に異なる種類の変数を定義することができる。これらの種類の変数を、特定のタスクのために使用することができる。例えば、従来の数値的な種類に加えて、ソースコード６００は、人、人々、家族、動作、時間軸、日付、及びその他といった種類を含むことができる。加えて、ソースコード６００は、シミュレーションを行うための、時間軸に基づく実行モデルを提供する。人工知能コンポーネントを、これらのコンポーネントを支援する機能コマンドと共に、ソースコード６００内に設けることができる。
ソースコード６００内において、定義６０２は、人のグループと人のグループが生きる環境とを記述する。動作６０４は、シミュレーションの間に定義６０２に適用される影響を表わす。これらの実施例では、動作６０４は、時間軸に挿入されるイベントと呼ばれるコードの部分又は断片である。
【００４２】
これらの実施例では、シミュレーションに参加する人と、シミュレーションを使用する人は、ソースコード６００によって操作される。シミュレーションに参加する人は、実際の人でも人工的な人でもよい。定義６０２、動作６０４、及びＧＵＩ言語６０６は、機能コード及びパラメータを含む。機能コード及びパラメータは、他の情報と共にデータ６０８として出力され、インタープリタによって変換される。
この情報をソースコード６００内に移動させることにより、ソースコード６００はシミュレーションを制御することができる。このように、本シミュレーションはもはや、記述された現在使用されるスタイル及び言語によるもののように、アプリケーションに特異的なものではない。例えば、特定のアイテムが定義６０２内に定義されると、このアイテムを動作６０４の所定の動作セットに使用することができる。例えば、Ｘという種類の人を、動作６０４において実行される動作と共に使用される定義６０２内に定義することができる。その結果、無限大の数のシミュレーションを生成し、人Ｘを登録する必要無しに実行することができ、且つ各シミュレーションについて実行することができる。
【００４３】
さらに、ソースコード６００内に位置するＧＵＩ言語６０６を有することは、定義６０２及び動作６０４が、ユーザに提示される表示を制御できることを意味する。このように、ソースコード６００は、基本的に、シミュレーションのユーザが見る内容を管理するデータベースである。この機能は、定義及び知識の再利用性を支援することにより、シミュレーション毎にアプリケーション又はプログラムのシミュレーションを個別に記述する必要無しに、無限大の数のシミュレーションの生成を可能にする。
現在のシステムは、スクラッチに基づいてコードされる単一のシミュレーション内において静的なデータを利用する。最善の場合でも、単一のオブジェクトをシミュレートするコードはライブラリに保存されるが、各オブジェクトに対する動作は各シミュレーションに固有である。動作は一般に個別のプログラム内に記述される。その結果、現在使用される技術では、特定の種類のシミュレーションの各々を実際にコード化する必要がある。さらに、現在のやり方では、グラフィカルユーザインターフェースは、通常再利用され、アプリケーションを制御する。
【００４４】
結果として、これらのインターフェースは、アプリケーションを記録する又は書き直す必要なく特定のシミュレーションを変更することはない。このように、有利な実施形態のソースコード設計により、現在使用されているしニュレーション技術と比較して、結果表示及びユーザ入力の受信に関する柔軟性が増大する。
ＧＵＩ言語６０６は、図４のＧＵＩプロセッサ４０６のようなグラフィカルユーザインターフェースプロセッサを介してインタープリタにより選択的に送信されるコードを提供する。このコードは、エンドユーザに対する表示又は視覚効果と、種々のディスプレイに設けられる入出力制御を提供する。ＧＵＩ言語６０６は、各エンドユーザが自身のスクリーン上に見る内容と、各エンドユーザがシステムと相互作用する方式とを制御する。これらの実施例では、ＧＵＩ言語６０６はＨＢＤＬのサブセットである。用途に応じて、ＧＵＩ言語６０６は、異なる有利な機能を提供するために、異なる言語用いて実施することができる。このように、複数の異なる有利な実施形態は、ソースコード６００の制御を示している。
【００４５】
ソースコード６００内でＧＵＩ言語６０６によって入出力を制御することの一の利点は、エンドデバイスに提供されるユーザインターフェースをシミュレーションによって制御できることである。多くの場合、シミュレーションには、異なる背景を有するユーザが関与する。種々のユーザインターフェースをカスタマイズすることができると、これらのユーザがシステムを素早く理解することが容易になる。従って、シミュレーションを実行するための学習曲線が低減される。さらに、関連性の最も大きな情報のみが様々なユーザに提示され、よってシミュレーションの関連性が強化される。
例えば、特定のシミュレーションについて、異なるユーザは異なるインターフェースを必要としうる。一部のユーザには、定義６０２に適用される動作６０４から特定の動作を選択するユーザインターフェースを与えることができる。他のユーザは、定義６０２に定義された人工的人と交代することができる。この種のユーザには、動作を選択するユーザに基づいて異なるユーザインターフェースが与えられる。
【００４６】
さらに、実行される様々なシミュレーションは、異なる種類のインターフェースも必要とする。この種のアーキテクチャは、ユーザインターフェースの動的な追加又は単純化を行う能力も提供する。このように、用途に応じたユーザインターフェースを付与することができる。
加えて、新規パラメータ及び新規環境に対し、強制的に複数の異なるシミュレーションを行うことができる。これら新規の変動する状況は、異なるデータセットが分析されることを意味する。これらの状況は、関与する異なるユーザ又は専門家の必要性を含むこともできる。当面のタスクの、このような変化し続ける性質により、ソースコード６００により提供される可変性の適応的環境が必須となる。ソースコード６００は、定義６０２、動作６０４、及びＧＵＩ言語６０６内に、このようなパラダイムを提供する。
【００４７】
これらの実施例では、ＧＵＩプロセッサは、現在使用されているシミュレーションシステムで現在行われている静的アプリケーションではなく、ソースコード６００の制御下にある。ＧＵＩ言語６０６は、ハードウェアの抽出概念の層を提供する。ＧＵＩ言語６０６の内容は、シミュレーションプロセスが予想通りに行われること、及び様々なユーザ及びデバイスから適切な情報が送達されて受信されることを保証するものである。ＧＵＩ言語６０６は、インタープリタ及びＧＵＩプロセッサを実装する任意のハードウェア上で実行するのに必要な全てのコードを含む。このように、ハードウェアに変化が生じるときは、ハードウェアを包む下層部分だけを書き直せばよい。
これらの実施例では、ＧＵＩ言語６０６は、ランタイムの間に、ユーザインターフェースの必要な要素を構築するための様々な構築物を提供する。これらの要素は、例えば、マウス追跡動作、マウスクリック動作、アナログジョイスティック、メニュー、ウィンドウ、ダイアログボックス、チェックボックス、ラジオボタン、リストボックス、及びフォームを含む。これらの要素及び他の要素により、グラフィカルユーザインターフェースの実施が容易になる。さらに、ＧＵＩ言語６０６を用いたグラフィカルユーザインターフェースの構築において生成される出力は、ＧＵＩ言語６０６内に保存して後で使用することができる。
【００４８】
ＧＵＩ言語６０６は、ソースコード６００が、人々のグループ及び彼らが生きる環境のシミュレーションに関する入力を提示及び受信することを可能にする、多数の異なる機能を提供する。ＧＵＩ言語６０６は、一組の三次元プリミティブを提供する。これらの三次元プリミティブは、仮説的カメラ及び視点を制御するコマンドセットのような機能を支援する。ベクトル及びマトリクスの操作を含む数学関数も、異なる種類のグラフィックファイルフォーマットのインポート及びエキスポート機能と共に含まれる。
ＧＵＩ言語６０６内に提供される機能は、単なる三次元データ以上のものが組み込まれた三次元オブジェクトを生成することも含む。例えば、これら三次元オブジェクトは、例えば、三次元オブジェクトに関する価格、重さ、色、価値、又はルールといったその他の情報を含むことができる。当然のことながら、これらの三次元オブジェクトにはあらゆる種類の情報を組み込むか又は関連付けることができる。
【００４９】
さらに、ＧＵＩ言語６０６はまた、三次元モデル及びスタックと、このモデル及びスタックを管理するための一組のコマンドとを含む。三次元モデル及びスタックは、異なる三次元エンティティに適用される複合変換の生成を可能にする。このようにして、オブジェクトに一時的な影響を与える異なる世界を形成することができる。
ＧＵＩ言語６０６により、大規模な三次元データベースを容易に創造及び維持することができる。これらのデータベースは定義６０２内に見ることができる。このデータベースを使用して、オブジェクトの大きさ、複雑さ、又は性質に関係なく、あらゆる三次元オブジェクトを表わすことができる。
【００５０】
さらに、ＧＵＩ言語６０６は、グラフィカルユーザインターフェース構築言語となることができる。この言語により、ソースコード６００は、各エンドユーザデバイスのルックアンドフィールを制御することができる。ＧＵＩ言語６０６は、点、線、曲線、及び面といった二次元プリミティブを含むことができる。さらに、一組の二次元コントロールオブジェクトが含まれてもよい。これら二次元のコントロールオブジェクトは、例えば、ウィンドウ、ダイアログボックス、リクエスタ、チェックボックス、ラジオボタン及びメニューを含む。
【００５１】
次に、有利な一実施形態によるソースコードの定義部分を示す図７を参照する。定義７００は、図６の定義６０２の詳細な説明である。定義７００は、アセット７０２、人７０４、及び内部関係７０６を含む。
アセット７０２は、人が存在する環境内に、有形アセット７０８及び無形アセット７１０の両方を含む。有形アセット７０８には、生物と無生物の両方が含まれる。生物には、例えば、家畜、鳥、細菌、及び植物が含まれる。無生物には、例えば、家、山、湖、車、テーブル、ペン、航空機、又は銃が含まれる。
【００５２】
無形アセット７１０には、例えば、シミュレーションの対象となる人のグループの、ルール、法律、及び規則が含まれる。無形アセット７１０には、アセットを取り扱うためにインタープリタによって使用される情報も含まれる。この情報は、一般的なコード、ライブラリ、及びルーチンも含むことができる。
具体的には、この種のアセットには、例えば、数学ライブラリ、グラフィックライブラリ、二次元プリミティブライブラリ、三次元プリミティブライブラリ、モデル及びスタック管理ライブラリ、人工知能ライブラリ、入力／出力ライブラリ、暗号化ライブラリ、ネットワーキングライブラリ、システムコールライブラリ、及び時間管理ライブラリが含まれる。つまり、無形アセット７１０は、シミュレーションの実行に必要なあらゆる情報を含むことができる。
【００５３】
人７０４は、人のグループ内に存在する様々な人の特徴を説明する。人７０４は家系及び人のグループに含まれる人同士の様々な関係を詳細に説明する情報を含むことができる。さらに、人７０４は、様々な個体の心理的プロファイルの生成に必要な情報を含む。
内部関係７０６は、定義７００において人工知能によって使用される動作及び反応を含む。これらの動作及び反応は、様々な方式でトリガすることができる。例えば、トリガは、ランダム式、アラーム式、ステートマシン式とするか、又は定義７００に適用される一組のイベントに対する反応とすることができる。
【００５４】
アセット７０２内の異なるオブジェクトは、無形アセット７１０に依存して必要な機能及び演算を実行することができる。一般的なコード、ライブラリ、及びルーチンは、異なるプログラミングタスクを支援するのに必要なコードである。これらの異なるコンポーネントは、データとしてインタープリタに送信し、シミュレーションの実行に使用することができる。三次元オブジェクトは、生物及び無生物を含む異なる世界を構成するすべてのオブジェクトである。
【００５５】
ここで、有利な一実施形態によるオブジェクトのブロック図である図８を参照する。この実施例では、オブジェクト８００は、図６の定義６０２内のオブジェクトの一実施形態の一実施例である。この実施例では、オブジェクト８００は、人工知能８０２、特徴８０４、及び内部関係８０６を含む。
人工知能８０２は、特定のオブジェクトのシミュレーションに使用されるコードを含む。これらの実施例では、オブジェクト８００は、人間、植物、又は動物などの生物である。人工知能８０２は、選択されたオブジェクトの動作及び反応のシミュレーションに必要なコードを含む。
【００５６】
特徴８０４は、特定のオブジェクトの特徴の識別を含む。例えば、オブジェクト８０２が人である場合、特徴８０４は、例えば、身長、体重、肌の色、髪の色、目の色、体格、及びその他のあらゆる適切な人の特徴を含むことができる。特徴８０４はその他の身体的特徴を含んでもよく、例えば、どの位速く走れるか、敏捷性、及び持久力などを含むことができる。
特徴８０４の非身体的特徴には、例えば、忍耐力、思いやり、感情、知性、及び内部関係が含まれるが、これらに限定されない。特徴８０４は、オブジェクト８００の動作及び反応をシミュレートするために、人工知能８０２によって使用される。特に、図示の実施例では、特徴８０４は人の行動をシミュレートするために使用されている。
【００５７】
人工知能８０２の複雑性及び特徴８０４に含まれる特徴の数は、用途に応じて変化する。これらのコンポーネントの複雑性は、シミュレーションを実際のオブジェクトから区別可能にするために所望する能力が増大するほど大きくなる。
内部関係８０６は、イベントをトリガするために人工知能８０２が使用できる動作及び反応を含む。これらのイベントには、例えば、オブジェクト８００の動作が含まれる。これらの動作は、オブジェクト８００によって開始することができるか、又は動作は、オブジェクト８００に行われた動作に応じて生じる動作とすることができる。オブジェクト８００により行われるこれらの動作は、シミュレーションの間の、オブジェクト８００に対して行われる動作、又はオブジェクト８００が含まれる環境に基づいてオブジェクト８００によって認知される動作とすることができる。
【００５８】
ここで、有利な一実施形態によるオブジェクトを示す図９を参照する。この実施例では、オブジェクト９００は、図６の定義６０２によりシミュレートされる無生物の一実施例である。オブジェクト９００は、例えば、車、ペン、航空機、山、又は湖とすることができる。
この実施例では、オブジェクト９００は、モデル９０２と特徴９０４とを含む。モデル９０２は、特定のオブジェクトのシミュレーションに使用されるコードを含む。モデル９０２は、特定のオブジェクトの機能のシミュレーションに使用されるコードを含む。例えば、オブジェクト９００が車である場合、特定の結果を生む様々な動作を車に対して行うことができる。例えば、エンジンを作動させて、車輪を回転させることができる。
【００５９】
モデル９０２は、例えば、数学的モデルである。例えば、有限状態マシンのセットを使用して、車の機能及び動作をモデル化することができる。長時間に亘る使用及び環境への露出による、モデル化対象のモデルの経年変化をシミュレートするためのものなど、モデル９０２には、他の機能及びプロセスも含まれる。
特徴９０４は、車の様々な特徴、例えば、タイヤの大きさ、エンジンの大きさ、塗料の色、ラジオの種類、及び内部空間の量などを識別する。さらに、特徴９０４は、オブジェクト９００に関する車の特徴についての他の情報を含んでもよい。例えば、タイヤのトレッドの量を、特徴９０４内で特定の種類のタイヤについて識別することができる。
【００６０】
モデル９０２は、オブジェクト９００が行う様々な動作に応じて車が何をするか、例えば、ユーザが車を運転すると、特徴９０４の中で識別されるタイヤに消耗が生じるなどをシミュレーションするために使用される。このような消耗は、特徴９０４内で識別される。この消耗は、モデル９０２内のアルゴリズムの一部となりうる。さらに、車の実施例において、モデル９０２は、日光及び雹といった環境への露出を考慮して、経年変化した状態の外観をモデル９０２に提示することができる。図８のオブジェクト８００及び図９のオブジェクト９００によって行われる様々な動作を、これらオブジェクトに対して実行し、図６の動作６０４内で定義付けることができる。
【００６１】
ここで、有利な一実施形態による動作オブジェクトを示す図１０を参照する。この実施例では、動作オブジェクト１０００は、図６の動作６０４に見ることができる動作の一実施例である。
動作オブジェクト１０００には、動作１００２、オブジェクト１００４、ユーザの許可１００６、及びグラフィカルユーザインターフェース（ＧＵＩ）１００８が含まれる。動作１００２は、例えば、実行できる一の動作、例えば会話する、打つ、動く、座る、掴む、話す、又は見るなどの動作を含むことができる。オブジェクト１００４は、動作が行われるオブジェクトの識別である。ユーザの許可１００６は、特定のユーザがオブジェクト１００４に対して動作１００２を実行してよいかどうかを決定する。グラフィカルユーザインターフェース１００８は、特定のユーザに提示されるユーザインターフェースの種類を識別する。
【００６２】
オブジェクト１００４は、無生物又は生物とすることができる。ユーザの許可１００６は、特定のユーザが一のオブジェクトに対して選択的な動作を実行することができるかどうかを決定するために使用される。場合によっては、特定のユーザがオブジェクトに対して動作を実行することは望ましくない。グラフィカルユーザインターフェース１００８は、オブジェクトに対する動作をどのようにユーザに提示するか、並びにユーザとオブジェクトとの相互作用がどのように起こりうるかを識別する。
図８、９、及び１０におけるオブジェクトの説明は、図６のソースコード６００を、現在利用可能なプログラム言語及び方法論を使用して実施することができる一の方式を説明することを目的としている。しかしながら、これらの実施例は、図６のソースコード６００を実施できる方式を限定するものではない。
【００６３】
ここで、有利な一実施形態による動作の適用を示す図１１を参照する。このような実施例では、時間軸１１００によって、図６の定義６０２のような定義が、シミュレーションの間に受ける影響が示される。このような実施例では、図６の動作６０４のような動作を、時間軸１１００上のイベントと呼ぶ。これらの動作は、コードの断片又は部分である。特に、動作は、イベント１１０２、イベント１１０４、イベント１１０６、及びイベント１１０８を含む。この実施例では、イベント１１０２は時間帯１１１０に適用される。イベント１１０４は時間帯１１１２の間に発生し、イベント１１０６は時間帯１１１４の間に適用される。イベント１１０８は時間帯１１１６の間に発生する。これらのイベントは、手続き的な性質を持つか、又はイベントによって駆動される。つまり、イベントは、インタープリタによって発信又は生成される種々のメッセージへの応答として適用されうる。
このような実施例では、時間軸１１００の実行により発行されるマスタ割り込みにより、実行途中に必要に応じてこれらのイベントが中断され、シミュレーションは直ちにシミュレーションの次の時間帯に移る。ソースコードの実行が手続的又はイベント駆動式である現在のプログラム言語とは異なり、有利な実施形態では、ソースコード中の動作は時間に基づく実行モデルに従って進行する。このような実施例では、時間帯は様々な粒度を有することができる。例えば、各時間帯は、一週間、一日、一時間、一分、又はその他何らかの期間を表すことができる。
【００６４】
図示される実施形態では、時間軸１１００はスケジューラの監視下で実行される。これについては後述で詳細に説明する。スケジューラは、時間軸１１００に関連付けられたイベント１１０２、１１０４、１１０６、及び１１０８を実行する。スケジューラはこれらのイベントを完全に制御しており、必要に応じてそれらに割り込むことができる。さらに、スケジューラは、メモリマネージャ及びメモリ回復機能を実行する。このように、中断されたタスクに割り当てられた全てのメモリを、到来するイベントに利用することができる。
【００６５】
ここで、有利な一実施形態による、時間軸にスケジューラが割り込む場合の動作の適用を示す図１２を参照する。この実施例では、時間軸１２００は、イベント１２０２及びイベント１２０４を含む。イベント１２０２は、時間軸１２００上の時間帯１２０６の間に実行を開始する。この実施例では、イベント１２０２は、入力１２０８、決定１２１０、及び処理１２１２を含む。イベント１２０２は、時間帯１２０６の間に実行を開始する。時間帯１２０６が終了すると、１２１４の時点でスケジューラがイベント１２０２の実行に割り込む。ここで実行は、時間帯１２０６の後に開始される時間帯１２１６のイベント１２０４に移る。この実施例では、時間帯１２０６と時間帯１２１６の間に重複は無い。
【００６６】
ここで、有利な一実施形態による、時間帯が重複する場合の動作の適用を示す図１３を参照する。この実施例では、スケジューラは、種々の時間帯に関連付けられたイベント１３０２、１３０４、１０３６、及び１３０８を有する時間軸１３００を実行する。イベント１３０２は、時間帯１３１０に関連付けられている。イベント１３０４は時間帯１３１２に関連付けられている。イベント１３０６及び１３０８は、時間帯１３１４及び１３１６にそれぞれ関連付けられている。
この実施例では、異なる時間帯が互いに重複することがありうる。つまり、一の時間帯の継続時間が、別の時間帯の継続時間より長い場合がある。図示のように、時間帯１３１０及び時間帯１３１２は互いに重複する。その結果、イベント１３０２及びイベント１３０４が、時間帯１３１０と時間帯１３１２が重複する一定の期間に亘って同時に実行される。この特定の実施例では、イベント１３０２の実行に比較的長い時間が与えられている。
【００６７】
時間帯の重複は、重複が起こる時間の間にイベントが組み合わされることを意味しない。このような実施例では、何らかの理由で時間帯１３１０においてイベント１３０２が中断される場合、この中断が時間帯１３１２の開始前又は実行中に生じた場合、コントロールは時間帯１３１２に移る。しかしながら、時間帯１３１０の間の、但し時間帯１３１２の終了後に中断が生じた場合、コントロールは時間帯１３１４におけるイベント１３０６の実行に移る。
【００６８】
図１４、１５、及び１６は、有利な一実施形態による存続イベントを示す。図示のように、時間軸１４００は、時間帯１４０８に関連付けられたイベント１４０２、存続イベント１４０４、及びイベント１４０６を含む。イベント１４１０は、時間軸１４００上の時間帯１４１２に関連付けられている。イベント１４１４は時間帯１４１６に関連付けられており、イベント１４１８は時間帯１４２０に関連付けられている。イベントは、中断されないか、又は延長されるように作成することができる。この種のイベントは、エンドユーザから、又はまだ終了していないが必要とされる他の何らかのイベントから、入力の到来を待っているときに存在することができる。このような実施例では、この種のイベントは、存続イベント１４０４のような存続イベントである。存続イベント１４０４は、一の時間帯から別の時間帯へと、当該イベントが完全に発生するまで続くことができる。
図１５に示すように、存続イベント１４０４は時間帯１４１２に関連付けられる。図１６では、存続イベント１４０４は再度延長されるか又は時間帯１４１６に移される。これらの実施例では、存続イベント１４０４はこの特定の時間帯の間に完了する。
【００６９】
ここで、有利な一実施形態によるインタープリタを示す図１７を参照する。インタープリタ１７００は、図４のインタープリタ４０４を詳細に示したものである。インタープリタ１７００は、一の言語で書かれたソースコードを、別の言語で書かれた標的コードに変換するプログラムである。インタープリタ１７００はまた、当該インタープリタがソースコードの処理を進める際に標的コードを実行する。この標的言語は、別の高レベル言語又は特定のデータ処理システム又はプロセッサによって使用される言語で書かれてもよい。
任意のプログラムが正確に変換されて実行されるために、ソースコードは言語によって定義される構築物によって構成される。特に、これらの構築物は構文構築物である。構築物の完全なセットはソースコードの言語の文法を形成する。これらの構築物に従って構成されていないか、又は文法的に不正確なコードはすべて、インタープリタ１７００によって廃棄される。
【００７０】
インタープリタ１７００は、通信モジュール１７０２と言語インタープリタ１７０４とを含む。これに加えて、インタープリタ１７００は、暗号化／復号化モジュール１７０６を含み、このモジュールは、インタープリタ１７００と、図４のＧＵＩプロセッサ４０６のようなＧＵＩプロセッサとの間で情報の安全な送受信を行う。
このような実施例では、言語インタープリタはＨＢＤＬ１７０８を受信する。ＨＢＤＬ１７０８は、図４のソースコード４０２のようなソースコードモジュールから受けとられる図４のデータ４１０のようなデータの一実施例である。ＨＢＤＬ１７０８は、言語インタープリタ１７０４によって変換されて、シミュレーションを実行する。結果として変換されたＨＢＤＬ（ＩＨＢＤＬ）１７１０が得られ、これは暗号化／復号化モジュール１７０６に送られて暗号化される。暗号化の後、暗号化の結果は、変換及び暗号化されたＨＢＤＬ（ＥＩＨＢＤＬ）１７１２として、図４のＧＵＩプロセッサ４０６のようなＧＵＩプロセッサに送られる。ＥＩＨＢＤＬ１７１２は、図４のグラフィックデータ４１２の一実施例である。ユーザ入力は、一組のデバイスからＧＵＩプロセッサによって回収された暗号化済みＨＢＤＬ（ＥＨＢＤＬ）１７１４として受け取られる。ＥＨＢＤＬ１７１４は、図４のユーザ入力４１８の一実施例である。このような暗号化済みの情報は、復号化され、ＨＢＤＬ１７１６として通信モジュール１７０２に送られる。
【００７１】
ＨＢＤＬ１７１６は、ソースコードの修正に使用されるユーザ入力の一実施例である。このような修正は、例えば、ソースコード内の定義の変更、又は定義に対して適用される動作の選択とすることができる。加えて、言語インタープリタ１７０４の出力は、ＨＢＤＬとして通信モジュール１７０２に送られて、ソースコードの修正に使用される。ＨＢＤＬ１７１６及びＨＢＤＬ１７１８を使用して通信モジュール１７０２はＨＢＤＬ１７２０を形成し、これを使用してソースコードが修正される。ＨＢＤＬ１７２０は、図４の修正４２０のフォーマットの一実施例であり、ソースコードの修正に使用される。図示のように、ＨＢＤＬ１７１８は、ソースコードを変更するために、言語インタープリタ１７０４により生成される出力のフィードバックとなる。
具体的には、通信モジュール１７０２は、発信モジュール１７２２、入力モジュール１７２４、及び登録モジュール１７２６を含む。言語インタープリタ１７０４は、字句解析器１７２８、文法構文解析ツール１７３０、及び実行モジュール１７３２を含む。
【００７２】
言語インタープリタ１７０４は、字句解析、文法構文解析、及び意思決定に対処するモジュールを含む。ＨＢＤＬ１７０８としてデータを受け取ると、字句解析器１７２８は、ＨＢＤＬ１７０８内のデータを、ソースコード言語の個々のトークン又は単語に分解する。このような実施例では、ソースコードはＨＢＤＬで書かれている。つまり、字句分析器１７２８は、ＨＢＤＬ１７０８内の異なるトークン又はコンポーネントを識別する。これらのトークンは文法構文分析ツール１７３０に送られ、このツールによってＨＢＤＬ１７０８のために意味のある文又は命令文に分類される。ＨＢＤＬ１７０８内の文又は命令文が構築されたら、文法構文分析器１７３０はこの命令文を実行モジュール１７３２に送る。次いで、この命令文に基づく動作がしかるべく行われる。
実行モジュール１７３２は、シミュレーションを実行するための多数の異なるサブモジュールを含む。このような実施例では、実行モジュール１７３２は変換されたＨＢＤＬ（ＩＨＢＤＬ）１７１０及びＨＢＤＬ１７１８を生成する。ＨＢＤＬ１７１０は、グラフィックプリミティブのような、グラフィックデータの形態を採る。ＨＢＤＬ１７１８は、ソースコードの修正に使用される修正された定義又は新規定義である。ＨＢＤＬ１７１８は、入力モジュール１７２４に返されて、ソースコードの修正又は書き直しに使用される。入力モジュール１７２４は、ＨＢＤＬ１７１８の新規定義を発信モジュール１７２２に渡し、発信モジュールは、ソースコード中に書き込まれるべきＨＢＤＬ１７２０を発信する。
【００７３】
これらの実施形態では、文法構文分析ツール１７３０は、字句分析器１７２８及び実行モジュール１７３２を開始させる。文法構文分析ツール１７３０は、字句解析器１７２８にトークンをリクエストする。字句解析器１７２８は、ＨＢＤＬ１７０８からキャラクタを受け取ってトークンを生成する。トークンが生成される度に、字句分析器１７２８は当該トークンを文法構文解析ツール１７３０に送る。文法構文解析ツール１７３０は、トークンを使用して一又は複数の解析木を生成する。解析木が完成したら、文法構文解析ツール１７３０は、完成した解析木に基づいて、実行モジュール１７３２によって実行される動作をリクエストする。
このような実施例では、各解析木は一つの命令書を表わす。命令書は、トークンのストリームが命令書の定義と一致するたびに起動又は実行される一又は複数の動作からなる一つのセットを有する。文法構文解析ツール１７３０からのリクエストに応じて、実行モジュール１７３２は意味解析を行って、動作の命令に何らかの意味論的誤りがないかどうかを決定する。誤りが生じた場合、その誤りは報告される。誤りが無ければ、動作のセットに対する命令が実行される。すると、関連する完全な命令書の動作が開始されることにより、非端末機の呼び出し側への機能的回帰が行われる。
【００７４】
このような実施例では、実行モジュール１７３２が、文法構文解析ツール１７３０によって作成された解析木に生成された命令が意味論的に正しいかどうかを判断する。意味論的な誤りが生じている場合、このような実施例では、実行モジュール１７３２はエラーを生成し、命令を無視する。しかしながら、場合によっては、実行モジュール１７３２が訂正を行うために十分な情報が存在する場合、エラーは訂正することができる。
ＥＨＢＤＬ１７１４としてユーザ入力を受け取ると、暗号化／復号化モジュール１７０６は情報を復号化してＨＢＤＬ１７１６を形成する。ＨＢＤＬ１７１６はＨＢＤＬの暗号化されていない形態のユーザ入力であり、登録モジュール１７０２によって受け取られる。登録モジュール１７２６は、ユーザ入力を返すユーザの各々を登録して正当性を確認する。この登録モジュールにより、権限を有するユーザ又は登録されたユーザしかシステムに入力を返せないことが保証される。例えば、登録モジュール１７２６は、特定のユーザのパスワードの正当性を確認する。
【００７５】
ユーザが正当であると確認されたら、ＨＢＤＬ１７１６のユーザ入力は入力モジュール１７２４に渡される。入力モジュール１７２４は、全ての形態の入力を集中させる焦点として働き、特定の命令を有する入力を発信モジュール１７２２に送る。入力モジュール１７２４は、入力を処理するために、発信モジュール１７２２が必要とする命令を追加することができる。このような実施例において、入力は、ソースコードの何を変更するかを定義する。
このような実施例では、特定の命令は、ソースコードのどの部分が特定のユーザによって修正可能かに関する命令のような命令を含む。例えば、ユーザ入力が定義を修正する場合、命令は、修正すべきソースコードの部分を識別する。ソースコードの、入力によって修正される部分は、入力を生成するユーザの識別と、入力自体を用いて識別することができる。
【００７６】
このとき、発信モジュール１７２２は、ＨＢＤＬ１７２０がソースコードに送り返されるときに、ソースコードの適切なセクションが書き直されることを保証する。発信モジュール１７２２は、ユーザ、入力、及びソースコードの書き直される部分を識別するというポリシーを用いて、ソースコードに書き込みを行うかどうかを判断する。ポリシーとは、入力に応答してソースコードへの書き込みを行うかどうかを判断するために使用される一組のルールである。このポリシーにより、権限を持たないユーザが登録モジュール１７２６を通り抜ける可能性を排除するための二重性が付与される。例えば、権限を持たないユーザが実際のユーザをだまして入力を行う可能性がある。ポリシーは、実際のユーザによって行われない変更である入力、又は実際のユーザによって行われる入力の特徴を有さない入力を識別することができる。このような場合、入力は発信モジュール１７２２によって拒絶される。
これらの実施例では、各ユーザは、各々が追加又は修正できる、各自の動作の組を有する。その結果、ユーザが修正できるのは、ソースコードの動作の部分だけである。実行モジュール１７３２からの出力ＨＢＤＬ１７１８を使用して、動作だけでなく定義を書き直すことができる。このような実施例では、言語インタープリタ１７０４はシステム内の別のユーザとも考えられる。しかしながら、インタープリタは、永久的認証済みユーザである。発信モジュール１７２２にとって言語インタープリタ１７０４は、ＨＢＤＬ１７１８を用いて定義を書き直す存在である。
【００７７】
結果として、シミュレーションの任意の時点で、実際の人であるエンドユーザは、データベース内に定義されたあらゆる人を置換することができる。このようなデータフローにより、インタープリタ１７００はソースコードの書き直し又は変更を行うことができる。時間が経過してシミュレーションが実行されるとき、ソースコードを書き直すための定義が絶えず生成されている。
入力モジュール１７２４は、シミュレーションにおいて実行される「仮想世界」と、システムと通信するデバイスにおけるユーザによるユーザ入力により受け取られる「現実の世界」とを繋ぐ。発信モジュール１７２２は、ソースコードを修正するための新規定義を書き込むメカニズムを提供する。
【００７８】
次に、有利な一実施形態による字句解析器のデータフローを示す図１８を参照する。図示のように、字句解析器１８００は、ソース１８０２を受け取り、このソース１８０２を処理してトークン１８０４を生成する。字句解析器１８００は、図１７の字句解析器１７２８の一実施例である。字句解析器１８００は、キャラクタによりソース１８０２キャラクタの内容を読み取り、ソース１８０２から到来するキャラクタを、トークンと呼ばれる基本ユニット、例えばトークン１８０４に分類する。
ソース１８０２内のキャラクタのトークン１８０４への分類は、このような実施例では、正規表現１８０６内のトークン記述の組を使用して実行される。正規表現１８０６は、ソース１８０２内のキャラクタをトークン１８０４に分類するのに必要な記述を含む。このような実施例では、正規表現１８０６は、スクリプトを使用して実施される。これらのスクリプトは、キャラクタをトークンに分類する際に使用されるキャラクタのパターンを説明する言語の記号を使用する。
【００７９】
正規表現１８０６において定義される各正規表現には一の記号が割り当てられる。この記号は典型的には数字である。字句分析器１８００によってトークン１８０４内に生成されるトークンは、正規表現１８０６内の特定の正規表現の記号を用いて識別される。
正規表現１８０６に加えて、字句分析器１８００は予約語１８０６も使用する。トークンがソース１８０２内で識別されるとき、予約語１８０８に含まれる単語にも記号が割り当てられる。予約語は、言語に対して特定の文法論的意味を持つ単語であり、当該言語における識別子として使用することはできない。
【００８０】
ここで、有利な一実施形態による、文法構文解析ツールによって実行される構文解析を示す図１９を参照する。図１９に示す構文解析は、図１７の文法構文解析ツール１７３０によって実行することができる。解析木１９００は、文法構文解析ツールがトークンを分類するために使用できる解析木の一実施例である。この実施例では、命令文１９０２は、ｖａｒ１＝２０である。この命令文は、インタープリタによって実行される動作の管理又は定義に使用される。
特に、文法構文解析ツールは、字句解析器によって生成されるトークン間の関係を、命令書とも呼ばれる統語的構築物のセットに基づいて識別する。各命令書は、一つの論理ユニットを表わし、典型的には他の論理ユニットのトークンの観点から定義される。殆どの言語が二つの広範な種類の論理ユニットを定義する。このような実施例において、これらの論理ユニットは命令文及び式である。式は通常、値を提供する統語的言語構築物である。命令文は、変数の状態を変更するか、プログラムのフローを制御するか、又は言語によって支援される他の操作を実行する統語的構築物である。
【００８１】
文法構文解析ツールは、論理ユニットに入るトークンのストリームを分類し、実行モジュールに対して論理ユニットに基づく動作の実行を指示する。この実施例では、命令文１９０２は字句分析器によって生成されるトークンのストリームを含む。これらのトークンは、パラメータ名１９０４、ＥＱ１９０６、式１９０８、及びＮＬ１９１０である。式１９０８は、整数ＩＮＴ１９１２を含む。パラメータ名１９０４の値はｖａｒ１であり、ＥＱ１９０６の値は＝であり、ＩＮＴ１９１２の値は２０であり、ＮＬ１９１０の値は￥ｎである。図示のように、トークンのストリームを受け取ると、文法構文解析ツールは、ストリームに含まれるトークンの順序に基づいて文法を再生成する。
【００８２】
ここで、有利な一実施形態による解析木の別の実施例を示す図２０を参照する。この実施例では、解析木２０００は命令文２００２から生成されたものである。この実施例の命令文２００２は、出力＝ｖａｒ１＋ｖａｒ２＊ｖａｒ３である。
この実施例では、命令文２００２のトークンは、パラメータ名２００４、ＥＱ２００６、パラメータ名２００８、プラス２０１０、パラメータ名２０１２、ＭＵＬ２０１４、パラメータ名２０１６、及びＮＬ２０１８を含む。パラメータ名２００４は出力という値を有し、ＥＱ２００６は＝という値を有し、パラメータ名２００８はｖａｒ１という値を有し、プラス２０１０は＋という値を有し、パラメータ名２０１２はｖａｒ２という値を有し、ＭＵＬ２０１４は＊という値を有し、パラメータ名２０１６はｖａｒ３という値を有し、ＮＬ２０１８は￥ｎという値を有する。命令文２００２の符号＝の他方の側の式は、トークンのパラメータ名２００８、プラス２０１０、パラメータ名２０１２、ＭＵＬ２０１４、及びパラメータ名２０１６によって定義される。
【００８３】
これらの式の識別と言語内でのそれらの使用は、識別ノードに対するこれらトークンの位置により解析木２０００内に示されている。例えば、式２０２０は、式２０２２及び２０２６が演算子２０２４の使用により演算されることを示す。この場合、演算子２０２４はプラス２０１０である。式２０２０は式２０２６も含み、この式は、式２０２８及び２０３０を、演算子２０３２を使用して演算されるものとして識別する。この実施例では、式２０２２はパラメータ名２００８を含み、式２０２６は式２０２８及び２０３０に演算子２０３２を適用した結果を含む。
【００８４】
ここで、有利な一実施形態によるインタープリタ内の実行モジュールを示す図２１を参照する。この実施例では、実行モジュール２１００は、図１７の実行モジュール１７３２を詳細に示したものである。図示のように、実行モジュール２１００は、主時間軸制御モジュール２１０２、数学モジュール２１０４、物理モジュール２１０６、人工知能（ＡＩ）モジュール２１０８、レポート作成プログラム２１１０、及びグラフィックモジュール２１１２を含む。
主時間軸制御モジュール２１０２は、実行モジュール２１００内において、時間の経過とともに定義に対してイベントを適用するのに使用されるスケジューラである。数学モジュール２１０４及び物理モジュール２１０６は、異なるオブジェクトに対する動作の影響を決定するのに必要な計算を行う。人工知能モジュール２１０８は、主時間軸制御モジュール２１０２によって定義に対してイベントが適用されるとき、異なる人工知能コンポーネントのソースコードを実行することにより人の行動のシミュレーションを援助するのに使用されるコンポーネントである。
【００８５】
グラフィックモジュール２１１２は、エンドデバイスにおいて提示するグラフィックデータをＧＵＩプロセッサに送る。レポート作成プログラム２１１０は、このような実施例では、二種類の出力を生成する。一方の種類の出力は、ソースコードの修正に使用される新規定義である。生成されるこの出力は、例えば、図１７のＨＢＤＬ１７１８である。レポート作成プログラム２１１０によって生成される他方の種類の出力はグラフィックデータであり、このような実施例ではこのデータもＨＢＤＬでフォーマットされる。この出力は、例えば、図１７のＩＨＢＤＬ１７１０である。
グラフィックモジュール２１１２は、ユーザに対してシミュレーションの結果を表わす出力を生成するために使用される多数の様々なプロセスを含んでいる。これらの種類のプロセスには、二次元グラフィックパイプライン、二次元グラフィックプリミティブ、三次元グラフィックパイプライン、三次元グラフィックプリミティブ、二次元及び三次元モデルとスタック、表示リスト作成プログラム、並びに二次元及び三次元レンダリングエンジンが含まれる。これらの、並びに他の種類のグラフィックプロセスは、ユーザに提示される出力の生成に使用するために、グラフィックモジュール２１１２に置くことができる。
【００８６】
ここで、有利な一実施形態によるトークン生成プロセスのフローチャートを示す図２２を参照する。図２２に示されるプロセスは、図１７の字句解析器１７２８のようなソフトウェアコンポーネントにおいて実施することができる。
本プロセスは、ソースから次のキャラクタを受け取ることにより開始される（工程２２００）。このような実施例では、キャラクタのソースは図１７のＨＢＤＬ１７０８である。このキャラクタはキューに置かれる（工程２２０２）。
【００８７】
次に、キュー内の文字列と正規表現又は予約語との間に一致があるかを判断する（工程２２０４）。一致がある場合、キュー内の文字列を使用してトークンを生成する（工程２２０６）。次いでキューをクリアする（工程２２０８）。
その後、ソース内においてファイルの最後に達したかを判断する（工程２２１０）。ファイルの最後に達していればプロセスは終了する。ファイルの最後に達していない場合、プロセスは工程２２００に戻り、次のキャラクタを取得する。工程２２０４において文字列の一致がなければ、プロセスは上述の工程２２１０に進む。
【００８８】
ここで、有利な一実施形態による、人の行動のシミュレーションの実行プロセスのフローチャートを示す図２３を参照する。図２３に示すプロセスは、図４のフレームワーク４００のようなフレームワークにおいて実施することができる。特に、このシミュレーションは、図６のソースコード６００のようなソースコードを用いて実行することができる。
このプロセスは、仮想環境に、ソースコード内の定義に定義される人の組を入れることにより開始される（工程２３００）。このような実施例では、定義とは、図６の定義６０２のような定義である。本プロセスは、ソースコード内の動作を用いて、仮想環境内の人の組に対し、一組の動作を実行し、人の行動をシミュレートする結果を形成する（工程２３０２）。このような実施例では、動作の組は、図６の動作６０４のような動作から取得される。
【００８９】
その後、ソースコード内のグラフィックインターフェース言語を使用して結果から出力を生成し、フォーマットされた出力を形成する（工程２３０４）。このような実施例では、グラフィックインターフェース言語は図６のＧＵＩ言語６０６とすることができる。その後、シミュレーションが行われると、フォーマットされた出力は、ネットワークデータ処理システム内の一組のデバイスに提示され（工程２３０６）、その後プロセスは終了する。
このように、異なる有利な実施形態では、シミュレーションの際に変更可能なソースコードにより、人の行動をシミュレートする。さらに、グラフィカルユーザインターフェース言語は、結果の様態をユーザに提示して、シミュレーション自体による変更及び制御を可能にする。
【００９０】
ここで、有利な一実施形態による、文又は命令書の生成プロセスのフローチャートを示す図２４を参照する。図２４に示されるプロセスは、図１７の文法構文解析ツール１７３０のようなソフトウェアコンポーネントにおいて実施できる。
本プロセスは、処理される次のトークンを受け取ることにより開始される（工程２４００）。これらの実施例では、トークンは、図１７の字句解析器１７２８のような字句解析器から受け取られる。トークンに関して、ファイルの最後に達したかの判断を行う（工程２４０２）。ファイルの最後に達していない場合、トークンが解析木に適合するかを判断する（工程２４０４）。トークンが解析木に適合しない場合、エラーを生成し（工程２４０６）、次いで処理は工程２４００に戻る。
【００９１】
トークンが解析木に適合する場合、トークンが解析木を完成するかを判断する（工程２４０８）。トークンが解析木を完成する場合、完成した解析木に対応する命令書の命令が実行される（工程２４１０）。その後、プロセスは再帰的に呼び出し側に戻り（工程２４１２）、次いで上述の工程２４００に戻る。
工程２４０８に関して解析木が完成されない場合も、プロセスは工程２４００に戻る。工程２４０２でファイルの最後に達している場合、文法の一部が再生成されているかを判断する（工程２４１４）。この工程は、不完全な命令文又は命令書が存在するかを判断するために実行される。この判断は、解析木を調べて不完全な解析木が存在するかどうかを見ることにより行うことができる。文法の一部が再生成されている場合、エラーを生成し（工程２４１６）、その後プロセスを終了する。文法に再生成された部分が無ければ、プロセスはエラーを生成せずに終了する。
【００９２】
ここで、有利な一実施形態による、命令書の命令文の実行プロセスのフローチャートを示す図２５を参照する。図２５に示す本プロセスは、図１７の実行モジュール１７３２のようなソフトウェアコンポーネントにおいて実施することができる。
本プロセスは、命令書の一組の命令に対する意味解析を実行することにより開始される（工程２５００）。この工程は、命令書のいずれかの命令に意味論的誤りが生じているかを判断するために実行される。このような実施例では、命令の組は、一又は複数の命令である。その後、意味論的誤りが存在するかを判断する（工程２５０２）。
【００９３】
意味論的誤りが無い場合、プロセスは命令の組を実行し（工程２５０４）、プロセスはその後終了する。工程２５０２において意味論的誤りが生じる場合、エラーを報告し（工程２５０６）、プロセスはその後終了する。場合によっては、プロセスは終了せずに、命令が実行できるようにエラーの訂正を試みることができる。
【００９４】
ここで、有利な一実施形態によるグラフィカルユーザインターフェース（ＧＵＩ）プロセッサを示す図２６を参照する。ＧＵＩプロセッサ２６００は、図４のＧＵＩプロセッサ４０６を詳細に示したものである。この実施例では、ＧＵＩプロセッサ２６００は、暗号化／復号化モジュール２６０２、グラフィックモジュール２６０４、出力モジュール２６０６、入力モジュール２６０８、及びＨＢＤＬジェネレータ２６１０を含む。
これらの実施例では、ＧＵＩプロセッサ２６００は、図６のソースコード６００のようなソースコードから受け取った命令文を実行する。特に、命令文には、図６のソースコード６００内のＧＵＩ言語６０６から受け取ったものが含まれる。表示を生成するための実際のコードは、別個のアプリケーションではなくこれらのソース内に見出される。
【００９５】
ＧＵＩプロセッサ２６００は、命令文を実行し、ユーザ入力を受け取る。ＧＵＩプロセッサ２６００は、図１７のインタープリタ１７００のようなインタープリタから、暗号化された変換済みＨＢＤＬ（ＥＩＨＢＤＬ）２６１２を受け取る。暗号化／復号化モジュール２６０２は、情報を復号して変換されたＨＢＤＬ（ＩＨＢＤＬ）２６１４を形成し、ＩＨＢＤＬはグラフィックモジュール２６０４によって処理される。このような実施例では、ＩＨＢＤＬ２６１４は、デバイス２６１８用の表示を生成するために使用できる一組の命令文又はプリミティブを表わす。
グラフィックモジュール２６０４は、デバイス２６１８に表示されるピクセルを生成し、そのデータを出力モジュール２６０６に送ることができ、すると出力モジュールはそのデータを、デバイス２６１６としてデバイス２６１８に転送する。ユーザ入力は、入力モジュール２６０８により、デバイス２６２０としてデバイス２６１８から受け取られる。このモジュールは、デバイスデータをＨＢＤＬジェネレータ２６１０に送り、ＨＢＤＬジェネレータはこのユーザ入力をＨＢＤＬ２６２２の形式で表わす。ＨＢＤＬ２６２２は、ＨＢＤＬで書かれたユーザ入力である。この入力は、暗号化／復号化モジュール２６０２によって暗号化され、暗号化されたＨＢＤＬ（ＥＨＢＤＬ）２６２４としてインタープリタに返される。
【００９６】
このような実施例では、ＧＵＩプロセッサ２６００は、デバイス２６１８に近いハードウェア上で動作する。実際、多くの場合、ＧＵＩプロセッサ２６００の一部は実際にデバイス２６１８上で動作し、別の部分はサーバなどのデータ処理システム上で動作する。ＧＵＩプロセッサ２６００は、データの提示に必要なネットワークリソースの使用を低減するように、デバイス２６１８の近くに配置される。さらに、このような実施例では、ＧＵＩプロセッサ２６００は、データを表示し、ユーザ入力を受け取る際の待ち時間を短縮するように配置される。
【００９７】
ここで、有利な一実施形態による、グラフィカルユーザインターフェース（ＧＵＩ）プロセッサを通るデータフローを示す図２７を参照する。この実施例では、グラフィックモジュール２７００は図２６のグラフィックモジュール２６０４の一実施例である。このような実施例では、グラフィックモジュール２７００は、プリミティブ２７０２の形式で変換されたＨＢＤＬを受け取る。これらのプリミティブは、インタープリタによるソースコードの変換の結果である。
グラフィックモジュール２７００は、これらのプリミティブを処理して、ビットマップのピクセルと、ビットマップの操作方法又は表示方法を識別するデータとを生成する。この情報は、ビットマップデータ２７０４としてクライアントプロセス２７０６に送られる。このような実施例では、クライアントプロセス２７０６とは、図１９のデバイス１９１８に含まれるもののようなデバイス上で実行されるプロセスである。このクライアントプロセスは、ディスプレイ２７０８にビットマップデータを表示するのに必要な操作を実行する。このように、表示される画像を供給するのに必要なグラフィック処理は、グラフィックモジュール２７００によって実行される。クライアントプロセス２７０６は、供給されたビットマップデータを表示するだけであり、プリミティブからビットマップグラフィックを提供するのに必要な複数の異なるプロセス及び処理力を必要としない。処理をこのように分割することで、データを表示するデバイスには、異なるグラフィックプロセッサや、ワークステーションで使用されるようなグラフィックの提供に用いられるグラフィックパイプラインが不要となる。
【００９８】
結果として、通常はプリミティブを取り扱うには処理力が不十分な多数の異なるデバイスにグラフィックを表示することができる。例えば、クライアントプロセス２７０６及びディスプレイ２７０８７は、携帯電話、携帯情報端末、又はタブレットＰＣにおいて実施することができる。
入力デバイス２７１０は、ディスプレイ２７０８に表示されているデータに対するユーザ入力を受け取る。このユーザ入力は、ボタンの選択、データの入力、又は命令の送信といったグラフィックを操作することができる。ユーザがディスプレイ２７０８上のビットマップを操作することにより表示画像を修正するとき、表示されている画像の修正に含まれる差分又は変化は、クライアントプロセス２７０６によって識別される。画像内のこれらの差分は差分データ２７１２を形成し、このデータはＨＢＤＬジェネレータ２７１４に戻される。
【００９９】
ＨＢＤＬジェネレータ２７１４は、図２６のＨＢＤＬジェネレータ２６１０と同様である。ＨＢＤＬジェネレータ２７１４は、情報に含まれるこのような変化又はデルタを識別してそれをＨＢＤＬ２７１６に変換し、インタープリタに転送する。ＨＢＤＬ２７１６は、ソースコードモジュールの言語での命令文又はコードを含み、ソースコードに変更を加えるために使用することができる。グラフィックモジュール２７００は、プリミティブ２７０２を使用して異なるビットマップのピクセルを生成する。
【０１００】
ここで、有利な一実施形態によるディスプレイの操作を示す図２８を参照する。この実施例では、ディスプレイ２８００は、図２７のディスプレイ２７０８に提示されるディスプレイの一実施例である。ディスプレイ２８００は、プリミティブから生成されたビットマップを用いて提示される。この実施例のビットマップは、スライダ２８０２及びフィールド２８０４のような異なるコンポーネントを表わすために使用されている。スライダ２８０２及びフィールド２８０４を表わすために使用されるビットマップデータは、このようなビットマップの操作を可能にする方法を示すデータと共に送られる。この実施例では、スライダ２８０２は、ユーザ入力により、図２８の位置２８０６から、ディスプレイ２８００の修正版である図２９のディスプレイ２９０２内の位置２９００へと動かすことがでる。さらに、図２９のディスプレイ２９０２に示されるように、５０のような値をフィールド２８０４に入力することができる。ビットマップのこれらの変化は、有利な一実施形態によればＧＵＩプロセッサに返され、するとＧＵＩプロセッサはこれらの変化に基づいてソースコードのために適切な命令文を生成する。
【０１０１】
ここで、有利な一実施形態による、ビットマップの変化を識別するプロセスのフローチャートを示す図３０を参照する。図３０に示されるプロセスは、図２７のクライアントプロセス２７０６のようなデバイスのクライアントプロセスにおいて実施することができる。
プロセスは、ユーザ入力のモニタリングにより開始される（工程３０００）。次いで、ディスプレイに対するユーザ入力が検出されるかを判断する（工程３００２）。ユーザ入力が検出されなければ、プロセスは工程３０００に戻る。ディスプレイに対するユーザ入力が検出された場合、ユーザ入力がコントロールを操作するものかを判断する（工程３００４）。ユーザ入力がコントロールの操作である場合、コントロールの変更をビットマップ内で識別する（工程３００６）。ビットマップにおけるこの差分又は変化はＧＵＩプロセッサに送り返され（工程３００８）、ここでプロセスは工程３０００に戻って次のユーザ入力をモニタリングする。用途に応じて、データの変化は、変更された実際のビットマップでも、ビットマップの位置の変化の識別でもよい。当然のことながら、実施形態によっては他の種類の変更も使用できる。
【０１０２】
工程３００４に関し、ユーザ入力がコントロールの操作でない場合、ユーザ入力がフィールドへのデータの入力であるかを判断する（工程３０１０）。ユーザ入力がデータ入力でなければ、プロセスは工程３０００に戻る。ユーザ入力がデータ入力である場合、プロセスは工程３００６に進んでビットマップ内で行われた変更を識別する。
ユーザ入力に関して行なわれる特定の判断は、このような実施例では、ディスプレイ内のフィールドとコントロールへの変更を識別するためのもの、例えば図２１の実行モジュール２１００である。判断は、対象のビットマップに対するあらゆる種類の変更について行うことができる。例えば、変更は、特定のボタンが選択又は使用されたかどうかに関するものでもよい。
【０１０３】
ここで、有利な一実施形態による、差分データを取り扱うプロセスのフローチャートを示す図３１を参照する。図３１に示されるプロセスは、図２６のＧＵＩプロセッサ２６００のようなＧＵＩプロセッサにおいて実施することができる。特に、図３１に示されるプロセスは、図２７のＨＢＤＬジェネレータ２７１４において実施できる。
本プロセスは、クライアントプロセスから差分データを受け取ることにより開始される（工程３１００）。これらの実施例では、差分データは、ユーザ入力により行われたビットマップ内の変更を含む。次いでプロセスは差分に基づいてユーザ入力を識別する（工程３１０２）。このユーザ入力は、例えば、スライダの位置の変化、データフィールドへのデータの入力、又は他の何らかのユーザ入力として識別することができる。工程３１０２で行われる識別は、デバイスに送られた元のビットマップと、変更されたビットマップとを比較することにより行うことができる。例えば、差分がこの種のコントロールに沿ったスライダの上方への移動と識別される場合、ユーザ入力は、人の適時性を変更するためのものでありうる。この種の差分の一実施例は、図２１の実行モジュール２１００に関して示されている。
【０１０４】
その後、ユーザ入力は、ソースコードによって使用されるフォーマットに変換される（工程３１０４）。このような実施例では、ユーザ入力はＨＢＤＬフォーマットに変更される。変換されたユーザ入力はインタープリタに送られ（工程３１０６）、その後プロセスは終了する。
【０１０５】
ここで、有利な一実施形態による、人の透明性のパラダイムの提供に使用されるコンポーネントを示す図３２を参照する。この実施例では、図４のフレームワーク４００のようなフレームワークを使用してシミュレーション３２００が実行される。具体的には、シミュレーション３２００は、図４のインタープリタ４０４のようなインタープリタによるソースコードの変換により実行される。
この特定の実施例では、シミュレーション３２００は、人工知能（ＡＩ）３２０２を含み、人工知能はシミュレーション３２００内の人を表わす。人工知能３２０２によって実行されているこの人は、このような実施例では人工的な人である。人工知能３２０２のコードは、シミュレーション３２００に使用される他の情報に加えて定義３２０４から取り出される。定義３２０４は、図４のソースコード４０２のようなソースコードに見出される。定義３２０４には、人工的人の定義だけでなく、シミュレーション３２００の他の人及び当該人が存在する環境の定義も含まれる。
【０１０６】
シミュレーション３２００の間に結果が生成されると、これらの結果はユーザ入力３２０８として通信モジュール３２０６に送られる。この実施例では、これらの通信モジュールは、図４のインタープリタ４０４のようなインタープリタにも見出される。通信モジュール３２０６は、シミュレーション３２００からユーザ入力３２０８を取得して、定義３２０４を修正するか、又は定義３２０４の中に新規定義を書き込む。これにより変更されたソースコードが形成され、するとシミュレーション３２００は変更されたコードを使用して追加の結果を生成する。このような実施例では、人工知能３２０２は、生身のユーザと同様にフレームワークにログインする。
さらに、シミュレーション３２００の結果３２１０はデバイス３２１２に送られてユーザ３２１４に提示される。このような実施例では、ユーザ３２１４は実際の人である。
【０１０７】
本発明の例示的実施形態により、人の透明性パラダイムが使用可能となる。このパラダイムでは、ユーザ入力３２０８は、人工知能３２０２によって生成され、定義３２０４を書き直し、ユーザ３２１４によるリアルタイムのユーザ入力によって置換される。つまり、ユーザ３２１４は通信モジュール３２０６にユーザ入力３２１６を送ることにより、シミュレーション３２００内で人工知能３２０２によりシミュレートされた人工的人が生成したユーザ入力３２０８に替えて、定義３２０４を修正するか、又は定義３２０４に新規定義を書き込む。このような実施例では、ユーザ３２１４は主題のエキスパートであり、ユーザ入力３２１６を供給する。このような実施例では、ユーザ入力３２１６はシミュレーション３２００の間に供給される。このユーザ入力は、デバイス３２１２が受け取って提示する結果に応答して行われうる。
人工知能３２０２によってシミュレートされる人工的人は、人工的人の固有の識別子（ＵＩ）３２１８に関連付けられたユーザ入力３２０８を生成する。ユーザ入力３２０８は、シミュレーション３２００の間に人工知能３２０２によって生成される。ユーザ入力３２１６は、固有の識別子３２１８に関連付けられる。ユーザ入力３２０８は、通信モジュール３２０６に送られる。通信モジュール３２０６は、ユーザ入力３２０８を用いて現在の定義に新規定義を加えるか又は現在の定義を修正することにより定義３２０４を修正する。通信モジュール３２０６は、固有の識別子３２１８に基づいて修正すべき定義３２０４の部分を認識する。
【０１０８】
ユーザ３２１４がユーザ入力３２１６を生成すると、ユーザ入力３２１６は通信モジュール３２０６によって受け取られる。このような実施例では、ユーザ入力３２１６は、固有の識別子３２１８を含むこともできる。このように、通信モジュール３２０６は、固有の識別子３２１８に関連付けられた人工的人の定義３２０４を修正する。
このように、ユーザ３２１４は、シミュレーション３２００内で人工知能３２０２によってシミュレートされる人工的人を置換することができる。ユーザ３２１４は、通信モジュール３２０６に送られるリクエストに応じて、進行中に人工知能３２０２のスイッチを入れたり切ったりすることができる。
【０１０９】
ユーザ入力３２１６によるユーザ入力３２０８の置換を開始するとき、デバイス３２１２のユーザ３２１４は通信モジュール３２０６にリクエストを送る。この時点で、ユーザ３２１４はログオンしており、通信モジュール３２０６による認証を受けていると仮定する。通信モジュール３２０６は、ユーザ３２１４が人工知能３２０２のスイッチを操作する権限を有しているかを判断する。つまり、通信モジュール３２０６は、ユーザ３２１４で人工的人を置換してよいかを判断する。ユーザ３２１４が認証されたら、通信モジュール３２０６は人工知能３２０２の使用を停止するというフラグを設定する。つまり、人工知能３２０２の機能は、シミュレーション３２００内で呼び出されなくなる。
この時点で、ユーザ３２１４は、固有の識別子３２１８を含むユーザ入力３２１６を生成する。用途に応じて、固有の識別子３２１８は、ユーザ３２１４がデバイス３２１２においてユーザ入力を送ることを認識することにより、通信モジュール３２０６によって追加することができる。
【０１１０】
ここで、有利な一実施形態による、実際の人で人工的人を置換するプロセスのフローチャートを示す図３３を参照する。この実施例では、図３３に示されるプロセスは、図４のインタープリタ４０４のようなインタープリタで実施することができる。具体的には、本プロセスはインタープリタ４０４内の通信モジュールにおいて実施できる。
本プロセスは、ユーザから、人工的人を置換するようにというリクエストを受け取ることにより開始される（工程３３００）。その後、ユーザがシミュレートされた人を置換する権限を持っているかの判断が行われる（工程３３０２）。このような実施例では、この判断は、シミュレーションの間に、どのようなユーザが人工的人を置換できるかを定義するリスト又はデータベースと、ユーザとを比較することにより行うことができる。例えば、特定のユーザは特定の領域における専門家であり、それら特定の領域に関して人工的人を置換することができる。例えば、特定のユーザは政治に関する専門家とすることができる。このユーザは、このような状況で、政治家である人工的人を置換することができる。しかしながら、この専門家ユーザは、農夫又は兵士である人工的人を置換する権限は、関連分野の専門知識を持たないので、有さない。
【０１１１】
どのようなユーザが人工的人を置換できるかに関する特定のルールは、全面的に用途によって決定される。ユーザが人工的人を置換する権限を有する場合、定義において人工的人のための人工知能の使用が停止される（工程３３０４）。
その後、本プロセスはユーザによるユーザ入力を待つ（工程３３０６）。ユーザ入力を受け取ると、ユーザ入力が定義に新規定義を書くことであるかどうかの判断が行われる（工程３３０８）。ユーザ入力が新規定義を書くことである場合、ユーザ入力は新規定義を書き込むための形式にフォーマットされる（工程３３１０）。その後、定義がソースコードに書き込まれ（工程３３１２）、次いで本プロセスは上述の工程３３０６に戻る。
【０１１２】
工程３３０８に関し、ユーザ入力が新規定義を書くことではない場合、ユーザ入力が人工知能を作動させることであるかを判断する（工程３３１４）。ユーザ入力が人工知能を作動させることでない場合、本プロセスは工程３３０６に戻る。ユーザ入力が人工知能を作動させることである場合、人工知能は再び作動されて人工的人のシミュレーションに使用され（工程３３１６）、その後本プロセスは終了する。工程３３１６は、人工的人をシミュレーションに戻し、シミュレーションから実際の人を排除する。
工程３３０２に関し、ユーザが人工的人を置換する権限を持たない場合、エラーメッセージが生成されて（工程３３１８）、その後プロセスは終了する。
【０１１３】
本フレームワークによって提供されるシミュレーションは、１００％の確度で人の行動を予測することを目的としているのではなく、判断又は変更の可能性を提供することを目的としている。シミュレーションの結果は、フレームワークによって行われるシミュレーション無しでは不可能であったガイド及び予測を提供する。
異なる有利な実施形態では、図６の定義６０２、動作６０４、及びＧＵＩ言語６０６に異なる特徴を付与するように特に設計された言語を使用して、ソースコード６００を実施することができる。他の有利な実施形態では、図６のソースコード６００は、他の既存の言語又はプログラム方法論の機能及び特徴も含むことができる。
【０１１４】
異なる有利な実施形態では、人工知能システムを使用して、例えば図６の定義６０２及び／又は動作６０４のようなソースコード６００の一部を実施することができる。一部の有利な実施形態では、ニューラルネットワークの形態の人工知能（又はその他の形態の人工知能）を使用して、様々なオブジェクトをシミュレートすることができる。例えば、ニューラルネットワークを使用して、人又は動物のような生物をシミュレートすることができる。
例えば、人工知能は、形式論及び統計学的分析を特徴とする機械の学習能力を用いる従来の人工知能とすることができる。加えて、人工知能は、例えば計算知能の形式でもよい。計算知能は、反復による発達又は学習を行う。この種の人工知能は、経験式に基づいて学習することができる。計算知能の例には、例えば、ニューラルネットワーク、ファジー理論、及び遺伝的アルゴリズムが含まれるが、これらに限定されない。これらのプログラム技術を使用して、図６のソースコード６００内に追加の機能を補充又は提供することができる。他の有利な実施形態では、図６のソースコード６００は、種々のプログラム技術に加えて又は連動させて、既存のプログラム言語を使用して実施することができる。
【０１１５】
有利な一実施形態では、ニューラルネットワークのようなプログラム技術を使用して、図６のソースコード６００の一部を実施することができる。例えば、図６の定義６０２の一部又は全部は、ニューラルネットワークを使用して実施することができる。ニューラルネットワークとは、生物学的ニューラルネットワークに基づく数学的計算モデルである。ニューラルネットワークは非線形統計データモデル化プールを提供し、入力と出力との複雑な関係をモデル化するために使用することができる。ニューラルネットワークは、図６の定義６０２内の種々のオブジェクトの機能の学習を行うために用いることができる。
一実施例では、ニューラルネットワーク技術を使用して、人、動物又は図６のソースコード６００の定義６０２内において適切なその他のオブジェクトといった種々のオブジェクトに学習機能を付与することができる。この種の実施例では、ＮＮは、ニューラルネットワークの種類の変数を示す。宣言文の一例は、「ＮＮ  ｎ；」である。本実施例において、この種の命令文は、ニューラルネットワークの変数を宣言する。子供、ｎ．ｉｎｐｕｔ、ｎ．ｏｕｔｐｕｔ、及びｎ．ｈｉｄｄｅｎも作成することができる。これら他の変数は、ニューラルネットワーク内において入力層、出力層、及び隠れ層を表わす。これらの層は、ユーザによる異なる層へのニューロンの追加を可能にする。これらの異なる層により、入力ニューロンを、子供として入力ニューラルネットワーク層に加えることができる。
【０１１６】
図３４は、入力ニューロンの実施例として命令文３４００及び３４０２を示す。命令文３４００のセクション３４０４は、ニューラルネットワークｎの入力ニューロンとして「ｌｅｆｔ  ｏｐｅｒａｎｄ」を宣言する。この入力数は、入力ニューロンの総数を読み取るために使用することもできる。メンバー「ｉｎｐｕｔ」の値は、新規メンバーが追加される度に１ずつ増加する。結果として、入力値は入力ニューロンの総数となる。これらの命令文は、Ｃ言語を使用して実行することができるＨＢＤＬ擬似コードの例である。例えば、Ｃ＋及び／又はオブジェクティブＣといった他の言語。
このような実施例では、入力ニューロンの変数の範囲は、０〜１の値とすることができる。各入力ニューロンの変数は、最小範囲及び細大範囲を有する。これらの範囲により、ユーザは当該範囲内にあらゆる値を入力することができる。用途に応じて、これらの値を使用前に正規化してもよい。
【０１１７】
図３５は、入力ニューロンのｌｅｆｔ  ｏｐｅｒａｎｄに定義された入力範囲の実施例として命令文３５００及び３５０２を示す。この実施例では、命令文３５００は最小値として−１０を定義し、命令文３５０２は最大値として１０を定義する。
図３６は、有利な一実施形態による入力行動の一命令文を示す。命令文３６００は、使用前に入力ニューロンを修正することを可能にする。つまり、入力ニューロンは、ニューロンによるユーザ入力の操作を可能にするためにニューロンに付与されたか又は関連付けられたコードを有する。例えば、ユーザ入力は短くても長くてもよい。この実施例では、ニューロンの入力行動は、長短を変換して０〜１に評価する。命令文３６００は、この種の行動を入力ニューロンに付与するために使用可能なコードの一実施例である。
【０１１８】
図３７は、有利な一実施形態による出力宣言文を示す。命令文３７００は、出力ニューラルネットワーク層に子供を追加するために使用される命令文の一実施例である。
【０１１９】
ここで、有利な一実施形態によるニューラルネットワーク内の出力範囲の命令文を示す図３８を参照する。この実施例では、命令文３８００及び３８０２は、出力ニューロンに設定できる範囲の実施例である。命令文３８００及び３８０２によって最小及び最大範囲が設定される。
この特定の実施例では、出力ニューロンの最小値は−５０であり、最大値は５０である。さらに、ユーザは、正規化された絶対出力を特定の範囲内の一の値に変換することができる。例えば、１という出力が５０に変換され、０．５という出力が０に変換される。さらに、出力ニューロンは、出力を操作するためのコードに関連付けることもできる。
【０１２０】
図３９は、有利な一実施形態による、出力行動を修正するための命令文を示す。命令文３９００は、出力ニューロンに関連付けることが可能なコードの一実施例である。この実施例では、ユーザ出力は、低くても高くてもよい。この特定の実施例の場合、ニューロンの出力行動は、０〜１の値を、低い及び高いに変換する。
図４０は、有利な一実施形態による隠れ層の命令文を示す。命令文４０００及び４００２は、任意のニューラルネットワークの隠れ層を宣言するために使用できる命令文の実施例である。このような実施例では、隠れ層の順序は、隠れ層の宣言文の順序に従う。隠れ層の変数の値は、特定の隠れ層に割り当てられるニューロンの数を特定する。この実施例では、命令文４０００及び４００２は二つの隠れ層を宣言している。命令文４０００によって定義される第１の層は、五つのニューロンを含み、命令文４００２に宣言される第２の層は三つのニューロンを定義する。
【０１２１】
図４１に示すコード４１００は、ニューラルサンプル値を特定するために使用されるサンプルニューラルネットワークメンバーを示す。異なるサンプルを特定することができる。各入力及び出力ニューロンは、命令文内に「サンプル［整数］」を含む。ニューラルネットワークが完成したら、ユーザはニューラルネットワークを訓練して使用することができる。
図４２は、有利な一実施形態による、ニューラルネットワークを訓練するための例示的命令文を示す。命令文４２００、４２０２、及び４２０４は、ニューラルネットワークの訓練を実行するために使用される命令文の実施例である。命令文４２００は、ニューラルネットワークが５００回訓練されることを示している。命令文４２０２は３００回の、命令文４２０４は２００回の訓練回数を示している。このような実施例では、訓練は累積性で結果が保存される。これらの異なる結果を、特定の目的のために、図６の定義６０２又はソースコード６００内に保存することができる。
【０１２２】
図４３は、有利な一実施形態によるニューラルネットワーク内の演算機能を示す。この実施例では、命令文４３００及び命令文４３０２は、入力ニューロンに一の機能を実行させて結果を返させるのに使用される命令文の一実施例である。これらの実施例では、命令文４３０４は、命令文４３００及び４３０２の別の表現である。
【０１２３】
図４４は、有利な一実施形態によるニューラルネットワークの一実施例を示す。この実施例では、コード４４００は、ニューラルネットワークを訓練及び実行するための命令文と共にニューラルネットワークの定義を含む。入力宣言文はセクション４４０２に見られる。入力範囲はセクション４４０４及び４４０６に見られる。ニューロンに関連付けられたコードは、命令文４４０８及び４４１０に見られる。出力範囲はセクション４４１２に、出力される行動は命令文４４１４に見られる。
隠れ層はセクション４４１６に定義されており、機能性は命令文４４１８に見られる。サンプルはセクション４４２０に見られ、命令文４４２２は訓練命令文の一実施例である。セクション４４２４はニューラルネットワークの操作に使用される命令文の実施例を示す。セクション４４２４内の命令文４４２６は結果を示す。
【０１２４】
ここで、有利な一実施形態による、ニューラルネットワークの操作結果を示す図４５を参照する。この実施例では、ディスプレイ４５００は、図４４のコード４４００の表示命令文４４２６に応答して生成されたディスプレイの一実施例である。
ニューラルネットワークに加えて、図６の定義６０２内のオブジェクトの様々な属性及び特性を管理するために動的リストを使用することができる。動的リストは、図８のオブジェクト８００の特徴８０４及び図９のオブジェクト９００の特徴９０４のような特徴を定義するために使用することができる。
【０１２５】
例えば、動的リストを使用して、オブジェクトのコンポーネント、能力、特徴、又はその他の適切なパラメータを識別することができる。例えば、オブジェクトが車である場合、動的リストを使用して、車輪、エンジン、ボディ、塗料、トランスミッション、窓、及びその他構成部品などの構成部品を識別することができる。車に構成部品が付け加えられたり取り外されたりすると、このリストはこれらの変化を識別するように修正される。
異なる有利な実施形態では、リストにはどのような変数も使用できる。動的リストを用いることで、予想される構成部品又はパラメータに基づいてリストの大きさを予め決定する必要があることにより定義が制約されることはない。そうではなく、様々なパラメータ又はコンポーネントが追加されたり、特定の定義から削除されたりするにつれて、リストの大きさは変化することができる。
【０１２６】
図４６には、有利な一実施形態によるリストの一実施例が示されている。この実施例では、コード４６００は、命令文４６００中のｌｉｓｔ１を定義している。命令文４６０２、４６０４、及び４６０６は、ｌｉｓｔ１に含まれる値の三つの変数を識別する。この実施例では、ｌｉｓｔ１はアレイとして機能する。コード４６００中の命令文４６０８は、アレイの大きさを識別する値を返すサイズ関数の一実施例である。この実施例では、命令文４６０８は値３を返す。
命令文４６１０及び４６１２は、コード４６００中のリストの検索に使用される命令文の一実施例である。命令文４６１０は、ｔｒｕｅに相当する値２を返し、命令文４６１２はｆａｌｓｅに相当する値０を返す。命令文４６１０及び４６１２のこれら検索機能を使用して、リストが特定の値を含むかどうかを決定することができる。リスト中に特定の値が存在する場合、リスト中のその値のインデックスが返される。存在しない場合、値０が返される。
【０１２７】
図４７は、有利な一実施形態による、リストからの変数の削除を示す。この実施例では、コード４７００はセクション４７０２に定義されたリストを含む。命令文４７０４は、コード４７００中のリストから一のアイテムを削除するために使用可能な削除機能である。命令文４７０４はリストを検索して特定のアイテムがリスト中に存在するかどうかを決定する。アイテムが見つかった場合、当該アイテムがリストから削除される。命令文４７０４は、削除されるアイテムを識別するインデックスを返す。リスト中にアイテムが無かった場合、命令文４７０４は０を返す。この実施例では、コード４７００中のリストに値２５は存在せず、ゼロが返されており、何の動作も行われない。この実施例では、値を識別することによりアイテムが削除される。
図４８は、有利な一実施形態による、アイテムを削除するためのコードを示す。この実施例では、コード４８００はセクション４８０２のリストを定義する。命令文４８０４及び４８０６は、インデックスの値に基づいて、リスト中のアイテムを削除するのに使用される命令文である。命令文がリストの大きさより小さいインデックスの値を識別する場合、リスト中のアイテムの位置が決定され、アイテムは削除される。次いでこの機能は削除されたアイテムの値を返す。逆の場合、アイテムがリスト中に見つからなかったことを意味する０を返す。セクション４８０２に定義されるように、リストには３つのアイテムしか含まれていないので、命令文４８０４は０を返す。結果として命令文４８０６は、命令文４８０８に定義されている削除されているアイテムにより、２０を返す。
【０１２８】
図４９は、有利な一実施形態による、リスト中のアイテムを操作するためのコードを示す。この実施例では、コード４９００を使用して、リスト中のアイテムを操作することができる。このような実施例では、コード４９００は、スタックのリストを使用するためのプッシュ及びポップ機能を含む。命令文４９０２は、操作される対象のリストを識別する。この実施例では、セクション４９０４は、リストに対して行われる三つのプッシュを識別する。命令文４９０６は、リストに対して行われる一のポップを示す。命令文４９０６は、リストの前面からポップされたアイテムから一の値を返す。
これらの種類の機能は、コンピュータシステムのスタックの操作に使用される機能と類似している。プッシュは、特定のアイテムをリストの一番上にプッシュする又は動かすために使用される。ポップは、リストの一番上にあるアイテムの値を返すために使用される。ポップ命令文が値又はパラメータを含む場合、この命令文はパラメータの値に従ってスタックから値をポップするか又は返す。このような実施例では、命令文４９０８中でポップされているアイテムは、インデックス値３を有するアイテムであり、リスト中において３番目のアイテムである。
【０１２９】
図５０は、有利な一実施形態による、リストのキューとしての使用を示す。この実施例では、コード５０００は、キューとしてリストを操作するために使用可能なエンキューとデキューとを示している。命令文５００２に示されるようなエンキュー機能は、リストの一番下に引数を加える。
命令文５００４に示されるようなデキュー機能は、リストの一番上のアイテムを削除し、そのアイテムの値を返す。この実施例では、命令文５００２はｌｉｓｔ１にアイテムを加え、命令文５００６はキューの一番上に別のアイテムを加える。ここで、命令文５００２中のアイテムはキューの２番目となる。命令文５００８はまた別のアイテムをキューに加え、他のアイテムをキューの下方へ押しやる。
【０１３０】
図５１は、有利な一実施形態による、リスト中のアイテムの読み取りを示す。この実施例では、コード５１００は、セクション５１０２で定義されるように、リストの一番上と一番下からのアイテムの読み取りを示す。命令文５１０４は、リストの一番上に位置するアイテムを読み取り、命令文５１０６はリストの一番下に含まれるアイテムを読み取る。
【０１３１】
図５２は、有利な一実施形態による、リスト中の検索属性を示す。コード５２００は、リストの検索状態の識別に使用される命令文を含む。命令文５２０２は、リストに検索状態が設定されているかを識別する。命令文５２０２がｔｒｕｅと等しく設定されている場合、アイテムはそれらの値に従ってリスト中に挿入される。命令文５２０４は検索順序を識別する。
命令文５２０４がｔｒｕｅに等しく設定されている場合、リストは小さい方から大きい方へと降順に検索される。この実施例では、命令文５２０４はｆａｌｓｅに等しく設定されている。その結果、セクション５２０６に示されるように、アイテムは降順にリストに追加される。さらに、追加の命令文を使用してリストを様々な順序で検索することができる。
【０１３２】
図６のソースコード６００の実施に使用可能なプログラム技術の別の実施例はファジー理論である。ファジー理論の実施に使用される言語の一実施例はＰｒｏｌｏｇであり、これはファジー理論及び人工知能プログラミングに使用可能な論理型プログラミング言語である。
ここに開示される実施例では、ファジー理論システムは、オペランドが複数のセットから得られた条件である論理的命令文に基づくことができる。一実施例では、そのセットは、例えば、燃料、距離、及び速度とすることができる。燃料は、三つの条件、即ち、少、中、多を含むことができる。距離は、近距離及び遠距離とすることができる。このような実施例では、速度は、低、中、及び高とすることができる。これらのセットを使用して、燃料が少ない又は近距離の場合は速度を低とする、などのルールを適用することができる。別のルールは、燃料が中程度で遠距離の場合、速度を中にすることである。３番目のルールは、燃料が多で遠距離の場合、速度を高にすることである。ファジー理論により、セットの異なるメンバーについて範囲を設定することができる。これらの範囲は最小範囲及び最大範囲を含む。
【０１３３】
図５３は、有利な一実施形態による、燃料、距離及び速度を用いたファジー理論の一実施例を示す。この実施例では、コード５３００はセクション５３０２にこれらのセットを定義する。燃料は整数値であり、距離及び速度は浮動変数である。セクション５３０４は、燃料の最小範囲及び細大範囲を１〜１００の間で識別する。
燃料の開始条件及び終了条件は、セクション５３０６に定義される。このセクションは、ファジーセットの左右の端を識別する。セクション５３０８、５３１０、及び５３１２は、燃料の条件を識別する。セクション５３０８は、ｔｒａｐｅｚｏｉｄ条件を、セクション５３１０はｔｒｉａｎｇｌｅ条件を、セクション５３１２はＢｅｌｌ  ｃｕｒｖｅ条件を識別する。
【０１３４】
距離の同様の定義はセクション５３１４に見出される。ファジー論理のルールは、この実施例ではセクション５３１６に定義されている。セクション５３１８は、燃料及び距離の初期値を識別する。命令文５３２０は、速度の計算に使用される。
図６のソースコード６００内の様々なオブジェクトのシミュレーションに使用可能な別の種類のプログラム技術は、進化的計算を利用する。進化的計算は、一種の人工知能であえる。特定の一方法又は方法論は遺伝的アルゴリズムである。このアルゴリズムは、解決策を識別するために使用される検索技術である。この種の技術は、グローバルサーチヒューリスティック型の技術と考えられる。遺伝的アルゴリズムにより、遺伝子並びに染色体を断じることができる。適応機能、選択プロセス、及び組換え機能も、この種の技術を用いて特定される。
【０１３５】
ここで、有利な一実施形態による、遺伝的アルゴリズムを使用した方程式の解法を示す図５４を参照する。この実施例では、コード５４００は、方程式２Ｘ＋３Ｙ＝２０を解くために使用される。
この実施例では、セクション５４０２において二つの遺伝子が初期化される。これら二つの遺伝子は変数Ｘ及びＹに対応する。セクション５４０４において染色体が遺伝子に添加される。命令文５４０６において適応機能のコードを初期化することができる。選択機能のコードは命令文５４０８を用いて特定することができる。組換え機能のコードは命令文５４１０において特定できる。
【０１３６】
これらの機能のコードは、特定の命令文に利用可能な機能を用いて実施することができる。これらの選択プロセスは、コードによって特定される最適な染色体又は最も良く適応する染色体を選択するために使用される。例えば、ルーレット選択プロセスを使用することができる。命令文５４１０中の組換え機能に関し、この命令文を使用して染色体の新規世代を形成するためのコードを識別することができる。
一実施例では、２値変数クロスオーバー法を使用することができる。命令文５４１２はプロセスのエラーマージンを特定し、命令文５４１４はコード５４００中の進化機能を呼び出す。このような実施例では、命令文５４１４で識別される新化プロセスは、最も良く適応する染色体のエラーマージンが命令文５４１２で特定されるエラーより小さくなる度に停止する。コード５４００に定義されるように本プロセスを実行することにより、遺伝子Ｘは染色体に最も良く適応するＸの値を返し、遺伝子Ｙは染色体に最も良く適応するＹの値を返す。
【０１３７】
図５５Ａ及び５５Ｂは、有利な一実施形態による、ソースコード中のオブジェクトに対するコードを示す。この実施例では、コード５５００は、フォレストの形態のオブジェクトの定義の一実施例である。セクション５５０２はフォレスト内のツリーの色を識別する。コード５５００のセクション５５０４は、フォレストのグリッドを識別する。セクション５５０６は、フォレストのグリッド内に存在しうるツリーを定義する。セクション５５０８はフォレストのツリーの一の行を定義する。セクション５５１０は、セクション５５０８で定義されるように、ツリーの一又は複数の行を含むツリーのパッチを生成するために使用される。セクション５５１２は、フォレストの提示に使用可能なコードの一実施例である。このような実施例では、ライン５５１４及び５５１６は、フォレスト内にランダム性を提供するために使用される変換命令文である。例えば、これらの命令文に加えて又は替えて、回転及び／又はスケールの命令文のような他の命令文も使用できる。
このような実施例では、コード５５００はＣ言語を使用して書かれる。当然のことながら、フォレストの定義を生成するためにあらゆる言語を使用することができる。さらに、フォレストの提示は、図６のソースコード６００中の定義６０２に見出される一のオブジェクトの実施例である。当然のことながら、コードは、用途に応じてあらゆる言語を使用して又はあらゆるオブジェクトのために、生成することができる。
【０１３８】
ここに示した種々の実施形態のフローチャート及びブロック図は、装置、方法及びコンピュータプログラム製品の幾つかの可能な実施形態のアーキテクチャ、機能性、及び操作を示す。これに関し、フローチャート又はブロック図の各ブロックは、コンピュータで使用可能又は読み取り可能なプログラムコードの、一のモジュール、セグメント、又は部分を表わし、これは一又は複数の特定の機能を実施するための一又は複数の実行可能な命令を含んでいる。幾つかの他の実施形態では、ブロック内に言及される一又は複数の機能を、図に示した順序とは異なる順序で発生させることができる。例えば、場合によっては、連続して示される二つのブロックをほぼ同時に実行することができるか、又は関連する機能性に応じて、時にそれらブロックを逆の順序で実行することができる。
種々の有利な実施形態は、完全にハードウェアで実現された形態、完全にソフトウェアで実現された形態、又はハードウェアとソフトウェア両方の要素を含んで実現された形態を取ることができる。一部の実施形態はソフトウェアで実施され、これには例えばファームウェア、常駐ソフトウェア、及びマイクロコードのような形式が含まれるがこれらに限定されない。
【０１３９】
さらに、種々の実施形態は、命令を実行するコンピュータ或いは任意のデバイス又はシステムにより使用されるか、或いはそれと連動して使用されるプログラムコードを提供する、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体からアクセス可能なコンピュータプログラム製品の形態を採ることができる。本開示の目的に関し、コンピュータで使用可能又はコンピュータで読み取り可能な媒体は、通常、命令実行システム、装置、又はデバイスにより使用されるか又はそれと連動して使用されるプログラムを、含む、保存する、通信する、伝播する、或いは転送することができる任意の有形装置とすることができる。
コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、例えば、電子システム、磁気システム、光システム、電磁システム、赤外線システム、又は半導体システムであるか、或いは伝播媒体であるが、これらに限定されない。コンピュータで読み取り可能な媒体の非限定的実施例には、半導体又は固体メモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが含まれる。光ディスクには、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。このような実施例では、物理的な又は有形のコンピュータで読み取り可能な媒体を、追記型コンピュータ記憶媒体と称する。
【０１４０】
さらに、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを含むか又は保存することができ、よって、コンピュータで読み取り可能な又は使用可能なプログラムコードがコンピュータ上で実行されると、このようなコンピュータで読み取り可能な又は使用可能なプログラムコードの実行により、コンピュータは、通信リンクを介して別のコンピュータで読み取り可能な又は使用可能なプログラムコードを送る。このような通信リンクは、例えば、限定しないが、物理的媒体又は無線媒体を使用することができる。
コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードの保存及び／又は実行に適したデータ処理システムは、システムバスのような通信ファブリックを介してメモリ要素に直接又は間接に連結された一又は複数のプロセッサを含む。メモリ要素は、プログラムコードが実際に実行される間に使用されるローカルメモリ、大量記憶装置、及び、コードが実行される間に大量記憶装置からコードを取り出す回数を減らすための、少なくとも何らかのコンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを一時的に記憶するキャッシュメモリを含むことができる。
【０１４１】
入力／出力又はＩ／Ｏデバイスを、直接、又は中間のＩ／Ｏコントローラを介して、本システムに連結することができる。これらのデバイスは、例えば、キーボード、タッチスクリーンディスプレイ、及びポインティングデバイスを含むが、これらに限定されない。種々の通信アダプタをシステムに連結することにより、中間のプライベート又はパブリックネットワークを介して処理システムを他のデータ処理システム又は遠隔プリンタ又は貯蔵装置に連結することもできる。非限定的な実施例はモデムであり、ネットワークアダプタは、現在利用可能な通信アダプタのごく一部である。
本明細書の説明は、例示及び説明を目的としており、包括的であることを意図しておらず、開示された形態の開示内容に限定されるものではない。当業者であれば、多数の修正及び変更が可能であることは明らかである。さらに、異なる有利な実施形態は、他の有利な実施形態とは異なる利点を提供しうる。選択された一又は複数の実施形態は、本開示内容の理念、実用例を最もよく説明し、他の当業者が、考慮される特定の用途に適した様々な修正が施された様々な実施形態の開示内容を理解できるように、選択及び説明されている。
【図１】
2010520535.tif 000003
【図２】
2010520535.tif 000004
【図３】
2010520535.tif 000005
【図４】
2010520535.tif 000006
【図５】
2010520535.tif 000007
【図６】
2010520535.tif 000008
【図７】
2010520535.tif 000009
【図８】
2010520535.tif 000010
【図９】
2010520535.tif 000011
【図１０】
2010520535.tif 000012
【図１１】
2010520535.tif 000013
【図１２】
2010520535.tif 000014
【図１３】
2010520535.tif 000015
【図１４】
2010520535.tif 000016
【図１５】
2010520535.tif 000017
【図１６】
2010520535.tif 000018
【図１７】
2010520535.tif 000019
【図１８】
2010520535.tif 000020
【図１９】
2010520535.tif 000021
【図２０】
2010520535.tif 000022
【図２１】
2010520535.tif 000023
【図２２】
2010520535.tif 000024
【図２３】
2010520535.tif 000025
【図２４】
2010520535.tif 000026
【図２５】
2010520535.tif 000027
【図２６】
2010520535.tif 000028
【図２７】
2010520535.tif 000029
【図２８】
2010520535.tif 000030
【図２９】
2010520535.tif 000031
【図３０】
2010520535.tif 000032
【図３１】
2010520535.tif 000033
【図３２】
2010520535.tif 000034
【図３３】
2010520535.tif 000035
【図３４】
2010520535.tif 000036
【図３５】
2010520535.tif 000037
【図３６】
2010520535.tif 000038
【図３７】
2010520535.tif 000039
【図３８】
2010520535.tif 000040
【図３９】
2010520535.tif 000041
【図４０】
2010520535.tif 000042
【図４１】
2010520535.tif 000043
【図４２】
2010520535.tif 000044
【図４３】
2010520535.tif 000045
【図４４】
2010520535.tif 000046
【図４５】
2010520535.tif 000047
【図４６】
2010520535.tif 000048
【図４７】
2010520535.tif 000049
【図４８】
2010520535.tif 000050
【図４９】
2010520535.tif 000051
【図５０】
2010520535.tif 000052
【図５１】
2010520535.tif 000053
【図５２】
2010520535.tif 000054
【図５３】
2010520535.tif 000055
【図５４】
2010520535.tif 000056
【図５５Ａ】
2010520535.tif 000057
【図５５Ｂ】
2010520535.tif 000058
【国際調査報告】
2010520535.tif 000059
2010520535.tif 000060
2010520535.tif 000061