(57)【要約】  人間の行動をシミュレートするためのコンピュータが実行する方法、装置、コンピュータの使用可能なプログラムコードである。人間の行動を予測するための言語で書かれたソースコードはネットワークデータ処理システムの記憶システム上に位置付けられる。ハードウェア上で実行する解釈装置は言語解釈装置と会話モジュールを有する。言語解釈装置は新しい定義および解釈されたソースコードを生成するため人工知能を使用してソースコードによりシミュレーションを実行する。グラフィカル・ユーザインターフェースプロセッサは解釈されたソースコードを言語解釈装置から受信し、装置依存出力を生成する。装置は装置依存出力を表示し、ユーザ入力を受信し、受信されたユーザ入力をグラフィカル・ユーザインターフェースプロセッサへ送信する。通信モジュールは受信されたユーザ入力をグラフィカル・ユーザインターフェースプロセッサから受信し、新しい定義を言語解釈装置から受信し、言語解釈装置により実行される変更されたソースコードを形成するためにソースコードを変更する。【選択図】図２
2010520536.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークデータ処理システムの記憶システムに位置され、人間の行動を予測するための言語で書かれるソースコード（402、510、600）と、
ネットワークデータ処理システム（100）のハードウェアで動作し、言語解釈装置（1704）および通信モジュール（1702）を含んでおり、言語解釈装置（1704）は新しい定義および解釈されたソースコードを生成するために人工知能（802、3202）を使用してソースコード（402、510、600）によりシミュレーションを実行する解釈装置（404、518、1700）と、
ネットワークデータ処理システム（100）のハードウェアで動作し、受信され解釈されたソースコードを形成しその受信され解釈されたソースコードを使用して装置依存出力を生成するために解釈されたソースコードを言語解釈装置（1704）から受信するグラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）と、
グラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）と通信し、装置依存出力を表示し、受信されたユーザ入力を形成するためにユーザ入力を受信し、受信されたユーザ入力をグラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）へ送信し、通信モジュール（1702）は受信されたユーザ入力をグラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）から受信し、新しい定義を言語解釈装置（1704）から受信し、言語解釈装置（1704）により実行される変更されたソースコードを形成するために受信されたユーザ入力と新しい定義によりソースコード（402、510、600）を変更する装置のセット（408、523、530、532、2618）とを具備している人間の行動をシミュレートする装置。
【請求項２】
解釈装置（404、518、1700）はさらに第１の暗号化及び解読モジュール（1706、2602）を含み、グラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）はさらに第２の暗号化及び解読モジュール（1706、2602）を含み、第１の暗号化及び解読モジュール（1706、2602）は暗号化された出力を形成するために装置依存出力を暗号化し、暗号化された出力を第２の暗号化及び解読モジュール（1706、2602）へ送信し、第２の暗号化及び解読モジュール（1706、2602）は受信され解釈されたソースコードを形成するために暗号化された出力に対して解読する請求項１記載の装置。
【請求項３】
言語解釈装置（1704）は、
識別されたトークンを形成するためにソースコード（402、510、600）のトークンを識別する言語解析装置と、
識別されたトークンを使用して文を作成する文法構文解析ツール（1730）と、
人工知能（802、3202）を使用して文法構文解析ツール（1730）により作成された文を実行する実行モジュール（1732）とを具備している請求項１記載の装置。
【請求項４】
通信モジュールは、
登録モジュール（1726）と、
入力モジュール（1724）と、
ディスパッチャモジュール（1722）とを具備している請求項３記載の装置。
【請求項５】
記憶システムは複数の記憶装置である請求項１記載の装置。
【請求項６】
複数の記憶装置はネットワークデータ処理システム（100）中の異なる位置にある請求項５記載の装置。
【請求項７】
グラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）はハードウェアの第１の部分で動作し、解釈装置（404、518、1700）はハードウェアの第２の部分で動作する請求項１記載の装置。
【請求項８】
言語解釈装置（1704）はソースコード（402、510、600）中の言語のトークンを識別し、その言語の文を作成し、文から行為を実行する請求項１記載の装置。
【請求項９】
言語解釈装置（1704）は装置依存出力流のセットの形態で装置依存出力を生成する請求項１記載の装置。
【請求項１０】
検索されたデータを形成するためにネットワークデータ処理システム（100）の記憶システム中に記憶されたソースコード（402、510、600）からデータを検索し、
結果を生成するためにネットワークデータ処理システム（100）上で実行する解釈装置（404、518、1700）を使用して人間の行動のシミュレーションを行うために検索されたデータを解釈し、
ネットワークデータ処理システム（100）上で実行するグラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）を使用して装置依存データをその結果から生成し、装置依存データは結果を提示するために使用されることができ、
変更されたソースコードを形成するために結果を使用してソースコード（402、510、600）を変更し、変更されたソースコードは人間の行動を予測するためその後の解釈で使用される新しいデータを提供するステップを含んでいる人間の行動をシミュレートするためのコンピュータが実行する方法。
【請求項１１】
装置のセット（408、523、532、2618）で装置依存データを提示するステップを更に含んでいる請求項１５記載のコンピュータが実行する方法。
【請求項１２】
さらに形成するため解釈装置（404、518、1700）の装置のセット（408、523、532、2618）からユーザ入力を受信し、
変更されたソースコードを形成するために受信されたユーザ入力を使用して、解釈装置（404、518、1700）によりソースコード（402、510、600）を変更し、
変更されたソースコードを使用して解釈装置（404、518、1700）で人間の行動のシミュレーションを行う動作を続けるステップを含んでいる請求項１６記載のコンピュータが実行する方法。
【請求項１３】
さらに、解釈装置（404、518、1700）からの結果を暗号化形態でグラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）へ送信するステップを含んでいる請求項１５記載のコンピュータが実行する方法。
【請求項１４】
グラフィカル・ユーザインターフェースプロセッサ（406、522、524、528、2600）は複数の異なるデータ処理システムに位置されている請求項１５記載のコンピュータが実行する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は改良されたデータ処理システム、特にデータ処理のための方法及び装置を提供し、特に本発明はコンピュータが実行する方法、装置、人間の行動をモデル化しシミュレートするためのコンピュータが使用可能なプログラムコードに関する。
【背景技術】
【０００２】
本願は参考文献とここで組み込まれている2007年３月１日出願の米国暫定特許出願第60/892,422号明細書（発明の名称“Human Behavior Modeling and Simulation Framework”）に関し、その優先権の特典を主張する。
【０００３】
人間の行動は人間により行われる活動の集合である。これらの活動は例えば文化、態度、感情、価値、エチケット、権威、信仰および／または強制のような要因により影響される。人間の行動はあるものは共通であり、あるものは異常であると考えられ、あるものは容認できると考えられ、その他は容認可能限度外である範囲内に入る。人々の行動は心理学、社会学、人類学のような多くの学問の分野により研究されている。さらに最近では、コンピュータの使用が人間の行動の研究に適用されている。
【０００４】
さらに、人間の行動のシミュレーションは軍事演習と計画の実行に使用されている。人間の行動のシミュレーションはまた経済的及び社会的行為のようなその他のシミュレーションの予測に関して使用されることもできる。人間の行動を予測する能力は訓練プログラムの開発に有用であろう。訓練者がいかに異なる刺激に応答するかを知ることは訓練プログラムの開発と変更に使用されることができる。
【０００５】
現在のモデル及びシミュレーションプログラムは異なる理由で人間の行動を適切にシミュレートしない。１例として、現在利用可能なシミュレーションプログラムは特定のタイプのシミュレーションにのみ適している。結果として異なるタイプのシミュレーションが必要とされるとき、新しいプログラムがそのシミュレーションを行うために書かれる必要がある。さらにこれらのシミュレーションを変更するための関連性及び能力の数は限定されている。
【０００６】
それ故、改良されたコンピュータが実行する方法、装置、訓練プログラムで使用するための人間の行動をモデル化しシミュレートするコンピュータが使用可能なプログラムコードを有することが有効であろう。
【発明の概要】
【０００７】
有効な実施形態は、コンピュータが実行する方法、装置、人間の行動をモデル化するためのコンピュータが使用可能なプログラムコードを提供する。ソースコードはネットワークデータ処理システム中の記憶システムに位置付けられる。このソースコードは人間の行動を予測するための言語で書かれている。解釈装置はネットワークデータ処理システムのハードウェアで実行し、解釈装置は言語解釈装置と通信モジュールを含んでいる。言語解釈装置は新しい定義および解釈されたソースコードを生成するために人工知能を使用してソースコードによりシミュレーションを実行する。グラフィカル・ユーザインターフェースプロセッサはネットワークデータ処理システム中のハードウェアで動作する。グラフィカル・ユーザインターフェースプロセッサは受信され解釈されたソースコードを形成し、その受信され解釈されたソースコードを使用して装置依存出力を生成するために解釈されたソースコードを言語解釈装置から受信する。装置のセットはグラフィカル・ユーザインターフェースプロセッサと通信する。この装置のセットは装置依存出力を表示し、受信されたユーザ入力を形成するためにユーザ入力を受信し、受信されたユーザ入力をグラフィカル・ユーザインターフェースプロセッサへ送信する。通信モジュールは受信されたユーザ入力をグラフィカル・ユーザインターフェースプロセッサから受信し、新しい定義を言語解釈装置から受信し、言語解釈装置により実行される変更されたソースコードを形成するために受信されたユーザ入力と新しい定義によりソースコードを変更する。
【０００８】
別の有効な実施形態は人間の行動をシミュレートするためのコンピュータが実行する方法を提供する。データは検索されたデータを形成するためにネットワークデータ処理システム中の記憶システムに記憶されたソースコードから検索される。検索されたデータは結果を生成するためにネットワークデータ処理システム上で実行する解釈装置を使用して人間の行動のシミュレーションを行うために解釈される。装置依存データはネットワークデータ処理システム上で実行するグラフィカル・ユーザインターフェースプロセッサを使用してその結果から生成される。装置依存データは結果を提示するために使用されることができる。ソースコードは変更されたソースコードを形成するために結果を使用して変更される。変更されたソースコードは人間の行動を予測するために後続する解釈で使用される新しいデータを提供する。
【０００９】
別の有効な実施形態は人間の行動をシミュレートするためのデータ処理システムを提供する。このデータ処理システムは検索されたデータを形成するためにネットワークデータ処理システム中の記憶システムに記憶されたソースコードからデータを検索する検索手段を含んでいる。解釈手段は結果を生成するためにネットワークデータ処理システム上で実行する解釈装置を使用して人間の行動のシミュレーションを行うために検索されたデータを解釈するために設けられる。データ処理システムはまたネットワークデータ処理システム上で実行するグラフィカル・ユーザインターフェースプロセッサを使用してその結果から装置依存データを生成するための生成手段も含んでいる。装置依存データは結果を提示するために使用されることができる。変更手段は変更されたソースコードを形成するために結果を使用してソースコードを変更するために設けられる。変更されたソースコードは人間の行動を予測するためにそれに後続する解釈で使用される新しいデータを提供する。
【００１０】
特徴、機能、利点は本発明の説明の種々の実施形態で独立して実現されることができ、或いはさらにその他の実施形態で組合せられることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、有効な実施形態が構成されることができるデータ処理システムのネットワークの説明図である。
【図２】図２は、有効な実施形態によるデータ処理システムのブロック図である。
【図３】図３は、有効な実施形態によるシミュレーションシステムを示すブロック図である。
【図４】図４は、有効な実施形態による人間の行動のモデル化及びシミュレーション開発フレームワークの概略図である。
【図５】図５は、有効な実施形態によるフレームワークのモジュールの分布されたブロック図である。
【図６】図６は、有効な実施形態によるソースモジュールコードを示す図である。
【図７】図７は、有効な実施形態によるソースコードの定義部を示す図である。
【図８】図８は、有効な実施形態によるオブジェクトのブロック図である。
【図９】図９は、有効な実施形態によるオブジェクトの図である。
【図１０】図１０は、有効な実施形態による行為オブジェクトの図である。
【図１１】図１１は、有効な実施形態による行為の応用を示す図である。
【図１２】図１２は、有効な実施形態によるスケジューラ中断を有する時間変化における行為の適用を示す図である。
【図１３】図１３は、有効な実施形態による時間スロットがオーバーラップする事象の適用を示す図である。
【図１４】図１４は、有効な実施形態による継続する事象を示す図である。
【図１５】図１５は、有効な実施形態による継続する事象を示す図である。
【図１６】図１６は、有効な実施形態による継続する事象を示す図である。
【図１７】図１７は、有効な実施形態による解釈装置を示す図である。
【図１８】図１８は、有効な実施形態による字句解析装置のデータ流を示す概略図である。
【図１９】図１９は、有効な実施形態による文法構文解析ツールにより行われる構文パーズまたは構文解析を示す概略図である。
【図２０】図２０は、有効な実施形態による構文解析ツリーの別の例を示す概略図である。
【図２１】図２１は、有効な実施形態による解釈装置の実行モジュールを示す概略図である。
【図２２】図２２は、有効な実施形態によるトークンを発生するためのプロセスのフローチャートである。
【図２３】図２３は、有効な実施形態による人間の行動のシミュレーションを実行するためのプロセスのフローチャートである。
【図２４】図２４は、有効な実施形態による文または作品の生成のためのプロセスのフローチャートである。
【図２５】図２５は、有効な実施形態による作品のステートメントを実行するためのプロセスのフローチャートである。
【図２６】図２６は、有効な実施形態によるグラフィカル・ユーザインターフェース（ＧＵＩ）プロセッサを示す概略図である。
【図２７】図２７は、有効な実施形態によるグラフィカル・ユーザインターフェースプロセッサを通るデータ流を示す図である。
【図２８】図２８は、有効な実施形態によるディスプレイを示す図である。
【図２９】図２９は、有効な実施形態によるディスプレイの操作を示す図である。
【図３０】図３０は、有効な実施形態によるビットマップの変化を識別するためのプロセスのフローチャートである。
【図３１】図３１は、有効な実施形態による差データを処理するためのプロセスのフローチャートである。
【図３２】図３２は、有効な実施形態による人間の透明模範を与えるときに使用するコンポーネントを示す図である。
【図３３】図３３は、有効な実施形態による合成人間で生きた人間を置換するプロセスのフローチャートである。
【図３４】図３４は、有効な実施形態による入力ニューロンの例の図である。
【図３５】図３５は、有効な実施形態による入力ニューロンの左オペランドで規定された入力範囲の例を示す図である。
【図３６】図３６は、有効な実施形態による入力のステートメントを示す図である。
【図３７】図３７は、有効な実施形態による出力宣言を示す図である。
【図３８】図３８は、有効な実施形態によるニューラルネットワークの出力範囲に対するステートメントを示す図である。
【図３９】図３９は、有効な実施形態による出力行動を変更するステートメントを示す図である。
【図４０】図４０は、有効な実施形態による隠された層に対するステートメントを示す図である。
【図４１】図４１は、有効な実施形態によるサンプルニューラルネットワークを示す図である。
【図４２】図４２は、有効な実施形態によるニューラルネットワークを訓練する例示的な記述図である。
【図４３】図４３は、有効な実施形態によるニューラルネットワークの計算機能を示す図である。
【図４４】図４４は、有効な実施形態によるニューラルネットワークの１例を示す図である。
【図４５】図４５は、有効な実施形態によるニューラルネットワークの動作からの結果を示す図である。
【図４６】図４６は、有効な実施形態によるリストの１例を示す図である。
【図４７】図４７は、有効な実施形態によるリストから変数の削除を示した図である。
【図４８】図４８は、有効な実施形態によるアイテムを削除するコードの図である。
【図４９】図４９は、有効な実施形態によるリスト中のアイテムを操作するコードを示す図である。
【図５０】図５０は、有効な実施形態による待ち行列としてのリストの使用を示す図である。
【図５１】図５１は、有効な実施形態によるリスト中のアイテムの読取りを示す図である。
【図５２】図５２は、有効な実施形態によるリスト中の分類属性を示す図である。
【図５３】図５３は、有効な実施形態による燃料距離及び速度を使用するファジー理論実行の１例を示す図である。
【図５４】図５４は、有効な実施形態による遺伝的アルゴリズムを使用する式の解を示す図である。
【図５５Ａ】図５５Ａは、有効な実施形態によるソースコード中のオブジェクトのコードを示す図である。
【図５５Ｂ】図５５Ｂは、有効な実施形態によるソースコード中のオブジェクトのコードを示す図である。
【発明を実施するための形態】
【００１２】
説明の中で優秀な特性であると考えられている特徴を請求項で説明する。しかしながら説明自体とその好ましい使用モードと、さらにその目的及び利点は、添付図面を伴った有効な実施形態の以下の詳細な説明を参照することにより最良に理解されるであろう。  
図面、特に図１−２を参照すると、例示的な実施形態が実施されることができるデータ処理環境の例示的な形態が示されている。図１−２は単なる例示であり、異なる有効な実施形態が行われることができる環境に関して任意の限定を主張または示唆することを意図しないことを認識すべきである。示されている環境に対する多くの変形が行われることができる。
【００１３】
ここで使用されている語句「少なくとも１つ」はアイテムのリストと共に使用されるとき、１以上のアイテムの異なる組合せが使用されることができ、リスト中の各アイテムの１つだけが必要とされることを意味する。例えば「アイテムＡ、アイテムＢ、アイテムＣの少なくとも１つ」は例えば限定ではなくアイテムＡまたはアイテムＡおよびアイテムＢを含むことができる。この例はアイテムＡ、アイテムＢおよびアイテムＣまたはアイテムＢとアイテムＣを含むことができる。
【００１４】
図面を参照すると、図１は有効な実施形態を構成しているデータ処理システムのネットワークの説明図を示している。これらの示されている例では、ネットワークデータ処理システム100は人間の行動のモデル化及びシミュレーション開発フレームワークを実行するために使用される。このフレームワークは人間の行動を予測する能力を与える。
【００１５】
ネットワークデータ処理システム100は有効な実施形態が実施されることができるコンピュータ及びその他の装置のネットワークである。ネットワークデータ処理システム100はネットワーク102を含み、これはネットワークデータ処理システム100内で共に接続されている種々の装置とコンピュータとの間に通信リンクを設けるために使用される媒体である。ネットワーク102はワイヤ、無線通信リンクおよび／または光ファイバケーブルのような接続を含むことができる。
【００１６】
示されている例では、サーバ104とサーバ106は記憶装置108と共にネットワーク102に接続されている。さらにクライアント110、112、114はネットワーク102に接続されている。これらのライアント110、112、114は例えばパーソナルコンピュータ、ワークステーションコンピュータ、パーソナルデジタルアシスタントであってもよい。示されている例では、サーバ104はブートファイル、オペレーティングシステム画像、アプリケーションのようなデータをクライアント110、112、114に提供する。クライアント110、112、114はこの例ではサーバ104とサーバ106に対するクライアントである。ネットワークデータ処理システム100は示されていない付加的なサーバ、クライアント、他の装置を含むことができる。有効な実施形態における人間の行動を予測するためのフレームワークは、ネットワークデータ処理システム100中の１以上のデータ処理システムを使用して構成されることができる。
【００１７】
図２を参照すると、データ処理システムの図が例示的な実施形態にしたがって示されている。この例示的な例では、データ処理システム200はプロセッサ装置204、メモリ206、永続的な記憶装置208、通信装置210、入力／出力(Ｉ／Ｏ)装置212、ディスプレイ214間で通信を行う通信構造202を含んでいる。
【００１８】
プロセッサ装置204はメモリ206にロードされることのできるソフトウェアの命令を実行する役目を行う。プロセッサ装置204は特定の構成に応じて１以上のプロセッサのセットまたはマルチプロセッサコアであってもよい。プロセッサ装置204は主プロセッサが単一のチップ上で二次プロセッサと共に存在する１以上の異種プロセッサシステムを使用して構成される。別の例示的な例として、プロセッサ装置204は同じタイプの多数のプロセッサを含む対称型マルチプロセッサシステムであってもよい。
【００１９】
これらの例ではメモリ206は例えばランダムアクセスメモリまたは任意の他の適当な揮発性または不揮発性記憶装置であってもよい。永続的記憶装置208は特定の構造にしたがって種々の形態を取ることができる。例えば永続的記憶装置208は１以上のコンポーネント又は装置を含むことができる。例えば永続的記憶装置208はハードドライブ、フラッシュメモリ、書換可能光ディスク、書換可能磁気テープ、又は幾つかのそれらの組合せであってもよい。永続的記憶装置208により使用される媒体は取外し可能であってもよい。例えば取外し可能なハードドライブは永続的記憶装置208で使用されることができる。
【００２０】
通信装置210はこれらの例では他のデータ処理システム又は装置との通信を行う。これらの例では通信装置210はネットワークインターフェースカードである。通信装置210は物理的及び無線通信リンクの一方又は両者の使用により通信を行うことができる。
【００２１】
入力／出力装置212はデータ処理システム200に接続できる他の装置によるデータの入力および出力を可能にする。例えば入力／出力装置212はキーボードおよびマウスを通してユーザ入力に対する接続を行うことができる。さらに入力／出力装置212は出力をプリンタへ送信できる。ディスプレイ214は情報をユーザへ表示するための機構を提供する。
【００２２】
オペレーティングシステム及びアプリケーション又はプログラムの命令は永続的記憶装置208に位置される。これらの命令はプロセッサ装置204により実行するためにメモリ206へロードされることができる。異なる実施形態のプロセスはメモリ206のようなメモリ中に位置されることができるコンピュータ実行命令を使用してプロセッサ装置204により行われることができる。これらの命令はプロセッサ装置204のプロセッサにより読取られ実行されることができるプログラムコード、コンピュータの使用可能なプログラムコード、またはコンピュータの読取り可能なプログラムコードを指している。異なる実施形態ではプログラムコードはメモリ206又は永続的記憶装置208のような異なる物理的または有形のコンピュータの読取り可能な媒体で実施されることができる。
【００２３】
プログラムコード216は選択的に取外し可能なコンピュータの読取り可能な媒体218で機能形態で位置され、プロセッサ装置204により実行されるためにデータ処理システム200へロードされるか転送されることができる。プログラムコード216とコンピュータの読取り可能な媒体218はこれらの例ではコンピュータプログラムプロダクト220を形成する。１例では、コンピュータの読取り可能な媒体218は永続的記憶装置208の一部であるハードドライブの有効な記憶装置へ転送するための、例えばドライブまたは永続的記憶装置208の一部であるその他の装置へ挿入又は位置付けられる光または磁気ディスクのような実体的形態であってもよい。実体的形態では、コンピュータの読取り可能な媒体218はデータ処理システム200に接続されるハードドライブ、サムドライブ、またはフラッシュメモリのような永続的記憶装置の形態を取ってもよい。コンピュータの読取り可能な媒体218の実体的形態はコンピュータの記録可能な記憶媒体とも呼ばれている。幾つかの例では、コンピュータの読取り可能な媒体218は取外し可能でなくてもよい。
【００２４】
代わりに、プログラムコード216は通信装置210への通信リンクを通しておよび／または入力／出力装置212への接続を通してコンピュータの読取り可能な媒体218からデータ処理システム200へ転送されることができる。通信リンクおよび／または接続は例示的な例では物理的又は無線であってもよい。コンピュータの読取り可能な媒体はプログラムコードを含む通信リンク又は無線送信のような無形媒体の形態を取ってもよい。
【００２５】
データ処理システム200のための示されている異なるコンポーネントは異なる実施形態が実行されることができる方法に対して構造的な限定を与える意図はない。異なる例示的な実施形態はデータ処理システム200について示されているコンポーネントに加えて又はその代わりのコンポーネントを含むデータ処理システムで実行されることができる。図２の他のコンポーネントは示されている例示的な例から変化されることができる。
【００２６】
１例として、データ処理システム200の記憶装置はデータを記憶できる任意のハードウェア装置である、メモリ206、永続的記憶装置208、コンピュータの読取り可能な媒体218は実体的形態の記憶装置の例である。
【００２７】
別の例では、バスシステムは通信構造202を構成するために使用されることができ、システムバス又は入力／出力バスのような１以上のバスからなることができる。勿論、バスシステムはバスシステムに取付けられる異なるコンポーネント又は装置間のデータの転送を行う任意の適当なタイプのアーキテクチャを使用して構成されることができる。さらに、通信装置はモデム又はネットワークアダプタのようなデータの送信及び受信に使用される１以上の装置を含むことができる。さらにメモリは、例えば通信構造202に存在できるインターフェースおよびメモリ制御装置ハブで見られるようなメモリ206又はキャッシュであってもよい。
【００２８】
示されている例では、ネットワークデータ処理システム100はネットワーク102を有するインターネットであり、相互に通信するためのプロトコルの送信制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）の一式を使用するネットワーク及びゲートウェイの世界規模の集合を表している。勿論、ネットワークデータ処理システム100はインターネットに加えて又はその代わりの複数の異なるタイプのネットワークとして構成されることもできる。これらの他のネットワークは例えばイントラネット、構内網（ＬＡＮ）、広域網（ＷＡＮ）を含んでいる。図１は異なる実施形態の構造的限定ではなく１例であることを意図されている。
【００２９】
図２を参照すると、データ処理システムの図が有効な実施形態により示されている。データ処理システム200は図１のサーバ104と106及びクライアント110、112、114のようなサーバとクライアントを構成するために使用されることができる。この例示的な例では、データ処理システム200は通信構造202を含んでおり、これはプロセッサ装置204、メモリ206、永続的記憶装置208、通信装置210、入力／出力（Ｉ／Ｏ）装置212、ディスプレイ214間で通信を行う。
【００３０】
プロセッサ装置204はメモリ206にロードされることのできるソフトウェアの命令を実行するように動作する。プロセッサ装置204は１以上のプロセッサのセットでもよく、特定の構成に応じてマルチプロセッサコアであってもよい。さらに、プロセッサ装置204は主プロセッサが単一のチップ上で二次プロセッサと共に存在する１以上の異種プロセッサシステムを使用して構成される。別の例示的な例として、プロセッサ装置204は同じタイプの多数のプロセッサを含む完全対称型マルチプロセッサシステムであってもよい。
【００３１】
これらの例ではメモリ206は例えばランダムアクセスメモリまたは任意の他の適切な揮発性または不揮発性記憶装置であってもよい。永続的記憶装置208は特定の構造にしたがって種々の形態を取ることができる。例えば永続的記憶装置208は１以上のコンポーネント又は装置を含むことができる。例えば永続的記憶装置208はハードドライブ、フラッシュメモリ、書換可能光ディスク、書換可能磁気テープ、又は幾つかのそれらの組合せであってもよい。永続的記憶装置208により使用される媒体は取外し可能であってもよい。例えば取外し可能なハードドライブは永続的記憶装置208に対して使用されることができる。
【００３２】
通信装置210はこれらの例では他のデータ処理システム又は装置との通信を行う。これらの例では通信装置210はネットワークインターフェースカードである。通信装置210は物理的及び無線通信リンクの一方又は両者の使用により通信を行うことができる。
【００３３】
入力／出力装置212はデータ処理システム200に接続できる他の装置によるデータの入力および出力を可能にする。例えば入力／出力装置212はキーボードおよびマウスを通してユーザ入力の接続を行うことができる。さらに入力／出力装置212は出力をプリンタへ送信できる。ディスプレイ214は情報をユーザへ表示するための機構を提供する。
【００３４】
オペレーティングシステム及びアプリケーション又はプログラムに対する命令は永続的記憶装置208に位置される。これらの命令はプロセッサ装置204により実行するためメモリ206へロードされることができる。異なる実施形態のプロセスはメモリ206のようなメモリに位置されることができるコンピュータ実行命令を使用してプロセッサ装置204により行われることができる。これらの命令はプロセッサ装置204のプロセッサにより読取られ実行されることができるプログラムコード、コンピュータの使用可能なプログラムコード、またはコンピュータの読取り可能なプログラムコードを指している。異なる実施形態のプログラムコードはメモリ206又は永続的記憶装置208のような異なる物理的または有形のコンピュータの読取り可能な媒体で実施されることができる。
【００３５】
プログラムコード216は選択的に取外し可能なコンピュータの読取り可能な媒体218で機能形態で位置され、プロセッサ装置204により実行されるためにデータ処理システム200へロードされるか転送されることができる。プログラムコード216とコンピュータの読取り可能な媒体218はこれらの例ではコンピュータプログラムプロダクト220を形成する。１実施例では、コンピュータの読取り可能な媒体218は永続的記憶装置208の一部であるハードドライブの有効な記憶装置へ転送するための、例えばドライブまたは永続的記憶装置208の一部であるその他の装置へ挿入又は位置付けられる光または磁気ディスクのような実体的形態であってもよい。実体的形態では、コンピュータの読取り可能な媒体218はデータ処理システム200に接続されるハードドライブ、サムドライブ、またはフラッシュメモリのような永続的記憶装置の形態を取ってもよい。コンピュータの読取り可能な媒体218の実体的形態はコンピュータの記録可能な記憶媒体も指している。幾つかの例では、コンピュータの読取り可能な媒体218は取外し可能でなくてもよい。
【００３６】
代わりに、プログラムコード216は通信装置210への通信リンクを通しておよび／または入力／出力装置212への接続を通してコンピュータの読取り可能な媒体218からデータ処理システム200へ転送されることができる。通信リンクおよび／または接続は例示的な例では物理的又は無線であってもよい。コンピュータの読取り可能な媒体はプログラムコードを含む通信リンク又は無線送信のような無形媒体の形態を取ってもよい。
【００３７】
データ処理システム200の示されている異なるコンポーネントは異なる実施形態が実行されることができる方法に対して構造的な限定を与える意図はない。異なる例示的な実施形態はデータ処理システム200について示されているコンポーネントに加えて又はその代わりのコンポーネントを含むデータ処理システムで実行されることができる。図２の他のコンポーネントは示されている例示的な例から変化されることができる。
【００３８】
１例として、データ処理システム200の記憶装置はデータを記憶できる任意のハードウェア装置である、メモリ206、永続的記憶装置208、コンピュータの読取り可能な媒体218は実体的形態の記憶装置の例である。
【００３９】
別の例では、バスシステムは通信構造202を構成するために使用されることができ、システムバス又は入力／出力バスのような１以上のバスからなることができる。勿論、バスシステムはバスシステムに取付けられる異なるコンポーネント又は装置間のデータの転送を行う任意の適切なタイプのアーキテクチャを使用して構成されることができる。さらに、通信装置はモデム又はネットワークアダプタのようなデータの送信及び受信に使用される１以上の装置を含むことができる。さらにメモリは、例えば通信構造202に存在できるインターフェースおよびメモリ制御装置ハブで見られるようなメモリ206又はキャッシュであってもよい。
【００４０】
クライアントとして、データ処理システム200は種々の形態を取ることができる。例えばデータ処理システム200はタブレットコンピュータ、ラップトップコンピュータ、ワークステーション、パーソナルコンピュータ、電話機装置またはパーソナルデジタルアシスタント（ＰＤＡ）の形態を取ることができる。
【００４１】
異なる実施形態は一連の行為および／または事象を受けたとき人々のグループが個人的および／またはグループとしてどのように反応するかを予測するために使用されることができるシミュレーション環境を与える。このようにして、異なる「何らかの状況を仮定した」シナリオは、グループに対して取られる最終的な行為のセットについて決定を促すために使用されている結果と共にシミュレートされることができる。
【００４２】
異なる実施形態は人間の行動をシミュレートするためのコンピュータ実行方法、装置、コンピュータが使用可能なプログラムコードを提供する。１実施形態では、ソースコードは図１に示されているようにネットワークデータ処理システム100のようなネットワークデータ処理システムの記憶装置中に位置される。ソースコードは人間の行動を予測するために使用される。解釈装置はネットワークデータ処理システムのハードウェアで実行する。この解釈装置は新しい定義を生成するためのソースコード及び解釈されたソースコードによりシミュレーションを実行する。ネットワークデータ処理システムのハードウェアで実行するグラフィカル・ユーザインターフェースプロセッサは解釈されたソースコードを受信し、この解釈されたソースコードを使用して装置依存出力を発生する。装置依存出力はグラフィカル・ユーザインターフェースプロセッサと通信する装置のセットへ送信される。
【００４３】
これらの装置は装置依存出力を表示し、ユーザ入力を受信する。受信されたユーザ入力はグラフィカル・ユーザインターフェースプロセッサへ戻され、これは受信されたユーザ入力を解釈装置へ送信する。解釈装置はソースコードを変化又は変更するために受信されたユーザ入力と新しい定義を使用する。これらの例では、新しい定義は既存のソースコードを変更するかまたは新しい情報を既存のソースコードへ付加するために使用される情報である。このソースコードの変更はその後新しい定義と新しく解釈されたソースコードを発生するために実行される。このようにして、フィードバックループはこれらの有効な実施形態でソースコードを変更するために発生される。
【００４４】
次に図３を参照すると、シミュレーションシステムを示す図が有効な実施形態に従って示されている。システム300は図１のネットワークデータ処理システム100中で構成されることができるシミュレーションシステムの１例である。特に、システム300は図２のデータ処理システム200のような１以上のデータ処理システムを使用して構成されることができる。
【００４５】
これらの例では、定義302は行為304に基づいてシステム300により処理される。行為304は人間の行動のシミュレーションを行うために定義302に適用される。行為304はこれらの例でシステム300のユーザにより選択されることができる。行為304はまた構造ファイルから又はプログラム或いはプロセスによって選択されることもできる。定義302はこれらの例のシミュレーションで使用されるソースコードの一部分である。
【００４６】
システム300は定義306を発生するため行為304を使用して定義302を変更する。これらの示された例では、定義306は定義302で取られる行為304に基づいて結果を与えるために出力として使用される新しい定義である。さらに、定義306は定義302を変更するために使用され、その後、シミュレーションを行い続けるために使用される。異なる反復から学習する能力をシステム300に与えるために連続的なフィードバックが生じる。さらに、先のシミュレーションの結果は定義302に記憶され、システム300が先のシミュレーションから学習することを可能にする。
【００４７】
これらの例では、定義302は人間のグループおよび人間のグループが住む環境を表している。環境の説明は有形及び無形の形態の両者の資産を含んでいる。さらに定義302は異なる人間の記述も含んでおり、それは異なる事象に対する行為及び反応又は人間のグループ及び環境に与えられる入力を規定する内部関係に加えてグループをポピュレートすることができる。
【００４８】
システム300は、ある行為が定義302で記述されている人間のグループに対して取られるときの結果および種々の反応および／または影響を予測するためのシミュレーションツールとして使用されることができる。換言すると、システム300は行為304が定義302に対して与えられるか取られるとき例えば経済、社会、心理のような影響を評価するためにプログラムされることができる。
【００４９】
例示的な例では、定義302はコンピュータ言語を使用して書かれる。示されている例では、コンピュータ言語は解釈された言語であり、これはシミュレーションを実行するために解釈装置を使用するが、実行のためのコンパイルを必要としない。シミュレーションプロセスに含まれる種々のオブジェクトの定義を可能にする任意の言語が使用されることができる。例えばＣとＣ＋＋はこれらの例で使用されることができる解釈された言語の例である。これらの例では、オブジェクトの定義は人間と人間が住む環境を含んでいる。異なる有効な実施形態は定義302と行為304と同様にシステム300のフレームワークを提供する。
【００５０】
図４を参照すると、人間の行動のモデル化とシミュレーション開発フレームワークの図が有効な実施形態により示されている。フレームワーク400は図３のシステム300のアーキテクチャの１例である。この例では、フレームワーク400はソースコード402、解釈装置404、グラフィカル・ユーザインターフェース（ＧＵＩ）プロセッサ406、装置408を含んでいる。
【００５１】
ソースコード402はデータベースの全ての情報を含んでいるフレームワーク400のモジュールである。シミュレーションについて知られていることは全てこの特定のコンポーネント中に記憶されている。ソースコード402はシミュレーションを実行するのに必要な全ての情報を含んでいる。この情報は例えば人間のグループの定義と、定義を使用してシミュレーションを実行するのに必要なコードを含んでいる。ソースコード402は定義において取られることができる行為と、結果を提示するために使用されるコードも含んでいる。
【００５２】
ソースコード402で使用される言語は人間の行動のシミュレートおよび予測に特定の機能及び特徴を含むように変更されることができる。これらの特徴を有する言語は人間行動定義言語（ＨＢＤＬ）と呼ばれる。ＨＢＤＬはＣまたはＣ＋＋のような現在利用可能な言語を使用して構成されることができる。勿論、任意の解釈される言語がこれらの例のＨＢＤＬを構成するために使用されてもよい。
【００５３】
さらに、ＨＢＤＬは人間の行動のシミュレートを行うための変形を有する既存の言語を使用するのではなく完全に新しい言語を使用して構成されることができる。例示的な実施形態では、異なる言語がＨＢＤＬの異なるコンポーネントを構成するために使用されることができる。これらの例では、ソースコード402はＨＢＤＬで書かれたデータベースであり、異なる地理的位置に位置付けられることができる異なる記憶装置にわたって分配されることができる。
【００５４】
解釈装置404はシミュレーションを行うためにソースコード402からデータ410を集める。これらの例示的な例では、データ410は人間のグループ及びそれらの環境と人間に対して適用される行為の定義を含んでいる。さらにデータ410はソースコード402を生成するために使用されるプログラミング言語からのステートメントまたはラインも含む。データ410中のこれらのステートメントはシミュレーションを行うために解釈装置404により使用される。
【００５５】
データ410中のステートメントは例えば合成人間をシミュレートするための人工知能プログラムのコードを含むことができる。これらのステートメントは例えばシミュレートを実行するために使用されるファジー理論、ニューラルネットワーク及びその他のプロセスのためのコードも含むことができる。さらに、データ410はまた結果を提示するためのグラフィカル・ユーザインターフェース（ＧＵＩ）を生成するためのプロセス又はコードも含むことができる。このようにしてソースコード402は人間のグループと環境に関する情報と、シミュレーションを実行するために必要なプロセス又はコードとの両者を含んでいる。構造に応じて、これらのステートメントはＣまたはＣ＋＋であることができる。代わりにステートメントは解釈装置404が実行のためにＣまたはＣ＋＋に変換するより高いレベルの言語にあってもよい。
【００５６】
このシミュレーションはグラフィックデータ412を生成し、これはＧＵＩプロセッサ406へ送信される。これらの例では、グラフィックデータ412はネットワークを低速化する可能性のある多量のデータ送信を必要としない形態である。例示的な実施形態では、グラフィックデータ412はプリミティブの形態を取る。より多くのデータが転送されることを必要とするビットマップまたは他のフォーマットではなくプリミティブの送信によって、ネットワークで使用される帯域幅の量は減少される。場合によっては、グラフィックデータ412中で幾つかのビットマップを送信することが必要である可能性があるが、プリミティブは可能であるときに使用される。
【００５７】
代わりに、グラフィックデータ412は装置408により表示される装置のデータ414を生成するためにＧＵＩプロセッサ406により処理される。これらの例では、装置データ414は例えば装置408により表示される画素データ又はビットマップであることができる。
【００５８】
装置408はまた装置のデータ416を生成するためにユーザ入力を受信でき、そのデータ416はＧＵＩプロセッサ406により受信される。ＧＵＩプロセッサ406は装置データ416を送信のためのネットワークリソースを使用する必要が少ないフォーマットに変換する。これらの例では、ユーザ入力418は解釈装置404へ戻される。ユーザ入力418とデータ410からのシミュレーションからの結果は変更420を生成するために使用される。変更420はソースコード402を重ね書き又は変更するために使用される。これらの変更はソースコード402の定義を変更するために使用される。変更420は図３の定義306に類似であり、これは図３の定義302を変更するために使用される。このようにして、ソースコード402は解釈装置404により行われるシミュレーションの結果と装置408からのユーザ入力を考慮するために変更されることができる。
【００５９】
変更420は例えば解釈装置404により行われているシミュレーションに適用されるかそれに含まれる行為の選択を含んでいる。行為及び変更420のこの選択はこれらの例では装置408で生成されるユーザ入力から受信されることができる。
【００６０】
データ410は図３の定義302と行為304のような情報を含むことができる。変更420は図３の定義306に対する変化のような情報を含むことができる。これらの変化は例えば既存の定義に対する変更または新しい定義の付加であってもよい。グラフィックデータ412はこれらの例では図３の定義306を提示するために使用される。
【００６１】
フレームワーク400の異なるモジュールの説明はこれらのモジュールが構成されることができる方法に対する構造的な限定を意味するものではない。例えば異なるモジュールはフレームワーク400で異なる特徴を実行するための異なるサブモジュール又はプロセスを含むことができる。また、特定のモジュールは単一のデータ処理システムで実行されることができ、または多数のデータ処理システムにわたって分散することもできる。
【００６２】
フレームワーク400のモジュール方式によって、異なるモジュールがハードウェアリソースの使用を最大にするためにネットワークを横切って異なる位置に分配されることができる。フレームワーク400のこのモジュール方式はその他の機能がネットワークデータ処理システム中の遠隔位置に移動されるか分散されることを可能にしながら、幾つかの機能の中央化も可能にする。例えばグラフィック処理と装置依存データを中央化された環境に位置付け、その後、この情報をネットワークによって遠隔装置へ送信することの利点はほとんどない。グラフィックデータは通常サイズが大きく、ネットワークの動作速度を低下させる可能性がある。結果として、このタイプの情報及び処理の中央化は冗長度、データ送信、データ同期に関して問題を生じる。フレームワーク400はこのフレームワーク400の構成がこれらの問題を避けることができるように設計される。
【００６３】
次に図５を参照すると、フレームワーク中でのモジュールの分布を示す図が有効な実施形態により示されている。この例ではシステム500に示されている異なるモジュールは図４のフレームワーク400からのものである。この示されている例で分かるように、システム500はインターネット502、構内網（ＬＡＮ）504、広域網（ＷＡＮ）506、構内網（ＬＡＮ）508を含んでいる。これらの異なるネットワークは図１のネットワーク102中のコンポーネントの１例である。
【００６４】
示されているように、ソースコード510は記憶装置512、514、516中で見られる。記憶装置512は構内網504に接続され、記憶装置514は広域網506に接続され、記憶装置516は構内網508に接続されている。異なるネットワークの異なる装置からのソースコード510の分配はソースコード510が記憶されることができる方法の１例である。
【００６５】
ソースコード510は異なる位置上ではなく特定のネットワーク上の単一の記憶システムに記憶されることもできる。ソースコード510を記憶する幾つかの記憶装置はソースコード510のコピーを複製するパックアップ装置であってもよい。この構成により、特定の位置へ構造を限定するのではなく、これらの位置で発見されることができる利点を活用するために他の位置のシステムの部分を移動することが可能である。
【００６６】
解釈装置518はこの例ではデータ処理システム520に位置される。データ処理システム520は図２のデータ処理システム200のようなデータ処理システムを使用して構成されることができる。データ処理システム520は構内網508に接続される。解釈装置518はシミュレーションを行うために異なるネットワークを横切って異なる記憶装置のソースコード510からデータを集める。
【００６７】
シミュレーションの結果はデータ処理システム520に位置されているＧＵＩプロセッサ522へ送信される。ＧＵＩプロセッサ522は装置523上で表示するための装置データを発生する。さらに、解釈装置518はグラフィックデータをデータ処理システム526で実行するＧＵＩプロセッサ524とデータ処理530で実行するＧＵＩプロセッサ528へ送信することができる。ＧＵＩプロセッサ524は装置530で表示するための装置データを生成し、ＧＵＩプロセッサ528は装置532で表示するための装置データを生成する。ＧＵＩプロセッサ522、524、528はそれぞれ装置523、530、532の近くに位置される。
【００６８】
このようにしてこれらのプロセッサにより発生されるデータは大量のネットワークリソースを使用する必要はない。これらの例では、図４のフレームワーク400で示されているＧＵＩプロセッサモジュールは大量のネットワークリソースの速度を低下を許容するか又はそれを使用する方法で、グラフィックデータをネットワークによって遠隔装置への送信の使用を最小にするためにシステム500内の幾つかの異なる位置で複製される。
【００６９】
図６を参照すると、ソースモジュールコードを示す図が有効な実施形態により示されている。この例ではソースコード600は図４のソースコード402をより詳細に示している。
【００７０】
ソースコード600は定義602、行為604、グラフィカル・ユーザインターフェース（ＧＵＩ）言語606を含んでいる。定義602と行為604は環境中の人間のグループのシミュレーションへ導かれる。ＧＵＩ言語606は結果を提示し、シミュレーションのエンドユーザからのユーザ入力を受信するために使用される。ＧＵＩ言語606により、ソースコード600は装置における結果の提示の外見を制御する。この結果の外見はこれらの例ではＧＵＩ言語606を使用して制御される。
【００７１】
さらに、ソースコード600はこれらの例では適合性がありオープンである。ソースコード600はシミュレーションのための情報と、シミュレーションを実行又は遂行するために使用される実際の言語の両者を含んでいる。ソースコード600はデータベースを読取って解釈する伝統的なアプリケーションから行う決定を減少する。対照的に、ソースコード600は情報及びアプリケーションがシミュレーションの実行を通して発生された結果に基づいて変更されることができる情報とアプリケーションの両者を含んでいる。
【００７２】
データ608は図４の解釈装置404のような解釈装置へのデータ流を表している。変更610は解釈装置から受信されているソースコード600への変更を提示する。データ608はシミュレーションを行うのに使用するための定義602、行為604、ＧＵＩ言語606から解釈装置への情報を含んでいる。これらの例では、ソースコード600は自由フォーマットデータベースである。
【００７３】
これらの例示的な例では、ソースコード600はＨＢＤＬで書かれている。自由フォーマットデータベースとして、ソースコード600は異なるコンポーネント間にセパレータの連続を必要としない。ソースコード600内のプログラムは単一線を使用して書込まれることができる。ソースコード600はまたシミュレーションの実行を変更するためにループ、ケースステートメント、条件的ジャンプ、その他の類似のステートメントを含んでいる。
【００７４】
さらに、ソースコード600はコードの部分を記憶するオブジェクトを含んでいる。結果として、オブジェクトは反復を必要とせずに何度も呼ばれることができる。さらに、ソースコード600内でオブジェクトはデフォルトパラメータを含むようにインデックスされ規定されることができる。このようにして、インテリジェンスオブジェクトの作成はソースコード600内でエネーブルされる。
【００７５】
また、異なるタイプの変数がソースコード600内で規定されることができる。これらのタイプの変数は特定の作業に導かれることができる。例えば通常の数値タイプに加えて、ソースコード600は人間、人、家族、行為、時刻表、日付、その他のようなタイプを含むことができる。さらにソースコード600はシミュレーションを行うための実行モデルに基づいて時刻表を提供する。人工知能コンポーネントがこれらのコンポーネントをサポートするための機能コマンドと共にソースコード600内で与えられることができる。
【００７６】
ソースコード600内で、定義602は人間のグループおよび人間のグループが生活する環境を記述する。行為604はシミュレーション期間中に定義602に与えられる影響を表している。これらの例では、行為604は時刻表に入れられる事象と呼ばれるコードの部分または断片である。
【００７７】
これらの例では、シミュレーションに参加する人間と、シミュレーションを使用する人間はソースコード600により処理される。シミュレーションに参加する人間は実際のまたは合成の人間であってもよい。定義602、行為604、ＧＵＩ言語606は機能コードおよびパラメータを含んでいる。機能コード及びパラメータは他の情報と共に解釈装置により解釈されるためのデータ608として出力される。
【００７８】
この情報をソースコード600に移動することによって、ソースコード600はシミュレーションの制御を行うことができる。このようにして、シミュレーションは現在使用されているスタイル及び言語で書かれたものと同様にもはや用途特定ではない。例えば特定のアイテムが定義602で規定されると、このアイテムは行為604の行為の予め規定されたセットにより使用されることができる。例えばタイプＸの人間は行為604で行われる行為と共に使用される定義602で規定されることができる。その結果として、無限数のシミュレーションが生成され、人間Ｘを記録せずに行われることができ、各シミュレーションで行われることができる。
【００７９】
さらに、ＧＵＩ言語606をソースコード600内に位置させることは定義602と行為604がユーザに提示される表示を制御できることを意味している。このようにして、ソースコード600は基本的にいずれのシミュレーションのユーザが観察するかを担当するデータベースである。この特徴はまた各シミュレーションのためのアプリケーションまたはプログラムのシミュレーションをカスタム書込みする必要なく無限数のシミュレーションが作成されることを可能にする定義及び知識の再使用能力をサポートする。
【００８０】
現在のシステムはスクラッチからコード化される単一のシミュレーションで静的であるデータを使用する。せいぜい、単一のオブジェクトをシミュレートするコードはライブラリに維持されるが、各オブジェクトに対する行為は各シミュレーションで特有である。行為は典型的に別々のプログラム中に書込まれる。結果として、現在使用されている技術は各特定のタイプのシミュレーションに対して実質的なコード化を必要とする。さらに現在のプラクチスでは、グラフィカル・ユーザインターフェースは典型的に再使用され、アプリケーションを制御する。
【００８１】
結果として、これらのインターフェースはアプリケーションを再コード化または書換する必要なく特定のシミュレーションを変更しない。このようにして、有効な実施形態でのソースコード設計では、シミュレーションのための現在使用されている技術と対照的に、結果を表示しユーザ入力を受信するためにより大きなフレキシブル性が与えられる。
【００８２】
ＧＵＩ言語606は図４のＧＵＩプロセッサ406のようなグラフィカル・ユーザインターフェースプロセッサを通して解釈装置により選択的に送信されるコードを提供する。このコードは種々のディスプレイで与えられる入力及び出力の制御と同様に、エンドユーザへディスプレイまたはビジュアルを与える。ＧＵＩ言語606はそれぞれのエンドユーザがスクリーン上で観察することおよびそれぞれのエンドユーザがシステムと対話する方法を制御する。これらの例示的な例では、ＧＵＩ言語606はＨＢＤＬのサブセットである。特定の構造に応じて、ＧＵＩ言語606は異なる有効な特徴を与えるために異なる言語を使用して構成されることができる。このようにして異なる有効な実施形態はソースコード600への制御を示す。
【００８３】
ソースコード600内のＧＵＩ言語606により入力及び出力を制御させる利点は、エンド装置で設けられるユーザインターフェースがシミュレーションにより制御されることができることである。シミュレーションはしばしば異なる経歴を有するユーザを含んでいる。種々のユーザをカスタム化する能力により、これらのユーザはシステムを迅速に理解することを助けられる。したがってシミュレーションを実行するための学習曲線は減少される。さらに、最も関連のある情報だけが異なるユーザに提示され、これはシミュレーションの関連性を強化する。
【００８４】
例えば異なるユーザは特定のシミュレーションに対して異なるユーザインターフェースを必要とする可能性がある。あるユーザは定義602に適用するための特定の行為を行為604から選択するためのユーザインターフェースを与えられることができる。他のユーザは定義602に規定されている合成人間の代わりをすることができる。このタイプのユーザには行為を選択するユーザとは異なるユーザインターフェースが与えられる。
【００８５】
さらに、実行されている異なるシミュレーションはまた異なるタイプのインターフェースを必要とする。このタイプのアーキテクチャはダイナミックにユーザインターフェースを付加または簡単にする能力も提供する。このようにして、ユーザインターフェースは構成に依存した方法で設けられることができる。
【００８６】
さらに、異なるシミュレーションは新しいパラメータと新しい環境を要求される。これらの新しく変化する状態は、異なるデータセットが解析されるべきであることを意味する。これらの状態はまた異なるユーザまたは専門家が関与する必要性を含む可能性がある。近い将来におけるこのタイプの変化する作業特性はソースコード600を通して与えられるような多用途の適合性環境の必要性を課す。ソースコード600は定義602、行為604、ＧＵＩ言語606内にこの模範を与える。
【００８７】
これらの例示的な例では、ＧＵＩプロセッサは現在使用されているシミュレーションシステムで現在生じているような静的アプリケーションではなく、ソースコード600の制御下にある。ＧＵＩ言語606はハードウェアの抽象層を提供する。ＧＵＩ言語606の内容はシミュレーションプロセスが予測可能な方法で行われ、適切な情報が種々のユーザ及び装置から転送され受信されることを確実にする。ＧＵＩ言語606は解釈装置およびＧＵＩプロセッサが構成されている任意のハードウェアで作動することを必要とされている全てのコードを含んでいる。このようにして、ハードウェアに変化が生じるとき、ハードウェアをラップアラウンドする低い層の部分だけが書き換えられる必要がある。
【００８８】
これらの例示的な実施例では、ＧＵＩ言語606は作動時間の期間中にユーザインターフェースの必要なエレメントを構築するための種々の構造物を提供する。これらのエレメントは例えばマウス追跡動作、マウスクリック動作、アナログジョイスティック、ウィンドウ、ダイアローグボックス、チェックボックス、ラジオボタン、リストボックス、形式を含んでいる。これらおよび他のエレメントにより、グラフィカル・ユーザインターフェースの構成はさらに容易にされる。さらに、ＧＵＩ言語606を使用してグラフィカル・ユーザインターフェースを構築するときに発生される出力は後に使用するためＧＵＩ言語606内に保存されることができる。
【００８９】
ＧＵＩ言語606はソースコード600が人々のグループ及び彼らが住む環境のシミュレーションに関する入力を提示及び受信することを可能にするための複数の異なる特徴を提供する。ＧＵＩ言語606は３次元のプリミティブのセットを提供する。これらの３次元のプリミティブは仮説的なカメラおよび表示域を制御するためのコマンドのセットのような特徴をサポートする。ベクトル及びマトリックス演算を含めた数学関数も異なるタイプのグラフィックファイルフォーマットを受入および送出する能力と共に含まれる。
【００９０】
ＧＵＩ言語606内に設けられる特徴は３以上の次元データを埋設する３次元オブジェクトの作成も含んでいる。例えばこれらの３次元オブジェクトは例えば３次元オブジェクトに関する価格、重量、色、価値または規則のようなその他の情報を含むことができる。勿論、任意の種類の情報がこれらの３次元オブジェクトを埋設され、またはそれらに関連付けされることができる。
【００９１】
さらに、ＧＵＩ言語606は３次元モデル及びスタックと、これらのモデル及びスタックを管理するコマンドのセットも含んでいる。３次元モデル及びスタックは複雑な変換の作成が異なる３次元エンティティに適用されることを可能にする。このようにして、オブジェクトが一次的に影響を受ける異なる世界が作成される。
【００９２】
ＧＵＩ言語606は大きい３次元データベースの容易な作成とメンテナンスを行う。これらのデータベースは定義602内で見られることができる。データベースはオブジェクトのサイズ、複雑性又は特性にかかわりなく任意の３次元オブジェクトを表すために使用されることができる。
【００９３】
さらに、ＧＵＩ言語606はグラフィカル・ユーザインターフェース構築言語を提供する。この言語はソースコード600がそれぞれのエンドユーザ装置の外観を制御することを可能にする。ＧＵＩ言語606は点、線、曲線、表面のような２次元のプリミティブを含むことができる。さらに２次元制御オブジェクトのセットも存在する。これらの２次元制御オブジェクトは例えばウィンドウ、ダイアローグボックス、リクエスタ、チェックボックス、ラジオボタン、メニューを含んでいる。
【００９４】
図７を参照すると、ソースコードの定義部分を示す図が有効な実施形態により示されている。定義700は図６の定義602のより詳細な図である。定義700は資産702、人間704、内部関係706を含んでいる。
【００９５】
資産702は人間が存在する環境中の有形資産708と無形資産710の両者を含んでいる。有形資産708は生物または無生物の両者を含んでいる。生物は例えば家畜、鳥、バクテリア、植物を含むことができる。無生物は例えば家、山、湖、自動車、テーブル、ペン、航空機または銃を含むことができる。
【００９６】
無形資産710は例えばシミュレートされている人間のグループの規則、法律、規制を含むことができる。無形資産710は資産を処理するため解釈装置により使用される情報も含むことができる。この情報は一般的コード、ライブラリ、ルーチンも含んでいる。
【００９７】
特に、このタイプの資産は例えば、数学ライブラリ、グラフィックライブラリ、２次元プリミティブライブラリ、３次元プリミティブライブラリ、モデル及びスタック管理ライブラリ、人工知能ライブラリ、入力／出力ライブラリ、暗号化ライブラリ、ネットワーク化ライブラリ、システム呼ライブラリ、時間管理ライブラリを含んでいる。換言すると、無形資産710はシミュレーションの実行に必要とされる任意の情報を含むことができる。
【００９８】
人間704は人間のグループ中に存在する種々の人間の特徴を示している。人間704は種々の家系および人間のグループ中の人の関係を詳細に示す情報を含むことができる。さらに人間704は種々の個人の心理学的プロフィールを作成するのに必要とされる情報を含んでいる。
【００９９】
内部関係706は、定義700における人工知能によって使用される行為及び反応を含んでいる。これらの行為および反応は種々の方法でトリガーされることができる。例えばトリガーはランダム、警報ベース、状態マシン、または定義700に与えられる事象のセットに対する反応である。
【０１００】
資産702内の異なるオブジェクトは必要な機能及び計算を行うため無形資産710に依存する可能性がある。一般的なコード、ライブラリ、ルーチンは異なるプログラミング作業を指示するために必要とされるコードである。これらの異なるコンポーネントはシミュレーションの実行で使用するため解釈装置へのデータとして送信されることができる。３次元のオブジェクトは生物及び無生物を含めた異なる世界を作る全てのオブジェクトである。
【０１０１】
図８を参照すると、オブジェクトのブロック図が有効な実施形態により示されている。この例では、オブジェクト800は図６の定義602内のオブジェクトの１つの例示的な構造例である。この例示的な例では、オブジェクト800は人工知能802、特徴804、内部関係806を示している。
【０１０２】
人工知能802は特定のオブジェクトをシミュレートするために使用されるコードを含んでいる。これらの例では、オブジェクト800は人間、植物又は動物のような生物である。人工知能802は選択されたオブジェクトの行為及び反応をシミュレートするのに必要なコードを含んでいる。
【０１０３】
特徴804は特定のオブジェクトに対する特徴の識別を含んでいる。例えばオブジェクト802が人間であるならば、特徴804は例えば人の身長、体重、肌の色、髪の色、瞳の色、体格、任意の他の適切な特徴を含むことができる。特徴804は例えば、人の走行可能な速度、人の機敏さ、人のスタミナのような他の身体的特徴を含むことができる。
【０１０４】
特徴804の非身体的特徴には限定ではないが、例えば忍耐力、思いやり、情緒、知能、人間関係が含まれている。特徴804はオブジェクト800の行為及び反応をシミュレートするために人工知能802により使用される。特に特徴804は示されている例では人間の行動をシミュレートするために使用される。
【０１０５】
人工知能802の複雑性と、特徴804内の特徴の数は特定の構造に応じて変化する。これらのコンポーネントの複雑性はシミュレーションを実際のオブジェクトから弁別できなくする所望の能力が増加するほど増加する。
【０１０６】
内部関係806は事象をトリガーするために人工知能802により使用されることができる行為及び反応を含んでいる。これらの事象は例えばオブジェクト800により取られる行為を含んでいる。これらの行為はオブジェクト800により開始されることができるか、或いは行為はオブジェクト800により取られる行為に反応して生じるものである。オブジェクト800により取られるこれらの行為は800がシミュレーション中にある環境に基づいて、オブジェクト800に誘導される行為であるかまたはオブジェクト800により知覚される行為である可能性がある。
【０１０７】
図９を参照すると、オブジェクトの図は有効な実施形態により示されている。この例では、オブジェクト900は図６の定義602でシミュレートされることができる無生物の１例である。オブジェクト900は例えば自動車、ペン、航空機、山または湖であってもよい。
【０１０８】
オブジェクト900はこの例ではモデル902と特徴904を含んでいる。モデル902は特定のオブジェクトをシミュレートするために使用されるコードを含んでいる。例えばオブジェクト900が自動車であるならば、ある結果を発生する種々の行為が自動車で行われることができる。例えばエンジンがオンに切り換えられ、車輪が回転することができる。
【０１０９】
モデル902は例えば数学モデルであってもよい。例えば有限状態のマシンのセットが自動車の機能及び動作をモデル化するために使用されることができる。使用および時間にわたる環境への露出を通してモデル化されているオブジェクトの老化をシミュレートするためのもののような他の機能及びプロセスがモデル902に含まれることができる。
【０１１０】
特徴904は例えば、タイヤのサイズ、エンジンのサイズ、塗装色、無線のタイプ、内部スペースの量のような自動車の種々の特徴を識別する。さらに、特徴904はオブジェクト900の自動車の特性についてのその他の情報も含むことができる。例えばタイヤのスレッドの量は特徴904内の特定のタイヤのタイプに対して識別されることができる。
【０１１１】
モデル902は特徴904で識別される自動車を運転するユーザ、タイヤで生じた磨耗および裂目のようなオブジェクト900で取られる種々の行為に対する自動車の反応をシミュレートするために使用される。この磨耗および裂目は特徴904内で記録される。磨耗および裂目はモデル902内のアルゴリズムの部分であることができる。さらに太陽および雹のような環境的露出は自動車の例のモデル902における老化した外見を提示するためにモデル902により考慮されることができる。図８のオブジェクト800と図９のオブジェクト900により行われる異なる行為がこれらのオブジェクトで行われることができ、図６の行為604内で規定されることができる。
【０１１２】
図１０を参照すると、行為オブジェクトの図が有効な実施形態により示されている。この例では、行為オブジェクト1000は図６の行為604内で見られることができる行為の１例である。
【０１１３】
行為オブジェクト1000は行為1002、オブジェクト1004、ユーザの許可1006、グラフィカル・ユーザインターフェース（ＧＵＩ）1008を含んでいる。行為1002は例えば喋る、叩く、動く、座る、握る、話すまたは見るのような行われる行為であることができる。オブジェクト1004は行為が取られることができるオブジェクトの識別である。ユーザの許可1006は特定のユーザがオブジェクト1004において行為1002を行うことができるか否かを決定する。グラフィカル・ユーザインターフェース1008は特定のユーザに提示されるユーザインターフェースのタイプを識別する。
【０１１４】
オブジェクト1004は無生物又は生物であってもよい。ユーザの許可1006はあるユーザが選択的な行為をオブジェクトに対して行うことができるか否かを決定するために使用される。幾つかのケースでは、オブジェクトにおいて行為を行うことは特定のユーザには望ましくない。グラフィカル・ユーザインターフェース1008はオブジェクトにおける行為がユーザに提示される方法およびユーザのオブジェクトとの相互動作がいかにして行われることができるかを識別する。
【０１１５】
図８、９、１０のオブジェクトの例示は図６のソースコード600が現在利用可能なプログラミング言語と方法を使用して実行されることができる１方法を示す目的で与えられている。しかしながら、これらの例は図６のソースコード600が実行されることができる方法についての限定を意味するものではない。
【０１１６】
図１１を参照すると、行為の適用を示す図が有効な実施形態により示されている。これらの例では、時刻表1100は図６の定義602のような定義がシミュレーション期間中に受ける影響を示している。これらの例示的な例では、図６の行為604のような行為は時刻表1100における事象を指している。これらの行為はコードの断片または部分である。特に、行為は事象1102、事象1104、事象1106、事象1108を含んでいる。この例では、事象1102は時間スロット1110で与えられる。事象1104は時間スロット1112の期間中に生じ、事象1106は時間スロット1114の期間中に与えられる。事象1108は時間スロット1116の期間中に生じる。これらの事象は自然における進行であってもよく、駆動された事象であってもよい。換言すると、事象は解釈装置により発生されたか生成された種々のメッセージに対する応答で与えられることができる。
【０１１７】
これらの例では、時刻表1100の実行により発せられたマスター中断は実行半ばでこれらの事象を中断し、必要ならばシミュレーションは直ちにシミュレーションの次の時間スロットへ移行する。ソースコードの実行が進行或いは駆動された事象である現在使用されているプログラム言語とは異なって、ソースコードの行為は有効な実施形態の時間ベースの実行モデルにしたがう。これらの例では、各時間スロットは、一週間、一日、一分間、又は幾つかのその他の時間期間を表すことができる。
【０１１８】
示されている実施形態では、時刻表1100は以下により詳細に説明するスケジューラの監視の下で作動する。スケジューラは時刻表1100に関連されるか取付けられている事象1102、1104、1106、1108を動作させる。スケジューラはこれらの事象にわたって十分な制御を有し、必要なときにこれらを中断する。さらに、スケジューラはメモリ管理装置とメモリ回復設備を作動する。このようにして中断された作業について割当てられた全てのメモリは来るべき事象に対して利用可能にされることができる。
【０１１９】
図１２を参照すると、スケジュールの中断を有する時刻表における行為の適用を示している図が有効な実施形態により示されている。この例では、時刻表1200は事象1202と事象1204を含んでいる。事象1202は時刻表1200の時間スロット1206期間中に実行を開始する。この例では、事象1202は入力1208、決定1210、プロセス1212を含んでいる。事象1202は時間スロット1206期間中に実行を開始する。時間スロット1206が終了したとき、スケジューラは点1214で事象1202の実行を中断する。実行はその後時間スロット1216の事象1204へ転送され、これは時間スロット1206後に開始する。この例では、時間スロット1206と時間スロット1216の間にはオーバーラップは存在しない。
【０１２０】
次に図１３を参照すると、時間スロットがオーバーラップする事象の適用を示す図が有効な実施形態により示されている。この例では、スケジューラは時刻表1300を実行し、これは種々の時間スロットに取付けられている事象1302、1304、1306、1308を有する。事象1302は時間スロット1310に取付けられている。事象1304は時間スロット1312に取付けられているか関連されている。事象1306と1308は時間スロット1314と1316にそれぞれ取付けられている。
【０１２１】
この例示的な例では、異なる時間スロットは相互にオーバーラップすることができる。換言すると、１つの時間スロットは別の時間スロットよりも長時間継続することができる。示されているように、時間スロット1310と時間スロット1312は相互にオーバーラップする。結果として、事象1302と事象1304はある時間期間中に同時に動作でき、時間スロット1310と時間スロット1312はオーバーラップする。この特定の例では、事象1302には実行するための時間がさらに多く与えられる。
【０１２２】
時間スロットのオーバーラップはオーバーラップが生じる時間の瞬間中に事象が組み合わさることを意味しない。これらの例示的な例では、任意の理由で時間スロット1310の事象1302の中断が生じたならば、この中断が時間スロット1312の実行の開始前又はその期間中に生じた場合に制御は時間スロット1312へ移行する。しかしながら、中断が時間スロット1310の期間中に生じ、時間スロット1312の終了後に生じたならば、制御は時間スロット1314の事象1306の実行へ移行される。
【０１２３】
図１４、１５、１６を参照すると、継続する事象を示す図が有効な実施形態により示されている。示されているように、時刻表1400は事象1402、継続する事象1404、事象1406を含んでおり、これらは時間スロット1408に取付けられているか割当てられている。事象1410は時刻表1400の時間スロット1412に関連されている。事象1414は時間スロット1416へ取付けられ、事象1418は時間スロット1420に取付けられている。事象は中断不能にされるか、或いは延長を与えられることができる。このタイプの事象はエンドユーザから、または依然として終端されていないが必要とされている幾つかの他の事象から来る入力を待機するときに存在する可能性がある。これらの例では、このタイプの事象は継続する事象1404のような継続する事象である。継続する事象1404は１つの時間スロットから別の時間スロットまで事象が十分に生じるまで繰り越されることができる。
【０１２４】
図１５に示されているように、継続する事象1404は時間スロット1412に取付けられる。図１６では、継続する事象1404は再度延長されるか時間スロット1416へ移動される。継続する事象1404はこれらの例ではこの特定の時間スロット期間中に完了される。
【０１２５】
図１７を参照すると、解釈装置を示す図が有効な実施形態により示されている。解釈装置1700は図４の解釈装置404のより詳細な例示である。解釈装置1700は１つの言語で書かれたソースコードを別の言語で書かれたターゲットコードに変換するプログラムである。解釈装置1700は解釈装置がソースコードの処理を進めるときにターゲットコードを実行する。このターゲット言語は別の高レベルの言語で書かれるか、特定のデータ処理システムまたはプロセッサにより使用される言語で書かれることができる。
【０１２６】
正確に解釈され実行される任意のプログラムでは、ソースコードは言語により規定される構造にしたがって構成される。特にこれらの構造は構文構造である。構造の完全なセットはソースコードの言語の文法を形成する。これらの構造にしたがって構成されないか文法的に誤った任意のコードは解釈装置1700により破棄される。
【０１２７】
解釈装置1700は通信モジュール1702と言語解釈装置1704を含んでいる。さらに、解釈装置1700は暗号化／解読モジュール1706を含んでおり、これは解釈装置1700と図４のＧＵＩプロセッサ406のようなＧＵＩプロセッサとの間で情報の安全な送受信を行う。
【０１２８】
これらの例示的な例では、言語解釈装置1704はＨＢＤＬ1708を受信する。ＨＢＤＬ1708は図４のソースコード402のようなソースコードモジュールから受信された図４のデータ410のようなデータの１例である。ＨＢＤＬ1708はシミュレーションを実行するため言語解釈装置1704により解釈される。結果は解釈されたＨＢＤＬ（ＩＨＢＤＬ）1710であり、これは暗号化のために暗号化／解読モジュール1706へ送信される。暗号化後、暗号化結果は暗号化され解釈されたＨＢＤＬ（ＥＩＨＢＤＬ）1712として図４のＧＵＩプロセッサ406のようなＧＵＩプロセッサへ送信される。ＥＩＨＢＤＬ1712は図４のグラフィックデータ412の１例である。ユーザ入力は装置のセットからＧＵＩプロセッサにより集められるときの暗号化されたＨＢＤＬ（ＥＨＢＤＬ）1714として受信される。ＥＨＢＤＬ1714は図４のユーザ入力418の１例である。この暗号化された情報は解読され、ＨＢＤＬ1716のような通信モジュール1702へ送信される。
【０１２９】
ＨＢＤＬ1716はソースコードを変更するために使用されるユーザ入力の１例である。この変更は例えばソースコード内の定義を変化することができ、または定義に適用される行為を選択するためのものである。さらに言語解釈装置1704の出力はソースコードの変更に使用するためＨＢＤＬ1718として通信モジュール1702へ送信される。ＨＢＤＬ1716とＨＢＤＬ1718はソースコードの変更に使用されるＨＢＤＬ1720を形成するために通信モジュール1702により使用される。ＨＢＤＬ1720は図４の変更420のためのフォーマットの１例であり、これはソースコードの変更に使用される。認められるように、ＨＢＤＬ1718はソースコードを変更するために言語解釈装置1704により発生される出力のフィードバックを与える。
【０１３０】
特に、通信モジュール1702は表示モジュール1722、入力モジュール1724、登録モジュール1726を含んでいる。言語解釈装置1704は字句解析装置1728、文法構文解析ツール1730、実行モジュール1732を含んでいる。
【０１３１】
言語解釈装置1704は字句解析、文法構文解析、決定の実行を処理するモジュールを含んでいる。データがＨＢＤＬ1708として受信されるとき、字句解析装置1728はＨＢＤＬ1708中のデータをソースコード言語の個々のトークンまたはワードへ分断する。これらの例示的な例では、ソースコードはＨＢＤＬで書かれている。換言すると、字句解析装置1728はＨＢＤＬ1708中の異なるトークン又はコンポーネントを識別する。これらのトークンはＨＢＤＬ1708で意味を有する文またはステートメントへトークンをグループ化する文法構文解析ツール1730へ送信される。ＨＢＤＬ1708中で文又はステートメントが構成されると、文法構文解析ツール1730はモジュール1732を実行するためにこのステートメントを送信する。その後、このステートメントに基づく行為がしたがって行われる。
【０１３２】
実行モジュール1732はシミュレーションを行うための複数の異なるサブモジュールを含んでいる。これらの例では、実行モジュール1732は解釈されたＨＢＤＬ（ＩＨＢＤＬ）1710とＨＢＤＬ1718を発生する。ＨＢＤＬ1710はグラフィックプリミティブのようなグラフィックデータの形態を取る。ＨＢＤＬ1718はソースコードの変更に使用される変更された又は新しい定義である。ＨＢＤＬ1718はソースコードの変更又は書換に使用するために入力モジュール1724へ戻される。入力モジュール1724はＨＢＤＬ1718の新しい定義をディスパチャモジュール1722へ通過し、ここでＨＢＤＬ1720がソースコードへ書き込まれるようにそれをディスパッチする。
【０１３３】
これらの例示的な実施形態では、文法構文解析ツール1730は字句解析装置1728を起動し、モジュール1732を実行する。文法構文解析ツール1730は構文解析装置1728からトークンを要求する。字句解析装置1728はトークンを発生するための特徴をＨＢＤＬ1708から受信する。トークンが発生される度に、字句解析装置1728はトークンを文法構文解析ツール1730へ送信する。文法構文解析ツール1730はトークンを使用して１以上の解析ツリーを発生する。解析ツリーが完成されたとき、文法構文解析ツール1730は完成された解析ツリーに基づいて実行モジュール1732により行為が実行されるように要求する。
【０１３４】
これらの例示的な例では、各解析ツリーは生産を表す。生産はトークン流が生産のための定義に一致する度に起動または実行される１以上の行為のセットを有する。文法構文解析ツール1730からのリクエストに応答して、実行モジュール1732は任意の意味論的誤りが行為の命令で発見されたか否かを決定するために意味解析を行う。誤りが生じたならば、この誤りは報告される。誤りが生じていないならば、行為のセットの命令が実行される。非終端呼者への反復的な帰還はこれまで割当てられ完成された生産について起動された行為により行われる。
【０１３５】
これらの例では、実行モジュール1732は文法構文解析ツール1730により作成された解析ツリーで発生された命令が意味論的に正しいか否かを決定する。意味論的誤りが生じたならば、実行モジュール1732は誤りを発生し、これらの例の命令を無視する。しかしながら幾つかのケースでは、修正を行うために十分な情報が実行モジュール1732に与えられるならば、誤りは修正されることができる。
【０１３６】
ユーザ入力がＥＨＢＤＬ1714で受信されるとき、暗号化／解読モジュール1706はＨＢＤＬ1716を形成するために情報を解読する。ＨＢＤＬ1716はＨＢＤＬの暗号化されていない形態のユーザ入力であり、これは登録モジュール1726により受信される。登録モジュール1726はユーザ入力を戻す各ユーザを登録し、確認する。この登録モジュールは許可されているか登録されているユーザだけがシステムへの入力の帰還を可能にされることを確実にする。例えば登録モジュール1726は特定のユーザのパスワードを確認できる。
【０１３７】
ユーザが確認されると、ＨＢＤＬ1716のユーザ入力は入力モジュール1724へ送られる。入力モジュール1724は全ての形態の入力を中央化し、特定の命令と共に入力をディスパチャモジュール1722へ送信するための焦点として作用する。入力モジュール1724は入力を処理するためディスパチャモジュール1722により必要とされる命令を付加できる。入力はこれらの例ではソースコード中の何を変化するかを規定する。
【０１３８】
特定の命令はこれらの例ではソースコードのいずれの部分が特定のユーザにより変更されることができるかに関する命令のような命令を含んでいる。例えばユーザ入力が定義を変更するならば、命令はソースコードのいずれの部分が変更されるべきであるかを述べる。入力により変更されるソースコードの部分は入力を発生するユーザと入力自体との識別を使用して識別されることができる。
【０１３９】
その後、ＨＢＤＬ1720がソースコードへ返送されるとき、ディスパチャモジュール1722はソースコードの適切なセクションが書き換えられることを確実にする。ディスパチャモジュール1722はユーザ、入力、書き込まれるソースコードの部分の識別を有するポリシーを使用してソースコードへ書き込むか否かを決定する。ポリシーは入力に応答してソースコードに対して書込みが行われるべきであるか否かを決定するために使用されるルールのセットである。このポリシーは許可されていないユーザが登録モジュール1726を通過する可能性があるケースを防止するために冗長を与える。例えば許可されていないユーザは本物のユーザに成りすまし、入力を与える可能性がある。ポリシーは本物のユーザによりなされたものではないまたは本物のユーザによりなされた入力特性ではない変更として入力を識別できる。この場合、入力はディスパチャモジュール1722により拒否される。
【０１４０】
これらの例では、各ユーザはユーザが付加又は変更することができる行為のそれら固有のセットを有する。結果として、ユーザはソースコードの行為セグメントを変更することができるだけである。実行モジュール1732からの出力ＨＢＤＬ1718は定義および行為を書き換えるために使用されることができる。これらの例では、言語解釈装置1704はシステムの別のユーザとも考えられる。しかしながら解釈装置は永久的に認証されているユーザである。ディスパチャモジュール1722はＨＢＤｌ1718を使用して定義を書き換える等のために、言語解釈装置1704を観察する。
【０１４１】
結果として、シミュレーションの任意の所定の点で、実際の人間のエンドユーザはデータベース中の人気の規定された人間を置換できる。このデータ流を通して、解釈装置1700はソースコードを書き換えるか変更することができる。時間が経過し、シミュレーションが行われるとき、定義はソースコードを書き換えるために一定して生成されている。
【０１４２】
入力モジュール1724はシミュレーションで実行されている「仮想世界」とシステムと通信する装置でユーザによるユーザ入力を通して受信されている「現実の世界」との接続を行う。ディスパッチャモジュール1722はソースコードを変更するための新しい定義を書き込むための機構を提供する。
【０１４３】
次に図１８を参照すると、字句解析装置のデータ流を示す図が有効な実施形態により示されている。示されているように、字句解析装置1800はソース1802を受信し、トークン1804を生成するためにソース1802を処理する。字句解析装置1800は図１７の字句解析装置1728の１例である。字句解析装置1800は特徴によってソース1802の文字から内容を読取り、ソース1802から来る特徴をトークン1804のようなトークンと呼ばれる基本単位へグループ化する。
【０１４４】
ソース1802の文字のトークン1804へのグループ化はこれらの例示的な例では正規表現1806のトークン記述のセットを使用して行われる。正規表現1806はソース1802の文字をトークン1804へグループ化するのに必要な記述を含んでいる。これらの例では、正規表現1806はスクリプトを使用して構成されることができる。これらのスクリプトは文字をトークンへグループ化するのに使用する特徴パターンを記述している言語の符合を使用する。
【０１４５】
正規表現1806で規定されている各正規表現には符合が割当てられている。この符合は典型的に数である。字句解析装置1800によりトークン1804で発生されるトークンは正規表現1806中の特定の正規表現の符合を使用して識別される。
【０１４６】
正規表現1806に加えて、字句解析装置1800は予約語1808も使用する。トークンがソース1802内で識別されるとき、予約語1808内のワードにも符合が割当てられる。予約語は言語に対して特別な文法的意味を有するワードであり、その言語の識別子として使用されることができない。
【０１４７】
図１９を参照すると、文法構文解析ツールにより行われる構文パーズまたは構文解析を示す図が有効な実施形態により示されている。図１９に示されている構文解析は図１７の文法構文解析ツール1730により行われることができる。ツリー1900はトークンをグループ化するため文法構文解析ツールにより使用されることができる解析ツリーの１例である。この例では、ステートメント1902の構文解析が示されている。ステートメント1902はｖａｒ１＝２０である。このステートメントは解釈装置によって実行される行為を管理又は規定するために使用される。
【０１４８】
特に、文法構文解析ツールは生産とも呼ばれる構文構造のセットに基づいて字句解析装置により発生されるトークン間の関係を識別する。各生産は論理ユニットを表し、典型的に他の論理ユニット中のトークンに関して規定される。大部分の言語は２つの広いタイプの論理ユニットを規定する。これらの論理ユニットはこれらの例ではステートメントと表現である。表現は通常、値を与える構文言語構造である。ステートメントは変数の状態を変更し、プログラム流を制御し、または言語によりサポートされる他の演算を行う構文構造である。
【０１４９】
文法構文解析ツールはトークン流を論理装置へグループ化し、論理ユニットに基づいて行為を実行するように実行モジュールに命令する。この例では、ステートメント1902は字句解析装置により発生されるトークン流を含んでいる。これらのトークンはバーネーム1904、ＥＱ1906、表現1908、ＮＬ1910である。表現1908は整数、ＩＮＴ1912を含んでいる。バーネーム1904の値はｖａｒ１であり、ＥＱ1906の値は＝であり、ＩＮＴ1912の値は２０であり、ＮＬ1910の値は＼ｎである。認められるように、トークン流では、文法構文解析ツールはストリーム中のトークンのシーケンスに基づいて文法を再生成する。
【０１５０】
図２０を参照すると、解析ツリーの別の例を示す図が有効な実施形態により示されている。この例では、解析ツリー2000はステートメント2002から生成される。ステートメント2002はこの例では出力＝ｖａｒ１＋ｖａｒ２＊ｖａｒ３である。
【０１５１】
この例では、ステートメント2002のトークンはバーネーム2004、ＥＱ2006、バーネーム2008、プラス2010、バーネーム2012、ＭＵＬ2014、バーネーム2016、ＮＬ2018を含んでいる。バーネーム2004は値出力を有し、ＥＱ2006は値＝を有し、バーネーム2008は値ｖａｒ１を有し、プラス2010は値＋を有し、バーネーム2012は値ｖａｒ２を有し、ＭＵＬ2014は値＊を有し、バーネーム2016は値ｖａｒ３を有し、ＮＬ2018は値＼ｎを有する。ステートメント2002の＝符合の他方の面上の表現はトークン2008、プラス2010、バーネーム2012、ＭＵＬ2014、バーネーム2016により規定される。
【０１５２】
言語におけるこれらの表現とそれらの使用の識別は識別ノードに関するこれらのトークンの位置を通して解析ツリー2000内で示される。例えば表現2020は表現2022と2026が演算子2024を使用して演算されることを示している。この場合、演算子2024はプラス2010である。表現2020は表現2028と2030を演算子2032を使用して演算されているとして識別する表現2026も含んでいる。この例では、表現2022はバーネーム2008を含み、表現2026は演算子2032を表現2028と2030へ適用した結果を含んでいる。
【０１５３】
図２１を参照すると、解釈装置の実行モジュールの図が有効な実施形態により示されている。この例では、実行モジュール2100は図１７の実行モジュール1732のより詳細な図である。示されているように実行モジュール2100はマスター時刻表制御モジュール2102、数学モジュール2104、物理モジュール2106、人工知能（ＡＩ）モジュール2108、報告発生器2110、グラフィックモジュール2112を含んでいる。
【０１５４】
マスター時刻表制御モジュール2102は実行モジュール2100内における時間にわたって事象を定義に適用するために使用されるスケジューラである。数学モジュール2104と物理モジュール2106は異なるオブジェクトにおける行為の効果を決定するために必要な計算を行う。人工知能モジュール2108は、マスター時刻表制御モジュール2102によって事象が定義に適用されるとき、人間の行動のシミュレーションを補助するための異なる人工知能コンポーネントのソースコードを作動するために使用されるコンポーネントである。
【０１５５】
グラフィックモジュール2112はエンド装置で提示するためＧＵＩプロセッサへ送信されるグラフィックデータを発生する。報告発生器2110はこれらの例では２つのタイプの出力を発生する。１つのタイプの出力はソースコードを変更するために使用される新しい定義である。発生されるこの出力は例えば図１７のＨＢＤＬ1718である。報告発生器2110により発生される他のタイプの出力はグラフィックデータであり、これもこの例ではＨＢＤＬでフォーマットされる。この出力は例えば図１７のＩＨＢＤＬ1710である。
【０１５６】
グラフィックモジュール2112はシミュレーションの結果を表す出力をユーザへ発生するために使用される複数の異なるタイプのプロセスを含んでいる。これらのタイプのプロセスは２次元グラフィックパイプライン、２次元グラフィックプリミティブ、３次元グラフィックパイプライン、３次元グラフィックプリミティブ、２次元及び３次元のモデル及びスタック、ディスプレイリスト発生器、２次元及び３次元のレンダリングエンジンを含んでいる。これら及びその他のタイプのグラフィックプロセスはユーザへ提示するための出力の発生に使用されるグラフィックモジュール2112に存在することができる。
【０１５７】
図２２を参照すると、トークンを発生するためのプロセスのフローチャートが有効な実施形態により示されている。図２２に示されているプロセスは図１７の字句解析装置1728のようなソフトウェアコンポーネントで実行されることができる。
【０１５８】
プロセスはソースから次の特徴を受信することにより開始する（動作2200）。これらの例では、特徴のソースは図１７のＨＢＤＬ1708である。特徴は待ち行列に配置される（動作2202）。
【０１５９】
次に、待ち行列中のストリングと、正規表現または予約ワードとの間に一致が存在するか否かに関する決定が行われる（動作2204）。一致が存在するならば、トークンは待ち行列中のストリングを使用して作成される（動作2206）。待ち行列はその後クリアされる（動作2208）。
【０１６０】
その後、ソースにおいてファイルの最後に到達しているか否かの決定が行われる（動作2210）。ファイルの最後に到達しているならば、プロセスは終了する。到達していないならば、プロセスは動作2200へ戻り、次の特徴を得る。ストリングの一致が動作2204で生じないならば、前述したようにプロセスは動作2210へ進む。
【０１６１】
図２３を参照すると、人間の行動のシミュレーションを実行するプロセスのフローチャートが有効な実施形態により示されている。図２３に示されているプロセスは図４のフレームワーク400のようなフレームワークで実行されることができる。特に、このシミュレーションは図６のソースコード600のようなソースコードを使用して実行されることができる。
【０１６２】
プロセスはソースコード内の定義で規定されている人間のセットを有する仮想環境をポピュレートすることにより開始する（動作2300）。これらの例では定義は図６の定義602のような定義である。プロセスは人間の行動をシミュレートした結果を形成するためにソースコード内の行為を使用して仮想環境の人間のセットにおいて行為のセットを実行する（動作2302）。これらの例では、行為のセットは図６の行為604のような行為から取られることができる。
【０１６３】
その後、フォーマットされた出力を形成するためにソースコードのグラフィカルインターフェース言語を使用して出力が結果から発生される（動作2304）。これらの例では、グラフィカル・ユーザインターフェース言語は図６のＧＵＩ言語606であってもよい。その後、シミュレーションが生じたとき、フォーマットされた出力はネットワークデータ処理システム中の装置のセットにおいて提示され（動作2306）、その後プロセスは終了する。
【０１６４】
このようにして、異なる有効な実施形態はシミュレーションが生じるとき変化できるソースコードを通して人間の行動をシミュレートする。さらに、グラフィカル・ユーザインターフェース言語は結果がユーザに提示されシミュレーション自体により変更し制御される方法を可能にする。
【０１６５】
図２４を参照すると、文又は生産を生成するプロセスのフローチャートが有効な実施形態により示されている。図１９に示されているプロセスは図１７の文法構文解析ツール1730のようなソフトウェアコンポーネントで実行されることができる。
【０１６６】
プロセスは処理のための次のトークンを得ることにより開始する（動作2400）。これらの例では、トークンは図１７の字句解析装置1728のような字句解析装置から受信される。トークンに関してファイルの最後に遭遇したか否かについての決定が行われる（動作2402）。ファイルの最後に遭遇していないならば、トークンが解析ツリーに適合するか否かの決定が行われる（動作2404）。トークンが解析ツリーに適合しないならば、エラーが発生し（動作2406）、その後処理は動作2400へ戻る。
【０１６７】
そうでなければ、トークンが解析ツリーを終了したか否かの決定が行われる（動作2408）。トークンが解析ツリーを終了するならば、終了された解析ツリーに対応する生産のための命令が実行される（動作2410）。その後、プロセスは反復的に呼者へ戻り（動作2412）、プロセスはその後前述したように動作2400へ戻る。
【０１６８】
動作2408を再度参照する。解析ツリーが終了しないならば、プロセスもまたさらに動作2400に戻る。動作2402に戻って参照する。ファイルの最後に到達しているならば、文法が部分的に再生成されているか否かが決定される（動作2414）。この動作は不終了のステートメントまたは生産が存在するか否かを決定するために行われる。この決定は不完全な解析ツリーが存在するか否かを知るために解析ツリーを検査することにより行われることができる。文法が部分的に再生成されているならば、エラーが発生し（動作2416）、プロセスはその後終了する。文法が部分的に再生成されていないならば、プロセスはエラーを発生せずに終了する。
【０１６９】
図２５を参照すると、生産のためのステートメントを実行するプロセスのフローチャートが有効な実施形態により示されている。図２５に示されているプロセスは図１７のモジュール1732を実行するように、ソフトウェアコンポーネントにおいて実行されることができる。
【０１７０】
プロセスは生産のための命令のセットについて意味解析を行うことにより開始する（動作2500）。この動作は生産のための任意の命令において意味的誤りが生じたか否かを決定するために行われる。命令のセットはこれらの例では１以上の命令である。その後、意味的誤りが存在するか否かについての決定が行われる（動作2502）。
【０１７１】
意味的誤りが存在しないならば、プロセスは命令のセットを実行し（動作2504）、プロセスはその後終了する。動作2502で、意味的誤りが生じたならば、誤りは報告され（動作2506）、プロセスはその後終了する。幾つかのケースでは、終了ではなく、プロセスは命令の実行を可能にするために誤りの修正を試みることができる。
【０１７２】
図２６を参照すると、グラフィカル・ユーザインターフェース（ＧＵＩ）プロセッサを示す図が有効な実施形態により示されている。ＧＵＩプロセッサ2600は図４のＧＵＩプロセッサ406のより詳細な例示である。この例では、ＧＵＩプロセッサ2600は暗号化／解読モジュール2602、グラフィックモジュール2604、出力モジュール2606、入力モジュール2608、ＨＢＤＬ発生器2610を含んでいる。
【０１７３】
これらの例示的な例では、ＧＵＩプロセッサ2600は図６のソースコード600のようなソースコードから受信されたステートメントを実行する。特に、ステートメントは図６のソースコード600中のＧＵＩ言語606からのものを含んでいる。表示を発生するための実際のコードは別の分離したアプリケーションにあるのではなく、これらのソースにおいて発見される。
【０１７４】
ＧＵＩプロセッサ2600はステートメントを実行し、ユーザ入力を受信する。ＧＵＩプロセッサ2600は図１７の解釈装置1700のような解釈装置から暗号化され解釈されたＨＢＤＬ（ＥＩＨＢＤＬ）2612を受信する。暗号化／解読モジュール2602は解釈されたＨＢＤＬ（ＩＨＢＤＬ）2614を形成するために情報を解読し、これはグラフィックモジュール2604により処理される。これらの例では、ＩＨＢＤＬ2614は装置2618の表示を発生するために使用されることができるプリミティブまたはステートメントのセットを表す。
【０１７５】
グラフィックモジュール2604は装置2618で表示するための画素を発生し、そのデータを出力モジュール2606へ送信し、出力モジュール2606は装置2616としてデータを装置2618へ送信する。ユーザ入力は入力モジュール2608により装置2620として装置2618から受信される。このモジュールは装置のデータをＨＢＤＬ発生器2610へ送信し、これはＨＢＤＬ2622の形態でこのユーザ入力を表す。ＨＢＤＬ2622はＨＢＤＬ中に書かれたユーザ入力である。この入力は暗号化／解読モジュール2602により暗号化され、暗号化されたＨＢＤＬ（ＥＨＢＤＬ）2624として解釈装置へ戻される。
【０１７６】
これらの例示的な例では、ＧＵＩプロセッサ2600は装置2618の近くのハードウェアで実行する。実際に多くのケースでは、ＧＵＩプロセッサ2600の一部が実際に装置2618で実行でき、別の部分はサーバのようなデータ処理システム上で実行する。ＧＵＩプロセッサ2600はデータを提示することを必要とされるネットワークリソースの使用を減少するように装置2618の近くに位置される。さらに、ＧＵＩプロセッサ2600の配置はこれらの例ではデータを表示しユーザ入力を受信することにおける待ち時間を減少するために行われる。
【０１７７】
図２７を参照すると、グラフィカル・ユーザインターフェース（ＧＵＩ）プロセッサを通るデータ流を示す図のフローチャートが有効な実施形態により示されている。この例ではグラフィックモジュール2700は図２６のグラフィックモジュール2604の１例である。グラフィックモジュール2700はこれらの例では解釈されたＨＢＤＬをプリミティブ2702の形態で受信する。これらのプリミティブは解釈装置によるソースコードの解釈の結果である。
【０１７８】
グラフィックモジュール2700はビットマップの画素と、ビットマップがどのように操作され又は表示されることができるかを識別するデータを発生するためにこれらのプリミティブを処理する。この情報はビットマップデータ2704としてクライアントプロセス2706へ送信される。これらの例では、クライアントプロセス2706は図１９の装置1918のプロセスのような装置で実行するプロセスである。このクライアントプロセスはディスプレイ2708上にビットマップデータを表示するために必要とされる動作を行う。このようにして、表示のための画像をレンダリングするために必要なグラフィック処理はグラフィックモジュール2700により実行される。クライアントプロセス2706は与えられたビットマップデータを表示するだけであり、プリミティブからビットマップグラフィックをレンダリングするために必要とされる異なるプロセスおよび処理電力を必要としない。この処理の分割により、データを表示する装置はワークステーションで使用されるグラフィックのようなグラフィックをレンダリングするために使用される異なるグラフィックプロセッサ及びグラフィックパイプラインを必要としない。
【０１７９】
結果として、グラフィックはプリミティブを処理するのに十分な処理電力を通常もたない多数の異なる装置で表示されることができる。例えばクライアントプロセス2706とディスプレイ2708は移動体電話、パーソナルデジタルアシスタントまたはタブレットＰＣ中に構成されることができる。
【０１８０】
入力装置2710はディスプレイ2708で表示されているデータに関してユーザ入力を受信する。このユーザ入力はボタンの選択、データの入力又はコマンドの送信のようにグラフィックを操作することができる。ユーザがディスプレイ2708上のビットマップを操作することにより表示された画像を変更するとき、表示されている画像の変更における差異又は変化はクライアントプロセス2706により識別される。これらの画像の差異は差異データ2712を形成し、これはＨＢＤＬ発生器2714へ戻される。
【０１８１】
ＨＢＤＬ発生器2714は図２６のＨＢＤＬ発生器2610に類似している。ＨＢＤＬ発生器2210は情報中のこの変化又はデルタを識別し、これをＨＢＤＬ2716へ変換して、解釈装置へ送信する。ＨＢＤＬ2716はソースコードモジュールの言語によるステートメント又はコードを含んでおり、ソースコードへ変更を行うために使用されることができる。グラフィックモジュール2700は異なるビットマップのための画素を生成するためにプリミティブ2702を使用する。
【０１８２】
図２８を参照すると、ディスプレイの操作を示す図が有効な実施形態により示されている。この例示的な例では、ディスプレイ2800は図２７のディスプレイ2708で提示されたディスプレイの１例である。ディスプレイ2800はプリミティブから生成されたビットマップを使用して提示される。この例では、ビットマップはスライダ2802とフィールド2804のような異なるコンポーネントを表すために使用される。スライダ2802とフィールド2804を表すために使用されるビットマップデータはこれらのビットマップが操作されることができる態様を示すデータと共に送信される。この例ではスライダ2802は図２８の位置2806から、ディスプレイ2800の変更されたバージョンである図２９のディスプレイ2902内の位置2900へユーザ入力を通して移動されることができる。さらに、図２９のディスプレイ2902に示されているように５０のような値がフィールド2804へ入力されることができる。ビットマップ中のこれらの変化は有効な実施形態にしたがってＧＵＩプロセッサへ戻され、これはその後これらの変化に基づいてソースコードの適切なステートメントを発生する。
【０１８３】
図３０を参照すると、ビットマップの変化を識別するプロセスのフローチャートが有効な実施形態により示されている。図３０に示されているプロセスは図２７のクライアントプロセス2706のような装置におけるクライアントプロセスで実行されることができるプロセスの１例である。
【０１８４】
プロセスはユーザ入力の監視により開始する（動作3000）。ユーザ入力がディスプレイに関して検出されたか否かについての決定が行われる（動作3002）。ユーザ入力が検出されないならば、プロセスは動作3000に戻る。そうでなければ、ユーザ入力が制御を操作するか否かについての決定が行われる（動作3004）。ユーザ入力が制御を操作するならば、制御に対して行われる変化はビットマップで識別される（動作3006）。ビットマップにおけるこの差異又は変化はＧＵＩプロセッサに返送され（動作3008）、プロセスはその後付加的なユーザ入力を監視するために動作3000に戻る。データの変化は特定の実行にしたがって、変化された実際のビットマップであるか又はビットマップの位置の変化の識別である可能性がある。勿論、他のタイプの変化が実施形態に応じて使用されることができる。
【０１８５】
再度動作3004を参照する。ユーザ入力が制御の操作ではないならば、ユーザ入力がフィールドへのデータの入力であるか否かの決定が行われる（動作3010）。ユーザ入力がデータの入力ではないならば、プロセスは動作3000に戻る。そうでなければ、プロセスはビットマップで行われた変更を識別するために進行する（動作3006）。
【０１８６】
これらの例ではユーザ入力に関して行われる特定の決定は図２１の実行モジュール2100のようなディスプレイ中のフィールド及び制御に対する変化を識別するための決定である。関係するビットマップに対する任意のタイプの変化について決定が行われることができる。例えば変化は特定のボタンが選択されているか又は切り換えられているかである可能性がある。
【０１８７】
図３１を参照すると、差異データを処理するためのプロセスのフローチャートが有効な実施形態により示されている。図３１に示されているプロセスは図２６のＧＵＩプロセッサ2600のようなＧＵＩプロセッサで実行されることができる。特に、図３１に示されているプロセスは図２７のＨＢＤＬ発生器2714で実行されることができる。
【０１８８】
プロセスは差異データをクライアントプロセスから受信することにより開始する（動作3100）。これらの例では、差異データはユーザ入力により発生されたビットマップ中の変化を含んでいる。プロセスはその後、差異に基づいてユーザ入力を識別する（動作3102）。このユーザ入力は例えばスライダ位置の変化、データフィールドへのデータの入力、又は幾つかの他のユーザ入力として識別されることができる。動作3102で行われる識別は装置に送信されたもとのビットマップを変化されたビットマップと比較することにより行われることができる。例えばユーザ入力は、差異がこのタイプの制御に沿った上方向のスライダの動作として識別されるならば、人間の時刻表を変更するために行われる。このタイプの差異の１例が実行モジュール2100に関して図２１に示されている。
【０１８９】
その後、ユーザ入力はソースコードにより使用されるフォーマットに変換される（動作3104）。これらの例では、ユーザ入力はＨＰＤＬフォーマットへ変化される。変換されたユーザ入力は解釈装置へ送信され（動作3106）、プロセスはその後終了する。
【０１９０】
図３２を参照すると、人間の透明模範を与えることにおいて使用するコンポーネントを示す図が有効な実施形態により示されている。この例示的な例では、シミュレーション3200が図４のフレームワーク400のようなフレームワークを使用して実行される。特にシミュレーション3200は図４の解釈装置404のような解釈装置によるソースコードの解釈を通して実行される。
【０１９１】
この特定の例では、シミュレーション3200は人工知能（ＡＩ）3202を含んでおり、これはシミュレーション3200内に人間を表す。人工知能3202により実行されているこの人間はこれらの例では合成人間である。人工知能3202のコードはシミュレーション3200で使用される他の情報に加えて定義3204から検索される。定義3204は図４のソースコード402のようなソースコードで発見される。定義3204は合成人間とその他の人間、および人間がシミュレーション3200で存在する環境の定義を含んでいる。
【０１９２】
結果がシミュレーション3200期間中に生成されるとき、これらの結果はユーザ入力3208として通信モジュール3206へ送信される。これらの通信モジュールもこの例では、図４の解釈装置404のような解釈装置で発見されることができる。通信モジュール3206はシミュレーション3200からユーザ入力3208を取り、変更し、または新しい定義を定義3204へ書き込む。これは変更されたソースコードを形成し、これはその後付加的な結果を生成するためにシミュレーション3200により使用される。人工知能3202はこれらの例の生きたユーザと同じ方法でフレームワークへログされる。
【０１９３】
さらに、シミュレーション3200からの結果3210はユーザ3214へ提示するため装置3212へ送信される。これらの例では、ユーザ3214は実際の人間である。
【０１９４】
示されている実施形態は人間の透明模範の使用を可能にする。この模範では、定義3204へ再書込みされる人工知能3202により発生されたユーザ入力3208はユーザ3214からの生きた（live）ユーザの入力と置換されることができる。換言すると、ユーザ3214はシミュレーション3200内で人工知能3202を通してシミュレートされた合成人間により生成されるユーザ入力3208の代わりに、新しい定義を変更するか定義3204中に書込むためのユーザ入力3216を通信モジュール3206へ送信することができる。これらの例では、ユーザ3214はユーザ入力3216を与える主題の専門家であってもよい。これらの例では、ユーザ入力3216はシミュレーション3200期間中に与えられる。このユーザ入力は装置3212で受信されて維持される結果に応答したものである可能性がある。
【０１９５】
人工知能3202によりシミュレートされる合成人間は合成人間に対する特有の識別子（ＵＩ）3218と関連されるユーザ入力3208を発生する。ユーザ入力3208はシミュレーション3200期間中に人工知能3202により発生される。ユーザ入力3216は特有の識別子3218に関連される。ユーザ入力3208は通信モジュール3206へ送信される。通信モジュール3206はユーザ入力3208を使用して、新しい定義を付加するか現在の定義を変更することにより定義3204を変更する。通信モジュール3206は特有の識別子3218に基づいて、変更するための定義3204の部分を知ることができる。
【０１９６】
ユーザ3214がユーザ入力3216を発生するとき、ユーザ入力3216は通信モジュール3206により受信される。これらの例示的な例では、ユーザ入力3216は特有の識別子3218を含むこともできる。このようにして、通信モジュール3206は特有の識別子3218に関連される合成人間の定義3204を変更する。
【０１９７】
このようにして、ユーザ3214はシミュレーション3200内の人工知能3202を通してシミュレートされる合成人間を置換できる。ユーザ3214は通信モジュール3206へ送信されたリクエストに基づいて、オンザフライで人工知能3202をオン及びオフに切り換える。
【０１９８】
ユーザ入力3208をユーザ入力3216で置換することを開始するとき、装置3212のユーザ3214は通信モジュール3206へリクエストを送信する。この点で、ユーザ3214はログオンされており、通信モジュール3206により認証されていると仮定される。通信モジュール3206はユーザ3214が人工知能3202をオン及びオフに切り換える権利を与えられているか否かを決定する。換言すると、通信モジュール3206はユーザ3214が合成人間を置換できるか否かを決定する。ユーザ3214が権利を与えられているならば、通信モジュール3206は人工知能3202の使用を停止するためフラグを設定する。換言すると、人工知能3202の機能はもはやシミュレーション3200内で呼ばれない。
【０１９９】
この時点で、ユーザ3214は特有の識別子3218を含むユーザ入力3216を発生する。特定の構造にしたがって、特有の識別子3218はユーザ3214が装置3212でユーザ入力を送信するという認識に基づいて通信モジュール3206により付加されることができる。
【０２００】
図３３を参照すると、合成人間を生きた人間と置換するプロセスのフローチャートが有効な実施形態により示されている。この例では、図３３に示されているプロセスは図４の解釈装置404のような解釈装置で実行されることができる。特に、プロセスは解釈装置404内の通信モジュールで実行されることができる。
【０２０１】
プロセスは合成人間を置換するためのユーザからのリクエストを受信することにより開始する（動作3300）。その後、ユーザがシミュレートされた人間を置換する権利を有するか否かについての決定が行われる(動作3302)。これらの例では、いずれのユーザがシミュレーション期間中に合成人間を置換できるかを規定するリストまたはデータベースに対してユーザを比較することにより決定が行われることができる。例えばあるユーザはある分野の主題専門家であり、これらの特定の分野の合成人間を置換することを可能にされることができる。例えば特定のユーザは政治に関する主題専門家であってもよい。そのユーザはシミュレーションで政治家である合成人間を置換することを可能にされることができる。しかしながらその主題ユーザは、農夫または兵士である合成人間を置換することを可能にされることができず、それはその主題専門家がこれらの領域の知識人ではないからである。
【０２０２】
いずれのユーザが合成人間を置換することができるかについての特定の規則は全体的に特定の実装に基づいている。ユーザが合成人間を置換する権利を有するならば、合成人間の人工知能の使用は定義においてオフに切り換えられる（動作3304）。
【０２０３】
その後、プロセスはユーザからのユーザ入力を待機する（動作3306）。ユーザ入力が受信されるとき、ユーザ入力が新しい定義を定義に書き込むか否かの決定が行われる（動作3308）。ユーザ入力が新しい定義を書き込むならば、ユーザ入力は新しい定義を書き込むための形態にフォーマットされる（動作3310）。その後、定義はソースコードに書き込まれ（動作3312）、プロセスはその後前述したように動作3306へ戻る。
【０２０４】
再度、動作3308を参照すると、ユーザ入力が新しい定義を書き込まないならば、ユーザ入力が人工知能をオン切り換えるか否かの決定が行われる（動作3314）。ユーザ入力は人工知能をオンに切り換えないならば、プロセスは動作3306へ戻る。そうでなければ人工知能は合成人間のシミュレートで使用するために再度オンに切り換えられ、その後プロセスは終了する。動作3316は合成人間をシミュレーションの位置に戻し、シミュレーションから生きた人間を除去する。
【０２０５】
再度動作3302を参照すると、ユーザが合成人間の置換を許可されていないならば、エラーメッセージが発生され（動作3318）、プロセスはその後終了する。
【０２０６】
フレームワークにより与えられるシミュレーションは人間の行動を間違いなく１００％予測することを意図するのではなく、決定又は変更する可能性のある確率を提供することを意図している。シミュレーションからの結果はフレームワークにより行われるシミュレーションなしでは可能ではない案内及び予測を提供する。
【０２０７】
異なる有効な実施形態では、ソースコード600は図６の定義602、行為604、ＧＵＩ言語606の異なる特徴を与えるように特別に設計された言語を使用して構成されることができる。他の有効な実施形態では、図６のソースコード600は他の既存の言語またはプログラミング方法からの機能及び特性を含むこともできる。
【０２０８】
異なる有効な実施形態では、人工知能システムは例えば図６の定義602および／または行為604のようなソースコード600の部分を構成することに使用されることができる。幾つかの有効な実施形態では、人工知能はニューラルネットワークの形態（又は人工知能の他の形態）で、種々のオブジェクトをシミュレートするために使用されることができる。例えばニューラルネットワークは人または動物のような生命体または生体をシミュレートするために使用されることができる。
【０２０９】
人工知能は例えば形式及び統計解析により特徴付けされる機械学習が使用される通常の人工知能であってもよい。さらに人工知能は例えば計算知能の形態であってもよい。計算知能は反復的開発又は学習を含んでいる。このタイプの人工知能は経験的データに基づいて学習することができる。計算知能の例は例えば限定ではないが、ニューラルネットワーク、ファジー論理、遺伝的アルゴリズムを含んでいる。これらのプログラミング技術は図６のソースコード600内に付加的な特徴を補充又は提供するために使用されることができる。他の有効な実施形態では、図６のソースコード600は種々のプログラミング技術に加えて又はそれと共に既存のプログラミング言語を使用して構成されることができる。
【０２１０】
１つの有効な実施形態では、ニューラルネットワークのようなプログラミング技術は図６のソースコード600の部分を構成するために使用されることができる。例えば図６の定義602の一部又は全てはニューラルネットワークを使用して構成されることができる。ニューラルネットワークは生物学的ニューラルネットワークに基づいた数学的な計算的モデルである。ニューラルネットワークは非線形の統計データモデル化プールを提供し、入力と出力間の複雑な関係をモデル化するために使用されることができる。ニューラルネットワークは図６の定義602内の種々のオブジェクトの学習機能を与えるために使用されることができる。
【０２１１】
１例では、ニューラルネットワーク技術は、人、動物のような異なるオブジェクト又は図６のソースコード600の定義602内の他の適切なオブジェクトにおける学習特徴を提供するために使用されることができる。このタイプの例では、ＮＮはニューラルネットワーク変数のタイプを示している。宣言の１例は“ＮＮ  ｎ；”であってもよい。このタイプのステートメントはこの例ではニューラルネットワーク変数を宣言する。Children、n.input、n.output、n.hiddenも生成されることができる。これらの他の変数はニューラルネットワークで入力、出力、隠された層を表している。これらの層はユーザが異なる層へニューロンを付加することを可能にする。これらの異なる層では、入力ニューロンは子供として入力ニューロンネットワーク層へ付加されることができる。
【０２１２】
図３４を参照すると、ステートメント3400と3402は入力ニューロンの例である。ステートメント3400のセクション3404はニューラルネットワークｎの入力ニューロンとして“left operand”を宣言する。この入力要素は入力ニューロンの総数を読取るために使用されることもできる。要素“input”の値は新しい要素が付加される度に１増加される。結果として、入力値は入力ニューロンの総数である。これらのステートメントはＣ言語を使用して構成されることができるＨＢＤＬ擬似コードの例である。他の言語は例えばC+および／またはObjective-Cである。
【０２１３】
これらの例では、入力ニューロン変数は０値から１値の範囲であることができる。各入力ニューロン変数は最小範囲と最大範囲を有する。これらの範囲はユーザがその範囲内に任意の値を入力することを可能にする。これらの値は特定の実行に基づいて、使用前に正規化されることもできる。
【０２１４】
図３５を参照すると、ステートメント3500と3502は入力ニューロンの左オペランドで規定された入力範囲の例である。この例では、ステートメント3500は−１０の最小値を規定し、ステートメント3502は１０の最大値を規定している。
【０２１５】
図３６を参照すると、入力行動のステートメントの図が有効な実施形態により示されている。ステートメント3600は入力ニューロンが使用される前に入力ニューロンが変更されることを可能にする。換言すると、入力ニューロンはそのニューロンにより入力されたユーザの操作を可能にするためそのニューロンに取付けられているか又は関連されているコードを有することができる。例えばユーザ入力は短くても長くてもよい。この例では、ニューロン入力の行動は０と１の間で評価するために短い及び長いと解釈する。ステートメント3600はこのタイプの行動を入力ニューロンに取付けるために使用されることができるコードの１例である。
【０２１６】
次に図３７を参照すると、出力宣言を示す図が有効な実施形態により示されている。ステートメント3700は子供を出力ニューラルネットワーク層へ付加するために使用されるステートメントの１例である。
【０２１７】
図３８を参照すると、ニューラルネットワークの出力範囲のステートメントを示す図が有効な実施形態により示されている。この例では、ステートメント3800と3802は出力ニューロンで設定されることができる範囲の例である。最小及び最大範囲はステートメント3800と3802により設定される。
【０２１８】
この特定の例では、出力ニューロンで最小値は−５０であり、最大値は５０である。さらにユーザは暗黙的な正規化された出力を特定された範囲内の値へ変換できる。例えば１の出力は５０に変換されることができ、０．５の出力は０に変換されることができる。さらに出力ニューロンは出力を操作するためにコードに関連されることもできる。
【０２１９】
図３９を参照すると、出力の行動を変更するためのステートメントを示す図が有効な実施形態により示されている。ステートメント3900は出力ニューロンに関連されることができるコードの１例である。この例では、ニューロンの出力の行動は低及び高に対する０と１の間の値と解釈される。
【０２２０】
図４０を参照すると、隠れた層のステートメントを示す図が有効な実施形態により示されている。ステートメント4000と4002は任意のニューラルネットワークの隠された層を宣言するために使用されることができるステートメントの例である。隠された層の順序はこれらの例では隠された層の宣言の順序にしたがっている。隠された層の変数の値は特定の隠された層に割当てられたニューロンの数を特定する。ステートメント4000と4002はこれらの例では２つの隠された層を宣言する。ステートメント4000により規定される第１の層は５つのニューロンを含み、ステートメント4002で宣言される第２の層は３つのニューロンを規定する。
【０２２１】
図４１を参照すると、コード4100はニューラルサンプル値の特定に使用されている１サンプルのニューラルネットワーク要素を示している。異なるサンプルが特定されることができる。各入力及び出力ニューロンはステートメント内に“sample[int]”を含んでいる。ニューラルネットワークが完了されるとき、ユーザはニューラルネットワークを訓練し使用することができる。
【０２２２】
図４２を参照すると、ニューラルネットワークを訓練するための例示的なステートメントが有効な実施形態により示されている。ステートメント4200、4202、4204はニューラルネットワークの訓練に使用されるステートメントの例である。ステートメント4200はニューラルネットワークが５００回訓練されることを示している。ステートメント4202は３００回、ステートメント4204は２００回の訓練を示している。これらの例では、訓練は記憶されている結果で累積する。これらの異なる結果は特定のオブジェクトに対して図６の定義602又はソースコード602内に記憶されることができる。
【０２２３】
図４３を参照すると、ニューラルネットワークの計算機能を示す図が有効な実施形態により示されている。この例では、ステートメント4300とステートメント4302は入力ニューロンに機能を行わせて結果を返送させるために使用されるステートメントの１例を提供する。ステートメント4304はこれらの例ではステートメント4300とステートメント4302の代わりの表現である。
【０２２４】
図４４を参照すると、ニューラルネットワークの１例を示す図が有効な実施形態により示されている。この例では、コード4400はニューラルネットワークを訓練し実行するためのステートメントと共にニューラルネットワークの定義を含んでいる。入力宣言はセクション4402で発見される。入力範囲は4404と4406で発見される。ニューロンに関連されるコードはステートメント4408とステートメント4410で発見される。出力範囲はセクション4412で発見され、出力の行動はステートメント4414で発見される。
【０２２５】
隠された層はセクション4416で規定され、機能はステートメント4418で発見される。サンプルはセクション4420で発見されることができ、ステートメント4422は訓練ステートメントの１例である。セクション4424はニューラルネットワークを動作するために使用されるステートメントの例を示している。セクション4424内のステートメント4426は結果を表示する。
【０２２６】
図４５を参照すると、ニューラルネットワークの動作からの結果を示す図が有効な実施形態にしたがって示される。この例では、ディスプレイ4500は図４４のコード4400からのショーステートメント4426に応答して発生されるディスプレイの１例である。
【０２２７】
ニューラルネットワークに加えて、ダイナミックリストが図６の定義602内のオブジェクトの種々の属性と特性を管理するために使用されることができる。ダイナミックリストは図８のオブジェクト800の特徴804と図９のオブジェクト900の特徴904のような特徴を規定するために使用されることができる。
【０２２８】
例えばダイナミックリストはオブジェクトのコンポーネントの識別、能力、特徴又はその他の適切なパラメータを提供するために使用されることができる。例えば、オブジェクトが自動車であるならば、ダイナミックリストは車輪、エンジン、車体、塗装、送信、窓のようなコンポーネントおよびその他のコンポーネントを識別するために使用されることができる。コンポーネントが自動車に付加されるか除去されるとき、リストはこれらの変更を識別するように変更されることができる。
【０２２９】
異なる有効な実施形態では、任意の変数がリストで使用されることができる。ダイナミックリストにより、定義は予測されるコンポーネント又はパラメータに基づいてリストのサイズを予め規定しなければならないという制限を受けない。代わりにリストサイズは種々のパラメータ又はコンポーネントが特定の定義に付加されるか又は除去されるときに変化することができる。
【０２３０】
図４６を参照すると、リストの例を示す図が有効な実施形態により示されている。この例では、コード4600はステートメント4600でリスト１を規定している。ステートメント4602、4604、4606はリスト１の値を有する３つの変数を識別する。この例では、リスト１はアレイとして作用する。コード4600のステートメント4608はアレイのサイズを識別する値を戻すサイズ機能の１例である。この例では、ステートメント4608は３の値を戻す。
【０２３１】
ステートメント4610と4612はコード4600中のリストを検索するために使用されるステートメントの例である。ステートメント4610は真に等しい２の値を戻し、ステートメント4612は誤に等しい０の値を戻す。ステートメント4610と4612におけるこれらの検索機能はリストがある値を含んでいるか否かを決定するために使用されることができる。ある値がリストに存在するならば、リスト中のその値に対するインデックスが戻される。そうでなければ、０の値が戻される。
【０２３２】
図４７を参照すると、リストから変数を削除する処理を示す図が有効な実施形態により示されている。この例では、コード4700はセクション4702で規定されているようにリストを含んでいる。ステートメント4704はコード4700のリストからアイテムを削除するために使用されることができる削除機能である。ステートメント4704は特定のアイテムがリストに存在するか否かを決定するためにリストを検索する。アイテムが発見されたならば、アイテムはリストから除去される。ステートメント4704は除去されたアイテムを識別するインデックスを戻す。そうでなければステートメント4704は０を戻す。この例では、値２５がコード4700のリストに存在せず、０が戻され、何の行為も取られない。この例では、アイテムは値を識別することにより削除される。
【０２３３】
図４８を参照すると、アイテムを削除するためのコードの図が有効な実施形態により示されている。この例では、コード4800はセクション4802のリストを規定している。ステートメント4804と4806はインデックス値に基づいてリスト中のアイテムを削除するために使用されるステートメントである。ステートメントがリストサイズに満たないインデックス値を識別したならば、アイテムはリストに位置付けられ削除される。機能はその後削除されたアイテムの値を戻す。そうでなければ、アイテムがリストで発見されなかったことを意味する０が戻される。セクション4802に規定されているように、３つのアイテムがリストに存在するので、ステートメント4804は０を戻す。ステートメント4806の結果は２０が戻され、ステートメント4808で規定されているアイテムは削除される。
【０２３４】
図４９を参照すると、リスト中のアイテムを操作するためのコードを示す図が有効な実施形態で示されている。この例では、コード4900はリスト中のアイテムの操作に使用されることができる。これらの例では、コード4900はスタックのリストを使用するためプッシュ・アンド・ポップ機能を含んでいる。ステートメント4902は操作が行われるリストを識別する。この例ではセクション4904はリストに対して行われた３つのプッシュを識別する。ステートメント4906はリストの正面からポップされたアイテムからの値を戻す。
【０２３５】
これらのタイプの機能はコンピュータシステムのスタックの操作に使用される機能と類似している。プッシュはリストの上部に特定のアイテムをプッシュするか動かすために使用される。ポップはリストの上部のアイテムの値を戻すために使用される。ポップステートメントが１つの値又はパラメータを含んでいるならば、このステートメントはパラメータの値にしたがってスタックからの値をポップするか戻す。ステートメント4908では、ポップされているアイテムは３のインデックス値を有するアイテムであり、これはこれらの例ではリスト中の第３のアイテムである。
【０２３６】
図５０を参照すると、待ち行列としてリストの使用を示す図が有効な実施形態により示されている。この例では、コード5000は待ち行列としてリストを走査するために使用されることができるエンキューおよびデキュー機能を示している。ステートメント5002に示されているようなエンキュー機能はアーギュメントをリストの下部に付加する。
【０２３７】
ステートメント5004で示されているようなデキュー機能はリストから上部のアイテムを除去し、そのアイテムの値を戻す。この例では、ステートメント5002はアイテムをリスト１に付加し、ステートメント5006は別のアイテムを待ち行列の上部に付加する。ステートメント5002のアイテムは待ち行列の第２に存在する。ステートメント5008はさらに別のアイテムを待ち行列に付加し、他のアイテムを待ち行列の下位置へ押しやる。
【０２３８】
図５１を参照すると、リスト中のアイテムの読取りを示す図が有効な実施形態により示されている。この例では、コード5100はセクション5102に規定されているようにリストの上部と下部からのアイテムの読取りを示している。ステートメント5104はリストの上部に位置するアイテムを読取り、ステートメント5106はリストの下部に含まれているアイテムを読取る。
【０２３９】
図５２を参照すると、リスト中の分類属性が有効な実施形態により示されている。コード5200はリストの分類ステータスを識別するために使用されるステートメントを含んでいる。ステートメント5202は分類ステータスがそのリストのために設定されているか否かを識別する。ステートメント5202が正に等しく設定されるならば、アイテムはそれらの値に従ってリストに挿入される。ステートメント5204は分類順序を識別する。
【０２４０】
ステートメント5204が真に等しく設定されるならば、リストは最小から最大へ降順に分類される。この例では、ステートメント5204は誤に等しく設定される。結果として、アイテムはセクション5206に示されているように降順でリストに付加される。さらに付加的なステートメントが種々の順序でリストを分類するために使用されることができる。
【０２４１】
図６のソースコード600を構成するために使用されることができるプログラミング技術の別の例はファジー論理である。ファジー論理を構成するために使用される言語の１例はプロローグであり、これはファジー論理および人工知能プログラミングのために使用されることができる論理プログラミング言語である。
【０２４２】
示された例では、ファジー論理システムが論理的ステートメントに基づくことができ、ここではオペランドは幾つかのセットから取られた項である。１例では、セットは例えば燃料、距離、速度であることができる。燃料は３つの項、即ち低、中、高を含むことができる。距離は近および遠であることができる。速度はこれらの例では低、中、高であることができる。これらのセットは燃料が低であるか距離が近いならば、速度が低であるような規則を提供するために使用されることができる。別の規則は燃料が中であり、距離が遠であるならば、速度は中である。第３の規則は燃料が高であり、距離が遠であるならば、速度が高である。ファジー論理により、セットの異なる要素について範囲が設定されることができる。これらの範囲は最小及び最大の範囲を含んでいる。
【０２４３】
図５３を参照すると、燃料、距離、速度を使用するファジー論理の構成の１例が有効な実施形態により示されている。この例では、コード5300はセクション5302でこれらのセットを規定する。燃料は整数であり、距離と速度が浮動変数である。セクション5304は燃料の最小及び最大の範囲を０と１００の間にあるとして識別する。
【０２４４】
燃料の開始及び終了項はセクション5306で規定される。このセクションはファジーセットの左及び右エッジを識別する。セクション5308、5310、5312は燃料に対する項を識別する。セクション5308は台形項を識別し、セクション5310は三角形項を識別し、セクション5312は釣鐘曲線項を識別する。
【０２４５】
距離についての類似の定義がセクション5314で発見される。ファジー論理の規則はこの例ではセクション5316で規定されている。セクション5318は燃料と距離の初期値を識別する。ステートメント5320は速度の計算に使用される。
【０２４６】
図６のソースコード600内の種々のオブジェクトをシミュレートするために使用されることができる別のタイプのプログラミング技術は進化的計算を含んでいる。進化的計算は人工知能の１タイプである。１つの特別な方法又は方法論は遺伝的アルゴリズムである。このアルゴリズムは解を識別するために使用される検索技術である。このタイプの技術はグローバルサーチ発見タイプの技術と考えられる。遺伝的アルゴリズムにより、遺伝子が染色体と同様に宣言される。適合度関数、選択プロセス、組み変え機能もこのタイプの技術を使用して特定される。
【０２４７】
図５４を参照すると、遺伝的アルゴリズムを使用する式の解を示す図が有効な実施形態により示されている。この例では、コード5400は式２Ｘ＋３Ｙ＝２０を解くために使用される。
【０２４８】
この例では、２つの遺伝子がセクション5402で開始される。これらの２つの遺伝子は変数ＸとＹに対応する。染色体はセクション5404の遺伝子に付加される。適合度関数のコードはステートメント5406で識別されることができる。選択関数のコードはステートメント5408を使用して特定されることができる。組み変え機能のコードはステートメント5410で特定されることができる。
【０２４９】
これらの機能に対するコードは特定のステートメントにおける任意の有効な機能を使用して構成されることができる。これらの選択プロセスはコードにより特定される最も適切であるかまたは最良適合の染色体を選択するために使用される。例えばルーレットのホイール選択プロセスが使用されてもよい。ステートメント5410の組み変え機能に関しては、このステートメントは染色体の新世代を構築するためコードを識別するために使用されることができる。
【０２５０】
１つの例では、二進変数のクロスオーバー法が使用されてもよい。ステートメント5412はプロセスの許容誤差を特定し、ステートメント5414はコード5400で進化機能を呼び出す。ステートメント5414で識別される進化プロセスはこの例では、最適合染色体の許容誤差がステートメント5412で特定される誤差よりも小さいときはいつでも停止する。コード5400で規定されるようにプロセスを実行することにより、遺伝子Ｘは染色体に最も適合するＸ値を戻し、遺伝子Ｙは染色体に最も適合するＹ値を戻す。
【０２５１】
図５５Ａと５５Ｂを参照すると、ソースコード中のオブジェクトのコードを示す図が有効な実施形態により示されている。この例では、コード5500は森の形態のオブジェクトの定義の１例である。セクション5502は森中の木の色を識別する。コード5500中のセクション5504は森のグリッドを識別する。セクション5506は森のグリッドに存在できる木を規定する。セクション5508は森中の木の行を識別する。セクション5510はセクション5508で規定されたような木の１以上の行を含む木の区画を生成するために使用される。セクション5512は森を存在するために使用されることができるコードの１例である。これらの例では、ライン5514と5516は森中にランダムさを与えるために使用される変換ステートメントである。例えば回転および／またはスケールステートメントのような他のステートメントもこれらのステートメントに加えて又はその代わりに使用されることができる。
【０２５２】
これらの例では、コード5500はＣ言語を使用して書かれる。勿論、任意の言語が森の定義を生成するために使用されることができる。さらに、森のプレゼンテーションは図６のソースコード600の定義602で発見されることができる。勿論、コードは特定の実装に基づいて任意の言語を使用してまたは任意のオブジェクトで生成されることができる。
【０２５３】
異なる示された実施形態のフローチャートとブロック図は装置、方法、コンピュータプログラムプロダクトの幾つかの可能な構成のアーキテクチャ、機能、動作を示している。これに関して、フローチャート又はブロック図の各ブロックはコンピュータの使用可能又は読取り可能なプログラムコードのモジュール、セグメント又は部分を表すことができ、これは特定された１又は複数の機能を行うための１以上の実行可能な命令を含んでいる。幾つかの別の構成では、ブロックに注記されている１又は複数の機能は図面で注記されている順序以外の順で行われることができる。例えば幾つかのケースでは、連続して示されている２つのブロックは含まれている機能にしたがって、実質的に同時に行われるか、またはブロックは時には反対の順序で行われることができる。
【０２５４】
異なる有効な実施形態は全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態またはハードウェアとソフトウェア素子の両者を含んでいる１実施形態の形態を取ることができる。幾つかの実施形態はソフトウェアで構成され、これは例えばファームウェア、常駐ソフトウェア、マイクロコードを含んでいるが、その形態に限定されない。
【０２５５】
さらに、異なる実施形態は命令を実行するコンピュータまたは任意の装置或いはシステムにより又はそれらと共に使用するためのプログラムコードを提供するコンピュータが使用可能な又はコンピュータが読取り可能な媒体からアクセス可能なコンピュータプログラムプロダクトの形態を取ることができる。この説明の目的では、コンピュータが使用可能な又はコンピュータが読取り可能な媒体は通常、命令実行システム、装置またはデバイスにより又はそれらと共に使用するためのプログラムを含み、それを記憶し、通信し、伝播し、または転送することができる任意の有形の装置であってもよい。
【０２５６】
コンピュータが使用可能又は読取り可能な媒体は、電子、磁気、光学、電磁、赤外線、または半導体システム或いは伝播媒体であることができるが、それに限定されない。限定ではないコンピュータの読取り可能な媒体の例は半導体または固体状態メモリ、磁気テープ、取り出し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、剛性な磁気ディスク、光ディスクを含んでいる。光ディスクはコンパクトディスク−読取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−読取り／書き込み（ＣＤ−Ｒ／Ｗ）及びＤＶＤを含むことができる。これらの例では、物理的または有形のコンピュータが読取り可能な媒体は記録可能なコンピュータ記憶媒体と呼ばれる。
【０２５７】
さらに、コンピュータが使用可能な又はコンピュータが読取り可能な媒体はコンピュータが読取り可能又は使用可能なプログラムコードを含み又は記憶することができ、それによってコンピュータが読取り可能な又はコンピュータが使用可能なプログラムコードがコンピュータで実行されるとき、このコンピュータが読取り可能なまたは使用可能なプログラムコードの実行によってコンピュータは別のコンピュータが読取り可能又は使用可能なプログラムコードを通信リンクによって送信する。この通信リンクは限定ではない例えば物理的又は無線の媒体を使用することができる。
【０２５８】
コンピュータが読取り可能又はコンピュータが使用可能なプログラムコードを記憶および／または実行するのに適したデータ処理システムはシステムバスのような通信構造を通してメモリ素子へ直接的又は間接的に結合される１以上のプロセッサを含む。メモリ素子はプログラムコードの実際の実行期間に使用されるローカルメモリと、大容量記憶装置と、コードの実行期間中に大容量記憶装置からコードが検索される回数を減少するため少なくとも幾つかのコンピュータが読取り可能又はコンピュータが使用可能なプログラムコードの一時的な記憶を行うキャッシュメモリを含むことができる。
【０２５９】
入力／出力又はＩ／Ｏ装置は直接的に又は介在するＩ／Ｏ制御装置を通してシステムに結合されることができる。これらの装置は例えば限定ではないが、キーボード、タッチスクリーンディスプレイ、位置指示装置を含むことができる。異なる通信アダプタもデータ処理システムが介在する私的又は公共のネットワークを通して、他のデータ処理システムまたは遠隔プリンタ又は記憶装置へ結合できるようにシステムに結合されることができる。限定ではない例はモデムであり、ネットワークアダプタは現在利用可能なタイプの通信アダプタの単なる数例である。
【０２６０】
本発明の開示の説明は例示及び説明の目的で行われ、開示した形態の説明と完全に同じであるかそれに限定する意図はない。多くの変更及び変形は当業者に明白であろう。さらに、異なる有効な実施形態は他の有効な実施形態と比較して異なる利点を与えることができる。本発明の原理、実際的応用を最良に説明するため、および当業者が考慮される特定の使用に適するように種々の変形と共に種々の実施形態の説明を理解できるように１または複数の実施形態を選択し説明した。
【図１】
2010520536.tif 000003
【図２】
2010520536.tif 000004
【図３】
2010520536.tif 000005
【図４】
2010520536.tif 000006
【図５】
2010520536.tif 000007
【図６】
2010520536.tif 000008
【図７】
2010520536.tif 000009
【図８】
2010520536.tif 000010
【図９】
2010520536.tif 000011
【図１０】
2010520536.tif 000012
【図１１】
2010520536.tif 000013
【図１２】
2010520536.tif 000014
【図１３】
2010520536.tif 000015
【図１４】
2010520536.tif 000016
【図１５】
2010520536.tif 000017
【図１６】
2010520536.tif 000018
【図１７】
2010520536.tif 000019
【図１８】
2010520536.tif 000020
【図１９】
2010520536.tif 000021
【図２０】
2010520536.tif 000022
【図２１】
2010520536.tif 000023
【図２２】
2010520536.tif 000024
【図２３】
2010520536.tif 000025
【図２４】
2010520536.tif 000026
【図２５】
2010520536.tif 000027
【図２６】
2010520536.tif 000028
【図２７】
2010520536.tif 000029
【図２８】
2010520536.tif 000030
【図２９】
2010520536.tif 000031
【図３０】
2010520536.tif 000032
【図３１】
2010520536.tif 000033
【図３２】
2010520536.tif 000034
【図３３】
2010520536.tif 000035
【図３４】
2010520536.tif 000036
【図３５】
2010520536.tif 000037
【図３６】
2010520536.tif 000038
【図３７】
2010520536.tif 000039
【図３８】
2010520536.tif 000040
【図３９】
2010520536.tif 000041
【図４０】
2010520536.tif 000042
【図４１】
2010520536.tif 000043
【図４２】
2010520536.tif 000044
【図４３】
2010520536.tif 000045
【図４４】
2010520536.tif 000046
【図４５】
2010520536.tif 000047
【図４６】
2010520536.tif 000048
【図４７】
2010520536.tif 000049
【図４８】
2010520536.tif 000050
【図４９】
2010520536.tif 000051
【図５０】
2010520536.tif 000052
【図５１】
2010520536.tif 000053
【図５２】
2010520536.tif 000054
【図５３】
2010520536.tif 000055
【図５４】
2010520536.tif 000056
【図５５Ａ】
2010520536.tif 000057
【図５５Ｂ】
2010520536.tif 000058
【国際調査報告】
2010520536.tif 000059
2010520536.tif 000060
2010520536.tif 000061