人の透明性パラダイム
ネットワークデータ処理システム内の記憶システムに位置するソースコードの、コンピュータで実行可能な方法、装置、及びコンピュータで使用可能なプログラムコードである。ソースコードは、人の行動を予測するための言語で書かれている。ネットワークデータ処理システム内で動作するインタープリタは、ソースコードを使用してシミュレーションを実行する。ソースコード内には人工的人が定義されており、この人工的人がシミュレーションの間のユーザ入力を生成する。ユーザ入力はソースコードを修正する。グラフィカルユーザインターフェースプロセッサは、インタープリタから変換されたソースコードを受け取り、変換されたソースコードを用いてデバイスに応じた出力を生成する。インタープリタはデバイスを介してリアルタイムユーザ入力を受け取り、人工的人により生成されたユーザ入力を置換する。インタープリタは、リアルタイムユーザ入力を受け取ると、人工的人によって生成された入力の使用を停止し、インタープリタは変換されたソースコードと共にリアルタイムユーザ入力を含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2007年3月1日に出願された「Human Transparency Paradigm」と題する米国特許仮出願番号第60/892472号に関連し、且つ当該米国特許仮出願の優先権を主張する。ここで明示したことにより、この米国特許仮出願の内容全体が本明細書に包含される。
【0002】
本開示内容は、改良型データ処理システムを提供し、具体的にはデータ処理の方法と装置を提供するものである。更に詳細には、本開示内容は、人の行動をモデル化及びシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードに関する。
【背景技術】
【0003】
人の行動は、人間によって実行される活動の集積である。これらの活動は、例えば、文化、態度、感情、価値観、倫理観、権力、説得、及び/又は強制力といった要因に影響される。人間の行動は、通常の行動、異常な行動、許容可能な行動、及び許容限界を超えた行動を含む範囲に納まる。人々の行動は、心理学、社会学、及び人類学などの多数の学問分野により研究されている。近年は、人の行動の研究にコンピュータが使用されている。
さらに、人の行動のシミュレーションは、軍事上の演習及び計画の実行に使用されている。人の行動のシミュレーションは、経済的及び社会的行為などのその他の状況の予測に関して使用することもできる。人の行動を予測することができれば、訓練プログラムの開発に有用であると思われる。異なる刺激に訓練生がどのように反応するかを知ることは、訓練プログラムの開発及び修正に使用できる。
【0004】
現在のモデル及びシミュレーションプログラムは、様々な理由により、人の行動を適切にシミュレートしない。例えば、現在入手可能なシミュレーションプログラムは、特定の種類のシミュレーションにしか適していない。その結果、異なる種類のシミュレーションが必要な場合、そのようなシミュレーションを実行するために新規プログラムを書かなければならない。加えて、リレーションの数と、それらリレーションの修正機能が制限される。
従って、訓練プログラムに使用される、人の行動のモデル化及びシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードを改良することが有利であると考えられる。
【発明の概要】
【0005】
有利な実施形態は、ネットワークのデータ処理システム内の記憶システムに位置するソースコードのための、コンピュータで実行可能な方法、装置、及びコンピュータで使用可能なプログラムコードを低要する。ソースコードは、人の行動を予測するための言語で書かれている。インタープリタは、ネットワークのデータ処理システム上で動作するもので、このインタープリタはソースコードを使用してシミュレーションを実行することにより、変換されたソースコードを生成する。人工的人がソースコードに定義されている。人工的人は、シミュレーションの間のユーザ入力を生成し、このユーザ入力は、ソースコードの修正に使用される、現在の変換済みソースコードである。グラフィカルユーザインターフェースプロセッサはネットワークのデータ処理システム上で動作する。グラフィカルユーザインターフェースプロセッサは、インタープリタから変換されたソースコードを受け取って、受け取った変換済みソースコードを形成し、受け取った変換済みソースコードを使用してデバイスに応じた出力を生成する。インタープリタは、グラフィカルユーザインターフェースプロセッサと通信するデバイスを介して実際の人からリアルタイムのユーザ入力を受け取り、人工的人により生成されたユーザ入力を置換する。インタープリタは、リアルタイムユーザ入力を受け取ると、ソースコード内に定義された人工的人により生成された入力の使用を停止し、そしてインタープリタは、ソースコードの修正に使用される変換済みソースコードと共にリアルタイムユーザ入力を含む。
有利な実施形態は、人から入力を受け取るためのコンピュータで実行される方法も提供する。データは、ネットワークのデータ処理システム内の記憶システムに位置するソースコードから取り出され、取り出されたデータを形成し、この取り出されたデータは人工的人を含む。取り出されたデータは、ネットワークのデータ処理システム上で動作するインタープリタを用いて変換され、人の行動のシミュレーションを実行し、取り出されたデータを変換する間に人工的人によって生成される入力を含む結果を生成する。ソースコードは、この結果を使用して修正されて、修正されたソースコードを形成する。シミュレーションの実行において、リアルタイムユーザ入力の使用に対するリクエストに応答して人工的人の使用は停止される。人工的人による入力を置換するリアルタイムユーザ入力を受け取ると、リアルタイムユーザ入力を含む結果がソースコードに記述され、修正されたソースコードを形成する。修正されたソースコードは、人の行動を予測するためのシミュレーションの実行において、後で行われる取り出されたデータの変換に利用される新規のデータを提供する。
【0006】
本発明の特徴、機能、及び利点は、ここに開示される様々な実施形態においてそれぞれ単独で達成することができるか、又は他の実施形態において組み合わせることができる。
新規な特徴と考えられる本発明の特徴は、請求の範囲に規定される。しかしながら、開示内容自体、並びに好ましい使用モード、さらなる目的とその利点は、有利な実施形態に関する後述の詳細な説明を、添付図面を参照して読むことにより最もよく理解される。
【図面の簡単な説明】
【0007】
【図1】有利な実施形態を実施することができる、データ処理システムのネットワークを図式化したものである。
【図2】有利な一実施形態によるデータ処理システムの図である。
【図3】有利な一実施形態によるシミュレーションシステムを表わす図である。
【図4】有利な一実施形態による、人の行動のモデル化及びシミュレーションの開発フレームワークの図である。
【図5】有利な一実施形態によるフレームワークにおけるモジュールの配分を示す図である。
【図6】有利な一実施形態によるソースモジュールコードを示す図である。
【図7】有利な一実施形態によるソースコードの定義部分を示す図である。
【図8】有利な一実施形態によるオブジェクトのブロック図である。
【図9】有利な一実施形態によるオブジェクトの図である。
【図10】有利な一実施形態による動作オブジェクトの図である。
【図11】有利な一実施形態による動作の適用を示す図である。
【図12】有利な一実施形態による、スケジューラの介入を有する時間軸に対する動作の適用を示す図である。
【図13】有利な一実施形態による、時間帯が重複したイベントの適用を示す図である。
【図14】有利な一実施形態による、存続イベントを示す図である。
【図15】有利な一実施形態による、存続イベントを示す図である。
【図16】有利な一実施形態による、存続イベントを示す図である。
【図17】有利な一実施形態によるインタープリタを示す図である。
【図18】有利な一実施形態による、字句解析器のデータフローを示す図である。
【図19】有利な一実施形態による、文法構文解析ツールによって実行される構文解析を示す図である。
【図20】有利な一実施形態による、解析木の別の実施例を示す図である。
【図21】有利な実施形態による、インタープリタの実行モジュールの図である。
【図22】有利な一実施形態による、トークン生成方法のフローチャートである。
【図23】有利な一実施形態による、人の行動のシミュレーション実行方法のフローチャートである。
【図24】有利な一実施形態による、文又は命令書の生成方法のフローチャートである。
【図25】有利な一実施形態による、命令書の一命令文を実行する方法のフローチャートである。
【図26】有利な一実施形態による、グラフィカルユーザインターフェース(GUI)プロセッサを示す図である。
【図27】有利な一実施形態による、グラフィカルユーザインターフェースを通るデータフローを示す図である。
【図28】有利な一実施形態によるディスプレイを示す図である。
【図29】有利な一実施形態によるディスプレイの操作を示す図である。
【図30】有利な一実施形態による、ビットマップの変化を識別する方法のフローチャートである。
【図31】有利な一実施形態による、差分データの処理方法のフローチャートである。
【図32】有利な一実施形態による人の透明性パラダイムの提供に使用されるコンポーネントを示す図である。
【図33】有利な一実施形態による、人工的人を実際の人で置換する方法のフローチャートである。
【図34】有利な一実施形態による、入力ニューロンの実施例を示す図である。
【図35】有利な一実施形態による、入力ニューロンの左オペランド(left operand)に規定される入力範囲の実施例を示す図である。
【図36】有利な一実施形態による、入力行動に関する命令文の図である。
【図37】有利な一実施形態による、出力宣言文を示す図である。
【図38】有利な一実施形態による、ニューラルネットワーク内の出力範囲に関する命令文を示す図である。
【図39】有利な一実施形態による、出力行動の修正に関する命令文を示す図である。
【図40】有利な一実施形態による、隠れ層に関する命令文を示す図である。
【図41】有利な一実施形態による、サンプルニューラルネットワークを示す図である。
【図42】有利な一実施形態による、ニューラルネットワークの訓練に関する例示的命令文である。
【図43】有利な一実施形態による、ニューラルネットワークの演算機能を示す図である。
【図44】有利な一実施形態による、ニューラルネットワークの一実施例を示す図である。
【図45】有利な一実施形態による、ニューラルネットワークの操作の結果を示す図である。
【図46】有利な一実施形態によるリストの一実施例を示す図である。
【図47】有利な一実施形態による、リストからの変数の削除を示す図である。
【図48】有利な一実施形態による、アイテムを削除するためのコードの図である。
【図49】有利な一実施形態による、リスト中のアイテムを操作するためのコードを示す図である。
【図50】有利な一実施形態による、キューとしてのリスト中のアイテムの読み取りを示す図である。
【図51】有利な一実施形態による、リスト中のアイテムの読み取りを示す図である。
【図52】有利な一実施形態による、リスト中の分類属性を示す図である。
【図53】有利な一実施形態による、燃料、距離及び速度を使用したファジー理論実施の一実施例である。
【図54】有利な一実施形態による、遺伝的アルゴリズムを用いた方程式の解法を示す図である。
【図55A】有利な一実施形態による、ソースコード中のオブジェクトのコードを示す図である。
【図55B】有利な一実施形態による、ソースコード中のオブジェクトのコードを示す図である。
【発明を実施するための形態】
【0008】
ここで図面を参照する。特に図1−2には、実施例を実施できるデータ処理環境の例示的な図が示されている。図1−2は例示のみを目的としており、有利な別の実施形態を実行可能な環境に関して限定を主張又は暗示するものではない。図示の環境に多数の変更を加えることができる。
本明細書において、アイテムのリストについて「少なくとも〜の一つ」という表現が使用されるとき、それは、アイテムの一つ又は複数の、異なる組み合わせが使用可能であり、且つリスト中のアイテムのうち一つのみが必要であることを意味する。例えば、「アイテムA、アイテムB、及びアイテムCの少なくとも一つ」は、例えば、限定するものではないが、アイテムA、又はアイテムBとアイテムBを含みうる。これの例には、アイテムA、アイテムB、及びアイテムC、或いはアイテムBとアイテムCも含まれる。
【0009】
ここで図面を参照する。図1は、有利な実施形態を実施できるデータ処理システムのネットワークを図解的に示している。図示されたこのような実施例では、ネットワークデータ処理システム100を使用して、人の行動のモデル化及びシミュレーションの開発フレームワークが実施される。このフレームワークは人の行動を予測する能力を提供する。
ネットワークデータ処理システム100は、有利な実施形態を実施可能な、コンピュータ及びその他のデバイスからなるネットワークである。ネットワークデータ処理システム100はネットワーク102を含み、このネットワークは、ネットワークデータ処理システム100内で互いに接続される様々なデバイス及びコンピュータ間をリンクする通信を行うために使用される媒体である。ネットワーク102は、有線、無線通信リンク、及び/又は光ファイバケーブルなどの接続を含むことができる。
【0010】
図示の実施例では、サーバ104とサーバ106が、記憶ユニット108と共にネットワーク102に接続している。これに加えて、クライアント110、112、及び114がネットワーク102に接続している。これらのクライアント110、112、及び114は、例えば、パーソナルコンピュータ、ワークステーションコンピュータ、及び携帯情報端末とすることができる。図示の実施例では、サーバ104は、ブートファイル、オペレーティングシステムイメージ、及びアプリケーションなどのデータをクライアント110、112、及び114に提供する。クライアント110、112、及び114は、本実施例ではサーバ104及びサーバ106のクライアントである。ネットワークデータ処理システム100は、追加のサーバ、クライアント、及び図示しないその他デバイスを含んでもよい。有利な実施形態における人の行動予測フレームワークは、ネットワークデータ処理システム100内の一又は複数のデータ処理システムを使用して実施することができる。
【0011】
次に、一実施例によるデータ処理システムを示す図2を参照する。この実施例では、データ処理システム200は通信ファブリック202を含み、この通信ファブリックによって、プロセッサユニット204、メモリ206、固定記憶域208、通信ユニット210、入力/出力(I/O)ユニット212、及びディスプレイ214間における通信が行われる。
プロセッサユニット204は、メモリ206にロードできるソフトウェアの命令を実行する機能を有する。プロセッサユニット204は、用途に応じて、一又は複数のプロセッサの組とすることができるか、又はマルチプロセッサコアとすることができる。さらに、プロセッサユニット204は、メインプロセッサが単一のチップ上に二次プロセッサと共に存在する一又は複数の異種プロセッサシステムを用いて実施することができる。別の実施例では、プロセッサユニット204は、同種のプロセッサを複数個含む対象なマルチプロセッサシステムとすることができる。
【0012】
このような実施例におけるメモリ206は、例えば、ランダムアクセスメモリ又はその他任意の適切な揮発性又は非揮発性記憶装置とすることができる。固定記憶域208は、用途に応じて様々な形態を採ることができる。例えば、固定記憶域208は一又は複数のコンポーネント又はデバイスを含むことができる。例えば、固定記憶域208は、ハードドライブ、フラッシュメモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記の何れかの組み合わせとすることができる。固定記憶域208によって使用される媒体はまた、取り外し可能である。例えば、取り外し可能なハードドライブを固定記憶域208に使用することができる。
このような実施例における通信ユニット210は、他のデータ処理システム又はデバイスとの通信を可能にする。これらの実施例では、通信ユニット210は、ネットワークインターフェースカードである。通信ユニット210は、物理的通信リンク及び無線通信リンクの一方又は両方の使用により通信を提供することができる。
【0013】
入力/出力ユニット212は、データ処理システム200に接続することができる他のデバイスによるデータの入力及び出力を可能にする。例えば、入力/出力ユニット212は、キーボードとマウスによりユーザ入力のための接続を提供できる。さらに、入力/出力ユニット212は、プリンタに出力を送信することができる。ディスプレイ214は、ユーザに対して情報を表示するためのメカニズムを提供する。
オペレーティングシステムとアプリケーション、又はプログラムのための命令は、固定記憶域208に位置している。これらの命令はメモリ206にロードされて、プロセッサユニット204によって実行される。コンピュータで実施される命令を使用するプロセッサユニット204により異なる実施形態のプロセスを実行することができ、そのような命令はメモリ、例えばメモリ206に位置させることができる。これらの命令は、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読み取り可能なプログラムコードと呼ばれ、プロセッサユニット204内の一のプロセッサにより読み取られて実行される。異なる実施形態のプログラムコードは、メモリ206又は固定記憶域208のような、異なる物理的又は有形のコンピュータで読み取り可能な媒体上に実現することができる。
【0014】
プログラムコード216は、選択的に取り外し可能であり、且つデータ処理システム200にロードするか又は移動させてプロセッサユニット204によって実行することが可能な、コンピュータで読み取り可能な媒体218の上に機能形態で位置している。このような実施例において、プログラムコード216及びコンピュータで読み取り可能な媒体218は、コンピュータプログラム製品220を形成する。一実施例では、コンピュータで読み取りイ可能な媒体218は、例えば、固定記憶域208の一部であるドライブ又は他のデバイスに挿入又は配置される光又は磁気ディスクのような有形の形態であり、固定記憶域208の一部であるハードドライブのような記憶装置に移動させることができる。有形形態の場合、コンピュータで読み取り可能な媒体218は、データ処理システム200に接続されるフラッシュメモリ、ハードドライブ、又はサムドライブのような固定記憶域の形態を採ることもできる。コンピュータで読み取り可能な媒体218の有形形態は、コンピュータで記録可能な記憶媒体とも呼ばれる。場合によっては、コンピュータで読み取り可能な媒体218は取り外しできない。
別の実施例では、プログラムコード216は、コンピュータで読み取り可能な媒体218から、通信ユニット210への通信リンクを介して及び/又は入力/出力ユニット212を介して、データ処理システム200へ転送可能である。この実施例では、通信リンク及び/又は接続は、物理的なもの又は無線とすることができる。コンピュータで読み取り可能な媒体は、プログラムコードを含む無線送信又は通信リンクのような無形媒体の形態を採ることもできる。
【0015】
データ処理システム200に示された様々なコンポーネントは、アーキテクチャに制限を加えることを意図するものではなく、異なる実施形態が実施可能である。データ処理システム200に示されているものに加えて、又はそれらに替えて、コンポーネントを含むデータ処理システムに様々な実施例を実施することができる。図2に示す他のコンポーネントは、図示された実施例から変更することができる。
一実施例として、データ処理システム200内の記憶装置は、データを記憶できる任意のハードウェア装置である。メモリ206、固定記憶域208及びコンピュータで読み取り可能な媒体218は、有形形態の記憶装置の実施例である。
【0016】
別の実施例では、バスシステムを使用して通信ファブリック202を実施することができ、このバスシステムは、システムバス又は入力/出力バスなどの一又は複数のバスから構成することができる。当然のことながら、バスシステムは、バスシステムに取り付けられた様々なコンポーネント又はデバイス間でのデータ転送を行うことができる、あらゆる適切な種類のアーキテクチャを用いて実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタといったデータの送受信に使用される一又は複数のデバイスを含むことができきる。さらに、メモリは、例えば、メモリ206又は通信ファブリック202に含まれうるメモリコントローラハブ及びインターフェースに見られるキャッシュとすることができる。
図示の実施例では、ネットワークデータ処理システム100は、ネットワーク102を有するインターネットであり、互いに通信するためのプロトコルのパッケージソフト、伝送制御プロトコル(TCP/IP)を使用するネットワークとゲートウェイの世界的な集合である。当然のことながら、ネットワークデータ処理システム100は、インターネットに加えて、又はインターネットの代わりに、異なる種類の多数のネットワークとして実施することもできる。これらの他のネットワークには、例えば、イントラネット、ローカルエリアネットワーク(LAN)、及び広域ネットワーク(WAN)が含まれる。図1は、一実施例であり、異なる実施形態のアーキテクチャを限定するものではない。
【0017】
ここで、有利な一実施形態によるデータ処理システムを示す図2を参照する。データ処理システム200は、サーバ及びクライアント、例えば図1のサーバ104及び106と、クライアント110、112、及び114とを実施するために使用することができきる。この実施例では、データ処理システム200は通信ファブリック202を含み、この通信ファブリックはプロセッサユニット204、メモリ206、固定記憶域208、通信ユニット210、入力/出力(I/O)ユニット212、及びディスプレイ214間の通信を行なう。
プロセッサユニット204は、メモリ206にロードされるソフトウェアのために命令を実行する機能を有する。プロセッサユニット204は、用途に応じて、一又は複数のプロセッサのセットとすることができるか、又はマルチプロセッサコアとすることができる。さらに、プロセッサユニット204は、単一のチップ上にメインプロセッサが二次プロセッサと共に存在する一又は複数の異種プロセッサシステムを使用して実施することができる。別の実施例として、プロセッサユニット204は、同種のプロセッサを複数個含む対称なマルチプロセッサシステムとすることができる。
【0018】
これらの実施例において、メモリ206は、例えば、ランダムアクセスメモリ、又はその他任意の適切な揮発性又は非揮発性記憶装置とすることができる。固定記憶域208は、用途に応じて様々な形態を採ることができる。例えば、固定記憶域208は、一又は複数のコンポーネント又はデバイスを含むことができる。例えば、固定記憶域208は、ハードドライブ、フラッシュメモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記の何らかの組み合わせとすることができる。固定記憶域208によって使用される媒体は、取り外し可能とすることもできる。例えば、取り外し可能なハードドライブを固定記憶域208に使用することができる。
このような実施例において、通信ユニット210は、他のデータ処理システム又はデバイスとの通信を行う。このような実施例では、通信ユニット210はネットワークインターフェースカードである。通信ユニット210は、物理的通信リンク及び無線通信リンクの一方又は両方を介して通信を行うことができる。
【0019】
入力/出力ユニット212は、データ処理システム200に接続可能な他のデバイスによる入力及び出力を可能にする。例えば、入力/出力ユニット212は、キーボード及びマウスによるユーザ入力のための接続手段となる。さらに、入力/出力ユニット212は、出力をプリンタに送信することができる。ディスプレイ214は、ユーザに対して情報を表示するためのメカニズムを提供する。
オペレーションシステムとアプリケーション、又はプログラムのための命令は、固定記憶域208に位置する。これらの命令は、メモリ206にロードしてプロセッサユニット204により実行することができる。異なる実施形態のプロセスは、コンピュータで実施される命令を使用してプロセッサユニット204により実行することができ、この場合、このような命令は、メモリ206などのメモリに置くことができる。これらの命令は、プロセッサユニット204内の一のプロセッサによって読み込まれて実行される、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読み取り可能なプログラムコードとも呼ばれる。異なる実施形態のプログラムコードは、物理的な又は有形のコンピュータで読み取り可能な種々の媒体、例えばメモリ206又は固定記憶域208上に実現することができる。
【0020】
プログラムコード216は機能的形態で、コンピュータで読み取り可能な媒体218上に位置する。この媒体は、選択的に取り外すことができ、データ処理システム200にロードするか又は転送し、プロセッサユニット204により実行することができる。このような実施例において、プログラムコード216及びコンピュータで読み取り可能な媒体218はコンピュータプログラム製品220を形成する。一実施例では、コンピュータで読み取り可能な媒体218は、例えば、固定記憶域208の一部であるドライブ又はその他デバイスに挿入又は配置され、固定記憶域208の一部であるハードドライブのような記憶装置への転送を行う光又は磁気ディスクのような有形形態である。有形形態では、コンピュータで読み取り可能な媒体218は、データ処理システム200に接続されるハードドライブ、サムドライブ、又はフラッシュメモリのような固定記憶域の形態を採ることもできる。コンピュータで読み取り可能な媒体218の有形形態は、コンピュータで記録可能な媒体とも呼ばれる。場合によっては、コンピュータで読み取り可能な媒体218は取り外しできない。
別の構成では、プログラムコード216は、コンピュータで読み取り可能な媒体218から、通信ユニット210への通信リンクを介して、及び/又は入力/出力ユニット212への接続部を介して、データ処理システム200に転送可能である。通信リンク及び/又は接続部は、本実施例では物理的なもの又は無線とすることができる。コンピュータで読み取り可能な媒体は、プログラムコードを含む無線送信又は通信リンクのような無形媒体の形態を採ることもできる。
【0021】
データ処理システム200について図示された様々なコンポーネントは、アーキテクチャを限定するものではなく、異なる実施形態が実施可能である。データ処理システム200について図示されたものに加えて、又はそれらの替わりに、コンポーネントを含むデータ処理システムにおいて異なる実施例を実施することができる。図2に示す他のコンポーネントは、図示の実施例から変更することができる。
一実施例として、データ処理システム200の記憶装置は、データを記憶することができる任意のハードウェア装置とすることができる。メモリ206、固定記憶域208及びコンピュータで読み取り可能な媒体218は、有形形態の記憶装置の実施例である。
【0022】
別の実施例では、バスシステムを使用して通信ファブリック202を実施することができる。このバスシステムは、システムバス又は入力/出力バスのような一又は複数のバスから構成される。当然のことながら、バスシステムは、バスシステムに取り付けられた異なるコンポーネント又はデバイス間でデータの転送を行う任意の適切な種類のアーキテクチャを用いて実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタのような、データの送受信に使用される一又は複数のデバイスを含むことができる。さらに、メモリは例えば、通信ファブリック202に含めることができるインターフェース及びメモリコントローラハブに見られるようなメモリ206又はキャッシュとすることができる。
クライアントとして、データ処理システム200は様々な形態を採ることができる。例えば、データ処理システム200は、タブレットコンピュータ、ラップトップコンピュータ、ワークステーション、パーソナルコンピュータ、電話機、又は携帯情報端末(PDA)の形態を採ることができる。
【0023】
複数の異なる実施形態において、一連の動作及び/又はイベントに対して人のグループが個々に及び/又はグループとしてどのように反応するかを予測するのに使用できるシミュレーション環境が提供される。このように、異なる「もし〜なら」というシナリオをシミュレートし、その結果を使用することで、当該グループに対して採るべき動作の最終セットに関する決定を補助することができる。
複数の異なる実施形態において、人の行動をシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードが提供される。一実施形態では、ソースコードは、図1に示すネットワークデータ処理システム100のようなネットワークデータ処理システム内の記憶システムに位置する。このソースコードは、人の行動を予測するために使用される。インタープリタは、ネットワークデータ処理システムのハードウェア上で動作する。このインタープリタは、ソースコードを用いてシミュレーションを実行し、新規定義及び変換されたソースコードを生成する。ネットワークデータ処理システムのハードウェア上で動作するグラフィカルユーザインターフェースプロセッサは、変換されたソースコードを受け取り、この変換されたソースコードを使用してデバイスに応じた出力を生成する。デバイスに応じた出力は、グラフィカルユーザーインターフェースプロセッサと通信する一組のデバイスに送信される。
【0024】
これらのデバイスは、デバイスに応じた出力を表示し、ユーザ入力を受け取る。受け取られたユーザ入力はグラフィカルユーザインターフェースプロセッサに返され、するとこのプロセッサは受け取ったユーザ入力をインタープリタに送る。インタープリタは受け取ったユーザ入力と新規定義とを使用してソースコードを変更又は修正する。このような実施例において、新規定義とは、既存のソースコードの変更又は既存のソースコードへの新規情報の追加に使用される情報である。次いでこのように修正されたソースコードが実行され、新規定義及び新規に変換されたソースコードが生成される。このようにして、このような有利な実施形態では、ソースコードを変更するためのフィードバックループが生成される。
【0025】
次に、有利な一実施形態によるシミュレーションシステムを示す図3を参照する。システム300は、図1のネットワークデータ処理システム100において実施することができるシミュレーションシステムの一実施例である。具体的には、システム300は、図2のデータ処理システム200のような一又は複数のデータ処理システムを使用して実施することができる。
このような実施例では、定義302は、動作304に基づいてシステム300により処理される。動作304を定義302に適用することにより人の行動のシミュレーションが実行される。このような実施例では、システム300のユーザが動作304を選択することができる。動作304は、環境設定ファイルから、或いはプログラム又はプロセスによって、選択することもできる。このような実施例では、定義302は、シミュレーションに使用されるソースコードの一部である。
【0026】
システム300は、動作304を用いて定義302を修正し、定義306を生成する。図示のような実施例では、定義306は新規の定義であり、定義302に動作304を適用した結果を提供する出力として使用されている。加えて、定義306は定義302の修正に使用され、次いでシミュレーションの実行を継続するために使用される。このような連続的なフィードバックは、システム300に複数の異なる反復から学習する能力を与えるために行われる。加えて、前回のシミュレーションの結果が定義302に記憶され、よってシステム300は前回のシミュレーションから学習することができる。
このような実施例では、定義302は、人のグループ及び人のグループが生きる環境を表している。環境の説明には、有形無形両方の形態のアセットが含まれている。加えて、定義302には、グループを構成する様々な人の説明、並びに人のグループ及び環境に適用される様々なイベント又は入力に対する動作及び反応を定義する内部関係の説明も含まれる。
【0027】
システム300をシミュレーションツールとして使用することにより、定義302に記述される人のグループに対して特定の動作が適用されたときの、結果及び様々な反応及び/又は影響を予測することができる。つまり、システム300は、定義302に対して動作304が適用又は採用されたときの、例えば経済的影響、社会的影響、及び心理的影響といった影響を評価するようにプログラムすることができる。
この実施例では、定義302はコンピュータ言語を用いて書かれている。図示のような実施例のコンピュータ言語は、シミュレーションの実行にインタープリタを使用するが実行にコンパイルを必要としないインタープリタ型原語である。シミュレーションプロセスに関与する様々なオブジェクトを定義することができるあらゆる原語を使用することができる。例えば、C及びC++は、このような実施例に使用できるインタープリタ型原語の例である。このような実施例では、オブジェクトの定義には、人及び人が生きる環境が含まれる。他の有利な実施形態では、定義302及び動作304だけでなくシステム300のフレームワークが提供される。
【0028】
次に、有利な一実施形態による人の行動のモデル化及びシミュレーションの開発フレームワークを示す図4を参照する。フレームワーク400は、図3のシステム300のアーキテクチャの一実施例である。この実施例では、フレームワーク400は、ソースコード402、インタープリタ404、グラフィカルユーザインターフェース(GUI)プロセッサ406、及びデバイス408を含む。
ソースコード402は、データベースの情報をすべて含むフレームワーク400内の一のモジュールである。シミュレーションについて判明したことの全ては、この特定のコンポーネントに記憶される。このような情報には、例えば、人のグループの定義と、当該定義を使用してシミュレーションを実行するのに必要なコードとが含まれる。ソースコード402には、定義に対して適用される動作、並びにその結果を提示するのに使用されるコードも含まれる。
【0029】
ソースコード402に使用される言語を修正し、人の行動のシミュレーション及び予測に特異的な機能及び特徴を含めることができる。これらの特徴を有する言語を、人間行動定義言語(Human Behavior Definition Language)(HBDL)と呼ぶ。HBDLは、C又はC++のような現在利用可能な言語を使用して実施することができる。当然のことながら、このような実施例では、HBDLを実施するためにあらゆるインタープリタ型言語を使用することができる。
さらに、HBDLは、人の行動のシミュレーションを行うために、既存の言語を修正して使用するのではなく、完全に新規の言語を使用することにより実施することができる。図示の実施形態では、異なる言語を使用してHBDLの異なるコンポーネントを実施することができる。このような実施例では、ソースコード402はHBDLで書かれたデータベースであり、異なる地理的所在地に位置させることができる異なる記憶装置内に分配することができる。
【0030】
インタープリタ404は、ソースコード402からデータ410を収集してシミュレーションを実行する。このような実施例では、データ410は、人のグループ及びその環境、並びに人に適用される動作の定義を含む。さらに、データ410は、ソースコード402の生成に使用されるプログラム可能な言語による命令文又は命令行も含む。データ410に含まれるこれらの命令文は、シミュレーションを実行するためにインタープリタ404によって使用される。
データ410に含まれる命令文は、例えば、人工的人のシミュレーションを行う人工知能プログラムのコードを含むことができる。これらの命令文は、例えば、シミュレーションを実行するためのファジー理論のコード、ニューラルネットワーク及びその他プロセスを含むこともできる。加えて、データ410は、結果を提示するためのグラフィカルユーザインターフェース(GUI)を生成するためのプロセス又はコードを含むこともできる。このように、ソースコード402は、人のグループとその環境に関する情報、並びにシミュレーションを実行するのに必要なプロセス又はコードの両方を含むこともできる。用途に応じて、これらの命令文はC又はC++によるものとすることができる。或いは、命令文は、インタープリタ404がC又はC++の命令文に変換することにより実行されるさらに高レベルの言語によるものでもよい。
【0031】
このシミュレーションによりグラフィックデータ412が生成されてGUIプロセッサ406に送信される。このような実施例では、グラフィックデータ412は、ネットワークの速度を低下させうる大量のデータ処理を必要としない形態である。図示の実施形態では、グラフィックデータ412はプリミティブ型である。さらに多くのデータの送信を要するビットマップ又はその他のフォーマットではなくプリミティブを送信することにより、ネットワークにおいて使用される帯域幅の量が低減される。場合によっては、グラフィックデータ412に含めて何らかのビットマップを送ることが必要になりうるが、可能であればプリミティブが使用される。
代わりに、グラフィックデータ412がGUIプロセッサ406により処理されてデバイスデータ414が生成され、デバイスデータはデバイス408によって表示される。このような実施例では、デバイスデータ414は、例えば、デバイス408によって表示されるピクセルデータ又はビットマップとすることができる。
【0032】
デバイス408は、ユーザ入力を受け取ってデバイスデータ416を生成することもできる。デバイスデータ416は、GUIプロセッサ406によって受け取られる。GUIプロセッサ406は、デバイスデータ416を、送信に必要なネットワークリソースが少なくて済むフォーマットに変換する。このような実施例では、ユーザ入力418はインタープリタ404に返される。ユーザ入力418と、データ410に基づくシミュレーションの結果とを使用して、修正420が生成される。修正420は、ソースコード402の上書き又は修正に使用される。これらの修正は、ソースコード402中の定義の修正に使用される。修正420は、図3の定義302の修正に使用される、図3の定義306に類似している。このように、ソースコード402は、インタープリタ404によって実行されるシミュレーションの結果と、デバイス408から受け取るユーザ入力とを考慮するように変更することができる。
修正420は、例えば、インタープリタ404によって実行されているシミュレーションに適用又は包含される動作の選択を含むことができる。このような実施例では、このような動作の選択と修正420は、デバイス408で生成されるユーザ入力から受け取ることができる。
【0033】
データ410は、図3の定義302及び304のような情報を含むことができる。修正420は、図3の定義306に対する変更のような情報を含むことができる。これらの変更は、例えば、既存の定義の修正又は新規定義の追加とすることができる。このような実施例では、グラフィックデータ412を使用して図3の定義306を提示することができる。
フレームワーク400に含まれる種々のモジュールの説明は、これらのモジュールを実施可能なアーキテクチャの限定を意図するものではない。例えば、これら種々のモジュールは、フレームワーク400内において、異なる機能を実施する異なるサブモジュール又はプロセスを含んでもよい。また、特定のモジュールを、単一のデータ処理システムで実施するか、又は複数のデータ処理システムに拡散させることができる。
【0034】
フレームワーク400のモジュール方式により、種々のモジュールをネットワークの異なる位置に分配し、ハードウェアリソースを最大限利用することができる。フレームワーク400のこのようなモジュール方式は、ネットワークデータ処理システム内において、一部の機能性の集中化を可能にすると同時に、他の機能を遠隔位置に移動又は分配することができる。例えば、グラフィック処理とデバイス依存性のデータとを集中化した環境に置き、次いでネットワークを介してこの情報を遠隔デバイスに送信することにより、わずかな利点が得られる。グラフィックデータは、一般に、サイズが大きくネットワークの速度を低下させる可能性がある。その結果、この種の情報の集中化及び処理により、待ち時間、データ送信及びデータの同期に関する問題が生じる。フレームワーク400は、フレームワーク400の実施によりこのような問題を回避できるように設計される。
【0035】
次に、有利な一実施形態によるフレームワーク内のモジュールの分配を示す図5を参照する。この実施例では、システム500内に示される種々のモジュールは、図4のフレームワーク400に基づいている。図示の実施例に示されるように、システム500は、インターネット502、ローカルエリアネットワーク(LAN)504、広域ネットワーク(WAN)506及びローカルエリアネットワーク(LAN)508を含んでいる。これらの異なるネットワークは、図1のネットワーク102のコンポーネントの一実施例である。
図示のように、ソースコード510は記憶装置512、514、及び516に見られる。記憶装置512は、ローカルエリアネットワーク504に接続されており、記憶装置514は広域ネットワーク506に接続されており、記憶装置516はローカルエリアネットワーク508に接続されている。別々のネットワーク内の種々のデバイスに基づくソースコード510の分布は、ソースコード510を記憶可能な一方式の一実施例である。
【0036】
ソースコード510は、異なる所在地に分散されるのでなく、特定のネットワーク上の単一の記憶システムに記憶させることもできる。ソースコード510を記憶する一部の記憶装置は、ソースコード510の複製を保存するバックアップデバイスとすることができる。このような実施形態では、実施を特定の場所に限るのではなく、他の所在地に見られる利点を活用するために、そのような所在地のシステムの一部を移動することが可能である。
この実施例では、インタープリタ518はデータ処理システム520に位置している。データ処理システム520は、図2のデータ処理システム200のようなデータ処理システムを用いて実施することができる。データ処理システム520はローカルエリアネットワーク508に接続される。インタープリタ518は、異なるネットワークに亘る種々の記憶装置内のソースコード510からデータを収集してシミュレーションを実行することができる。
【0037】
シミュレーションの結果は、GUIプロセッサ522に送信される。このプロセッサ522もデータ処理システム520上に位置している。GUIプロセッサ522は、デバイス523に表示されるデバイスデータを生成する。加えて、インタープリタ518は、データ処理システム526上で動作するGUIプロセッサ524と、データ処理システム530上で動作するGUIプロセッサ528とにグラフィックデータを送信することができる。GUIプロセッサ524は、デバイス530上に表示されるデバイスデータを生成し、GUIプロセッサ528はデバイス532上に表示されるデバイスデータを生成する。GUIプロセッサ522、524、及び528は、それぞれデバイス523、530、及び532の近くに位置している。
このように、これらのプロセッサによって生成されたデータは、大量のネットワークリソースを必要としない。このような実施例では、図4のフレームワーク400に記載されるGUIプロセッサモジュールが、システム500内の複数の異なる所在地に複写され、速度を低下させるか、又はネットワークリソースを大量に使用するような、ネットワークを介した遠隔装置へのグラフィックデータの送信の必要性を最小化する。
【0038】
ここで、有利な一実施形態によるソースモジュールコードを示す図6を参照する。この実施例では、ソースコード600は、図4のソースコード402を詳細に示したものである。
ソースコード600は、定義602、動作604、及びグラフィカルユーザインターフェース(GUI)言語606を含む。定義602及び動作604は、一の環境内での人のグループのシミュレーションを目的としている。GUI言語606は、結果を提示し、シミュレーションのエンドユーザからユーザ入力を受け取るために使用される。GUI言語606により、ソースコード600はデバイス上に提示される結果の外観を制御する。このような実施例では、このような結果の外観は、GUI言語606を用いて制御される。
【0039】
さらに、これらの実施例のソースコード600は適応性であり且つオープンである。ソースコード600は、シミュレーションのための情報、及びシミュレーションの実行又は実施に使用される実際の言語の両方を含む。ソースコード600は、データベースを読み取って変換する従来のアプリケーションから意志決定を排除する。反対に、ソースコード600は、シミュレーションの実行により生成される結果に基づいて変更可能な情報及びアプリケーションの両方を含むデータベースである。
データ608は、図4のインタープリタ404のようなインタープリタへのデータの流れを表わしている。修正610は、インタープリタから受け取られているソースコード600に対する変更を表わす。データ608は、シミュレーションの実行に使用するために、定義602、動作604、及びGUI言語606からインタープリタに送られる情報を含む。このような実施例では、ソースコード600はフリーフォーマットデータベースである。
【0040】
これらの実施例では、ソースコード600はHBDLで書かれている。フリーフォーマットデータベースであるので、ソースコード600は、異なるコンポーネント間にセパレータを必要としない。ソースコード600内のプログラムは、単一の行を用いて記述されている。ソースコード600は、シミュレーションの実行を変更するための、ループ、ケース文、条件付飛び越し、及びその他類似の命令文も含む。
さらに、ソースコード600は、コードの一部を記憶するオブジェクトを含む。結果として、反復の必要なくオブジェクトを何度も呼び出すことができる。さらに、ソースコード600内において、オブジェクトに索引を付け、デフォルトパラメータを含むように定義することができる。このようにして、ソースコード600内にインテリジェントオブジェクトの生成が可能となる。
【0041】
また、ソースコード600内に異なる種類の変数を定義することができる。これらの種類の変数を、特定のタスクのために使用することができる。例えば、従来の数値的な種類に加えて、ソースコード600は、人、人々、家族、動作、時間軸、日付、及びその他といった種類を含むことができる。加えて、ソースコード600は、シミュレーションを行うための、時間軸に基づく実行モデルを提供する。人工知能コンポーネントを、これらのコンポーネントを支援する機能コマンドと共に、ソースコード600内に設けることができる。
ソースコード600内において、定義602は、人のグループと人のグループが生きる環境とを記述する。動作604は、シミュレーションの間に定義602に適用される影響を表わす。これらの実施例では、動作604は、時間軸に挿入されるイベントと呼ばれるコードの部分又は断片である。
【0042】
これらの実施例では、シミュレーションに参加する人と、シミュレーションを使用する人は、ソースコード600によって操作される。シミュレーションに参加する人は、実際の人でも人工的な人でもよい。定義602、動作604、及びGUI言語606は、機能コード及びパラメータを含む。機能コード及びパラメータは、他の情報と共にデータ608として出力され、インタープリタによって変換される。
この情報をソースコード600内に移動させることにより、ソースコード600はシミュレーションを制御することができる。このように、本シミュレーションはもはや、記述された現在使用されるスタイル及び言語によるもののように、アプリケーションに特異的なものではない。例えば、特定のアイテムが定義602内に定義されると、このアイテムを動作604の所定の動作セットに使用することができる。例えば、Xという種類の人を、動作604において実行される動作と共に使用される定義602内に定義することができる。その結果、無限大の数のシミュレーションを生成し、人Xを登録する必要無しに実行することができ、且つ各シミュレーションについて実行することができる。
【0043】
さらに、ソースコード600内に位置するGUI言語606を有することは、定義602及び動作604が、ユーザに提示される表示を制御できることを意味する。このように、ソースコード600は、基本的に、シミュレーションのユーザが見る内容を管理するデータベースである。この機能は、定義及び知識の再利用性を支援することにより、シミュレーション毎にアプリケーション又はプログラムのシミュレーションを個別に記述する必要無しに、無限大の数のシミュレーションの生成を可能にする。
現在のシステムは、スクラッチに基づいてコードされる単一のシミュレーション内において静的なデータを利用する。最善の場合でも、単一のオブジェクトをシミュレートするコードはライブラリに保存されるが、各オブジェクトに対する動作は各シミュレーションに固有である。動作は一般に個別のプログラム内に記述される。その結果、現在使用される技術では、特定の種類のシミュレーションの各々を実際にコード化する必要がある。さらに、現在のやり方では、グラフィカルユーザインターフェースは、通常再利用され、アプリケーションを制御する。
【0044】
結果として、これらのインターフェースは、アプリケーションを記録する又は書き直す必要なく特定のシミュレーションを変更することはない。このように、有利な実施形態のソースコード設計により、現在使用されているしニュレーション技術と比較して、結果表示及びユーザ入力の受信に関する柔軟性が増大する。
GUI言語606は、図4のGUIプロセッサ406のようなグラフィカルユーザインターフェースプロセッサを介してインタープリタにより選択的に送信されるコードを提供する。このコードは、エンドユーザに対する表示又は視覚効果と、種々のディスプレイに設けられる入出力制御を提供する。GUI言語606は、各エンドユーザが自身のスクリーン上に見る内容と、各エンドユーザがシステムと相互作用する方式とを制御する。これらの実施例では、GUI言語606はHBDLのサブセットである。用途に応じて、GUI言語606は、異なる有利な機能を提供するために、異なる言語用いて実施することができる。このように、複数の異なる有利な実施形態は、ソースコード600の制御を示している。
【0045】
ソースコード600内でGUI言語606によって入出力を制御することの一の利点は、エンドデバイスに提供されるユーザインターフェースをシミュレーションによって制御できることである。多くの場合、シミュレーションには、異なる背景を有するユーザが関与する。種々のユーザインターフェースをカスタマイズすることができると、これらのユーザがシステムを素早く理解することが容易になる。従って、シミュレーションを実行するための学習曲線が低減される。さらに、関連性の最も大きな情報のみが様々なユーザに提示され、よってシミュレーションの関連性が強化される。
例えば、特定のシミュレーションについて、異なるユーザは異なるインターフェースを必要としうる。一部のユーザには、定義602に適用される動作604から特定の動作を選択するユーザインターフェースを与えることができる。他のユーザは、定義602に定義された人工的人と交代することができる。この種のユーザには、動作を選択するユーザに基づいて異なるユーザインターフェースが与えられる。
【0046】
さらに、実行される様々なシミュレーションは、異なる種類のインターフェースも必要とする。この種のアーキテクチャは、ユーザインターフェースの動的な追加又は単純化を行う能力も提供する。このように、用途に応じたユーザインターフェースを付与することができる。
加えて、新規パラメータ及び新規環境に対し、強制的に複数の異なるシミュレーションを行うことができる。これら新規の変動する状況は、異なるデータセットが分析されることを意味する。これらの状況は、関与する異なるユーザ又は専門家の必要性を含むこともできる。当面のタスクの、このような変化し続ける性質により、ソースコード600により提供される可変性の適応的環境が必須となる。ソースコード600は、定義602、動作604、及びGUI言語606内に、このようなパラダイムを提供する。
【0047】
これらの実施例では、GUIプロセッサは、現在使用されているシミュレーションシステムで現在行われている静的アプリケーションではなく、ソースコード600の制御下にある。GUI言語606は、ハードウェアの抽出概念の層を提供する。GUI言語606の内容は、シミュレーションプロセスが予想通りに行われること、及び様々なユーザ及びデバイスから適切な情報が送達されて受信されることを保証するものである。GUI言語606は、インタープリタ及びGUIプロセッサを実装する任意のハードウェア上で実行するのに必要な全てのコードを含む。このように、ハードウェアに変化が生じるときは、ハードウェアを包む下層部分だけを書き直せばよい。
これらの実施例では、GUI言語606は、ランタイムの間に、ユーザインターフェースの必要な要素を構築するための様々な構築物を提供する。これらの要素は、例えば、マウス追跡動作、マウスクリック動作、アナログジョイスティック、メニュー、ウィンドウ、ダイアログボックス、チェックボックス、ラジオボタン、リストボックス、及びフォームを含む。これらの要素及び他の要素により、グラフィカルユーザインターフェースの実施が容易になる。さらに、GUI言語606を用いたグラフィカルユーザインターフェースの構築において生成される出力は、GUI言語606内に保存して後で使用することができる。
【0048】
GUI言語606は、ソースコード600が、人々のグループ及び彼らが生きる環境のシミュレーションに関する入力を提示及び受信することを可能にする、多数の異なる機能を提供する。GUI言語606は、一組の三次元プリミティブを提供する。これらの三次元プリミティブは、仮説的カメラ及び視点を制御するコマンドセットのような機能を支援する。ベクトル及びマトリクスの操作を含む数学関数も、異なる種類のグラフィックファイルフォーマットのインポート及びエキスポート機能と共に含まれる。
GUI言語606内に提供される機能は、単なる三次元データ以上のものが組み込まれた三次元オブジェクトを生成することも含む。例えば、これら三次元オブジェクトは、例えば、三次元オブジェクトに関する価格、重さ、色、価値、又はルールといったその他の情報を含むことができる。当然のことながら、これらの三次元オブジェクトにはあらゆる種類の情報を組み込むか又は関連付けることができる。
【0049】
さらに、GUI言語606はまた、三次元モデル及びスタックと、このモデル及びスタックを管理するための一組のコマンドとを含む。三次元モデル及びスタックは、異なる三次元エンティティに適用される複合変換の生成を可能にする。このようにして、オブジェクトに一時的な影響を与える異なる世界を形成することができる。
GUI言語606により、大規模な三次元データベースを容易に創造及び維持することができる。これらのデータベースは定義602内に見ることができる。このデータベースを使用して、オブジェクトの大きさ、複雑さ、又は性質に関係なく、あらゆる三次元オブジェクトを表わすことができる。
【0050】
さらに、GUI言語606は、グラフィカルユーザインターフェース構築言語となることができる。この言語により、ソースコード600は、各エンドユーザデバイスのルックアンドフィールを制御することができる。GUI言語606は、点、線、曲線、及び面といった二次元プリミティブを含むことができる。さらに、一組の二次元コントロールオブジェクトが含まれてもよい。これら二次元のコントロールオブジェクトは、例えば、ウィンドウ、ダイアログボックス、リクエスタ、チェックボックス、ラジオボタン及びメニューを含む。
【0051】
次に、有利な一実施形態によるソースコードの定義部分を示す図7を参照する。定義700は、図6の定義602の詳細な説明である。定義700は、アセット702、人704、及び内部関係706を含む。
アセット702は、人が存在する環境内に、有形アセット708及び無形アセット710の両方を含む。有形アセット708には、生物と無生物の両方が含まれる。生物には、例えば、家畜、鳥、細菌、及び植物が含まれる。無生物には、例えば、家、山、湖、車、テーブル、ペン、航空機、又は銃が含まれる。
【0052】
無形アセット710には、例えば、シミュレーションの対象となる人のグループの、ルール、法律、及び規則が含まれる。無形アセット710には、アセットを取り扱うためにインタープリタによって使用される情報も含まれる。この情報は、一般的なコード、ライブラリ、及びルーチンも含むことができる。
具体的には、この種のアセットには、例えば、数学ライブラリ、グラフィックライブラリ、二次元プリミティブライブラリ、三次元プリミティブライブラリ、モデル及びスタック管理ライブラリ、人工知能ライブラリ、入力/出力ライブラリ、暗号化ライブラリ、ネットワーキングライブラリ、システムコールライブラリ、及び時間管理ライブラリが含まれる。つまり、無形アセット710は、シミュレーションの実行に必要なあらゆる情報を含むことができる。
【0053】
人704は、人のグループ内に存在する様々な人の特徴を説明する。人704は家系及び人のグループに含まれる人同士の様々な関係を詳細に説明する情報を含むことができる。さらに、人704は、様々な個体の心理的プロファイルの生成に必要な情報を含む。
内部関係706は、定義700において人工知能によって使用される動作及び反応を含む。これらの動作及び反応は、様々な方式でトリガすることができる。例えば、トリガは、ランダム式、アラーム式、ステートマシン式とするか、又は定義700に適用される一組のイベントに対する反応とすることができる。
【0054】
アセット702内の異なるオブジェクトは、無形アセット710に依存して必要な機能及び演算を実行することができる。一般的なコード、ライブラリ、及びルーチンは、異なるプログラミングタスクを支援するのに必要なコードである。これらの異なるコンポーネントは、データとしてインタープリタに送信し、シミュレーションの実行に使用することができる。三次元オブジェクトは、生物及び無生物を含む異なる世界を構成するすべてのオブジェクトである。
【0055】
ここで、有利な一実施形態によるオブジェクトのブロック図である図8を参照する。この実施例では、オブジェクト800は、図6の定義602内のオブジェクトの一実施形態の一実施例である。この実施例では、オブジェクト800は、人工知能802、特徴804、及び内部関係806を含む。
人工知能802は、特定のオブジェクトのシミュレーションに使用されるコードを含む。これらの実施例では、オブジェクト800は、人間、植物、又は動物などの生物である。人工知能802は、選択されたオブジェクトの動作及び反応のシミュレーションに必要なコードを含む。
【0056】
特徴804は、特定のオブジェクトの特徴の識別を含む。例えば、オブジェクト802が人である場合、特徴804は、例えば、身長、体重、肌の色、髪の色、目の色、体格、及びその他のあらゆる適切な人の特徴を含むことができる。特徴804はその他の身体的特徴を含んでもよく、例えば、どの位速く走れるか、敏捷性、及び持久力などを含むことができる。
特徴804の非身体的特徴には、例えば、忍耐力、思いやり、感情、知性、及び内部関係が含まれるが、これらに限定されない。特徴804は、オブジェクト800の動作及び反応をシミュレートするために、人工知能802によって使用される。特に、図示の実施例では、特徴804は人の行動をシミュレートするために使用されている。
【0057】
人工知能802の複雑性及び特徴804に含まれる特徴の数は、用途に応じて変化する。これらのコンポーネントの複雑性は、シミュレーションを実際のオブジェクトから区別可能にするために所望する能力が増大するほど大きくなる。
内部関係806は、イベントをトリガするために人工知能802が使用できる動作及び反応を含む。これらのイベントには、例えば、オブジェクト800の動作が含まれる。これらの動作は、オブジェクト800によって開始することができるか、又は動作は、オブジェクト800に行われた動作に応じて生じる動作とすることができる。オブジェクト800により行われるこれらの動作は、シミュレーションの間の、オブジェクト800に対して行われる動作、又はオブジェクト800が含まれる環境に基づいてオブジェクト800によって認知される動作とすることができる。
【0058】
ここで、有利な一実施形態によるオブジェクトを示す図9を参照する。この実施例では、オブジェクト900は、図6の定義602によりシミュレートされる無生物の一実施例である。オブジェクト900は、例えば、車、ペン、航空機、山、又は湖とすることができる。
この実施例では、オブジェクト900は、モデル902と特徴904とを含む。モデル902は、特定のオブジェクトのシミュレーションに使用されるコードを含む。モデル902は、特定のオブジェクトの機能のシミュレーションに使用されるコードを含む。例えば、オブジェクト900が車である場合、特定の結果を生む様々な動作を車に対して行うことができる。例えば、エンジンを作動させて、車輪を回転させることができる。
【0059】
モデル902は、例えば、数学的モデルである。例えば、有限状態マシンのセットを使用して、車の機能及び動作をモデル化することができる。長時間に亘る使用及び環境への露出による、モデル化対象のモデルの経年変化をシミュレートするためのものなど、モデル902には、他の機能及びプロセスも含まれる。
特徴904は、車の様々な特徴、例えば、タイヤの大きさ、エンジンの大きさ、塗料の色、ラジオの種類、及び内部空間の量などを識別する。さらに、特徴904は、オブジェクト900に関する車の特徴についての他の情報を含んでもよい。例えば、タイヤのトレッドの量を、特徴904内で特定の種類のタイヤについて識別することができる。
【0060】
モデル902は、オブジェクト900が行う様々な動作に応じて車が何をするか、例えば、ユーザが車を運転すると、特徴904の中で識別されるタイヤに消耗が生じるなどをシミュレーションするために使用される。このような消耗は、特徴904内で識別される。この消耗は、モデル902内のアルゴリズムの一部となりうる。さらに、車の実施例において、モデル902は、日光及び雹といった環境への露出を考慮して、経年変化した状態の外観をモデル902に提示することができる。図8のオブジェクト800及び図9のオブジェクト900によって行われる様々な動作を、これらオブジェクトに対して実行し、図6の動作604内で定義付けることができる。
【0061】
ここで、有利な一実施形態による動作オブジェクトを示す図10を参照する。この実施例では、動作オブジェクト1000は、図6の動作604に見ることができる動作の一実施例である。
動作オブジェクト1000には、動作1002、オブジェクト1004、ユーザの許可1006、及びグラフィカルユーザインターフェース(GUI)1008が含まれる。動作1002は、例えば、実行できる一の動作、例えば会話する、打つ、動く、座る、掴む、話す、又は見るなどの動作を含むことができる。オブジェクト1004は、動作が行われるオブジェクトの識別である。ユーザの許可1006は、特定のユーザがオブジェクト1004に対して動作1002を実行してよいかどうかを決定する。グラフィカルユーザインターフェース1008は、特定のユーザに提示されるユーザインターフェースの種類を識別する。
【0062】
オブジェクト1004は、無生物又は生物とすることができる。ユーザの許可1006は、特定のユーザが一のオブジェクトに対して選択的な動作を実行することができるかどうかを決定するために使用される。場合によっては、特定のユーザがオブジェクトに対して動作を実行することは望ましくない。グラフィカルユーザインターフェース1008は、オブジェクトに対する動作をどのようにユーザに提示するか、並びにユーザとオブジェクトとの相互作用がどのように起こりうるかを識別する。
図8、9、及び10におけるオブジェクトの説明は、図6のソースコード600を、現在利用可能なプログラム言語及び方法論を使用して実施することができる一の方式を説明することを目的としている。しかしながら、これらの実施例は、図6のソースコード600を実施できる方式を限定するものではない。
【0063】
ここで、有利な一実施形態による動作の適用を示す図11を参照する。このような実施例では、時間軸1100によって、図6の定義602のような定義が、シミュレーションの間に受ける影響が示される。このような実施例では、図6の動作604のような動作を、時間軸1100上のイベントと呼ぶ。これらの動作は、コードの断片又は部分である。特に、動作は、イベント1102、イベント1104、イベント1106、及びイベント1108を含む。この実施例では、イベント1102は時間帯1110に適用される。イベント1104は時間帯1112の間に発生し、イベント1106は時間帯1114の間に適用される。イベント1108は時間帯1116の間に発生する。これらのイベントは、手続き的な性質を持つか、又はイベントによって駆動される。つまり、イベントは、インタープリタによって発信又は生成される種々のメッセージへの応答として適用されうる。
このような実施例では、時間軸1100の実行により発行されるマスタ割り込みにより、実行途中に必要に応じてこれらのイベントが中断され、シミュレーションは直ちにシミュレーションの次の時間帯に移る。ソースコードの実行が手続的又はイベント駆動式である現在のプログラム言語とは異なり、有利な実施形態では、ソースコード中の動作は時間に基づく実行モデルに従って進行する。このような実施例では、時間帯は様々な粒度を有することができる。例えば、各時間帯は、一週間、一日、一時間、一分、又はその他何らかの期間を表すことができる。
【0064】
図示される実施形態では、時間軸1100はスケジューラの監視下で実行される。これについては後述で詳細に説明する。スケジューラは、時間軸1100に関連付けられたイベント1102、1104、1106、及び1108を実行する。スケジューラはこれらのイベントを完全に制御しており、必要に応じてそれらに割り込むことができる。さらに、スケジューラは、メモリマネージャ及びメモリ回復機能を実行する。このように、中断されたタスクに割り当てられた全てのメモリを、到来するイベントに利用することができる。
【0065】
ここで、有利な一実施形態による、時間軸にスケジューラが割り込む場合の動作の適用を示す図12を参照する。この実施例では、時間軸1200は、イベント1202及びイベント1204を含む。イベント1202は、時間軸1200上の時間帯1206の間に実行を開始する。この実施例では、イベント1202は、入力1208、決定1210、及び処理1212を含む。イベント1202は、時間帯1206の間に実行を開始する。時間帯1206が終了すると、1214の時点でスケジューラがイベント1202の実行に割り込む。ここで実行は、時間帯1206の後に開始される時間帯1216のイベント1204に移る。この実施例では、時間帯1206と時間帯1216の間に重複は無い。
【0066】
ここで、有利な一実施形態による、時間帯が重複する場合の動作の適用を示す図13を参照する。この実施例では、スケジューラは、種々の時間帯に関連付けられたイベント1302、1304、1036、及び1308を有する時間軸1300を実行する。イベント1302は、時間帯1310に関連付けられている。イベント1304は時間帯1312に関連付けられている。イベント1306及び1308は、時間帯1314及び1316にそれぞれ関連付けられている。
この実施例では、異なる時間帯が互いに重複することがありうる。つまり、一の時間帯の継続時間が、別の時間帯の継続時間より長い場合がある。図示のように、時間帯1310及び時間帯1312は互いに重複する。その結果、イベント1302及びイベント1304が、時間帯1310と時間帯1312が重複する一定の期間に亘って同時に実行される。この特定の実施例では、イベント1302の実行に比較的長い時間が与えられている。
【0067】
時間帯の重複は、重複が起こる時間の間にイベントが組み合わされることを意味しない。このような実施例では、何らかの理由で時間帯1310においてイベント1302が中断される場合、この中断が時間帯1312の開始前又は実行中に生じた場合、コントロールは時間帯1312に移る。しかしながら、時間帯1310の間の、但し時間帯1312の終了後に中断が生じた場合、コントロールは時間帯1314におけるイベント1306の実行に移る。
【0068】
図14、15、及び16は、有利な一実施形態による存続イベントを示す。図示のように、時間軸1400は、時間帯1408に関連付けられたイベント1402、存続イベント1404、及びイベント1406を含む。イベント1410は、時間軸1400上の時間帯1412に関連付けられている。イベント1414は時間帯1416に関連付けられており、イベント1418は時間帯1420に関連付けられている。イベントは、中断されないか、又は延長されるように作成することができる。この種のイベントは、エンドユーザから、又はまだ終了していないが必要とされる他の何らかのイベントから、入力の到来を待っているときに存在することができる。このような実施例では、この種のイベントは、存続イベント1404のような存続イベントである。存続イベント1404は、一の時間帯から別の時間帯へと、当該イベントが完全に発生するまで続くことができる。
図15に示すように、存続イベント1404は時間帯1412に関連付けられる。図16では、存続イベント1404は再度延長されるか又は時間帯1416に移される。これらの実施例では、存続イベント1404はこの特定の時間帯の間に完了する。
【0069】
ここで、有利な一実施形態によるインタープリタを示す図17を参照する。インタープリタ1700は、図4のインタープリタ404を詳細に示したものである。インタープリタ1700は、一の言語で書かれたソースコードを、別の言語で書かれた標的コードに変換するプログラムである。インタープリタ1700はまた、当該インタープリタがソースコードの処理を進める際に標的コードを実行する。この標的言語は、別の高レベル言語又は特定のデータ処理システム又はプロセッサによって使用される言語で書かれてもよい。
任意のプログラムが正確に変換されて実行されるために、ソースコードは言語によって定義される構築物によって構成される。特に、これらの構築物は構文構築物である。構築物の完全なセットはソースコードの言語の文法を形成する。これらの構築物に従って構成されていないか、又は文法的に不正確なコードはすべて、インタープリタ1700によって廃棄される。
【0070】
インタープリタ1700は、通信モジュール1702と言語インタープリタ1704とを含む。これに加えて、インタープリタ1700は、暗号化/復号化モジュール1706を含み、このモジュールは、インタープリタ1700と、図4のGUIプロセッサ406のようなGUIプロセッサとの間で情報の安全な送受信を行う。
このような実施例では、言語インタープリタはHBDL1708を受信する。HBDL1708は、図4のソースコード402のようなソースコードモジュールから受けとられる図4のデータ410のようなデータの一実施例である。HBDL1708は、言語インタープリタ1704によって変換されて、シミュレーションを実行する。結果として変換されたHBDL(IHBDL)1710が得られ、これは暗号化/復号化モジュール1706に送られて暗号化される。暗号化の後、暗号化の結果は、変換及び暗号化されたHBDL(EIHBDL)1712として、図4のGUIプロセッサ406のようなGUIプロセッサに送られる。EIHBDL1712は、図4のグラフィックデータ412の一実施例である。ユーザ入力は、一組のデバイスからGUIプロセッサによって回収された暗号化済みHBDL(EHBDL)1714として受け取られる。EHBDL1714は、図4のユーザ入力418の一実施例である。このような暗号化済みの情報は、復号化され、HBDL1716として通信モジュール1702に送られる。
【0071】
HBDL1716は、ソースコードの修正に使用されるユーザ入力の一実施例である。このような修正は、例えば、ソースコード内の定義の変更、又は定義に対して適用される動作の選択とすることができる。加えて、言語インタープリタ1704の出力は、HBDLとして通信モジュール1702に送られて、ソースコードの修正に使用される。HBDL1716及びHBDL1718を使用して通信モジュール1702はHBDL1720を形成し、これを使用してソースコードが修正される。HBDL1720は、図4の修正420のフォーマットの一実施例であり、ソースコードの修正に使用される。図示のように、HBDL1718は、ソースコードを変更するために、言語インタープリタ1704により生成される出力のフィードバックとなる。
具体的には、通信モジュール1702は、発信モジュール1722、入力モジュール1724、及び登録モジュール1726を含む。言語インタープリタ1704は、字句解析器1728、文法構文解析ツール1730、及び実行モジュール1732を含む。
【0072】
言語インタープリタ1704は、字句解析、文法構文解析、及び意思決定に対処するモジュールを含む。HBDL1708としてデータを受け取ると、字句解析器1728は、HBDL1708内のデータを、ソースコード言語の個々のトークン又は単語に分解する。このような実施例では、ソースコードはHBDLで書かれている。つまり、字句分析器1728は、HBDL1708内の異なるトークン又はコンポーネントを識別する。これらのトークンは文法構文分析ツール1730に送られ、このツールによってHBDL1708のために意味のある文又は命令文に分類される。HBDL1708内の文又は命令文が構築されたら、文法構文分析器1730はこの命令文を実行モジュール1732に送る。次いで、この命令文に基づく動作がしかるべく行われる。
実行モジュール1732は、シミュレーションを実行するための多数の異なるサブモジュールを含む。このような実施例では、実行モジュール1732は変換されたHBDL(IHBDL)1710及びHBDL1718を生成する。HBDL1710は、グラフィックプリミティブのような、グラフィックデータの形態を採る。HBDL1718は、ソースコードの修正に使用される修正された定義又は新規定義である。HBDL1718は、入力モジュール1724に返されて、ソースコードの修正又は書き直しに使用される。入力モジュール1724は、HBDL1718の新規定義を発信モジュール1722に渡し、発信モジュールは、ソースコード中に書き込まれるべきHBDL1720を発信する。
【0073】
これらの実施形態では、文法構文分析ツール1730は、字句分析器1728及び実行モジュール1732を開始させる。文法構文分析ツール1730は、字句解析器1728にトークンをリクエストする。字句解析器1728は、HBDL1708からキャラクタを受け取ってトークンを生成する。トークンが生成される度に、字句分析器1728は当該トークンを文法構文解析ツール1730に送る。文法構文解析ツール1730は、トークンを使用して一又は複数の解析木を生成する。解析木が完成したら、文法構文解析ツール1730は、完成した解析木に基づいて、実行モジュール1732によって実行される動作をリクエストする。
このような実施例では、各解析木は一つの命令書を表わす。命令書は、トークンのストリームが命令書の定義と一致するたびに起動又は実行される一又は複数の動作からなる一つのセットを有する。文法構文解析ツール1730からのリクエストに応じて、実行モジュール1732は意味解析を行って、動作の命令に何らかの意味論的誤りがないかどうかを決定する。誤りが生じた場合、その誤りは報告される。誤りが無ければ、動作のセットに対する命令が実行される。すると、関連する完全な命令書の動作が開始されることにより、非端末機の呼び出し側への機能的回帰が行われる。
【0074】
このような実施例では、実行モジュール1732が、文法構文解析ツール1730によって作成された解析木に生成された命令が意味論的に正しいかどうかを判断する。意味論的な誤りが生じている場合、このような実施例では、実行モジュール1732はエラーを生成し、命令を無視する。しかしながら、場合によっては、実行モジュール1732が訂正を行うために十分な情報が存在する場合、エラーは訂正することができる。
EHBDL1714としてユーザ入力を受け取ると、暗号化/復号化モジュール1706は情報を復号化してHBDL1716を形成する。HBDL1716はHBDLの暗号化されていない形態のユーザ入力であり、登録モジュール1702によって受け取られる。登録モジュール1726は、ユーザ入力を返すユーザの各々を登録して正当性を確認する。この登録モジュールにより、権限を有するユーザ又は登録されたユーザしかシステムに入力を返せないことが保証される。例えば、登録モジュール1726は、特定のユーザのパスワードの正当性を確認する。
【0075】
ユーザが正当であると確認されたら、HBDL1716のユーザ入力は入力モジュール1724に渡される。入力モジュール1724は、全ての形態の入力を集中させる焦点として働き、特定の命令を有する入力を発信モジュール1722に送る。入力モジュール1724は、入力を処理するために、発信モジュール1722が必要とする命令を追加することができる。このような実施例において、入力は、ソースコードの何を変更するかを定義する。
このような実施例では、特定の命令は、ソースコードのどの部分が特定のユーザによって修正可能かに関する命令のような命令を含む。例えば、ユーザ入力が定義を修正する場合、命令は、修正すべきソースコードの部分を識別する。ソースコードの、入力によって修正される部分は、入力を生成するユーザの識別と、入力自体を用いて識別することができる。
【0076】
このとき、発信モジュール1722は、HBDL1720がソースコードに送り返されるときに、ソースコードの適切なセクションが書き直されることを保証する。発信モジュール1722は、ユーザ、入力、及びソースコードの書き直される部分を識別するというポリシーを用いて、ソースコードに書き込みを行うかどうかを判断する。ポリシーとは、入力に応答してソースコードへの書き込みを行うかどうかを判断するために使用される一組のルールである。このポリシーにより、権限を持たないユーザが登録モジュール1726を通り抜ける可能性を排除するための二重性が付与される。例えば、権限を持たないユーザが実際のユーザをだまして入力を行う可能性がある。ポリシーは、実際のユーザによって行われない変更である入力、又は実際のユーザによって行われる入力の特徴を有さない入力を識別することができる。このような場合、入力は発信モジュール1722によって拒絶される。
これらの実施例では、各ユーザは、各々が追加又は修正できる、各自の動作の組を有する。その結果、ユーザが修正できるのは、ソースコードの動作の部分だけである。実行モジュール1732からの出力HBDL1718を使用して、動作だけでなく定義を書き直すことができる。このような実施例では、言語インタープリタ1704はシステム内の別のユーザとも考えられる。しかしながら、インタープリタは、永久的認証済みユーザである。発信モジュール1722にとって言語インタープリタ1704は、HBDL1718を用いて定義を書き直す存在である。
【0077】
結果として、シミュレーションの任意の時点で、実際の人であるエンドユーザは、データベース内に定義されたあらゆる人を置換することができる。このようなデータフローにより、インタープリタ1700はソースコードの書き直し又は変更を行うことができる。時間が経過してシミュレーションが実行されるとき、ソースコードを書き直すための定義が絶えず生成されている。
入力モジュール1724は、シミュレーションにおいて実行される「仮想世界」と、システムと通信するデバイスにおけるユーザによるユーザ入力により受け取られる「現実の世界」とを繋ぐ。発信モジュール1722は、ソースコードを修正するための新規定義を書き込むメカニズムを提供する。
【0078】
次に、有利な一実施形態による字句解析器のデータフローを示す図18を参照する。図示のように、字句解析器1800は、ソース1802を受け取り、このソース1802を処理してトークン1804を生成する。字句解析器1800は、図17の字句解析器1728の一実施例である。字句解析器1800は、キャラクタによりソース1802キャラクタの内容を読み取り、ソース1802から到来するキャラクタを、トークンと呼ばれる基本ユニット、例えばトークン1804に分類する。
ソース1802内のキャラクタのトークン1804への分類は、このような実施例では、正規表現1806内のトークン記述の組を使用して実行される。正規表現1806は、ソース1802内のキャラクタをトークン1804に分類するのに必要な記述を含む。このような実施例では、正規表現1806は、スクリプトを使用して実施される。これらのスクリプトは、キャラクタをトークンに分類する際に使用されるキャラクタのパターンを説明する言語の記号を使用する。
【0079】
正規表現1806において定義される各正規表現には一の記号が割り当てられる。この記号は典型的には数字である。字句分析器1800によってトークン1804内に生成されるトークンは、正規表現1806内の特定の正規表現の記号を用いて識別される。
正規表現1806に加えて、字句分析器1800は予約語1806も使用する。トークンがソース1802内で識別されるとき、予約語1808に含まれる単語にも記号が割り当てられる。予約語は、言語に対して特定の文法論的意味を持つ単語であり、当該言語における識別子として使用することはできない。
【0080】
ここで、有利な一実施形態による、文法構文解析ツールによって実行される構文解析を示す図19を参照する。図19に示す構文解析は、図17の文法構文解析ツール1730によって実行することができる。解析木1900は、文法構文解析ツールがトークンを分類するために使用できる解析木の一実施例である。この実施例では、命令文1902は、var1=20である。この命令文は、インタープリタによって実行される動作の管理又は定義に使用される。
特に、文法構文解析ツールは、字句解析器によって生成されるトークン間の関係を、命令書とも呼ばれる統語的構築物のセットに基づいて識別する。各命令書は、一つの論理ユニットを表わし、典型的には他の論理ユニットのトークンの観点から定義される。殆どの言語が二つの広範な種類の論理ユニットを定義する。このような実施例において、これらの論理ユニットは命令文及び式である。式は通常、値を提供する統語的言語構築物である。命令文は、変数の状態を変更するか、プログラムのフローを制御するか、又は言語によって支援される他の操作を実行する統語的構築物である。
【0081】
文法構文解析ツールは、論理ユニットに入るトークンのストリームを分類し、実行モジュールに対して論理ユニットに基づく動作の実行を指示する。この実施例では、命令文1902は字句分析器によって生成されるトークンのストリームを含む。これらのトークンは、パラメータ名1904、EQ1906、式1908、及びNL1910である。式1908は、整数INT1912を含む。パラメータ名1904の値はvar1であり、EQ1906の値は=であり、INT1912の値は20であり、NL1910の値は¥nである。図示のように、トークンのストリームを受け取ると、文法構文解析ツールは、ストリームに含まれるトークンの順序に基づいて文法を再生成する。
【0082】
ここで、有利な一実施形態による解析木の別の実施例を示す図20を参照する。この実施例では、解析木2000は命令文2002から生成されたものである。この実施例の命令文2002は、出力=var1+var2*var3である。
この実施例では、命令文2002のトークンは、パラメータ名2004、EQ2006、パラメータ名2008、プラス2010、パラメータ名2012、MUL2014、パラメータ名2016、及びNL2018を含む。パラメータ名2004は出力という値を有し、EQ2006は=という値を有し、パラメータ名2008はvar1という値を有し、プラス2010は+という値を有し、パラメータ名2012はvar2という値を有し、MUL2014は*という値を有し、パラメータ名2016はvar3という値を有し、NL2018は¥nという値を有する。命令文2002の符号=の他方の側の式は、トークンのパラメータ名2008、プラス2010、パラメータ名2012、MUL2014、及びパラメータ名2016によって定義される。
【0083】
これらの式の識別と言語内でのそれらの使用は、識別ノードに対するこれらトークンの位置により解析木2000内に示されている。例えば、式2020は、式2022及び2026が演算子2024の使用により演算されることを示す。この場合、演算子2024はプラス2010である。式2020は式2026も含み、この式は、式2028及び2030を、演算子2032を使用して演算されるものとして識別する。この実施例では、式2022はパラメータ名2008を含み、式2026は式2028及び2030に演算子2032を適用した結果を含む。
【0084】
ここで、有利な一実施形態によるインタープリタ内の実行モジュールを示す図21を参照する。この実施例では、実行モジュール2100は、図17の実行モジュール1732を詳細に示したものである。図示のように、実行モジュール2100は、主時間軸制御モジュール2102、数学モジュール2104、物理モジュール2106、人工知能(AI)モジュール2108、レポート作成プログラム2110、及びグラフィックモジュール2112を含む。
主時間軸制御モジュール2102は、実行モジュール2100内において、時間の経過とともに定義に対してイベントを適用するのに使用されるスケジューラである。数学モジュール2104及び物理モジュール2106は、異なるオブジェクトに対する動作の影響を決定するのに必要な計算を行う。人工知能モジュール2108は、主時間軸制御モジュール2102によって定義に対してイベントが適用されるとき、異なる人工知能コンポーネントのソースコードを実行することにより人の行動のシミュレーションを援助するのに使用されるコンポーネントである。
【0085】
グラフィックモジュール2112は、エンドデバイスにおいて提示するグラフィックデータをGUIプロセッサに送る。レポート作成プログラム2110は、このような実施例では、二種類の出力を生成する。一方の種類の出力は、ソースコードの修正に使用される新規定義である。生成されるこの出力は、例えば、図17のHBDL1718である。レポート作成プログラム2110によって生成される他方の種類の出力はグラフィックデータであり、このような実施例ではこのデータもHBDLでフォーマットされる。この出力は、例えば、図17のIHBDL1710である。
グラフィックモジュール2112は、ユーザに対してシミュレーションの結果を表わす出力を生成するために使用される多数の様々なプロセスを含んでいる。これらの種類のプロセスには、二次元グラフィックパイプライン、二次元グラフィックプリミティブ、三次元グラフィックパイプライン、三次元グラフィックプリミティブ、二次元及び三次元モデルとスタック、表示リスト作成プログラム、並びに二次元及び三次元レンダリングエンジンが含まれる。これらの、並びに他の種類のグラフィックプロセスは、ユーザに提示される出力の生成に使用するために、グラフィックモジュール2112に置くことができる。
【0086】
ここで、有利な一実施形態によるトークン生成プロセスのフローチャートを示す図22を参照する。図22に示されるプロセスは、図17の字句解析器1728のようなソフトウェアコンポーネントにおいて実施することができる。
本プロセスは、ソースから次のキャラクタを受け取ることにより開始される(工程2200)。このような実施例では、キャラクタのソースは図17のHBDL1708である。このキャラクタはキューに置かれる(工程2202)。
【0087】
次に、キュー内の文字列と正規表現又は予約語との間に一致があるかを判断する(工程2204)。一致がある場合、キュー内の文字列を使用してトークンを生成する(工程2206)。次いでキューをクリアする(工程2208)。
その後、ソース内においてファイルの最後に達したかを判断する(工程2210)。ファイルの最後に達していればプロセスは終了する。ファイルの最後に達していない場合、プロセスは工程2200に戻り、次のキャラクタを取得する。工程2204において文字列の一致がなければ、プロセスは上述の工程2210に進む。
【0088】
ここで、有利な一実施形態による、人の行動のシミュレーションの実行プロセスのフローチャートを示す図23を参照する。図23に示すプロセスは、図4のフレームワーク400のようなフレームワークにおいて実施することができる。特に、このシミュレーションは、図6のソースコード600のようなソースコードを用いて実行することができる。
このプロセスは、仮想環境に、ソースコード内の定義に定義される人の組を入れることにより開始される(工程2300)。このような実施例では、定義とは、図6の定義602のような定義である。本プロセスは、ソースコード内の動作を用いて、仮想環境内の人の組に対し、一組の動作を実行し、人の行動をシミュレートする結果を形成する(工程2302)。このような実施例では、動作の組は、図6の動作604のような動作から取得される。
【0089】
その後、ソースコード内のグラフィックインターフェース言語を使用して結果から出力を生成し、フォーマットされた出力を形成する(工程2304)。このような実施例では、グラフィックインターフェース言語は図6のGUI言語606とすることができる。その後、シミュレーションが行われると、フォーマットされた出力は、ネットワークデータ処理システム内の一組のデバイスに提示され(工程2306)、その後プロセスは終了する。
このように、異なる有利な実施形態では、シミュレーションの際に変更可能なソースコードにより、人の行動をシミュレートする。さらに、グラフィカルユーザインターフェース言語は、結果の様態をユーザに提示して、シミュレーション自体による変更及び制御を可能にする。
【0090】
ここで、有利な一実施形態による、文又は命令書の生成プロセスのフローチャートを示す図24を参照する。図24に示されるプロセスは、図17の文法構文解析ツール1730のようなソフトウェアコンポーネントにおいて実施できる。
本プロセスは、処理される次のトークンを受け取ることにより開始される(工程2400)。これらの実施例では、トークンは、図17の字句解析器1728のような字句解析器から受け取られる。トークンに関して、ファイルの最後に達したかの判断を行う(工程2402)。ファイルの最後に達していない場合、トークンが解析木に適合するかを判断する(工程2404)。トークンが解析木に適合しない場合、エラーを生成し(工程2406)、次いで処理は工程2400に戻る。
【0091】
トークンが解析木に適合する場合、トークンが解析木を完成するかを判断する(工程2408)。トークンが解析木を完成する場合、完成した解析木に対応する命令書の命令が実行される(工程2410)。その後、プロセスは再帰的に呼び出し側に戻り(工程2412)、次いで上述の工程2400に戻る。
工程2408に関して解析木が完成されない場合も、プロセスは工程2400に戻る。工程2402でファイルの最後に達している場合、文法の一部が再生成されているかを判断する(工程2414)。この工程は、不完全な命令文又は命令書が存在するかを判断するために実行される。この判断は、解析木を調べて不完全な解析木が存在するかどうかを見ることにより行うことができる。文法の一部が再生成されている場合、エラーを生成し(工程2416)、その後プロセスを終了する。文法に再生成された部分が無ければ、プロセスはエラーを生成せずに終了する。
【0092】
ここで、有利な一実施形態による、命令書の命令文の実行プロセスのフローチャートを示す図25を参照する。図25に示す本プロセスは、図17の実行モジュール1732のようなソフトウェアコンポーネントにおいて実施することができる。
本プロセスは、命令書の一組の命令に対する意味解析を実行することにより開始される(工程2500)。この工程は、命令書のいずれかの命令に意味論的誤りが生じているかを判断するために実行される。このような実施例では、命令の組は、一又は複数の命令である。その後、意味論的誤りが存在するかを判断する(工程2502)。
【0093】
意味論的誤りが無い場合、プロセスは命令の組を実行し(工程2504)、プロセスはその後終了する。工程2502において意味論的誤りが生じる場合、エラーを報告し(工程2506)、プロセスはその後終了する。場合によっては、プロセスは終了せずに、命令が実行できるようにエラーの訂正を試みることができる。
【0094】
ここで、有利な一実施形態によるグラフィカルユーザインターフェース(GUI)プロセッサを示す図26を参照する。GUIプロセッサ2600は、図4のGUIプロセッサ406を詳細に示したものである。この実施例では、GUIプロセッサ2600は、暗号化/復号化モジュール2602、グラフィックモジュール2604、出力モジュール2606、入力モジュール2608、及びHBDLジェネレータ2610を含む。
これらの実施例では、GUIプロセッサ2600は、図6のソースコード600のようなソースコードから受け取った命令文を実行する。特に、命令文には、図6のソースコード600内のGUI言語606から受け取ったものが含まれる。表示を生成するための実際のコードは、別個のアプリケーションではなくこれらのソース内に見出される。
【0095】
GUIプロセッサ2600は、命令文を実行し、ユーザ入力を受け取る。GUIプロセッサ2600は、図17のインタープリタ1700のようなインタープリタから、暗号化された変換済みHBDL(EIHBDL)2612を受け取る。暗号化/復号化モジュール2602は、情報を復号して変換されたHBDL(IHBDL)2614を形成し、IHBDLはグラフィックモジュール2604によって処理される。このような実施例では、IHBDL2614は、デバイス2618用の表示を生成するために使用できる一組の命令文又はプリミティブを表わす。
グラフィックモジュール2604は、デバイス2618に表示されるピクセルを生成し、そのデータを出力モジュール2606に送ることができ、すると出力モジュールはそのデータを、デバイス2616としてデバイス2618に転送する。ユーザ入力は、入力モジュール2608により、デバイス2620としてデバイス2618から受け取られる。このモジュールは、デバイスデータをHBDLジェネレータ2610に送り、HBDLジェネレータはこのユーザ入力をHBDL2622の形式で表わす。HBDL2622は、HBDLで書かれたユーザ入力である。この入力は、暗号化/復号化モジュール2602によって暗号化され、暗号化されたHBDL(EHBDL)2624としてインタープリタに返される。
【0096】
このような実施例では、GUIプロセッサ2600は、デバイス2618に近いハードウェア上で動作する。実際、多くの場合、GUIプロセッサ2600の一部は実際にデバイス2618上で動作し、別の部分はサーバなどのデータ処理システム上で動作する。GUIプロセッサ2600は、データの提示に必要なネットワークリソースの使用を低減するように、デバイス2618の近くに配置される。さらに、このような実施例では、GUIプロセッサ2600は、データを表示し、ユーザ入力を受け取る際の待ち時間を短縮するように配置される。
【0097】
ここで、有利な一実施形態による、グラフィカルユーザインターフェース(GUI)プロセッサを通るデータフローを示す図27を参照する。この実施例では、グラフィックモジュール2700は図26のグラフィックモジュール2604の一実施例である。このような実施例では、グラフィックモジュール2700は、プリミティブ2702の形式で変換されたHBDLを受け取る。これらのプリミティブは、インタープリタによるソースコードの変換の結果である。
グラフィックモジュール2700は、これらのプリミティブを処理して、ビットマップのピクセルと、ビットマップの操作方法又は表示方法を識別するデータとを生成する。この情報は、ビットマップデータ2704としてクライアントプロセス2706に送られる。このような実施例では、クライアントプロセス2706とは、図19のデバイス1918に含まれるもののようなデバイス上で実行されるプロセスである。このクライアントプロセスは、ディスプレイ2708にビットマップデータを表示するのに必要な操作を実行する。このように、表示される画像を供給するのに必要なグラフィック処理は、グラフィックモジュール2700によって実行される。クライアントプロセス2706は、供給されたビットマップデータを表示するだけであり、プリミティブからビットマップグラフィックを提供するのに必要な複数の異なるプロセス及び処理力を必要としない。処理をこのように分割することで、データを表示するデバイスには、異なるグラフィックプロセッサや、ワークステーションで使用されるようなグラフィックの提供に用いられるグラフィックパイプラインが不要となる。
【0098】
結果として、通常はプリミティブを取り扱うには処理力が不十分な多数の異なるデバイスにグラフィックを表示することができる。例えば、クライアントプロセス2706及びディスプレイ27087は、携帯電話、携帯情報端末、又はタブレットPCにおいて実施することができる。
入力デバイス2710は、ディスプレイ2708に表示されているデータに対するユーザ入力を受け取る。このユーザ入力は、ボタンの選択、データの入力、又は命令の送信といったグラフィックを操作することができる。ユーザがディスプレイ2708上のビットマップを操作することにより表示画像を修正するとき、表示されている画像の修正に含まれる差分又は変化は、クライアントプロセス2706によって識別される。画像内のこれらの差分は差分データ2712を形成し、このデータはHBDLジェネレータ2714に戻される。
【0099】
HBDLジェネレータ2714は、図26のHBDLジェネレータ2610と同様である。HBDLジェネレータ2714は、情報に含まれるこのような変化又はデルタを識別してそれをHBDL2716に変換し、インタープリタに転送する。HBDL2716は、ソースコードモジュールの言語での命令文又はコードを含み、ソースコードに変更を加えるために使用することができる。グラフィックモジュール2700は、プリミティブ2702を使用して異なるビットマップのピクセルを生成する。
【0100】
ここで、有利な一実施形態によるディスプレイの操作を示す図28を参照する。この実施例では、ディスプレイ2800は、図27のディスプレイ2708に提示されるディスプレイの一実施例である。ディスプレイ2800は、プリミティブから生成されたビットマップを用いて提示される。この実施例のビットマップは、スライダ2802及びフィールド2804のような異なるコンポーネントを表わすために使用されている。スライダ2802及びフィールド2804を表わすために使用されるビットマップデータは、このようなビットマップの操作を可能にする方法を示すデータと共に送られる。この実施例では、スライダ2802は、ユーザ入力により、図28の位置2806から、ディスプレイ2800の修正版である図29のディスプレイ2902内の位置2900へと動かすことがでる。さらに、図29のディスプレイ2902に示されるように、50のような値をフィールド2804に入力することができる。ビットマップのこれらの変化は、有利な一実施形態によればGUIプロセッサに返され、するとGUIプロセッサはこれらの変化に基づいてソースコードのために適切な命令文を生成する。
【0101】
ここで、有利な一実施形態による、ビットマップの変化を識別するプロセスのフローチャートを示す図30を参照する。図30に示されるプロセスは、図27のクライアントプロセス2706のようなデバイスのクライアントプロセスにおいて実施することができる。
プロセスは、ユーザ入力のモニタリングにより開始される(工程3000)。次いで、ディスプレイに対するユーザ入力が検出されるかを判断する(工程3002)。ユーザ入力が検出されなければ、プロセスは工程3000に戻る。ディスプレイに対するユーザ入力が検出された場合、ユーザ入力がコントロールを操作するものかを判断する(工程3004)。ユーザ入力がコントロールの操作である場合、コントロールの変更をビットマップ内で識別する(工程3006)。ビットマップにおけるこの差分又は変化はGUIプロセッサに送り返され(工程3008)、ここでプロセスは工程3000に戻って次のユーザ入力をモニタリングする。用途に応じて、データの変化は、変更された実際のビットマップでも、ビットマップの位置の変化の識別でもよい。当然のことながら、実施形態によっては他の種類の変更も使用できる。
【0102】
工程3004に関し、ユーザ入力がコントロールの操作でない場合、ユーザ入力がフィールドへのデータの入力であるかを判断する(工程3010)。ユーザ入力がデータ入力でなければ、プロセスは工程3000に戻る。ユーザ入力がデータ入力である場合、プロセスは工程3006に進んでビットマップ内で行われた変更を識別する。
ユーザ入力に関して行なわれる特定の判断は、このような実施例では、ディスプレイ内のフィールドとコントロールへの変更を識別するためのもの、例えば図21の実行モジュール2100である。判断は、対象のビットマップに対するあらゆる種類の変更について行うことができる。例えば、変更は、特定のボタンが選択又は使用されたかどうかに関するものでもよい。
【0103】
ここで、有利な一実施形態による、差分データを取り扱うプロセスのフローチャートを示す図31を参照する。図31に示されるプロセスは、図26のGUIプロセッサ2600のようなGUIプロセッサにおいて実施することができる。特に、図31に示されるプロセスは、図27のHBDLジェネレータ2714において実施できる。
本プロセスは、クライアントプロセスから差分データを受け取ることにより開始される(工程3100)。これらの実施例では、差分データは、ユーザ入力により行われたビットマップ内の変更を含む。次いでプロセスは差分に基づいてユーザ入力を識別する(工程3102)。このユーザ入力は、例えば、スライダの位置の変化、データフィールドへのデータの入力、又は他の何らかのユーザ入力として識別することができる。工程3102で行われる識別は、デバイスに送られた元のビットマップと、変更されたビットマップとを比較することにより行うことができる。例えば、差分がこの種のコントロールに沿ったスライダの上方への移動と識別される場合、ユーザ入力は、人の適時性を変更するためのものでありうる。この種の差分の一実施例は、図21の実行モジュール2100に関して示されている。
【0104】
その後、ユーザ入力は、ソースコードによって使用されるフォーマットに変換される(工程3104)。このような実施例では、ユーザ入力はHBDLフォーマットに変更される。変換されたユーザ入力はインタープリタに送られ(工程3106)、その後プロセスは終了する。
【0105】
ここで、有利な一実施形態による、人の透明性のパラダイムの提供に使用されるコンポーネントを示す図32を参照する。この実施例では、図4のフレームワーク400のようなフレームワークを使用してシミュレーション3200が実行される。具体的には、シミュレーション3200は、図4のインタープリタ404のようなインタープリタによるソースコードの変換により実行される。
この特定の実施例では、シミュレーション3200は、人工知能(AI)3202を含み、人工知能はシミュレーション3200内の人を表わす。人工知能3202によって実行されているこの人は、このような実施例では人工的な人である。人工知能3202のコードは、シミュレーション3200に使用される他の情報に加えて定義3204から取り出される。定義3204は、図4のソースコード402のようなソースコードに見出される。定義3204には、人工的人の定義だけでなく、シミュレーション3200の他の人及び当該人が存在する環境の定義も含まれる。
【0106】
シミュレーション3200の間に結果が生成されると、これらの結果はユーザ入力3208として通信モジュール3206に送られる。この実施例では、これらの通信モジュールは、図4のインタープリタ404のようなインタープリタにも見出される。通信モジュール3206は、シミュレーション3200からユーザ入力3208を取得して、定義3204を修正するか、又は定義3204の中に新規定義を書き込む。これにより変更されたソースコードが形成され、するとシミュレーション3200は変更されたコードを使用して追加の結果を生成する。このような実施例では、人工知能3202は、生身のユーザと同様にフレームワークにログインする。
さらに、シミュレーション3200の結果3210はデバイス3212に送られてユーザ3214に提示される。このような実施例では、ユーザ3214は実際の人である。
【0107】
本発明の例示的実施形態により、人の透明性パラダイムが使用可能となる。このパラダイムでは、ユーザ入力3208は、人工知能3202によって生成され、定義3204を書き直し、ユーザ3214によるリアルタイムのユーザ入力によって置換される。つまり、ユーザ3214は通信モジュール3206にユーザ入力3216を送ることにより、シミュレーション3200内で人工知能3202によりシミュレートされた人工的人が生成したユーザ入力3208に替えて、定義3204を修正するか、又は定義3204に新規定義を書き込む。このような実施例では、ユーザ3214は主題のエキスパートであり、ユーザ入力3216を供給する。このような実施例では、ユーザ入力3216はシミュレーション3200の間に供給される。このユーザ入力は、デバイス3212が受け取って提示する結果に応答して行われうる。
人工知能3202によってシミュレートされる人工的人は、人工的人の固有の識別子(UI)3218に関連付けられたユーザ入力3208を生成する。ユーザ入力3208は、シミュレーション3200の間に人工知能3202によって生成される。ユーザ入力3216は、固有の識別子3218に関連付けられる。ユーザ入力3208は、通信モジュール3206に送られる。通信モジュール3206は、ユーザ入力3208を用いて現在の定義に新規定義を加えるか又は現在の定義を修正することにより定義3204を修正する。通信モジュール3206は、固有の識別子3218に基づいて修正すべき定義3204の部分を認識する。
【0108】
ユーザ3214がユーザ入力3216を生成すると、ユーザ入力3216は通信モジュール3206によって受け取られる。このような実施例では、ユーザ入力3216は、固有の識別子3218を含むこともできる。このように、通信モジュール3206は、固有の識別子3218に関連付けられた人工的人の定義3204を修正する。
このように、ユーザ3214は、シミュレーション3200内で人工知能3202によってシミュレートされる人工的人を置換することができる。ユーザ3214は、通信モジュール3206に送られるリクエストに応じて、進行中に人工知能3202のスイッチを入れたり切ったりすることができる。
【0109】
ユーザ入力3216によるユーザ入力3208の置換を開始するとき、デバイス3212のユーザ3214は通信モジュール3206にリクエストを送る。この時点で、ユーザ3214はログオンしており、通信モジュール3206による認証を受けていると仮定する。通信モジュール3206は、ユーザ3214が人工知能3202のスイッチを操作する権限を有しているかを判断する。つまり、通信モジュール3206は、ユーザ3214で人工的人を置換してよいかを判断する。ユーザ3214が認証されたら、通信モジュール3206は人工知能3202の使用を停止するというフラグを設定する。つまり、人工知能3202の機能は、シミュレーション3200内で呼び出されなくなる。
この時点で、ユーザ3214は、固有の識別子3218を含むユーザ入力3216を生成する。用途に応じて、固有の識別子3218は、ユーザ3214がデバイス3212においてユーザ入力を送ることを認識することにより、通信モジュール3206によって追加することができる。
【0110】
ここで、有利な一実施形態による、実際の人で人工的人を置換するプロセスのフローチャートを示す図33を参照する。この実施例では、図33に示されるプロセスは、図4のインタープリタ404のようなインタープリタで実施することができる。具体的には、本プロセスはインタープリタ404内の通信モジュールにおいて実施できる。
本プロセスは、ユーザから、人工的人を置換するようにというリクエストを受け取ることにより開始される(工程3300)。その後、ユーザがシミュレートされた人を置換する権限を持っているかの判断が行われる(工程3302)。このような実施例では、この判断は、シミュレーションの間に、どのようなユーザが人工的人を置換できるかを定義するリスト又はデータベースと、ユーザとを比較することにより行うことができる。例えば、特定のユーザは特定の領域における専門家であり、それら特定の領域に関して人工的人を置換することができる。例えば、特定のユーザは政治に関する専門家とすることができる。このユーザは、このような状況で、政治家である人工的人を置換することができる。しかしながら、この専門家ユーザは、農夫又は兵士である人工的人を置換する権限は、関連分野の専門知識を持たないので、有さない。
【0111】
どのようなユーザが人工的人を置換できるかに関する特定のルールは、全面的に用途によって決定される。ユーザが人工的人を置換する権限を有する場合、定義において人工的人のための人工知能の使用が停止される(工程3304)。
その後、本プロセスはユーザによるユーザ入力を待つ(工程3306)。ユーザ入力を受け取ると、ユーザ入力が定義に新規定義を書くことであるかどうかの判断が行われる(工程3308)。ユーザ入力が新規定義を書くことである場合、ユーザ入力は新規定義を書き込むための形式にフォーマットされる(工程3310)。その後、定義がソースコードに書き込まれ(工程3312)、次いで本プロセスは上述の工程3306に戻る。
【0112】
工程3308に関し、ユーザ入力が新規定義を書くことではない場合、ユーザ入力が人工知能を作動させることであるかを判断する(工程3314)。ユーザ入力が人工知能を作動させることでない場合、本プロセスは工程3306に戻る。ユーザ入力が人工知能を作動させることである場合、人工知能は再び作動されて人工的人のシミュレーションに使用され(工程3316)、その後本プロセスは終了する。工程3316は、人工的人をシミュレーションに戻し、シミュレーションから実際の人を排除する。
工程3302に関し、ユーザが人工的人を置換する権限を持たない場合、エラーメッセージが生成されて(工程3318)、その後プロセスは終了する。
【0113】
本フレームワークによって提供されるシミュレーションは、100%の確度で人の行動を予測することを目的としているのではなく、判断又は変更の可能性を提供することを目的としている。シミュレーションの結果は、フレームワークによって行われるシミュレーション無しでは不可能であったガイド及び予測を提供する。
異なる有利な実施形態では、図6の定義602、動作604、及びGUI言語606に異なる特徴を付与するように特に設計された言語を使用して、ソースコード600を実施することができる。他の有利な実施形態では、図6のソースコード600は、他の既存の言語又はプログラム方法論の機能及び特徴も含むことができる。
【0114】
異なる有利な実施形態では、人工知能システムを使用して、例えば図6の定義602及び/又は動作604のようなソースコード600の一部を実施することができる。一部の有利な実施形態では、ニューラルネットワークの形態の人工知能(又はその他の形態の人工知能)を使用して、様々なオブジェクトをシミュレートすることができる。例えば、ニューラルネットワークを使用して、人又は動物のような生物をシミュレートすることができる。
例えば、人工知能は、形式論及び統計学的分析を特徴とする機械の学習能力を用いる従来の人工知能とすることができる。加えて、人工知能は、例えば計算知能の形式でもよい。計算知能は、反復による発達又は学習を行う。この種の人工知能は、経験式に基づいて学習することができる。計算知能の例には、例えば、ニューラルネットワーク、ファジー理論、及び遺伝的アルゴリズムが含まれるが、これらに限定されない。これらのプログラム技術を使用して、図6のソースコード600内に追加の機能を補充又は提供することができる。他の有利な実施形態では、図6のソースコード600は、種々のプログラム技術に加えて又は連動させて、既存のプログラム言語を使用して実施することができる。
【0115】
有利な一実施形態では、ニューラルネットワークのようなプログラム技術を使用して、図6のソースコード600の一部を実施することができる。例えば、図6の定義602の一部又は全部は、ニューラルネットワークを使用して実施することができる。ニューラルネットワークとは、生物学的ニューラルネットワークに基づく数学的計算モデルである。ニューラルネットワークは非線形統計データモデル化プールを提供し、入力と出力との複雑な関係をモデル化するために使用することができる。ニューラルネットワークは、図6の定義602内の種々のオブジェクトの機能の学習を行うために用いることができる。
一実施例では、ニューラルネットワーク技術を使用して、人、動物又は図6のソースコード600の定義602内において適切なその他のオブジェクトといった種々のオブジェクトに学習機能を付与することができる。この種の実施例では、NNは、ニューラルネットワークの種類の変数を示す。宣言文の一例は、「NN n;」である。本実施例において、この種の命令文は、ニューラルネットワークの変数を宣言する。子供、n.input、n.output、及びn.hiddenも作成することができる。これら他の変数は、ニューラルネットワーク内において入力層、出力層、及び隠れ層を表わす。これらの層は、ユーザによる異なる層へのニューロンの追加を可能にする。これらの異なる層により、入力ニューロンを、子供として入力ニューラルネットワーク層に加えることができる。
【0116】
図34は、入力ニューロンの実施例として命令文3400及び3402を示す。命令文3400のセクション3404は、ニューラルネットワークnの入力ニューロンとして「left operand」を宣言する。この入力数は、入力ニューロンの総数を読み取るために使用することもできる。メンバー「input」の値は、新規メンバーが追加される度に1ずつ増加する。結果として、入力値は入力ニューロンの総数となる。これらの命令文は、C言語を使用して実行することができるHBDL擬似コードの例である。例えば、C+及び/又はオブジェクティブCといった他の言語。
このような実施例では、入力ニューロンの変数の範囲は、0〜1の値とすることができる。各入力ニューロンの変数は、最小範囲及び細大範囲を有する。これらの範囲により、ユーザは当該範囲内にあらゆる値を入力することができる。用途に応じて、これらの値を使用前に正規化してもよい。
【0117】
図35は、入力ニューロンのleft operandに定義された入力範囲の実施例として命令文3500及び3502を示す。この実施例では、命令文3500は最小値として−10を定義し、命令文3502は最大値として10を定義する。
図36は、有利な一実施形態による入力行動の一命令文を示す。命令文3600は、使用前に入力ニューロンを修正することを可能にする。つまり、入力ニューロンは、ニューロンによるユーザ入力の操作を可能にするためにニューロンに付与されたか又は関連付けられたコードを有する。例えば、ユーザ入力は短くても長くてもよい。この実施例では、ニューロンの入力行動は、長短を変換して0〜1に評価する。命令文3600は、この種の行動を入力ニューロンに付与するために使用可能なコードの一実施例である。
【0118】
図37は、有利な一実施形態による出力宣言文を示す。命令文3700は、出力ニューラルネットワーク層に子供を追加するために使用される命令文の一実施例である。
【0119】
ここで、有利な一実施形態によるニューラルネットワーク内の出力範囲の命令文を示す図38を参照する。この実施例では、命令文3800及び3802は、出力ニューロンに設定できる範囲の実施例である。命令文3800及び3802によって最小及び最大範囲が設定される。
この特定の実施例では、出力ニューロンの最小値は−50であり、最大値は50である。さらに、ユーザは、正規化された絶対出力を特定の範囲内の一の値に変換することができる。例えば、1という出力が50に変換され、0.5という出力が0に変換される。さらに、出力ニューロンは、出力を操作するためのコードに関連付けることもできる。
【0120】
図39は、有利な一実施形態による、出力行動を修正するための命令文を示す。命令文3900は、出力ニューロンに関連付けることが可能なコードの一実施例である。この実施例では、ユーザ出力は、低くても高くてもよい。この特定の実施例の場合、ニューロンの出力行動は、0〜1の値を、低い及び高いに変換する。
図40は、有利な一実施形態による隠れ層の命令文を示す。命令文4000及び4002は、任意のニューラルネットワークの隠れ層を宣言するために使用できる命令文の実施例である。このような実施例では、隠れ層の順序は、隠れ層の宣言文の順序に従う。隠れ層の変数の値は、特定の隠れ層に割り当てられるニューロンの数を特定する。この実施例では、命令文4000及び4002は二つの隠れ層を宣言している。命令文4000によって定義される第1の層は、五つのニューロンを含み、命令文4002に宣言される第2の層は三つのニューロンを定義する。
【0121】
図41に示すコード4100は、ニューラルサンプル値を特定するために使用されるサンプルニューラルネットワークメンバーを示す。異なるサンプルを特定することができる。各入力及び出力ニューロンは、命令文内に「サンプル[整数]」を含む。ニューラルネットワークが完成したら、ユーザはニューラルネットワークを訓練して使用することができる。
図42は、有利な一実施形態による、ニューラルネットワークを訓練するための例示的命令文を示す。命令文4200、4202、及び4204は、ニューラルネットワークの訓練を実行するために使用される命令文の実施例である。命令文4200は、ニューラルネットワークが500回訓練されることを示している。命令文4202は300回の、命令文4204は200回の訓練回数を示している。このような実施例では、訓練は累積性で結果が保存される。これらの異なる結果を、特定の目的のために、図6の定義602又はソースコード600内に保存することができる。
【0122】
図43は、有利な一実施形態によるニューラルネットワーク内の演算機能を示す。この実施例では、命令文4300及び命令文4302は、入力ニューロンに一の機能を実行させて結果を返させるのに使用される命令文の一実施例である。これらの実施例では、命令文4304は、命令文4300及び4302の別の表現である。
【0123】
図44は、有利な一実施形態によるニューラルネットワークの一実施例を示す。この実施例では、コード4400は、ニューラルネットワークを訓練及び実行するための命令文と共にニューラルネットワークの定義を含む。入力宣言文はセクション4402に見られる。入力範囲はセクション4404及び4406に見られる。ニューロンに関連付けられたコードは、命令文4408及び4410に見られる。出力範囲はセクション4412に、出力される行動は命令文4414に見られる。
隠れ層はセクション4416に定義されており、機能性は命令文4418に見られる。サンプルはセクション4420に見られ、命令文4422は訓練命令文の一実施例である。セクション4424はニューラルネットワークの操作に使用される命令文の実施例を示す。セクション4424内の命令文4426は結果を示す。
【0124】
ここで、有利な一実施形態による、ニューラルネットワークの操作結果を示す図45を参照する。この実施例では、ディスプレイ4500は、図44のコード4400の表示命令文4426に応答して生成されたディスプレイの一実施例である。
ニューラルネットワークに加えて、図6の定義602内のオブジェクトの様々な属性及び特性を管理するために動的リストを使用することができる。動的リストは、図8のオブジェクト800の特徴804及び図9のオブジェクト900の特徴904のような特徴を定義するために使用することができる。
【0125】
例えば、動的リストを使用して、オブジェクトのコンポーネント、能力、特徴、又はその他の適切なパラメータを識別することができる。例えば、オブジェクトが車である場合、動的リストを使用して、車輪、エンジン、ボディ、塗料、トランスミッション、窓、及びその他構成部品などの構成部品を識別することができる。車に構成部品が付け加えられたり取り外されたりすると、このリストはこれらの変化を識別するように修正される。
異なる有利な実施形態では、リストにはどのような変数も使用できる。動的リストを用いることで、予想される構成部品又はパラメータに基づいてリストの大きさを予め決定する必要があることにより定義が制約されることはない。そうではなく、様々なパラメータ又はコンポーネントが追加されたり、特定の定義から削除されたりするにつれて、リストの大きさは変化することができる。
【0126】
図46には、有利な一実施形態によるリストの一実施例が示されている。この実施例では、コード4600は、命令文4600中のlist1を定義している。命令文4602、4604、及び4606は、list1に含まれる値の三つの変数を識別する。この実施例では、list1はアレイとして機能する。コード4600中の命令文4608は、アレイの大きさを識別する値を返すサイズ関数の一実施例である。この実施例では、命令文4608は値3を返す。
命令文4610及び4612は、コード4600中のリストの検索に使用される命令文の一実施例である。命令文4610は、trueに相当する値2を返し、命令文4612はfalseに相当する値0を返す。命令文4610及び4612のこれら検索機能を使用して、リストが特定の値を含むかどうかを決定することができる。リスト中に特定の値が存在する場合、リスト中のその値のインデックスが返される。存在しない場合、値0が返される。
【0127】
図47は、有利な一実施形態による、リストからの変数の削除を示す。この実施例では、コード4700はセクション4702に定義されたリストを含む。命令文4704は、コード4700中のリストから一のアイテムを削除するために使用可能な削除機能である。命令文4704はリストを検索して特定のアイテムがリスト中に存在するかどうかを決定する。アイテムが見つかった場合、当該アイテムがリストから削除される。命令文4704は、削除されるアイテムを識別するインデックスを返す。リスト中にアイテムが無かった場合、命令文4704は0を返す。この実施例では、コード4700中のリストに値25は存在せず、ゼロが返されており、何の動作も行われない。この実施例では、値を識別することによりアイテムが削除される。
図48は、有利な一実施形態による、アイテムを削除するためのコードを示す。この実施例では、コード4800はセクション4802のリストを定義する。命令文4804及び4806は、インデックスの値に基づいて、リスト中のアイテムを削除するのに使用される命令文である。命令文がリストの大きさより小さいインデックスの値を識別する場合、リスト中のアイテムの位置が決定され、アイテムは削除される。次いでこの機能は削除されたアイテムの値を返す。逆の場合、アイテムがリスト中に見つからなかったことを意味する0を返す。セクション4802に定義されるように、リストには3つのアイテムしか含まれていないので、命令文4804は0を返す。結果として命令文4806は、命令文4808に定義されている削除されているアイテムにより、20を返す。
【0128】
図49は、有利な一実施形態による、リスト中のアイテムを操作するためのコードを示す。この実施例では、コード4900を使用して、リスト中のアイテムを操作することができる。このような実施例では、コード4900は、スタックのリストを使用するためのプッシュ及びポップ機能を含む。命令文4902は、操作される対象のリストを識別する。この実施例では、セクション4904は、リストに対して行われる三つのプッシュを識別する。命令文4906は、リストに対して行われる一のポップを示す。命令文4906は、リストの前面からポップされたアイテムから一の値を返す。
これらの種類の機能は、コンピュータシステムのスタックの操作に使用される機能と類似している。プッシュは、特定のアイテムをリストの一番上にプッシュする又は動かすために使用される。ポップは、リストの一番上にあるアイテムの値を返すために使用される。ポップ命令文が値又はパラメータを含む場合、この命令文はパラメータの値に従ってスタックから値をポップするか又は返す。このような実施例では、命令文4908中でポップされているアイテムは、インデックス値3を有するアイテムであり、リスト中において3番目のアイテムである。
【0129】
図50は、有利な一実施形態による、リストのキューとしての使用を示す。この実施例では、コード5000は、キューとしてリストを操作するために使用可能なエンキューとデキューとを示している。命令文5002に示されるようなエンキュー機能は、リストの一番下に引数を加える。
命令文5004に示されるようなデキュー機能は、リストの一番上のアイテムを削除し、そのアイテムの値を返す。この実施例では、命令文5002はlist1にアイテムを加え、命令文5006はキューの一番上に別のアイテムを加える。ここで、命令文5002中のアイテムはキューの2番目となる。命令文5008はまた別のアイテムをキューに加え、他のアイテムをキューの下方へ押しやる。
【0130】
図51は、有利な一実施形態による、リスト中のアイテムの読み取りを示す。この実施例では、コード5100は、セクション5102で定義されるように、リストの一番上と一番下からのアイテムの読み取りを示す。命令文5104は、リストの一番上に位置するアイテムを読み取り、命令文5106はリストの一番下に含まれるアイテムを読み取る。
【0131】
図52は、有利な一実施形態による、リスト中の検索属性を示す。コード5200は、リストの検索状態の識別に使用される命令文を含む。命令文5202は、リストに検索状態が設定されているかを識別する。命令文5202がtrueと等しく設定されている場合、アイテムはそれらの値に従ってリスト中に挿入される。命令文5204は検索順序を識別する。
命令文5204がtrueに等しく設定されている場合、リストは小さい方から大きい方へと降順に検索される。この実施例では、命令文5204はfalseに等しく設定されている。その結果、セクション5206に示されるように、アイテムは降順にリストに追加される。さらに、追加の命令文を使用してリストを様々な順序で検索することができる。
【0132】
図6のソースコード600の実施に使用可能なプログラム技術の別の実施例はファジー理論である。ファジー理論の実施に使用される言語の一実施例はPrologであり、これはファジー理論及び人工知能プログラミングに使用可能な論理型プログラミング言語である。
ここに開示される実施例では、ファジー理論システムは、オペランドが複数のセットから得られた条件である論理的命令文に基づくことができる。一実施例では、そのセットは、例えば、燃料、距離、及び速度とすることができる。燃料は、三つの条件、即ち、少、中、多を含むことができる。距離は、近距離及び遠距離とすることができる。このような実施例では、速度は、低、中、及び高とすることができる。これらのセットを使用して、燃料が少ない又は近距離の場合は速度を低とする、などのルールを適用することができる。別のルールは、燃料が中程度で遠距離の場合、速度を中にすることである。3番目のルールは、燃料が多で遠距離の場合、速度を高にすることである。ファジー理論により、セットの異なるメンバーについて範囲を設定することができる。これらの範囲は最小範囲及び最大範囲を含む。
【0133】
図53は、有利な一実施形態による、燃料、距離及び速度を用いたファジー理論の一実施例を示す。この実施例では、コード5300はセクション5302にこれらのセットを定義する。燃料は整数値であり、距離及び速度は浮動変数である。セクション5304は、燃料の最小範囲及び細大範囲を1〜100の間で識別する。
燃料の開始条件及び終了条件は、セクション5306に定義される。このセクションは、ファジーセットの左右の端を識別する。セクション5308、5310、及び5312は、燃料の条件を識別する。セクション5308は、trapezoid条件を、セクション5310はtriangle条件を、セクション5312はBell curve条件を識別する。
【0134】
距離の同様の定義はセクション5314に見出される。ファジー論理のルールは、この実施例ではセクション5316に定義されている。セクション5318は、燃料及び距離の初期値を識別する。命令文5320は、速度の計算に使用される。
図6のソースコード600内の様々なオブジェクトのシミュレーションに使用可能な別の種類のプログラム技術は、進化的計算を利用する。進化的計算は、一種の人工知能であえる。特定の一方法又は方法論は遺伝的アルゴリズムである。このアルゴリズムは、解決策を識別するために使用される検索技術である。この種の技術は、グローバルサーチヒューリスティック型の技術と考えられる。遺伝的アルゴリズムにより、遺伝子並びに染色体を断じることができる。適応機能、選択プロセス、及び組換え機能も、この種の技術を用いて特定される。
【0135】
ここで、有利な一実施形態による、遺伝的アルゴリズムを使用した方程式の解法を示す図54を参照する。この実施例では、コード5400は、方程式2X+3Y=20を解くために使用される。
この実施例では、セクション5402において二つの遺伝子が初期化される。これら二つの遺伝子は変数X及びYに対応する。セクション5404において染色体が遺伝子に添加される。命令文5406において適応機能のコードを初期化することができる。選択機能のコードは命令文5408を用いて特定することができる。組換え機能のコードは命令文5410において特定できる。
【0136】
これらの機能のコードは、特定の命令文に利用可能な機能を用いて実施することができる。これらの選択プロセスは、コードによって特定される最適な染色体又は最も良く適応する染色体を選択するために使用される。例えば、ルーレット選択プロセスを使用することができる。命令文5410中の組換え機能に関し、この命令文を使用して染色体の新規世代を形成するためのコードを識別することができる。
一実施例では、2値変数クロスオーバー法を使用することができる。命令文5412はプロセスのエラーマージンを特定し、命令文5414はコード5400中の進化機能を呼び出す。このような実施例では、命令文5414で識別される新化プロセスは、最も良く適応する染色体のエラーマージンが命令文5412で特定されるエラーより小さくなる度に停止する。コード5400に定義されるように本プロセスを実行することにより、遺伝子Xは染色体に最も良く適応するXの値を返し、遺伝子Yは染色体に最も良く適応するYの値を返す。
【0137】
図55A及び55Bは、有利な一実施形態による、ソースコード中のオブジェクトに対するコードを示す。この実施例では、コード5500は、フォレストの形態のオブジェクトの定義の一実施例である。セクション5502はフォレスト内のツリーの色を識別する。コード5500のセクション5504は、フォレストのグリッドを識別する。セクション5506は、フォレストのグリッド内に存在しうるツリーを定義する。セクション5508はフォレストのツリーの一の行を定義する。セクション5510は、セクション5508で定義されるように、ツリーの一又は複数の行を含むツリーのパッチを生成するために使用される。セクション5512は、フォレストの提示に使用可能なコードの一実施例である。このような実施例では、ライン5514及び5516は、フォレスト内にランダム性を提供するために使用される変換命令文である。例えば、これらの命令文に加えて又は替えて、回転及び/又はスケールの命令文のような他の命令文も使用できる。
このような実施例では、コード5500はC言語を使用して書かれる。当然のことながら、フォレストの定義を生成するためにあらゆる言語を使用することができる。さらに、フォレストの提示は、図6のソースコード600中の定義602に見出される一のオブジェクトの実施例である。当然のことながら、コードは、用途に応じてあらゆる言語を使用して又はあらゆるオブジェクトのために、生成することができる。
【0138】
ここに示した種々の実施形態のフローチャート及びブロック図は、装置、方法及びコンピュータプログラム製品の幾つかの可能な実施形態のアーキテクチャ、機能性、及び操作を示す。これに関し、フローチャート又はブロック図の各ブロックは、コンピュータで使用可能又は読み取り可能なプログラムコードの、一のモジュール、セグメント、又は部分を表わし、これは一又は複数の特定の機能を実施するための一又は複数の実行可能な命令を含んでいる。幾つかの他の実施形態では、ブロック内に言及される一又は複数の機能を、図に示した順序とは異なる順序で発生させることができる。例えば、場合によっては、連続して示される二つのブロックをほぼ同時に実行することができるか、又は関連する機能性に応じて、時にそれらブロックを逆の順序で実行することができる。
種々の有利な実施形態は、完全にハードウェアで実現された形態、完全にソフトウェアで実現された形態、又はハードウェアとソフトウェア両方の要素を含んで実現された形態を取ることができる。一部の実施形態はソフトウェアで実施され、これには例えばファームウェア、常駐ソフトウェア、及びマイクロコードのような形式が含まれるがこれらに限定されない。
【0139】
さらに、種々の実施形態は、命令を実行するコンピュータ或いは任意のデバイス又はシステムにより使用されるか、或いはそれと連動して使用されるプログラムコードを提供する、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体からアクセス可能なコンピュータプログラム製品の形態を採ることができる。本開示の目的に関し、コンピュータで使用可能又はコンピュータで読み取り可能な媒体は、通常、命令実行システム、装置、又はデバイスにより使用されるか又はそれと連動して使用されるプログラムを、含む、保存する、通信する、伝播する、或いは転送することができる任意の有形装置とすることができる。
コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、例えば、電子システム、磁気システム、光システム、電磁システム、赤外線システム、又は半導体システムであるか、或いは伝播媒体であるが、これらに限定されない。コンピュータで読み取り可能な媒体の非限定的実施例には、半導体又は固体メモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが含まれる。光ディスクには、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。このような実施例では、物理的な又は有形のコンピュータで読み取り可能な媒体を、追記型コンピュータ記憶媒体と称する。
【0140】
さらに、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを含むか又は保存することができ、よって、コンピュータで読み取り可能な又は使用可能なプログラムコードがコンピュータ上で実行されると、このようなコンピュータで読み取り可能な又は使用可能なプログラムコードの実行により、コンピュータは、通信リンクを介して別のコンピュータで読み取り可能な又は使用可能なプログラムコードを送る。このような通信リンクは、例えば、限定しないが、物理的媒体又は無線媒体を使用することができる。
コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードの保存及び/又は実行に適したデータ処理システムは、システムバスのような通信ファブリックを介してメモリ要素に直接又は間接に連結された一又は複数のプロセッサを含む。メモリ要素は、プログラムコードが実際に実行される間に使用されるローカルメモリ、大量記憶装置、及び、コードが実行される間に大量記憶装置からコードを取り出す回数を減らすための、少なくとも何らかのコンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを一時的に記憶するキャッシュメモリを含むことができる。
【0141】
入力/出力又はI/Oデバイスを、直接、又は中間のI/Oコントローラを介して、本システムに連結することができる。これらのデバイスは、例えば、キーボード、タッチスクリーンディスプレイ、及びポインティングデバイスを含むが、これらに限定されない。種々の通信アダプタをシステムに連結することにより、中間のプライベート又はパブリックネットワークを介して処理システムを他のデータ処理システム又は遠隔プリンタ又は貯蔵装置に連結することもできる。非限定的な実施例はモデムであり、ネットワークアダプタは、現在利用可能な通信アダプタのごく一部である。
本明細書の説明は、例示及び説明を目的としており、包括的であることを意図しておらず、開示された形態の開示内容に限定されるものではない。当業者であれば、多数の修正及び変更が可能であることは明らかである。さらに、異なる有利な実施形態は、他の有利な実施形態とは異なる利点を提供しうる。選択された一又は複数の実施形態は、本開示内容の理念、実用例を最もよく説明し、他の当業者が、考慮される特定の用途に適した様々な修正が施された様々な実施形態の開示内容を理解できるように、選択及び説明されている。
【技術分野】
【0001】
本発明は、2007年3月1日に出願された「Human Transparency Paradigm」と題する米国特許仮出願番号第60/892472号に関連し、且つ当該米国特許仮出願の優先権を主張する。ここで明示したことにより、この米国特許仮出願の内容全体が本明細書に包含される。
【0002】
本開示内容は、改良型データ処理システムを提供し、具体的にはデータ処理の方法と装置を提供するものである。更に詳細には、本開示内容は、人の行動をモデル化及びシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードに関する。
【背景技術】
【0003】
人の行動は、人間によって実行される活動の集積である。これらの活動は、例えば、文化、態度、感情、価値観、倫理観、権力、説得、及び/又は強制力といった要因に影響される。人間の行動は、通常の行動、異常な行動、許容可能な行動、及び許容限界を超えた行動を含む範囲に納まる。人々の行動は、心理学、社会学、及び人類学などの多数の学問分野により研究されている。近年は、人の行動の研究にコンピュータが使用されている。
さらに、人の行動のシミュレーションは、軍事上の演習及び計画の実行に使用されている。人の行動のシミュレーションは、経済的及び社会的行為などのその他の状況の予測に関して使用することもできる。人の行動を予測することができれば、訓練プログラムの開発に有用であると思われる。異なる刺激に訓練生がどのように反応するかを知ることは、訓練プログラムの開発及び修正に使用できる。
【0004】
現在のモデル及びシミュレーションプログラムは、様々な理由により、人の行動を適切にシミュレートしない。例えば、現在入手可能なシミュレーションプログラムは、特定の種類のシミュレーションにしか適していない。その結果、異なる種類のシミュレーションが必要な場合、そのようなシミュレーションを実行するために新規プログラムを書かなければならない。加えて、リレーションの数と、それらリレーションの修正機能が制限される。
従って、訓練プログラムに使用される、人の行動のモデル化及びシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードを改良することが有利であると考えられる。
【発明の概要】
【0005】
有利な実施形態は、ネットワークのデータ処理システム内の記憶システムに位置するソースコードのための、コンピュータで実行可能な方法、装置、及びコンピュータで使用可能なプログラムコードを低要する。ソースコードは、人の行動を予測するための言語で書かれている。インタープリタは、ネットワークのデータ処理システム上で動作するもので、このインタープリタはソースコードを使用してシミュレーションを実行することにより、変換されたソースコードを生成する。人工的人がソースコードに定義されている。人工的人は、シミュレーションの間のユーザ入力を生成し、このユーザ入力は、ソースコードの修正に使用される、現在の変換済みソースコードである。グラフィカルユーザインターフェースプロセッサはネットワークのデータ処理システム上で動作する。グラフィカルユーザインターフェースプロセッサは、インタープリタから変換されたソースコードを受け取って、受け取った変換済みソースコードを形成し、受け取った変換済みソースコードを使用してデバイスに応じた出力を生成する。インタープリタは、グラフィカルユーザインターフェースプロセッサと通信するデバイスを介して実際の人からリアルタイムのユーザ入力を受け取り、人工的人により生成されたユーザ入力を置換する。インタープリタは、リアルタイムユーザ入力を受け取ると、ソースコード内に定義された人工的人により生成された入力の使用を停止し、そしてインタープリタは、ソースコードの修正に使用される変換済みソースコードと共にリアルタイムユーザ入力を含む。
有利な実施形態は、人から入力を受け取るためのコンピュータで実行される方法も提供する。データは、ネットワークのデータ処理システム内の記憶システムに位置するソースコードから取り出され、取り出されたデータを形成し、この取り出されたデータは人工的人を含む。取り出されたデータは、ネットワークのデータ処理システム上で動作するインタープリタを用いて変換され、人の行動のシミュレーションを実行し、取り出されたデータを変換する間に人工的人によって生成される入力を含む結果を生成する。ソースコードは、この結果を使用して修正されて、修正されたソースコードを形成する。シミュレーションの実行において、リアルタイムユーザ入力の使用に対するリクエストに応答して人工的人の使用は停止される。人工的人による入力を置換するリアルタイムユーザ入力を受け取ると、リアルタイムユーザ入力を含む結果がソースコードに記述され、修正されたソースコードを形成する。修正されたソースコードは、人の行動を予測するためのシミュレーションの実行において、後で行われる取り出されたデータの変換に利用される新規のデータを提供する。
【0006】
本発明の特徴、機能、及び利点は、ここに開示される様々な実施形態においてそれぞれ単独で達成することができるか、又は他の実施形態において組み合わせることができる。
新規な特徴と考えられる本発明の特徴は、請求の範囲に規定される。しかしながら、開示内容自体、並びに好ましい使用モード、さらなる目的とその利点は、有利な実施形態に関する後述の詳細な説明を、添付図面を参照して読むことにより最もよく理解される。
【図面の簡単な説明】
【0007】
【図1】有利な実施形態を実施することができる、データ処理システムのネットワークを図式化したものである。
【図2】有利な一実施形態によるデータ処理システムの図である。
【図3】有利な一実施形態によるシミュレーションシステムを表わす図である。
【図4】有利な一実施形態による、人の行動のモデル化及びシミュレーションの開発フレームワークの図である。
【図5】有利な一実施形態によるフレームワークにおけるモジュールの配分を示す図である。
【図6】有利な一実施形態によるソースモジュールコードを示す図である。
【図7】有利な一実施形態によるソースコードの定義部分を示す図である。
【図8】有利な一実施形態によるオブジェクトのブロック図である。
【図9】有利な一実施形態によるオブジェクトの図である。
【図10】有利な一実施形態による動作オブジェクトの図である。
【図11】有利な一実施形態による動作の適用を示す図である。
【図12】有利な一実施形態による、スケジューラの介入を有する時間軸に対する動作の適用を示す図である。
【図13】有利な一実施形態による、時間帯が重複したイベントの適用を示す図である。
【図14】有利な一実施形態による、存続イベントを示す図である。
【図15】有利な一実施形態による、存続イベントを示す図である。
【図16】有利な一実施形態による、存続イベントを示す図である。
【図17】有利な一実施形態によるインタープリタを示す図である。
【図18】有利な一実施形態による、字句解析器のデータフローを示す図である。
【図19】有利な一実施形態による、文法構文解析ツールによって実行される構文解析を示す図である。
【図20】有利な一実施形態による、解析木の別の実施例を示す図である。
【図21】有利な実施形態による、インタープリタの実行モジュールの図である。
【図22】有利な一実施形態による、トークン生成方法のフローチャートである。
【図23】有利な一実施形態による、人の行動のシミュレーション実行方法のフローチャートである。
【図24】有利な一実施形態による、文又は命令書の生成方法のフローチャートである。
【図25】有利な一実施形態による、命令書の一命令文を実行する方法のフローチャートである。
【図26】有利な一実施形態による、グラフィカルユーザインターフェース(GUI)プロセッサを示す図である。
【図27】有利な一実施形態による、グラフィカルユーザインターフェースを通るデータフローを示す図である。
【図28】有利な一実施形態によるディスプレイを示す図である。
【図29】有利な一実施形態によるディスプレイの操作を示す図である。
【図30】有利な一実施形態による、ビットマップの変化を識別する方法のフローチャートである。
【図31】有利な一実施形態による、差分データの処理方法のフローチャートである。
【図32】有利な一実施形態による人の透明性パラダイムの提供に使用されるコンポーネントを示す図である。
【図33】有利な一実施形態による、人工的人を実際の人で置換する方法のフローチャートである。
【図34】有利な一実施形態による、入力ニューロンの実施例を示す図である。
【図35】有利な一実施形態による、入力ニューロンの左オペランド(left operand)に規定される入力範囲の実施例を示す図である。
【図36】有利な一実施形態による、入力行動に関する命令文の図である。
【図37】有利な一実施形態による、出力宣言文を示す図である。
【図38】有利な一実施形態による、ニューラルネットワーク内の出力範囲に関する命令文を示す図である。
【図39】有利な一実施形態による、出力行動の修正に関する命令文を示す図である。
【図40】有利な一実施形態による、隠れ層に関する命令文を示す図である。
【図41】有利な一実施形態による、サンプルニューラルネットワークを示す図である。
【図42】有利な一実施形態による、ニューラルネットワークの訓練に関する例示的命令文である。
【図43】有利な一実施形態による、ニューラルネットワークの演算機能を示す図である。
【図44】有利な一実施形態による、ニューラルネットワークの一実施例を示す図である。
【図45】有利な一実施形態による、ニューラルネットワークの操作の結果を示す図である。
【図46】有利な一実施形態によるリストの一実施例を示す図である。
【図47】有利な一実施形態による、リストからの変数の削除を示す図である。
【図48】有利な一実施形態による、アイテムを削除するためのコードの図である。
【図49】有利な一実施形態による、リスト中のアイテムを操作するためのコードを示す図である。
【図50】有利な一実施形態による、キューとしてのリスト中のアイテムの読み取りを示す図である。
【図51】有利な一実施形態による、リスト中のアイテムの読み取りを示す図である。
【図52】有利な一実施形態による、リスト中の分類属性を示す図である。
【図53】有利な一実施形態による、燃料、距離及び速度を使用したファジー理論実施の一実施例である。
【図54】有利な一実施形態による、遺伝的アルゴリズムを用いた方程式の解法を示す図である。
【図55A】有利な一実施形態による、ソースコード中のオブジェクトのコードを示す図である。
【図55B】有利な一実施形態による、ソースコード中のオブジェクトのコードを示す図である。
【発明を実施するための形態】
【0008】
ここで図面を参照する。特に図1−2には、実施例を実施できるデータ処理環境の例示的な図が示されている。図1−2は例示のみを目的としており、有利な別の実施形態を実行可能な環境に関して限定を主張又は暗示するものではない。図示の環境に多数の変更を加えることができる。
本明細書において、アイテムのリストについて「少なくとも〜の一つ」という表現が使用されるとき、それは、アイテムの一つ又は複数の、異なる組み合わせが使用可能であり、且つリスト中のアイテムのうち一つのみが必要であることを意味する。例えば、「アイテムA、アイテムB、及びアイテムCの少なくとも一つ」は、例えば、限定するものではないが、アイテムA、又はアイテムBとアイテムBを含みうる。これの例には、アイテムA、アイテムB、及びアイテムC、或いはアイテムBとアイテムCも含まれる。
【0009】
ここで図面を参照する。図1は、有利な実施形態を実施できるデータ処理システムのネットワークを図解的に示している。図示されたこのような実施例では、ネットワークデータ処理システム100を使用して、人の行動のモデル化及びシミュレーションの開発フレームワークが実施される。このフレームワークは人の行動を予測する能力を提供する。
ネットワークデータ処理システム100は、有利な実施形態を実施可能な、コンピュータ及びその他のデバイスからなるネットワークである。ネットワークデータ処理システム100はネットワーク102を含み、このネットワークは、ネットワークデータ処理システム100内で互いに接続される様々なデバイス及びコンピュータ間をリンクする通信を行うために使用される媒体である。ネットワーク102は、有線、無線通信リンク、及び/又は光ファイバケーブルなどの接続を含むことができる。
【0010】
図示の実施例では、サーバ104とサーバ106が、記憶ユニット108と共にネットワーク102に接続している。これに加えて、クライアント110、112、及び114がネットワーク102に接続している。これらのクライアント110、112、及び114は、例えば、パーソナルコンピュータ、ワークステーションコンピュータ、及び携帯情報端末とすることができる。図示の実施例では、サーバ104は、ブートファイル、オペレーティングシステムイメージ、及びアプリケーションなどのデータをクライアント110、112、及び114に提供する。クライアント110、112、及び114は、本実施例ではサーバ104及びサーバ106のクライアントである。ネットワークデータ処理システム100は、追加のサーバ、クライアント、及び図示しないその他デバイスを含んでもよい。有利な実施形態における人の行動予測フレームワークは、ネットワークデータ処理システム100内の一又は複数のデータ処理システムを使用して実施することができる。
【0011】
次に、一実施例によるデータ処理システムを示す図2を参照する。この実施例では、データ処理システム200は通信ファブリック202を含み、この通信ファブリックによって、プロセッサユニット204、メモリ206、固定記憶域208、通信ユニット210、入力/出力(I/O)ユニット212、及びディスプレイ214間における通信が行われる。
プロセッサユニット204は、メモリ206にロードできるソフトウェアの命令を実行する機能を有する。プロセッサユニット204は、用途に応じて、一又は複数のプロセッサの組とすることができるか、又はマルチプロセッサコアとすることができる。さらに、プロセッサユニット204は、メインプロセッサが単一のチップ上に二次プロセッサと共に存在する一又は複数の異種プロセッサシステムを用いて実施することができる。別の実施例では、プロセッサユニット204は、同種のプロセッサを複数個含む対象なマルチプロセッサシステムとすることができる。
【0012】
このような実施例におけるメモリ206は、例えば、ランダムアクセスメモリ又はその他任意の適切な揮発性又は非揮発性記憶装置とすることができる。固定記憶域208は、用途に応じて様々な形態を採ることができる。例えば、固定記憶域208は一又は複数のコンポーネント又はデバイスを含むことができる。例えば、固定記憶域208は、ハードドライブ、フラッシュメモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記の何れかの組み合わせとすることができる。固定記憶域208によって使用される媒体はまた、取り外し可能である。例えば、取り外し可能なハードドライブを固定記憶域208に使用することができる。
このような実施例における通信ユニット210は、他のデータ処理システム又はデバイスとの通信を可能にする。これらの実施例では、通信ユニット210は、ネットワークインターフェースカードである。通信ユニット210は、物理的通信リンク及び無線通信リンクの一方又は両方の使用により通信を提供することができる。
【0013】
入力/出力ユニット212は、データ処理システム200に接続することができる他のデバイスによるデータの入力及び出力を可能にする。例えば、入力/出力ユニット212は、キーボードとマウスによりユーザ入力のための接続を提供できる。さらに、入力/出力ユニット212は、プリンタに出力を送信することができる。ディスプレイ214は、ユーザに対して情報を表示するためのメカニズムを提供する。
オペレーティングシステムとアプリケーション、又はプログラムのための命令は、固定記憶域208に位置している。これらの命令はメモリ206にロードされて、プロセッサユニット204によって実行される。コンピュータで実施される命令を使用するプロセッサユニット204により異なる実施形態のプロセスを実行することができ、そのような命令はメモリ、例えばメモリ206に位置させることができる。これらの命令は、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読み取り可能なプログラムコードと呼ばれ、プロセッサユニット204内の一のプロセッサにより読み取られて実行される。異なる実施形態のプログラムコードは、メモリ206又は固定記憶域208のような、異なる物理的又は有形のコンピュータで読み取り可能な媒体上に実現することができる。
【0014】
プログラムコード216は、選択的に取り外し可能であり、且つデータ処理システム200にロードするか又は移動させてプロセッサユニット204によって実行することが可能な、コンピュータで読み取り可能な媒体218の上に機能形態で位置している。このような実施例において、プログラムコード216及びコンピュータで読み取り可能な媒体218は、コンピュータプログラム製品220を形成する。一実施例では、コンピュータで読み取りイ可能な媒体218は、例えば、固定記憶域208の一部であるドライブ又は他のデバイスに挿入又は配置される光又は磁気ディスクのような有形の形態であり、固定記憶域208の一部であるハードドライブのような記憶装置に移動させることができる。有形形態の場合、コンピュータで読み取り可能な媒体218は、データ処理システム200に接続されるフラッシュメモリ、ハードドライブ、又はサムドライブのような固定記憶域の形態を採ることもできる。コンピュータで読み取り可能な媒体218の有形形態は、コンピュータで記録可能な記憶媒体とも呼ばれる。場合によっては、コンピュータで読み取り可能な媒体218は取り外しできない。
別の実施例では、プログラムコード216は、コンピュータで読み取り可能な媒体218から、通信ユニット210への通信リンクを介して及び/又は入力/出力ユニット212を介して、データ処理システム200へ転送可能である。この実施例では、通信リンク及び/又は接続は、物理的なもの又は無線とすることができる。コンピュータで読み取り可能な媒体は、プログラムコードを含む無線送信又は通信リンクのような無形媒体の形態を採ることもできる。
【0015】
データ処理システム200に示された様々なコンポーネントは、アーキテクチャに制限を加えることを意図するものではなく、異なる実施形態が実施可能である。データ処理システム200に示されているものに加えて、又はそれらに替えて、コンポーネントを含むデータ処理システムに様々な実施例を実施することができる。図2に示す他のコンポーネントは、図示された実施例から変更することができる。
一実施例として、データ処理システム200内の記憶装置は、データを記憶できる任意のハードウェア装置である。メモリ206、固定記憶域208及びコンピュータで読み取り可能な媒体218は、有形形態の記憶装置の実施例である。
【0016】
別の実施例では、バスシステムを使用して通信ファブリック202を実施することができ、このバスシステムは、システムバス又は入力/出力バスなどの一又は複数のバスから構成することができる。当然のことながら、バスシステムは、バスシステムに取り付けられた様々なコンポーネント又はデバイス間でのデータ転送を行うことができる、あらゆる適切な種類のアーキテクチャを用いて実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタといったデータの送受信に使用される一又は複数のデバイスを含むことができきる。さらに、メモリは、例えば、メモリ206又は通信ファブリック202に含まれうるメモリコントローラハブ及びインターフェースに見られるキャッシュとすることができる。
図示の実施例では、ネットワークデータ処理システム100は、ネットワーク102を有するインターネットであり、互いに通信するためのプロトコルのパッケージソフト、伝送制御プロトコル(TCP/IP)を使用するネットワークとゲートウェイの世界的な集合である。当然のことながら、ネットワークデータ処理システム100は、インターネットに加えて、又はインターネットの代わりに、異なる種類の多数のネットワークとして実施することもできる。これらの他のネットワークには、例えば、イントラネット、ローカルエリアネットワーク(LAN)、及び広域ネットワーク(WAN)が含まれる。図1は、一実施例であり、異なる実施形態のアーキテクチャを限定するものではない。
【0017】
ここで、有利な一実施形態によるデータ処理システムを示す図2を参照する。データ処理システム200は、サーバ及びクライアント、例えば図1のサーバ104及び106と、クライアント110、112、及び114とを実施するために使用することができきる。この実施例では、データ処理システム200は通信ファブリック202を含み、この通信ファブリックはプロセッサユニット204、メモリ206、固定記憶域208、通信ユニット210、入力/出力(I/O)ユニット212、及びディスプレイ214間の通信を行なう。
プロセッサユニット204は、メモリ206にロードされるソフトウェアのために命令を実行する機能を有する。プロセッサユニット204は、用途に応じて、一又は複数のプロセッサのセットとすることができるか、又はマルチプロセッサコアとすることができる。さらに、プロセッサユニット204は、単一のチップ上にメインプロセッサが二次プロセッサと共に存在する一又は複数の異種プロセッサシステムを使用して実施することができる。別の実施例として、プロセッサユニット204は、同種のプロセッサを複数個含む対称なマルチプロセッサシステムとすることができる。
【0018】
これらの実施例において、メモリ206は、例えば、ランダムアクセスメモリ、又はその他任意の適切な揮発性又は非揮発性記憶装置とすることができる。固定記憶域208は、用途に応じて様々な形態を採ることができる。例えば、固定記憶域208は、一又は複数のコンポーネント又はデバイスを含むことができる。例えば、固定記憶域208は、ハードドライブ、フラッシュメモリ、書き換え可能な光ディスク、書き換え可能な磁気テープ、又は上記の何らかの組み合わせとすることができる。固定記憶域208によって使用される媒体は、取り外し可能とすることもできる。例えば、取り外し可能なハードドライブを固定記憶域208に使用することができる。
このような実施例において、通信ユニット210は、他のデータ処理システム又はデバイスとの通信を行う。このような実施例では、通信ユニット210はネットワークインターフェースカードである。通信ユニット210は、物理的通信リンク及び無線通信リンクの一方又は両方を介して通信を行うことができる。
【0019】
入力/出力ユニット212は、データ処理システム200に接続可能な他のデバイスによる入力及び出力を可能にする。例えば、入力/出力ユニット212は、キーボード及びマウスによるユーザ入力のための接続手段となる。さらに、入力/出力ユニット212は、出力をプリンタに送信することができる。ディスプレイ214は、ユーザに対して情報を表示するためのメカニズムを提供する。
オペレーションシステムとアプリケーション、又はプログラムのための命令は、固定記憶域208に位置する。これらの命令は、メモリ206にロードしてプロセッサユニット204により実行することができる。異なる実施形態のプロセスは、コンピュータで実施される命令を使用してプロセッサユニット204により実行することができ、この場合、このような命令は、メモリ206などのメモリに置くことができる。これらの命令は、プロセッサユニット204内の一のプロセッサによって読み込まれて実行される、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読み取り可能なプログラムコードとも呼ばれる。異なる実施形態のプログラムコードは、物理的な又は有形のコンピュータで読み取り可能な種々の媒体、例えばメモリ206又は固定記憶域208上に実現することができる。
【0020】
プログラムコード216は機能的形態で、コンピュータで読み取り可能な媒体218上に位置する。この媒体は、選択的に取り外すことができ、データ処理システム200にロードするか又は転送し、プロセッサユニット204により実行することができる。このような実施例において、プログラムコード216及びコンピュータで読み取り可能な媒体218はコンピュータプログラム製品220を形成する。一実施例では、コンピュータで読み取り可能な媒体218は、例えば、固定記憶域208の一部であるドライブ又はその他デバイスに挿入又は配置され、固定記憶域208の一部であるハードドライブのような記憶装置への転送を行う光又は磁気ディスクのような有形形態である。有形形態では、コンピュータで読み取り可能な媒体218は、データ処理システム200に接続されるハードドライブ、サムドライブ、又はフラッシュメモリのような固定記憶域の形態を採ることもできる。コンピュータで読み取り可能な媒体218の有形形態は、コンピュータで記録可能な媒体とも呼ばれる。場合によっては、コンピュータで読み取り可能な媒体218は取り外しできない。
別の構成では、プログラムコード216は、コンピュータで読み取り可能な媒体218から、通信ユニット210への通信リンクを介して、及び/又は入力/出力ユニット212への接続部を介して、データ処理システム200に転送可能である。通信リンク及び/又は接続部は、本実施例では物理的なもの又は無線とすることができる。コンピュータで読み取り可能な媒体は、プログラムコードを含む無線送信又は通信リンクのような無形媒体の形態を採ることもできる。
【0021】
データ処理システム200について図示された様々なコンポーネントは、アーキテクチャを限定するものではなく、異なる実施形態が実施可能である。データ処理システム200について図示されたものに加えて、又はそれらの替わりに、コンポーネントを含むデータ処理システムにおいて異なる実施例を実施することができる。図2に示す他のコンポーネントは、図示の実施例から変更することができる。
一実施例として、データ処理システム200の記憶装置は、データを記憶することができる任意のハードウェア装置とすることができる。メモリ206、固定記憶域208及びコンピュータで読み取り可能な媒体218は、有形形態の記憶装置の実施例である。
【0022】
別の実施例では、バスシステムを使用して通信ファブリック202を実施することができる。このバスシステムは、システムバス又は入力/出力バスのような一又は複数のバスから構成される。当然のことながら、バスシステムは、バスシステムに取り付けられた異なるコンポーネント又はデバイス間でデータの転送を行う任意の適切な種類のアーキテクチャを用いて実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタのような、データの送受信に使用される一又は複数のデバイスを含むことができる。さらに、メモリは例えば、通信ファブリック202に含めることができるインターフェース及びメモリコントローラハブに見られるようなメモリ206又はキャッシュとすることができる。
クライアントとして、データ処理システム200は様々な形態を採ることができる。例えば、データ処理システム200は、タブレットコンピュータ、ラップトップコンピュータ、ワークステーション、パーソナルコンピュータ、電話機、又は携帯情報端末(PDA)の形態を採ることができる。
【0023】
複数の異なる実施形態において、一連の動作及び/又はイベントに対して人のグループが個々に及び/又はグループとしてどのように反応するかを予測するのに使用できるシミュレーション環境が提供される。このように、異なる「もし〜なら」というシナリオをシミュレートし、その結果を使用することで、当該グループに対して採るべき動作の最終セットに関する決定を補助することができる。
複数の異なる実施形態において、人の行動をシミュレートするための、コンピュータで実行される方法、装置、及びコンピュータで使用可能なプログラムコードが提供される。一実施形態では、ソースコードは、図1に示すネットワークデータ処理システム100のようなネットワークデータ処理システム内の記憶システムに位置する。このソースコードは、人の行動を予測するために使用される。インタープリタは、ネットワークデータ処理システムのハードウェア上で動作する。このインタープリタは、ソースコードを用いてシミュレーションを実行し、新規定義及び変換されたソースコードを生成する。ネットワークデータ処理システムのハードウェア上で動作するグラフィカルユーザインターフェースプロセッサは、変換されたソースコードを受け取り、この変換されたソースコードを使用してデバイスに応じた出力を生成する。デバイスに応じた出力は、グラフィカルユーザーインターフェースプロセッサと通信する一組のデバイスに送信される。
【0024】
これらのデバイスは、デバイスに応じた出力を表示し、ユーザ入力を受け取る。受け取られたユーザ入力はグラフィカルユーザインターフェースプロセッサに返され、するとこのプロセッサは受け取ったユーザ入力をインタープリタに送る。インタープリタは受け取ったユーザ入力と新規定義とを使用してソースコードを変更又は修正する。このような実施例において、新規定義とは、既存のソースコードの変更又は既存のソースコードへの新規情報の追加に使用される情報である。次いでこのように修正されたソースコードが実行され、新規定義及び新規に変換されたソースコードが生成される。このようにして、このような有利な実施形態では、ソースコードを変更するためのフィードバックループが生成される。
【0025】
次に、有利な一実施形態によるシミュレーションシステムを示す図3を参照する。システム300は、図1のネットワークデータ処理システム100において実施することができるシミュレーションシステムの一実施例である。具体的には、システム300は、図2のデータ処理システム200のような一又は複数のデータ処理システムを使用して実施することができる。
このような実施例では、定義302は、動作304に基づいてシステム300により処理される。動作304を定義302に適用することにより人の行動のシミュレーションが実行される。このような実施例では、システム300のユーザが動作304を選択することができる。動作304は、環境設定ファイルから、或いはプログラム又はプロセスによって、選択することもできる。このような実施例では、定義302は、シミュレーションに使用されるソースコードの一部である。
【0026】
システム300は、動作304を用いて定義302を修正し、定義306を生成する。図示のような実施例では、定義306は新規の定義であり、定義302に動作304を適用した結果を提供する出力として使用されている。加えて、定義306は定義302の修正に使用され、次いでシミュレーションの実行を継続するために使用される。このような連続的なフィードバックは、システム300に複数の異なる反復から学習する能力を与えるために行われる。加えて、前回のシミュレーションの結果が定義302に記憶され、よってシステム300は前回のシミュレーションから学習することができる。
このような実施例では、定義302は、人のグループ及び人のグループが生きる環境を表している。環境の説明には、有形無形両方の形態のアセットが含まれている。加えて、定義302には、グループを構成する様々な人の説明、並びに人のグループ及び環境に適用される様々なイベント又は入力に対する動作及び反応を定義する内部関係の説明も含まれる。
【0027】
システム300をシミュレーションツールとして使用することにより、定義302に記述される人のグループに対して特定の動作が適用されたときの、結果及び様々な反応及び/又は影響を予測することができる。つまり、システム300は、定義302に対して動作304が適用又は採用されたときの、例えば経済的影響、社会的影響、及び心理的影響といった影響を評価するようにプログラムすることができる。
この実施例では、定義302はコンピュータ言語を用いて書かれている。図示のような実施例のコンピュータ言語は、シミュレーションの実行にインタープリタを使用するが実行にコンパイルを必要としないインタープリタ型原語である。シミュレーションプロセスに関与する様々なオブジェクトを定義することができるあらゆる原語を使用することができる。例えば、C及びC++は、このような実施例に使用できるインタープリタ型原語の例である。このような実施例では、オブジェクトの定義には、人及び人が生きる環境が含まれる。他の有利な実施形態では、定義302及び動作304だけでなくシステム300のフレームワークが提供される。
【0028】
次に、有利な一実施形態による人の行動のモデル化及びシミュレーションの開発フレームワークを示す図4を参照する。フレームワーク400は、図3のシステム300のアーキテクチャの一実施例である。この実施例では、フレームワーク400は、ソースコード402、インタープリタ404、グラフィカルユーザインターフェース(GUI)プロセッサ406、及びデバイス408を含む。
ソースコード402は、データベースの情報をすべて含むフレームワーク400内の一のモジュールである。シミュレーションについて判明したことの全ては、この特定のコンポーネントに記憶される。このような情報には、例えば、人のグループの定義と、当該定義を使用してシミュレーションを実行するのに必要なコードとが含まれる。ソースコード402には、定義に対して適用される動作、並びにその結果を提示するのに使用されるコードも含まれる。
【0029】
ソースコード402に使用される言語を修正し、人の行動のシミュレーション及び予測に特異的な機能及び特徴を含めることができる。これらの特徴を有する言語を、人間行動定義言語(Human Behavior Definition Language)(HBDL)と呼ぶ。HBDLは、C又はC++のような現在利用可能な言語を使用して実施することができる。当然のことながら、このような実施例では、HBDLを実施するためにあらゆるインタープリタ型言語を使用することができる。
さらに、HBDLは、人の行動のシミュレーションを行うために、既存の言語を修正して使用するのではなく、完全に新規の言語を使用することにより実施することができる。図示の実施形態では、異なる言語を使用してHBDLの異なるコンポーネントを実施することができる。このような実施例では、ソースコード402はHBDLで書かれたデータベースであり、異なる地理的所在地に位置させることができる異なる記憶装置内に分配することができる。
【0030】
インタープリタ404は、ソースコード402からデータ410を収集してシミュレーションを実行する。このような実施例では、データ410は、人のグループ及びその環境、並びに人に適用される動作の定義を含む。さらに、データ410は、ソースコード402の生成に使用されるプログラム可能な言語による命令文又は命令行も含む。データ410に含まれるこれらの命令文は、シミュレーションを実行するためにインタープリタ404によって使用される。
データ410に含まれる命令文は、例えば、人工的人のシミュレーションを行う人工知能プログラムのコードを含むことができる。これらの命令文は、例えば、シミュレーションを実行するためのファジー理論のコード、ニューラルネットワーク及びその他プロセスを含むこともできる。加えて、データ410は、結果を提示するためのグラフィカルユーザインターフェース(GUI)を生成するためのプロセス又はコードを含むこともできる。このように、ソースコード402は、人のグループとその環境に関する情報、並びにシミュレーションを実行するのに必要なプロセス又はコードの両方を含むこともできる。用途に応じて、これらの命令文はC又はC++によるものとすることができる。或いは、命令文は、インタープリタ404がC又はC++の命令文に変換することにより実行されるさらに高レベルの言語によるものでもよい。
【0031】
このシミュレーションによりグラフィックデータ412が生成されてGUIプロセッサ406に送信される。このような実施例では、グラフィックデータ412は、ネットワークの速度を低下させうる大量のデータ処理を必要としない形態である。図示の実施形態では、グラフィックデータ412はプリミティブ型である。さらに多くのデータの送信を要するビットマップ又はその他のフォーマットではなくプリミティブを送信することにより、ネットワークにおいて使用される帯域幅の量が低減される。場合によっては、グラフィックデータ412に含めて何らかのビットマップを送ることが必要になりうるが、可能であればプリミティブが使用される。
代わりに、グラフィックデータ412がGUIプロセッサ406により処理されてデバイスデータ414が生成され、デバイスデータはデバイス408によって表示される。このような実施例では、デバイスデータ414は、例えば、デバイス408によって表示されるピクセルデータ又はビットマップとすることができる。
【0032】
デバイス408は、ユーザ入力を受け取ってデバイスデータ416を生成することもできる。デバイスデータ416は、GUIプロセッサ406によって受け取られる。GUIプロセッサ406は、デバイスデータ416を、送信に必要なネットワークリソースが少なくて済むフォーマットに変換する。このような実施例では、ユーザ入力418はインタープリタ404に返される。ユーザ入力418と、データ410に基づくシミュレーションの結果とを使用して、修正420が生成される。修正420は、ソースコード402の上書き又は修正に使用される。これらの修正は、ソースコード402中の定義の修正に使用される。修正420は、図3の定義302の修正に使用される、図3の定義306に類似している。このように、ソースコード402は、インタープリタ404によって実行されるシミュレーションの結果と、デバイス408から受け取るユーザ入力とを考慮するように変更することができる。
修正420は、例えば、インタープリタ404によって実行されているシミュレーションに適用又は包含される動作の選択を含むことができる。このような実施例では、このような動作の選択と修正420は、デバイス408で生成されるユーザ入力から受け取ることができる。
【0033】
データ410は、図3の定義302及び304のような情報を含むことができる。修正420は、図3の定義306に対する変更のような情報を含むことができる。これらの変更は、例えば、既存の定義の修正又は新規定義の追加とすることができる。このような実施例では、グラフィックデータ412を使用して図3の定義306を提示することができる。
フレームワーク400に含まれる種々のモジュールの説明は、これらのモジュールを実施可能なアーキテクチャの限定を意図するものではない。例えば、これら種々のモジュールは、フレームワーク400内において、異なる機能を実施する異なるサブモジュール又はプロセスを含んでもよい。また、特定のモジュールを、単一のデータ処理システムで実施するか、又は複数のデータ処理システムに拡散させることができる。
【0034】
フレームワーク400のモジュール方式により、種々のモジュールをネットワークの異なる位置に分配し、ハードウェアリソースを最大限利用することができる。フレームワーク400のこのようなモジュール方式は、ネットワークデータ処理システム内において、一部の機能性の集中化を可能にすると同時に、他の機能を遠隔位置に移動又は分配することができる。例えば、グラフィック処理とデバイス依存性のデータとを集中化した環境に置き、次いでネットワークを介してこの情報を遠隔デバイスに送信することにより、わずかな利点が得られる。グラフィックデータは、一般に、サイズが大きくネットワークの速度を低下させる可能性がある。その結果、この種の情報の集中化及び処理により、待ち時間、データ送信及びデータの同期に関する問題が生じる。フレームワーク400は、フレームワーク400の実施によりこのような問題を回避できるように設計される。
【0035】
次に、有利な一実施形態によるフレームワーク内のモジュールの分配を示す図5を参照する。この実施例では、システム500内に示される種々のモジュールは、図4のフレームワーク400に基づいている。図示の実施例に示されるように、システム500は、インターネット502、ローカルエリアネットワーク(LAN)504、広域ネットワーク(WAN)506及びローカルエリアネットワーク(LAN)508を含んでいる。これらの異なるネットワークは、図1のネットワーク102のコンポーネントの一実施例である。
図示のように、ソースコード510は記憶装置512、514、及び516に見られる。記憶装置512は、ローカルエリアネットワーク504に接続されており、記憶装置514は広域ネットワーク506に接続されており、記憶装置516はローカルエリアネットワーク508に接続されている。別々のネットワーク内の種々のデバイスに基づくソースコード510の分布は、ソースコード510を記憶可能な一方式の一実施例である。
【0036】
ソースコード510は、異なる所在地に分散されるのでなく、特定のネットワーク上の単一の記憶システムに記憶させることもできる。ソースコード510を記憶する一部の記憶装置は、ソースコード510の複製を保存するバックアップデバイスとすることができる。このような実施形態では、実施を特定の場所に限るのではなく、他の所在地に見られる利点を活用するために、そのような所在地のシステムの一部を移動することが可能である。
この実施例では、インタープリタ518はデータ処理システム520に位置している。データ処理システム520は、図2のデータ処理システム200のようなデータ処理システムを用いて実施することができる。データ処理システム520はローカルエリアネットワーク508に接続される。インタープリタ518は、異なるネットワークに亘る種々の記憶装置内のソースコード510からデータを収集してシミュレーションを実行することができる。
【0037】
シミュレーションの結果は、GUIプロセッサ522に送信される。このプロセッサ522もデータ処理システム520上に位置している。GUIプロセッサ522は、デバイス523に表示されるデバイスデータを生成する。加えて、インタープリタ518は、データ処理システム526上で動作するGUIプロセッサ524と、データ処理システム530上で動作するGUIプロセッサ528とにグラフィックデータを送信することができる。GUIプロセッサ524は、デバイス530上に表示されるデバイスデータを生成し、GUIプロセッサ528はデバイス532上に表示されるデバイスデータを生成する。GUIプロセッサ522、524、及び528は、それぞれデバイス523、530、及び532の近くに位置している。
このように、これらのプロセッサによって生成されたデータは、大量のネットワークリソースを必要としない。このような実施例では、図4のフレームワーク400に記載されるGUIプロセッサモジュールが、システム500内の複数の異なる所在地に複写され、速度を低下させるか、又はネットワークリソースを大量に使用するような、ネットワークを介した遠隔装置へのグラフィックデータの送信の必要性を最小化する。
【0038】
ここで、有利な一実施形態によるソースモジュールコードを示す図6を参照する。この実施例では、ソースコード600は、図4のソースコード402を詳細に示したものである。
ソースコード600は、定義602、動作604、及びグラフィカルユーザインターフェース(GUI)言語606を含む。定義602及び動作604は、一の環境内での人のグループのシミュレーションを目的としている。GUI言語606は、結果を提示し、シミュレーションのエンドユーザからユーザ入力を受け取るために使用される。GUI言語606により、ソースコード600はデバイス上に提示される結果の外観を制御する。このような実施例では、このような結果の外観は、GUI言語606を用いて制御される。
【0039】
さらに、これらの実施例のソースコード600は適応性であり且つオープンである。ソースコード600は、シミュレーションのための情報、及びシミュレーションの実行又は実施に使用される実際の言語の両方を含む。ソースコード600は、データベースを読み取って変換する従来のアプリケーションから意志決定を排除する。反対に、ソースコード600は、シミュレーションの実行により生成される結果に基づいて変更可能な情報及びアプリケーションの両方を含むデータベースである。
データ608は、図4のインタープリタ404のようなインタープリタへのデータの流れを表わしている。修正610は、インタープリタから受け取られているソースコード600に対する変更を表わす。データ608は、シミュレーションの実行に使用するために、定義602、動作604、及びGUI言語606からインタープリタに送られる情報を含む。このような実施例では、ソースコード600はフリーフォーマットデータベースである。
【0040】
これらの実施例では、ソースコード600はHBDLで書かれている。フリーフォーマットデータベースであるので、ソースコード600は、異なるコンポーネント間にセパレータを必要としない。ソースコード600内のプログラムは、単一の行を用いて記述されている。ソースコード600は、シミュレーションの実行を変更するための、ループ、ケース文、条件付飛び越し、及びその他類似の命令文も含む。
さらに、ソースコード600は、コードの一部を記憶するオブジェクトを含む。結果として、反復の必要なくオブジェクトを何度も呼び出すことができる。さらに、ソースコード600内において、オブジェクトに索引を付け、デフォルトパラメータを含むように定義することができる。このようにして、ソースコード600内にインテリジェントオブジェクトの生成が可能となる。
【0041】
また、ソースコード600内に異なる種類の変数を定義することができる。これらの種類の変数を、特定のタスクのために使用することができる。例えば、従来の数値的な種類に加えて、ソースコード600は、人、人々、家族、動作、時間軸、日付、及びその他といった種類を含むことができる。加えて、ソースコード600は、シミュレーションを行うための、時間軸に基づく実行モデルを提供する。人工知能コンポーネントを、これらのコンポーネントを支援する機能コマンドと共に、ソースコード600内に設けることができる。
ソースコード600内において、定義602は、人のグループと人のグループが生きる環境とを記述する。動作604は、シミュレーションの間に定義602に適用される影響を表わす。これらの実施例では、動作604は、時間軸に挿入されるイベントと呼ばれるコードの部分又は断片である。
【0042】
これらの実施例では、シミュレーションに参加する人と、シミュレーションを使用する人は、ソースコード600によって操作される。シミュレーションに参加する人は、実際の人でも人工的な人でもよい。定義602、動作604、及びGUI言語606は、機能コード及びパラメータを含む。機能コード及びパラメータは、他の情報と共にデータ608として出力され、インタープリタによって変換される。
この情報をソースコード600内に移動させることにより、ソースコード600はシミュレーションを制御することができる。このように、本シミュレーションはもはや、記述された現在使用されるスタイル及び言語によるもののように、アプリケーションに特異的なものではない。例えば、特定のアイテムが定義602内に定義されると、このアイテムを動作604の所定の動作セットに使用することができる。例えば、Xという種類の人を、動作604において実行される動作と共に使用される定義602内に定義することができる。その結果、無限大の数のシミュレーションを生成し、人Xを登録する必要無しに実行することができ、且つ各シミュレーションについて実行することができる。
【0043】
さらに、ソースコード600内に位置するGUI言語606を有することは、定義602及び動作604が、ユーザに提示される表示を制御できることを意味する。このように、ソースコード600は、基本的に、シミュレーションのユーザが見る内容を管理するデータベースである。この機能は、定義及び知識の再利用性を支援することにより、シミュレーション毎にアプリケーション又はプログラムのシミュレーションを個別に記述する必要無しに、無限大の数のシミュレーションの生成を可能にする。
現在のシステムは、スクラッチに基づいてコードされる単一のシミュレーション内において静的なデータを利用する。最善の場合でも、単一のオブジェクトをシミュレートするコードはライブラリに保存されるが、各オブジェクトに対する動作は各シミュレーションに固有である。動作は一般に個別のプログラム内に記述される。その結果、現在使用される技術では、特定の種類のシミュレーションの各々を実際にコード化する必要がある。さらに、現在のやり方では、グラフィカルユーザインターフェースは、通常再利用され、アプリケーションを制御する。
【0044】
結果として、これらのインターフェースは、アプリケーションを記録する又は書き直す必要なく特定のシミュレーションを変更することはない。このように、有利な実施形態のソースコード設計により、現在使用されているしニュレーション技術と比較して、結果表示及びユーザ入力の受信に関する柔軟性が増大する。
GUI言語606は、図4のGUIプロセッサ406のようなグラフィカルユーザインターフェースプロセッサを介してインタープリタにより選択的に送信されるコードを提供する。このコードは、エンドユーザに対する表示又は視覚効果と、種々のディスプレイに設けられる入出力制御を提供する。GUI言語606は、各エンドユーザが自身のスクリーン上に見る内容と、各エンドユーザがシステムと相互作用する方式とを制御する。これらの実施例では、GUI言語606はHBDLのサブセットである。用途に応じて、GUI言語606は、異なる有利な機能を提供するために、異なる言語用いて実施することができる。このように、複数の異なる有利な実施形態は、ソースコード600の制御を示している。
【0045】
ソースコード600内でGUI言語606によって入出力を制御することの一の利点は、エンドデバイスに提供されるユーザインターフェースをシミュレーションによって制御できることである。多くの場合、シミュレーションには、異なる背景を有するユーザが関与する。種々のユーザインターフェースをカスタマイズすることができると、これらのユーザがシステムを素早く理解することが容易になる。従って、シミュレーションを実行するための学習曲線が低減される。さらに、関連性の最も大きな情報のみが様々なユーザに提示され、よってシミュレーションの関連性が強化される。
例えば、特定のシミュレーションについて、異なるユーザは異なるインターフェースを必要としうる。一部のユーザには、定義602に適用される動作604から特定の動作を選択するユーザインターフェースを与えることができる。他のユーザは、定義602に定義された人工的人と交代することができる。この種のユーザには、動作を選択するユーザに基づいて異なるユーザインターフェースが与えられる。
【0046】
さらに、実行される様々なシミュレーションは、異なる種類のインターフェースも必要とする。この種のアーキテクチャは、ユーザインターフェースの動的な追加又は単純化を行う能力も提供する。このように、用途に応じたユーザインターフェースを付与することができる。
加えて、新規パラメータ及び新規環境に対し、強制的に複数の異なるシミュレーションを行うことができる。これら新規の変動する状況は、異なるデータセットが分析されることを意味する。これらの状況は、関与する異なるユーザ又は専門家の必要性を含むこともできる。当面のタスクの、このような変化し続ける性質により、ソースコード600により提供される可変性の適応的環境が必須となる。ソースコード600は、定義602、動作604、及びGUI言語606内に、このようなパラダイムを提供する。
【0047】
これらの実施例では、GUIプロセッサは、現在使用されているシミュレーションシステムで現在行われている静的アプリケーションではなく、ソースコード600の制御下にある。GUI言語606は、ハードウェアの抽出概念の層を提供する。GUI言語606の内容は、シミュレーションプロセスが予想通りに行われること、及び様々なユーザ及びデバイスから適切な情報が送達されて受信されることを保証するものである。GUI言語606は、インタープリタ及びGUIプロセッサを実装する任意のハードウェア上で実行するのに必要な全てのコードを含む。このように、ハードウェアに変化が生じるときは、ハードウェアを包む下層部分だけを書き直せばよい。
これらの実施例では、GUI言語606は、ランタイムの間に、ユーザインターフェースの必要な要素を構築するための様々な構築物を提供する。これらの要素は、例えば、マウス追跡動作、マウスクリック動作、アナログジョイスティック、メニュー、ウィンドウ、ダイアログボックス、チェックボックス、ラジオボタン、リストボックス、及びフォームを含む。これらの要素及び他の要素により、グラフィカルユーザインターフェースの実施が容易になる。さらに、GUI言語606を用いたグラフィカルユーザインターフェースの構築において生成される出力は、GUI言語606内に保存して後で使用することができる。
【0048】
GUI言語606は、ソースコード600が、人々のグループ及び彼らが生きる環境のシミュレーションに関する入力を提示及び受信することを可能にする、多数の異なる機能を提供する。GUI言語606は、一組の三次元プリミティブを提供する。これらの三次元プリミティブは、仮説的カメラ及び視点を制御するコマンドセットのような機能を支援する。ベクトル及びマトリクスの操作を含む数学関数も、異なる種類のグラフィックファイルフォーマットのインポート及びエキスポート機能と共に含まれる。
GUI言語606内に提供される機能は、単なる三次元データ以上のものが組み込まれた三次元オブジェクトを生成することも含む。例えば、これら三次元オブジェクトは、例えば、三次元オブジェクトに関する価格、重さ、色、価値、又はルールといったその他の情報を含むことができる。当然のことながら、これらの三次元オブジェクトにはあらゆる種類の情報を組み込むか又は関連付けることができる。
【0049】
さらに、GUI言語606はまた、三次元モデル及びスタックと、このモデル及びスタックを管理するための一組のコマンドとを含む。三次元モデル及びスタックは、異なる三次元エンティティに適用される複合変換の生成を可能にする。このようにして、オブジェクトに一時的な影響を与える異なる世界を形成することができる。
GUI言語606により、大規模な三次元データベースを容易に創造及び維持することができる。これらのデータベースは定義602内に見ることができる。このデータベースを使用して、オブジェクトの大きさ、複雑さ、又は性質に関係なく、あらゆる三次元オブジェクトを表わすことができる。
【0050】
さらに、GUI言語606は、グラフィカルユーザインターフェース構築言語となることができる。この言語により、ソースコード600は、各エンドユーザデバイスのルックアンドフィールを制御することができる。GUI言語606は、点、線、曲線、及び面といった二次元プリミティブを含むことができる。さらに、一組の二次元コントロールオブジェクトが含まれてもよい。これら二次元のコントロールオブジェクトは、例えば、ウィンドウ、ダイアログボックス、リクエスタ、チェックボックス、ラジオボタン及びメニューを含む。
【0051】
次に、有利な一実施形態によるソースコードの定義部分を示す図7を参照する。定義700は、図6の定義602の詳細な説明である。定義700は、アセット702、人704、及び内部関係706を含む。
アセット702は、人が存在する環境内に、有形アセット708及び無形アセット710の両方を含む。有形アセット708には、生物と無生物の両方が含まれる。生物には、例えば、家畜、鳥、細菌、及び植物が含まれる。無生物には、例えば、家、山、湖、車、テーブル、ペン、航空機、又は銃が含まれる。
【0052】
無形アセット710には、例えば、シミュレーションの対象となる人のグループの、ルール、法律、及び規則が含まれる。無形アセット710には、アセットを取り扱うためにインタープリタによって使用される情報も含まれる。この情報は、一般的なコード、ライブラリ、及びルーチンも含むことができる。
具体的には、この種のアセットには、例えば、数学ライブラリ、グラフィックライブラリ、二次元プリミティブライブラリ、三次元プリミティブライブラリ、モデル及びスタック管理ライブラリ、人工知能ライブラリ、入力/出力ライブラリ、暗号化ライブラリ、ネットワーキングライブラリ、システムコールライブラリ、及び時間管理ライブラリが含まれる。つまり、無形アセット710は、シミュレーションの実行に必要なあらゆる情報を含むことができる。
【0053】
人704は、人のグループ内に存在する様々な人の特徴を説明する。人704は家系及び人のグループに含まれる人同士の様々な関係を詳細に説明する情報を含むことができる。さらに、人704は、様々な個体の心理的プロファイルの生成に必要な情報を含む。
内部関係706は、定義700において人工知能によって使用される動作及び反応を含む。これらの動作及び反応は、様々な方式でトリガすることができる。例えば、トリガは、ランダム式、アラーム式、ステートマシン式とするか、又は定義700に適用される一組のイベントに対する反応とすることができる。
【0054】
アセット702内の異なるオブジェクトは、無形アセット710に依存して必要な機能及び演算を実行することができる。一般的なコード、ライブラリ、及びルーチンは、異なるプログラミングタスクを支援するのに必要なコードである。これらの異なるコンポーネントは、データとしてインタープリタに送信し、シミュレーションの実行に使用することができる。三次元オブジェクトは、生物及び無生物を含む異なる世界を構成するすべてのオブジェクトである。
【0055】
ここで、有利な一実施形態によるオブジェクトのブロック図である図8を参照する。この実施例では、オブジェクト800は、図6の定義602内のオブジェクトの一実施形態の一実施例である。この実施例では、オブジェクト800は、人工知能802、特徴804、及び内部関係806を含む。
人工知能802は、特定のオブジェクトのシミュレーションに使用されるコードを含む。これらの実施例では、オブジェクト800は、人間、植物、又は動物などの生物である。人工知能802は、選択されたオブジェクトの動作及び反応のシミュレーションに必要なコードを含む。
【0056】
特徴804は、特定のオブジェクトの特徴の識別を含む。例えば、オブジェクト802が人である場合、特徴804は、例えば、身長、体重、肌の色、髪の色、目の色、体格、及びその他のあらゆる適切な人の特徴を含むことができる。特徴804はその他の身体的特徴を含んでもよく、例えば、どの位速く走れるか、敏捷性、及び持久力などを含むことができる。
特徴804の非身体的特徴には、例えば、忍耐力、思いやり、感情、知性、及び内部関係が含まれるが、これらに限定されない。特徴804は、オブジェクト800の動作及び反応をシミュレートするために、人工知能802によって使用される。特に、図示の実施例では、特徴804は人の行動をシミュレートするために使用されている。
【0057】
人工知能802の複雑性及び特徴804に含まれる特徴の数は、用途に応じて変化する。これらのコンポーネントの複雑性は、シミュレーションを実際のオブジェクトから区別可能にするために所望する能力が増大するほど大きくなる。
内部関係806は、イベントをトリガするために人工知能802が使用できる動作及び反応を含む。これらのイベントには、例えば、オブジェクト800の動作が含まれる。これらの動作は、オブジェクト800によって開始することができるか、又は動作は、オブジェクト800に行われた動作に応じて生じる動作とすることができる。オブジェクト800により行われるこれらの動作は、シミュレーションの間の、オブジェクト800に対して行われる動作、又はオブジェクト800が含まれる環境に基づいてオブジェクト800によって認知される動作とすることができる。
【0058】
ここで、有利な一実施形態によるオブジェクトを示す図9を参照する。この実施例では、オブジェクト900は、図6の定義602によりシミュレートされる無生物の一実施例である。オブジェクト900は、例えば、車、ペン、航空機、山、又は湖とすることができる。
この実施例では、オブジェクト900は、モデル902と特徴904とを含む。モデル902は、特定のオブジェクトのシミュレーションに使用されるコードを含む。モデル902は、特定のオブジェクトの機能のシミュレーションに使用されるコードを含む。例えば、オブジェクト900が車である場合、特定の結果を生む様々な動作を車に対して行うことができる。例えば、エンジンを作動させて、車輪を回転させることができる。
【0059】
モデル902は、例えば、数学的モデルである。例えば、有限状態マシンのセットを使用して、車の機能及び動作をモデル化することができる。長時間に亘る使用及び環境への露出による、モデル化対象のモデルの経年変化をシミュレートするためのものなど、モデル902には、他の機能及びプロセスも含まれる。
特徴904は、車の様々な特徴、例えば、タイヤの大きさ、エンジンの大きさ、塗料の色、ラジオの種類、及び内部空間の量などを識別する。さらに、特徴904は、オブジェクト900に関する車の特徴についての他の情報を含んでもよい。例えば、タイヤのトレッドの量を、特徴904内で特定の種類のタイヤについて識別することができる。
【0060】
モデル902は、オブジェクト900が行う様々な動作に応じて車が何をするか、例えば、ユーザが車を運転すると、特徴904の中で識別されるタイヤに消耗が生じるなどをシミュレーションするために使用される。このような消耗は、特徴904内で識別される。この消耗は、モデル902内のアルゴリズムの一部となりうる。さらに、車の実施例において、モデル902は、日光及び雹といった環境への露出を考慮して、経年変化した状態の外観をモデル902に提示することができる。図8のオブジェクト800及び図9のオブジェクト900によって行われる様々な動作を、これらオブジェクトに対して実行し、図6の動作604内で定義付けることができる。
【0061】
ここで、有利な一実施形態による動作オブジェクトを示す図10を参照する。この実施例では、動作オブジェクト1000は、図6の動作604に見ることができる動作の一実施例である。
動作オブジェクト1000には、動作1002、オブジェクト1004、ユーザの許可1006、及びグラフィカルユーザインターフェース(GUI)1008が含まれる。動作1002は、例えば、実行できる一の動作、例えば会話する、打つ、動く、座る、掴む、話す、又は見るなどの動作を含むことができる。オブジェクト1004は、動作が行われるオブジェクトの識別である。ユーザの許可1006は、特定のユーザがオブジェクト1004に対して動作1002を実行してよいかどうかを決定する。グラフィカルユーザインターフェース1008は、特定のユーザに提示されるユーザインターフェースの種類を識別する。
【0062】
オブジェクト1004は、無生物又は生物とすることができる。ユーザの許可1006は、特定のユーザが一のオブジェクトに対して選択的な動作を実行することができるかどうかを決定するために使用される。場合によっては、特定のユーザがオブジェクトに対して動作を実行することは望ましくない。グラフィカルユーザインターフェース1008は、オブジェクトに対する動作をどのようにユーザに提示するか、並びにユーザとオブジェクトとの相互作用がどのように起こりうるかを識別する。
図8、9、及び10におけるオブジェクトの説明は、図6のソースコード600を、現在利用可能なプログラム言語及び方法論を使用して実施することができる一の方式を説明することを目的としている。しかしながら、これらの実施例は、図6のソースコード600を実施できる方式を限定するものではない。
【0063】
ここで、有利な一実施形態による動作の適用を示す図11を参照する。このような実施例では、時間軸1100によって、図6の定義602のような定義が、シミュレーションの間に受ける影響が示される。このような実施例では、図6の動作604のような動作を、時間軸1100上のイベントと呼ぶ。これらの動作は、コードの断片又は部分である。特に、動作は、イベント1102、イベント1104、イベント1106、及びイベント1108を含む。この実施例では、イベント1102は時間帯1110に適用される。イベント1104は時間帯1112の間に発生し、イベント1106は時間帯1114の間に適用される。イベント1108は時間帯1116の間に発生する。これらのイベントは、手続き的な性質を持つか、又はイベントによって駆動される。つまり、イベントは、インタープリタによって発信又は生成される種々のメッセージへの応答として適用されうる。
このような実施例では、時間軸1100の実行により発行されるマスタ割り込みにより、実行途中に必要に応じてこれらのイベントが中断され、シミュレーションは直ちにシミュレーションの次の時間帯に移る。ソースコードの実行が手続的又はイベント駆動式である現在のプログラム言語とは異なり、有利な実施形態では、ソースコード中の動作は時間に基づく実行モデルに従って進行する。このような実施例では、時間帯は様々な粒度を有することができる。例えば、各時間帯は、一週間、一日、一時間、一分、又はその他何らかの期間を表すことができる。
【0064】
図示される実施形態では、時間軸1100はスケジューラの監視下で実行される。これについては後述で詳細に説明する。スケジューラは、時間軸1100に関連付けられたイベント1102、1104、1106、及び1108を実行する。スケジューラはこれらのイベントを完全に制御しており、必要に応じてそれらに割り込むことができる。さらに、スケジューラは、メモリマネージャ及びメモリ回復機能を実行する。このように、中断されたタスクに割り当てられた全てのメモリを、到来するイベントに利用することができる。
【0065】
ここで、有利な一実施形態による、時間軸にスケジューラが割り込む場合の動作の適用を示す図12を参照する。この実施例では、時間軸1200は、イベント1202及びイベント1204を含む。イベント1202は、時間軸1200上の時間帯1206の間に実行を開始する。この実施例では、イベント1202は、入力1208、決定1210、及び処理1212を含む。イベント1202は、時間帯1206の間に実行を開始する。時間帯1206が終了すると、1214の時点でスケジューラがイベント1202の実行に割り込む。ここで実行は、時間帯1206の後に開始される時間帯1216のイベント1204に移る。この実施例では、時間帯1206と時間帯1216の間に重複は無い。
【0066】
ここで、有利な一実施形態による、時間帯が重複する場合の動作の適用を示す図13を参照する。この実施例では、スケジューラは、種々の時間帯に関連付けられたイベント1302、1304、1036、及び1308を有する時間軸1300を実行する。イベント1302は、時間帯1310に関連付けられている。イベント1304は時間帯1312に関連付けられている。イベント1306及び1308は、時間帯1314及び1316にそれぞれ関連付けられている。
この実施例では、異なる時間帯が互いに重複することがありうる。つまり、一の時間帯の継続時間が、別の時間帯の継続時間より長い場合がある。図示のように、時間帯1310及び時間帯1312は互いに重複する。その結果、イベント1302及びイベント1304が、時間帯1310と時間帯1312が重複する一定の期間に亘って同時に実行される。この特定の実施例では、イベント1302の実行に比較的長い時間が与えられている。
【0067】
時間帯の重複は、重複が起こる時間の間にイベントが組み合わされることを意味しない。このような実施例では、何らかの理由で時間帯1310においてイベント1302が中断される場合、この中断が時間帯1312の開始前又は実行中に生じた場合、コントロールは時間帯1312に移る。しかしながら、時間帯1310の間の、但し時間帯1312の終了後に中断が生じた場合、コントロールは時間帯1314におけるイベント1306の実行に移る。
【0068】
図14、15、及び16は、有利な一実施形態による存続イベントを示す。図示のように、時間軸1400は、時間帯1408に関連付けられたイベント1402、存続イベント1404、及びイベント1406を含む。イベント1410は、時間軸1400上の時間帯1412に関連付けられている。イベント1414は時間帯1416に関連付けられており、イベント1418は時間帯1420に関連付けられている。イベントは、中断されないか、又は延長されるように作成することができる。この種のイベントは、エンドユーザから、又はまだ終了していないが必要とされる他の何らかのイベントから、入力の到来を待っているときに存在することができる。このような実施例では、この種のイベントは、存続イベント1404のような存続イベントである。存続イベント1404は、一の時間帯から別の時間帯へと、当該イベントが完全に発生するまで続くことができる。
図15に示すように、存続イベント1404は時間帯1412に関連付けられる。図16では、存続イベント1404は再度延長されるか又は時間帯1416に移される。これらの実施例では、存続イベント1404はこの特定の時間帯の間に完了する。
【0069】
ここで、有利な一実施形態によるインタープリタを示す図17を参照する。インタープリタ1700は、図4のインタープリタ404を詳細に示したものである。インタープリタ1700は、一の言語で書かれたソースコードを、別の言語で書かれた標的コードに変換するプログラムである。インタープリタ1700はまた、当該インタープリタがソースコードの処理を進める際に標的コードを実行する。この標的言語は、別の高レベル言語又は特定のデータ処理システム又はプロセッサによって使用される言語で書かれてもよい。
任意のプログラムが正確に変換されて実行されるために、ソースコードは言語によって定義される構築物によって構成される。特に、これらの構築物は構文構築物である。構築物の完全なセットはソースコードの言語の文法を形成する。これらの構築物に従って構成されていないか、又は文法的に不正確なコードはすべて、インタープリタ1700によって廃棄される。
【0070】
インタープリタ1700は、通信モジュール1702と言語インタープリタ1704とを含む。これに加えて、インタープリタ1700は、暗号化/復号化モジュール1706を含み、このモジュールは、インタープリタ1700と、図4のGUIプロセッサ406のようなGUIプロセッサとの間で情報の安全な送受信を行う。
このような実施例では、言語インタープリタはHBDL1708を受信する。HBDL1708は、図4のソースコード402のようなソースコードモジュールから受けとられる図4のデータ410のようなデータの一実施例である。HBDL1708は、言語インタープリタ1704によって変換されて、シミュレーションを実行する。結果として変換されたHBDL(IHBDL)1710が得られ、これは暗号化/復号化モジュール1706に送られて暗号化される。暗号化の後、暗号化の結果は、変換及び暗号化されたHBDL(EIHBDL)1712として、図4のGUIプロセッサ406のようなGUIプロセッサに送られる。EIHBDL1712は、図4のグラフィックデータ412の一実施例である。ユーザ入力は、一組のデバイスからGUIプロセッサによって回収された暗号化済みHBDL(EHBDL)1714として受け取られる。EHBDL1714は、図4のユーザ入力418の一実施例である。このような暗号化済みの情報は、復号化され、HBDL1716として通信モジュール1702に送られる。
【0071】
HBDL1716は、ソースコードの修正に使用されるユーザ入力の一実施例である。このような修正は、例えば、ソースコード内の定義の変更、又は定義に対して適用される動作の選択とすることができる。加えて、言語インタープリタ1704の出力は、HBDLとして通信モジュール1702に送られて、ソースコードの修正に使用される。HBDL1716及びHBDL1718を使用して通信モジュール1702はHBDL1720を形成し、これを使用してソースコードが修正される。HBDL1720は、図4の修正420のフォーマットの一実施例であり、ソースコードの修正に使用される。図示のように、HBDL1718は、ソースコードを変更するために、言語インタープリタ1704により生成される出力のフィードバックとなる。
具体的には、通信モジュール1702は、発信モジュール1722、入力モジュール1724、及び登録モジュール1726を含む。言語インタープリタ1704は、字句解析器1728、文法構文解析ツール1730、及び実行モジュール1732を含む。
【0072】
言語インタープリタ1704は、字句解析、文法構文解析、及び意思決定に対処するモジュールを含む。HBDL1708としてデータを受け取ると、字句解析器1728は、HBDL1708内のデータを、ソースコード言語の個々のトークン又は単語に分解する。このような実施例では、ソースコードはHBDLで書かれている。つまり、字句分析器1728は、HBDL1708内の異なるトークン又はコンポーネントを識別する。これらのトークンは文法構文分析ツール1730に送られ、このツールによってHBDL1708のために意味のある文又は命令文に分類される。HBDL1708内の文又は命令文が構築されたら、文法構文分析器1730はこの命令文を実行モジュール1732に送る。次いで、この命令文に基づく動作がしかるべく行われる。
実行モジュール1732は、シミュレーションを実行するための多数の異なるサブモジュールを含む。このような実施例では、実行モジュール1732は変換されたHBDL(IHBDL)1710及びHBDL1718を生成する。HBDL1710は、グラフィックプリミティブのような、グラフィックデータの形態を採る。HBDL1718は、ソースコードの修正に使用される修正された定義又は新規定義である。HBDL1718は、入力モジュール1724に返されて、ソースコードの修正又は書き直しに使用される。入力モジュール1724は、HBDL1718の新規定義を発信モジュール1722に渡し、発信モジュールは、ソースコード中に書き込まれるべきHBDL1720を発信する。
【0073】
これらの実施形態では、文法構文分析ツール1730は、字句分析器1728及び実行モジュール1732を開始させる。文法構文分析ツール1730は、字句解析器1728にトークンをリクエストする。字句解析器1728は、HBDL1708からキャラクタを受け取ってトークンを生成する。トークンが生成される度に、字句分析器1728は当該トークンを文法構文解析ツール1730に送る。文法構文解析ツール1730は、トークンを使用して一又は複数の解析木を生成する。解析木が完成したら、文法構文解析ツール1730は、完成した解析木に基づいて、実行モジュール1732によって実行される動作をリクエストする。
このような実施例では、各解析木は一つの命令書を表わす。命令書は、トークンのストリームが命令書の定義と一致するたびに起動又は実行される一又は複数の動作からなる一つのセットを有する。文法構文解析ツール1730からのリクエストに応じて、実行モジュール1732は意味解析を行って、動作の命令に何らかの意味論的誤りがないかどうかを決定する。誤りが生じた場合、その誤りは報告される。誤りが無ければ、動作のセットに対する命令が実行される。すると、関連する完全な命令書の動作が開始されることにより、非端末機の呼び出し側への機能的回帰が行われる。
【0074】
このような実施例では、実行モジュール1732が、文法構文解析ツール1730によって作成された解析木に生成された命令が意味論的に正しいかどうかを判断する。意味論的な誤りが生じている場合、このような実施例では、実行モジュール1732はエラーを生成し、命令を無視する。しかしながら、場合によっては、実行モジュール1732が訂正を行うために十分な情報が存在する場合、エラーは訂正することができる。
EHBDL1714としてユーザ入力を受け取ると、暗号化/復号化モジュール1706は情報を復号化してHBDL1716を形成する。HBDL1716はHBDLの暗号化されていない形態のユーザ入力であり、登録モジュール1702によって受け取られる。登録モジュール1726は、ユーザ入力を返すユーザの各々を登録して正当性を確認する。この登録モジュールにより、権限を有するユーザ又は登録されたユーザしかシステムに入力を返せないことが保証される。例えば、登録モジュール1726は、特定のユーザのパスワードの正当性を確認する。
【0075】
ユーザが正当であると確認されたら、HBDL1716のユーザ入力は入力モジュール1724に渡される。入力モジュール1724は、全ての形態の入力を集中させる焦点として働き、特定の命令を有する入力を発信モジュール1722に送る。入力モジュール1724は、入力を処理するために、発信モジュール1722が必要とする命令を追加することができる。このような実施例において、入力は、ソースコードの何を変更するかを定義する。
このような実施例では、特定の命令は、ソースコードのどの部分が特定のユーザによって修正可能かに関する命令のような命令を含む。例えば、ユーザ入力が定義を修正する場合、命令は、修正すべきソースコードの部分を識別する。ソースコードの、入力によって修正される部分は、入力を生成するユーザの識別と、入力自体を用いて識別することができる。
【0076】
このとき、発信モジュール1722は、HBDL1720がソースコードに送り返されるときに、ソースコードの適切なセクションが書き直されることを保証する。発信モジュール1722は、ユーザ、入力、及びソースコードの書き直される部分を識別するというポリシーを用いて、ソースコードに書き込みを行うかどうかを判断する。ポリシーとは、入力に応答してソースコードへの書き込みを行うかどうかを判断するために使用される一組のルールである。このポリシーにより、権限を持たないユーザが登録モジュール1726を通り抜ける可能性を排除するための二重性が付与される。例えば、権限を持たないユーザが実際のユーザをだまして入力を行う可能性がある。ポリシーは、実際のユーザによって行われない変更である入力、又は実際のユーザによって行われる入力の特徴を有さない入力を識別することができる。このような場合、入力は発信モジュール1722によって拒絶される。
これらの実施例では、各ユーザは、各々が追加又は修正できる、各自の動作の組を有する。その結果、ユーザが修正できるのは、ソースコードの動作の部分だけである。実行モジュール1732からの出力HBDL1718を使用して、動作だけでなく定義を書き直すことができる。このような実施例では、言語インタープリタ1704はシステム内の別のユーザとも考えられる。しかしながら、インタープリタは、永久的認証済みユーザである。発信モジュール1722にとって言語インタープリタ1704は、HBDL1718を用いて定義を書き直す存在である。
【0077】
結果として、シミュレーションの任意の時点で、実際の人であるエンドユーザは、データベース内に定義されたあらゆる人を置換することができる。このようなデータフローにより、インタープリタ1700はソースコードの書き直し又は変更を行うことができる。時間が経過してシミュレーションが実行されるとき、ソースコードを書き直すための定義が絶えず生成されている。
入力モジュール1724は、シミュレーションにおいて実行される「仮想世界」と、システムと通信するデバイスにおけるユーザによるユーザ入力により受け取られる「現実の世界」とを繋ぐ。発信モジュール1722は、ソースコードを修正するための新規定義を書き込むメカニズムを提供する。
【0078】
次に、有利な一実施形態による字句解析器のデータフローを示す図18を参照する。図示のように、字句解析器1800は、ソース1802を受け取り、このソース1802を処理してトークン1804を生成する。字句解析器1800は、図17の字句解析器1728の一実施例である。字句解析器1800は、キャラクタによりソース1802キャラクタの内容を読み取り、ソース1802から到来するキャラクタを、トークンと呼ばれる基本ユニット、例えばトークン1804に分類する。
ソース1802内のキャラクタのトークン1804への分類は、このような実施例では、正規表現1806内のトークン記述の組を使用して実行される。正規表現1806は、ソース1802内のキャラクタをトークン1804に分類するのに必要な記述を含む。このような実施例では、正規表現1806は、スクリプトを使用して実施される。これらのスクリプトは、キャラクタをトークンに分類する際に使用されるキャラクタのパターンを説明する言語の記号を使用する。
【0079】
正規表現1806において定義される各正規表現には一の記号が割り当てられる。この記号は典型的には数字である。字句分析器1800によってトークン1804内に生成されるトークンは、正規表現1806内の特定の正規表現の記号を用いて識別される。
正規表現1806に加えて、字句分析器1800は予約語1806も使用する。トークンがソース1802内で識別されるとき、予約語1808に含まれる単語にも記号が割り当てられる。予約語は、言語に対して特定の文法論的意味を持つ単語であり、当該言語における識別子として使用することはできない。
【0080】
ここで、有利な一実施形態による、文法構文解析ツールによって実行される構文解析を示す図19を参照する。図19に示す構文解析は、図17の文法構文解析ツール1730によって実行することができる。解析木1900は、文法構文解析ツールがトークンを分類するために使用できる解析木の一実施例である。この実施例では、命令文1902は、var1=20である。この命令文は、インタープリタによって実行される動作の管理又は定義に使用される。
特に、文法構文解析ツールは、字句解析器によって生成されるトークン間の関係を、命令書とも呼ばれる統語的構築物のセットに基づいて識別する。各命令書は、一つの論理ユニットを表わし、典型的には他の論理ユニットのトークンの観点から定義される。殆どの言語が二つの広範な種類の論理ユニットを定義する。このような実施例において、これらの論理ユニットは命令文及び式である。式は通常、値を提供する統語的言語構築物である。命令文は、変数の状態を変更するか、プログラムのフローを制御するか、又は言語によって支援される他の操作を実行する統語的構築物である。
【0081】
文法構文解析ツールは、論理ユニットに入るトークンのストリームを分類し、実行モジュールに対して論理ユニットに基づく動作の実行を指示する。この実施例では、命令文1902は字句分析器によって生成されるトークンのストリームを含む。これらのトークンは、パラメータ名1904、EQ1906、式1908、及びNL1910である。式1908は、整数INT1912を含む。パラメータ名1904の値はvar1であり、EQ1906の値は=であり、INT1912の値は20であり、NL1910の値は¥nである。図示のように、トークンのストリームを受け取ると、文法構文解析ツールは、ストリームに含まれるトークンの順序に基づいて文法を再生成する。
【0082】
ここで、有利な一実施形態による解析木の別の実施例を示す図20を参照する。この実施例では、解析木2000は命令文2002から生成されたものである。この実施例の命令文2002は、出力=var1+var2*var3である。
この実施例では、命令文2002のトークンは、パラメータ名2004、EQ2006、パラメータ名2008、プラス2010、パラメータ名2012、MUL2014、パラメータ名2016、及びNL2018を含む。パラメータ名2004は出力という値を有し、EQ2006は=という値を有し、パラメータ名2008はvar1という値を有し、プラス2010は+という値を有し、パラメータ名2012はvar2という値を有し、MUL2014は*という値を有し、パラメータ名2016はvar3という値を有し、NL2018は¥nという値を有する。命令文2002の符号=の他方の側の式は、トークンのパラメータ名2008、プラス2010、パラメータ名2012、MUL2014、及びパラメータ名2016によって定義される。
【0083】
これらの式の識別と言語内でのそれらの使用は、識別ノードに対するこれらトークンの位置により解析木2000内に示されている。例えば、式2020は、式2022及び2026が演算子2024の使用により演算されることを示す。この場合、演算子2024はプラス2010である。式2020は式2026も含み、この式は、式2028及び2030を、演算子2032を使用して演算されるものとして識別する。この実施例では、式2022はパラメータ名2008を含み、式2026は式2028及び2030に演算子2032を適用した結果を含む。
【0084】
ここで、有利な一実施形態によるインタープリタ内の実行モジュールを示す図21を参照する。この実施例では、実行モジュール2100は、図17の実行モジュール1732を詳細に示したものである。図示のように、実行モジュール2100は、主時間軸制御モジュール2102、数学モジュール2104、物理モジュール2106、人工知能(AI)モジュール2108、レポート作成プログラム2110、及びグラフィックモジュール2112を含む。
主時間軸制御モジュール2102は、実行モジュール2100内において、時間の経過とともに定義に対してイベントを適用するのに使用されるスケジューラである。数学モジュール2104及び物理モジュール2106は、異なるオブジェクトに対する動作の影響を決定するのに必要な計算を行う。人工知能モジュール2108は、主時間軸制御モジュール2102によって定義に対してイベントが適用されるとき、異なる人工知能コンポーネントのソースコードを実行することにより人の行動のシミュレーションを援助するのに使用されるコンポーネントである。
【0085】
グラフィックモジュール2112は、エンドデバイスにおいて提示するグラフィックデータをGUIプロセッサに送る。レポート作成プログラム2110は、このような実施例では、二種類の出力を生成する。一方の種類の出力は、ソースコードの修正に使用される新規定義である。生成されるこの出力は、例えば、図17のHBDL1718である。レポート作成プログラム2110によって生成される他方の種類の出力はグラフィックデータであり、このような実施例ではこのデータもHBDLでフォーマットされる。この出力は、例えば、図17のIHBDL1710である。
グラフィックモジュール2112は、ユーザに対してシミュレーションの結果を表わす出力を生成するために使用される多数の様々なプロセスを含んでいる。これらの種類のプロセスには、二次元グラフィックパイプライン、二次元グラフィックプリミティブ、三次元グラフィックパイプライン、三次元グラフィックプリミティブ、二次元及び三次元モデルとスタック、表示リスト作成プログラム、並びに二次元及び三次元レンダリングエンジンが含まれる。これらの、並びに他の種類のグラフィックプロセスは、ユーザに提示される出力の生成に使用するために、グラフィックモジュール2112に置くことができる。
【0086】
ここで、有利な一実施形態によるトークン生成プロセスのフローチャートを示す図22を参照する。図22に示されるプロセスは、図17の字句解析器1728のようなソフトウェアコンポーネントにおいて実施することができる。
本プロセスは、ソースから次のキャラクタを受け取ることにより開始される(工程2200)。このような実施例では、キャラクタのソースは図17のHBDL1708である。このキャラクタはキューに置かれる(工程2202)。
【0087】
次に、キュー内の文字列と正規表現又は予約語との間に一致があるかを判断する(工程2204)。一致がある場合、キュー内の文字列を使用してトークンを生成する(工程2206)。次いでキューをクリアする(工程2208)。
その後、ソース内においてファイルの最後に達したかを判断する(工程2210)。ファイルの最後に達していればプロセスは終了する。ファイルの最後に達していない場合、プロセスは工程2200に戻り、次のキャラクタを取得する。工程2204において文字列の一致がなければ、プロセスは上述の工程2210に進む。
【0088】
ここで、有利な一実施形態による、人の行動のシミュレーションの実行プロセスのフローチャートを示す図23を参照する。図23に示すプロセスは、図4のフレームワーク400のようなフレームワークにおいて実施することができる。特に、このシミュレーションは、図6のソースコード600のようなソースコードを用いて実行することができる。
このプロセスは、仮想環境に、ソースコード内の定義に定義される人の組を入れることにより開始される(工程2300)。このような実施例では、定義とは、図6の定義602のような定義である。本プロセスは、ソースコード内の動作を用いて、仮想環境内の人の組に対し、一組の動作を実行し、人の行動をシミュレートする結果を形成する(工程2302)。このような実施例では、動作の組は、図6の動作604のような動作から取得される。
【0089】
その後、ソースコード内のグラフィックインターフェース言語を使用して結果から出力を生成し、フォーマットされた出力を形成する(工程2304)。このような実施例では、グラフィックインターフェース言語は図6のGUI言語606とすることができる。その後、シミュレーションが行われると、フォーマットされた出力は、ネットワークデータ処理システム内の一組のデバイスに提示され(工程2306)、その後プロセスは終了する。
このように、異なる有利な実施形態では、シミュレーションの際に変更可能なソースコードにより、人の行動をシミュレートする。さらに、グラフィカルユーザインターフェース言語は、結果の様態をユーザに提示して、シミュレーション自体による変更及び制御を可能にする。
【0090】
ここで、有利な一実施形態による、文又は命令書の生成プロセスのフローチャートを示す図24を参照する。図24に示されるプロセスは、図17の文法構文解析ツール1730のようなソフトウェアコンポーネントにおいて実施できる。
本プロセスは、処理される次のトークンを受け取ることにより開始される(工程2400)。これらの実施例では、トークンは、図17の字句解析器1728のような字句解析器から受け取られる。トークンに関して、ファイルの最後に達したかの判断を行う(工程2402)。ファイルの最後に達していない場合、トークンが解析木に適合するかを判断する(工程2404)。トークンが解析木に適合しない場合、エラーを生成し(工程2406)、次いで処理は工程2400に戻る。
【0091】
トークンが解析木に適合する場合、トークンが解析木を完成するかを判断する(工程2408)。トークンが解析木を完成する場合、完成した解析木に対応する命令書の命令が実行される(工程2410)。その後、プロセスは再帰的に呼び出し側に戻り(工程2412)、次いで上述の工程2400に戻る。
工程2408に関して解析木が完成されない場合も、プロセスは工程2400に戻る。工程2402でファイルの最後に達している場合、文法の一部が再生成されているかを判断する(工程2414)。この工程は、不完全な命令文又は命令書が存在するかを判断するために実行される。この判断は、解析木を調べて不完全な解析木が存在するかどうかを見ることにより行うことができる。文法の一部が再生成されている場合、エラーを生成し(工程2416)、その後プロセスを終了する。文法に再生成された部分が無ければ、プロセスはエラーを生成せずに終了する。
【0092】
ここで、有利な一実施形態による、命令書の命令文の実行プロセスのフローチャートを示す図25を参照する。図25に示す本プロセスは、図17の実行モジュール1732のようなソフトウェアコンポーネントにおいて実施することができる。
本プロセスは、命令書の一組の命令に対する意味解析を実行することにより開始される(工程2500)。この工程は、命令書のいずれかの命令に意味論的誤りが生じているかを判断するために実行される。このような実施例では、命令の組は、一又は複数の命令である。その後、意味論的誤りが存在するかを判断する(工程2502)。
【0093】
意味論的誤りが無い場合、プロセスは命令の組を実行し(工程2504)、プロセスはその後終了する。工程2502において意味論的誤りが生じる場合、エラーを報告し(工程2506)、プロセスはその後終了する。場合によっては、プロセスは終了せずに、命令が実行できるようにエラーの訂正を試みることができる。
【0094】
ここで、有利な一実施形態によるグラフィカルユーザインターフェース(GUI)プロセッサを示す図26を参照する。GUIプロセッサ2600は、図4のGUIプロセッサ406を詳細に示したものである。この実施例では、GUIプロセッサ2600は、暗号化/復号化モジュール2602、グラフィックモジュール2604、出力モジュール2606、入力モジュール2608、及びHBDLジェネレータ2610を含む。
これらの実施例では、GUIプロセッサ2600は、図6のソースコード600のようなソースコードから受け取った命令文を実行する。特に、命令文には、図6のソースコード600内のGUI言語606から受け取ったものが含まれる。表示を生成するための実際のコードは、別個のアプリケーションではなくこれらのソース内に見出される。
【0095】
GUIプロセッサ2600は、命令文を実行し、ユーザ入力を受け取る。GUIプロセッサ2600は、図17のインタープリタ1700のようなインタープリタから、暗号化された変換済みHBDL(EIHBDL)2612を受け取る。暗号化/復号化モジュール2602は、情報を復号して変換されたHBDL(IHBDL)2614を形成し、IHBDLはグラフィックモジュール2604によって処理される。このような実施例では、IHBDL2614は、デバイス2618用の表示を生成するために使用できる一組の命令文又はプリミティブを表わす。
グラフィックモジュール2604は、デバイス2618に表示されるピクセルを生成し、そのデータを出力モジュール2606に送ることができ、すると出力モジュールはそのデータを、デバイス2616としてデバイス2618に転送する。ユーザ入力は、入力モジュール2608により、デバイス2620としてデバイス2618から受け取られる。このモジュールは、デバイスデータをHBDLジェネレータ2610に送り、HBDLジェネレータはこのユーザ入力をHBDL2622の形式で表わす。HBDL2622は、HBDLで書かれたユーザ入力である。この入力は、暗号化/復号化モジュール2602によって暗号化され、暗号化されたHBDL(EHBDL)2624としてインタープリタに返される。
【0096】
このような実施例では、GUIプロセッサ2600は、デバイス2618に近いハードウェア上で動作する。実際、多くの場合、GUIプロセッサ2600の一部は実際にデバイス2618上で動作し、別の部分はサーバなどのデータ処理システム上で動作する。GUIプロセッサ2600は、データの提示に必要なネットワークリソースの使用を低減するように、デバイス2618の近くに配置される。さらに、このような実施例では、GUIプロセッサ2600は、データを表示し、ユーザ入力を受け取る際の待ち時間を短縮するように配置される。
【0097】
ここで、有利な一実施形態による、グラフィカルユーザインターフェース(GUI)プロセッサを通るデータフローを示す図27を参照する。この実施例では、グラフィックモジュール2700は図26のグラフィックモジュール2604の一実施例である。このような実施例では、グラフィックモジュール2700は、プリミティブ2702の形式で変換されたHBDLを受け取る。これらのプリミティブは、インタープリタによるソースコードの変換の結果である。
グラフィックモジュール2700は、これらのプリミティブを処理して、ビットマップのピクセルと、ビットマップの操作方法又は表示方法を識別するデータとを生成する。この情報は、ビットマップデータ2704としてクライアントプロセス2706に送られる。このような実施例では、クライアントプロセス2706とは、図19のデバイス1918に含まれるもののようなデバイス上で実行されるプロセスである。このクライアントプロセスは、ディスプレイ2708にビットマップデータを表示するのに必要な操作を実行する。このように、表示される画像を供給するのに必要なグラフィック処理は、グラフィックモジュール2700によって実行される。クライアントプロセス2706は、供給されたビットマップデータを表示するだけであり、プリミティブからビットマップグラフィックを提供するのに必要な複数の異なるプロセス及び処理力を必要としない。処理をこのように分割することで、データを表示するデバイスには、異なるグラフィックプロセッサや、ワークステーションで使用されるようなグラフィックの提供に用いられるグラフィックパイプラインが不要となる。
【0098】
結果として、通常はプリミティブを取り扱うには処理力が不十分な多数の異なるデバイスにグラフィックを表示することができる。例えば、クライアントプロセス2706及びディスプレイ27087は、携帯電話、携帯情報端末、又はタブレットPCにおいて実施することができる。
入力デバイス2710は、ディスプレイ2708に表示されているデータに対するユーザ入力を受け取る。このユーザ入力は、ボタンの選択、データの入力、又は命令の送信といったグラフィックを操作することができる。ユーザがディスプレイ2708上のビットマップを操作することにより表示画像を修正するとき、表示されている画像の修正に含まれる差分又は変化は、クライアントプロセス2706によって識別される。画像内のこれらの差分は差分データ2712を形成し、このデータはHBDLジェネレータ2714に戻される。
【0099】
HBDLジェネレータ2714は、図26のHBDLジェネレータ2610と同様である。HBDLジェネレータ2714は、情報に含まれるこのような変化又はデルタを識別してそれをHBDL2716に変換し、インタープリタに転送する。HBDL2716は、ソースコードモジュールの言語での命令文又はコードを含み、ソースコードに変更を加えるために使用することができる。グラフィックモジュール2700は、プリミティブ2702を使用して異なるビットマップのピクセルを生成する。
【0100】
ここで、有利な一実施形態によるディスプレイの操作を示す図28を参照する。この実施例では、ディスプレイ2800は、図27のディスプレイ2708に提示されるディスプレイの一実施例である。ディスプレイ2800は、プリミティブから生成されたビットマップを用いて提示される。この実施例のビットマップは、スライダ2802及びフィールド2804のような異なるコンポーネントを表わすために使用されている。スライダ2802及びフィールド2804を表わすために使用されるビットマップデータは、このようなビットマップの操作を可能にする方法を示すデータと共に送られる。この実施例では、スライダ2802は、ユーザ入力により、図28の位置2806から、ディスプレイ2800の修正版である図29のディスプレイ2902内の位置2900へと動かすことがでる。さらに、図29のディスプレイ2902に示されるように、50のような値をフィールド2804に入力することができる。ビットマップのこれらの変化は、有利な一実施形態によればGUIプロセッサに返され、するとGUIプロセッサはこれらの変化に基づいてソースコードのために適切な命令文を生成する。
【0101】
ここで、有利な一実施形態による、ビットマップの変化を識別するプロセスのフローチャートを示す図30を参照する。図30に示されるプロセスは、図27のクライアントプロセス2706のようなデバイスのクライアントプロセスにおいて実施することができる。
プロセスは、ユーザ入力のモニタリングにより開始される(工程3000)。次いで、ディスプレイに対するユーザ入力が検出されるかを判断する(工程3002)。ユーザ入力が検出されなければ、プロセスは工程3000に戻る。ディスプレイに対するユーザ入力が検出された場合、ユーザ入力がコントロールを操作するものかを判断する(工程3004)。ユーザ入力がコントロールの操作である場合、コントロールの変更をビットマップ内で識別する(工程3006)。ビットマップにおけるこの差分又は変化はGUIプロセッサに送り返され(工程3008)、ここでプロセスは工程3000に戻って次のユーザ入力をモニタリングする。用途に応じて、データの変化は、変更された実際のビットマップでも、ビットマップの位置の変化の識別でもよい。当然のことながら、実施形態によっては他の種類の変更も使用できる。
【0102】
工程3004に関し、ユーザ入力がコントロールの操作でない場合、ユーザ入力がフィールドへのデータの入力であるかを判断する(工程3010)。ユーザ入力がデータ入力でなければ、プロセスは工程3000に戻る。ユーザ入力がデータ入力である場合、プロセスは工程3006に進んでビットマップ内で行われた変更を識別する。
ユーザ入力に関して行なわれる特定の判断は、このような実施例では、ディスプレイ内のフィールドとコントロールへの変更を識別するためのもの、例えば図21の実行モジュール2100である。判断は、対象のビットマップに対するあらゆる種類の変更について行うことができる。例えば、変更は、特定のボタンが選択又は使用されたかどうかに関するものでもよい。
【0103】
ここで、有利な一実施形態による、差分データを取り扱うプロセスのフローチャートを示す図31を参照する。図31に示されるプロセスは、図26のGUIプロセッサ2600のようなGUIプロセッサにおいて実施することができる。特に、図31に示されるプロセスは、図27のHBDLジェネレータ2714において実施できる。
本プロセスは、クライアントプロセスから差分データを受け取ることにより開始される(工程3100)。これらの実施例では、差分データは、ユーザ入力により行われたビットマップ内の変更を含む。次いでプロセスは差分に基づいてユーザ入力を識別する(工程3102)。このユーザ入力は、例えば、スライダの位置の変化、データフィールドへのデータの入力、又は他の何らかのユーザ入力として識別することができる。工程3102で行われる識別は、デバイスに送られた元のビットマップと、変更されたビットマップとを比較することにより行うことができる。例えば、差分がこの種のコントロールに沿ったスライダの上方への移動と識別される場合、ユーザ入力は、人の適時性を変更するためのものでありうる。この種の差分の一実施例は、図21の実行モジュール2100に関して示されている。
【0104】
その後、ユーザ入力は、ソースコードによって使用されるフォーマットに変換される(工程3104)。このような実施例では、ユーザ入力はHBDLフォーマットに変更される。変換されたユーザ入力はインタープリタに送られ(工程3106)、その後プロセスは終了する。
【0105】
ここで、有利な一実施形態による、人の透明性のパラダイムの提供に使用されるコンポーネントを示す図32を参照する。この実施例では、図4のフレームワーク400のようなフレームワークを使用してシミュレーション3200が実行される。具体的には、シミュレーション3200は、図4のインタープリタ404のようなインタープリタによるソースコードの変換により実行される。
この特定の実施例では、シミュレーション3200は、人工知能(AI)3202を含み、人工知能はシミュレーション3200内の人を表わす。人工知能3202によって実行されているこの人は、このような実施例では人工的な人である。人工知能3202のコードは、シミュレーション3200に使用される他の情報に加えて定義3204から取り出される。定義3204は、図4のソースコード402のようなソースコードに見出される。定義3204には、人工的人の定義だけでなく、シミュレーション3200の他の人及び当該人が存在する環境の定義も含まれる。
【0106】
シミュレーション3200の間に結果が生成されると、これらの結果はユーザ入力3208として通信モジュール3206に送られる。この実施例では、これらの通信モジュールは、図4のインタープリタ404のようなインタープリタにも見出される。通信モジュール3206は、シミュレーション3200からユーザ入力3208を取得して、定義3204を修正するか、又は定義3204の中に新規定義を書き込む。これにより変更されたソースコードが形成され、するとシミュレーション3200は変更されたコードを使用して追加の結果を生成する。このような実施例では、人工知能3202は、生身のユーザと同様にフレームワークにログインする。
さらに、シミュレーション3200の結果3210はデバイス3212に送られてユーザ3214に提示される。このような実施例では、ユーザ3214は実際の人である。
【0107】
本発明の例示的実施形態により、人の透明性パラダイムが使用可能となる。このパラダイムでは、ユーザ入力3208は、人工知能3202によって生成され、定義3204を書き直し、ユーザ3214によるリアルタイムのユーザ入力によって置換される。つまり、ユーザ3214は通信モジュール3206にユーザ入力3216を送ることにより、シミュレーション3200内で人工知能3202によりシミュレートされた人工的人が生成したユーザ入力3208に替えて、定義3204を修正するか、又は定義3204に新規定義を書き込む。このような実施例では、ユーザ3214は主題のエキスパートであり、ユーザ入力3216を供給する。このような実施例では、ユーザ入力3216はシミュレーション3200の間に供給される。このユーザ入力は、デバイス3212が受け取って提示する結果に応答して行われうる。
人工知能3202によってシミュレートされる人工的人は、人工的人の固有の識別子(UI)3218に関連付けられたユーザ入力3208を生成する。ユーザ入力3208は、シミュレーション3200の間に人工知能3202によって生成される。ユーザ入力3216は、固有の識別子3218に関連付けられる。ユーザ入力3208は、通信モジュール3206に送られる。通信モジュール3206は、ユーザ入力3208を用いて現在の定義に新規定義を加えるか又は現在の定義を修正することにより定義3204を修正する。通信モジュール3206は、固有の識別子3218に基づいて修正すべき定義3204の部分を認識する。
【0108】
ユーザ3214がユーザ入力3216を生成すると、ユーザ入力3216は通信モジュール3206によって受け取られる。このような実施例では、ユーザ入力3216は、固有の識別子3218を含むこともできる。このように、通信モジュール3206は、固有の識別子3218に関連付けられた人工的人の定義3204を修正する。
このように、ユーザ3214は、シミュレーション3200内で人工知能3202によってシミュレートされる人工的人を置換することができる。ユーザ3214は、通信モジュール3206に送られるリクエストに応じて、進行中に人工知能3202のスイッチを入れたり切ったりすることができる。
【0109】
ユーザ入力3216によるユーザ入力3208の置換を開始するとき、デバイス3212のユーザ3214は通信モジュール3206にリクエストを送る。この時点で、ユーザ3214はログオンしており、通信モジュール3206による認証を受けていると仮定する。通信モジュール3206は、ユーザ3214が人工知能3202のスイッチを操作する権限を有しているかを判断する。つまり、通信モジュール3206は、ユーザ3214で人工的人を置換してよいかを判断する。ユーザ3214が認証されたら、通信モジュール3206は人工知能3202の使用を停止するというフラグを設定する。つまり、人工知能3202の機能は、シミュレーション3200内で呼び出されなくなる。
この時点で、ユーザ3214は、固有の識別子3218を含むユーザ入力3216を生成する。用途に応じて、固有の識別子3218は、ユーザ3214がデバイス3212においてユーザ入力を送ることを認識することにより、通信モジュール3206によって追加することができる。
【0110】
ここで、有利な一実施形態による、実際の人で人工的人を置換するプロセスのフローチャートを示す図33を参照する。この実施例では、図33に示されるプロセスは、図4のインタープリタ404のようなインタープリタで実施することができる。具体的には、本プロセスはインタープリタ404内の通信モジュールにおいて実施できる。
本プロセスは、ユーザから、人工的人を置換するようにというリクエストを受け取ることにより開始される(工程3300)。その後、ユーザがシミュレートされた人を置換する権限を持っているかの判断が行われる(工程3302)。このような実施例では、この判断は、シミュレーションの間に、どのようなユーザが人工的人を置換できるかを定義するリスト又はデータベースと、ユーザとを比較することにより行うことができる。例えば、特定のユーザは特定の領域における専門家であり、それら特定の領域に関して人工的人を置換することができる。例えば、特定のユーザは政治に関する専門家とすることができる。このユーザは、このような状況で、政治家である人工的人を置換することができる。しかしながら、この専門家ユーザは、農夫又は兵士である人工的人を置換する権限は、関連分野の専門知識を持たないので、有さない。
【0111】
どのようなユーザが人工的人を置換できるかに関する特定のルールは、全面的に用途によって決定される。ユーザが人工的人を置換する権限を有する場合、定義において人工的人のための人工知能の使用が停止される(工程3304)。
その後、本プロセスはユーザによるユーザ入力を待つ(工程3306)。ユーザ入力を受け取ると、ユーザ入力が定義に新規定義を書くことであるかどうかの判断が行われる(工程3308)。ユーザ入力が新規定義を書くことである場合、ユーザ入力は新規定義を書き込むための形式にフォーマットされる(工程3310)。その後、定義がソースコードに書き込まれ(工程3312)、次いで本プロセスは上述の工程3306に戻る。
【0112】
工程3308に関し、ユーザ入力が新規定義を書くことではない場合、ユーザ入力が人工知能を作動させることであるかを判断する(工程3314)。ユーザ入力が人工知能を作動させることでない場合、本プロセスは工程3306に戻る。ユーザ入力が人工知能を作動させることである場合、人工知能は再び作動されて人工的人のシミュレーションに使用され(工程3316)、その後本プロセスは終了する。工程3316は、人工的人をシミュレーションに戻し、シミュレーションから実際の人を排除する。
工程3302に関し、ユーザが人工的人を置換する権限を持たない場合、エラーメッセージが生成されて(工程3318)、その後プロセスは終了する。
【0113】
本フレームワークによって提供されるシミュレーションは、100%の確度で人の行動を予測することを目的としているのではなく、判断又は変更の可能性を提供することを目的としている。シミュレーションの結果は、フレームワークによって行われるシミュレーション無しでは不可能であったガイド及び予測を提供する。
異なる有利な実施形態では、図6の定義602、動作604、及びGUI言語606に異なる特徴を付与するように特に設計された言語を使用して、ソースコード600を実施することができる。他の有利な実施形態では、図6のソースコード600は、他の既存の言語又はプログラム方法論の機能及び特徴も含むことができる。
【0114】
異なる有利な実施形態では、人工知能システムを使用して、例えば図6の定義602及び/又は動作604のようなソースコード600の一部を実施することができる。一部の有利な実施形態では、ニューラルネットワークの形態の人工知能(又はその他の形態の人工知能)を使用して、様々なオブジェクトをシミュレートすることができる。例えば、ニューラルネットワークを使用して、人又は動物のような生物をシミュレートすることができる。
例えば、人工知能は、形式論及び統計学的分析を特徴とする機械の学習能力を用いる従来の人工知能とすることができる。加えて、人工知能は、例えば計算知能の形式でもよい。計算知能は、反復による発達又は学習を行う。この種の人工知能は、経験式に基づいて学習することができる。計算知能の例には、例えば、ニューラルネットワーク、ファジー理論、及び遺伝的アルゴリズムが含まれるが、これらに限定されない。これらのプログラム技術を使用して、図6のソースコード600内に追加の機能を補充又は提供することができる。他の有利な実施形態では、図6のソースコード600は、種々のプログラム技術に加えて又は連動させて、既存のプログラム言語を使用して実施することができる。
【0115】
有利な一実施形態では、ニューラルネットワークのようなプログラム技術を使用して、図6のソースコード600の一部を実施することができる。例えば、図6の定義602の一部又は全部は、ニューラルネットワークを使用して実施することができる。ニューラルネットワークとは、生物学的ニューラルネットワークに基づく数学的計算モデルである。ニューラルネットワークは非線形統計データモデル化プールを提供し、入力と出力との複雑な関係をモデル化するために使用することができる。ニューラルネットワークは、図6の定義602内の種々のオブジェクトの機能の学習を行うために用いることができる。
一実施例では、ニューラルネットワーク技術を使用して、人、動物又は図6のソースコード600の定義602内において適切なその他のオブジェクトといった種々のオブジェクトに学習機能を付与することができる。この種の実施例では、NNは、ニューラルネットワークの種類の変数を示す。宣言文の一例は、「NN n;」である。本実施例において、この種の命令文は、ニューラルネットワークの変数を宣言する。子供、n.input、n.output、及びn.hiddenも作成することができる。これら他の変数は、ニューラルネットワーク内において入力層、出力層、及び隠れ層を表わす。これらの層は、ユーザによる異なる層へのニューロンの追加を可能にする。これらの異なる層により、入力ニューロンを、子供として入力ニューラルネットワーク層に加えることができる。
【0116】
図34は、入力ニューロンの実施例として命令文3400及び3402を示す。命令文3400のセクション3404は、ニューラルネットワークnの入力ニューロンとして「left operand」を宣言する。この入力数は、入力ニューロンの総数を読み取るために使用することもできる。メンバー「input」の値は、新規メンバーが追加される度に1ずつ増加する。結果として、入力値は入力ニューロンの総数となる。これらの命令文は、C言語を使用して実行することができるHBDL擬似コードの例である。例えば、C+及び/又はオブジェクティブCといった他の言語。
このような実施例では、入力ニューロンの変数の範囲は、0〜1の値とすることができる。各入力ニューロンの変数は、最小範囲及び細大範囲を有する。これらの範囲により、ユーザは当該範囲内にあらゆる値を入力することができる。用途に応じて、これらの値を使用前に正規化してもよい。
【0117】
図35は、入力ニューロンのleft operandに定義された入力範囲の実施例として命令文3500及び3502を示す。この実施例では、命令文3500は最小値として−10を定義し、命令文3502は最大値として10を定義する。
図36は、有利な一実施形態による入力行動の一命令文を示す。命令文3600は、使用前に入力ニューロンを修正することを可能にする。つまり、入力ニューロンは、ニューロンによるユーザ入力の操作を可能にするためにニューロンに付与されたか又は関連付けられたコードを有する。例えば、ユーザ入力は短くても長くてもよい。この実施例では、ニューロンの入力行動は、長短を変換して0〜1に評価する。命令文3600は、この種の行動を入力ニューロンに付与するために使用可能なコードの一実施例である。
【0118】
図37は、有利な一実施形態による出力宣言文を示す。命令文3700は、出力ニューラルネットワーク層に子供を追加するために使用される命令文の一実施例である。
【0119】
ここで、有利な一実施形態によるニューラルネットワーク内の出力範囲の命令文を示す図38を参照する。この実施例では、命令文3800及び3802は、出力ニューロンに設定できる範囲の実施例である。命令文3800及び3802によって最小及び最大範囲が設定される。
この特定の実施例では、出力ニューロンの最小値は−50であり、最大値は50である。さらに、ユーザは、正規化された絶対出力を特定の範囲内の一の値に変換することができる。例えば、1という出力が50に変換され、0.5という出力が0に変換される。さらに、出力ニューロンは、出力を操作するためのコードに関連付けることもできる。
【0120】
図39は、有利な一実施形態による、出力行動を修正するための命令文を示す。命令文3900は、出力ニューロンに関連付けることが可能なコードの一実施例である。この実施例では、ユーザ出力は、低くても高くてもよい。この特定の実施例の場合、ニューロンの出力行動は、0〜1の値を、低い及び高いに変換する。
図40は、有利な一実施形態による隠れ層の命令文を示す。命令文4000及び4002は、任意のニューラルネットワークの隠れ層を宣言するために使用できる命令文の実施例である。このような実施例では、隠れ層の順序は、隠れ層の宣言文の順序に従う。隠れ層の変数の値は、特定の隠れ層に割り当てられるニューロンの数を特定する。この実施例では、命令文4000及び4002は二つの隠れ層を宣言している。命令文4000によって定義される第1の層は、五つのニューロンを含み、命令文4002に宣言される第2の層は三つのニューロンを定義する。
【0121】
図41に示すコード4100は、ニューラルサンプル値を特定するために使用されるサンプルニューラルネットワークメンバーを示す。異なるサンプルを特定することができる。各入力及び出力ニューロンは、命令文内に「サンプル[整数]」を含む。ニューラルネットワークが完成したら、ユーザはニューラルネットワークを訓練して使用することができる。
図42は、有利な一実施形態による、ニューラルネットワークを訓練するための例示的命令文を示す。命令文4200、4202、及び4204は、ニューラルネットワークの訓練を実行するために使用される命令文の実施例である。命令文4200は、ニューラルネットワークが500回訓練されることを示している。命令文4202は300回の、命令文4204は200回の訓練回数を示している。このような実施例では、訓練は累積性で結果が保存される。これらの異なる結果を、特定の目的のために、図6の定義602又はソースコード600内に保存することができる。
【0122】
図43は、有利な一実施形態によるニューラルネットワーク内の演算機能を示す。この実施例では、命令文4300及び命令文4302は、入力ニューロンに一の機能を実行させて結果を返させるのに使用される命令文の一実施例である。これらの実施例では、命令文4304は、命令文4300及び4302の別の表現である。
【0123】
図44は、有利な一実施形態によるニューラルネットワークの一実施例を示す。この実施例では、コード4400は、ニューラルネットワークを訓練及び実行するための命令文と共にニューラルネットワークの定義を含む。入力宣言文はセクション4402に見られる。入力範囲はセクション4404及び4406に見られる。ニューロンに関連付けられたコードは、命令文4408及び4410に見られる。出力範囲はセクション4412に、出力される行動は命令文4414に見られる。
隠れ層はセクション4416に定義されており、機能性は命令文4418に見られる。サンプルはセクション4420に見られ、命令文4422は訓練命令文の一実施例である。セクション4424はニューラルネットワークの操作に使用される命令文の実施例を示す。セクション4424内の命令文4426は結果を示す。
【0124】
ここで、有利な一実施形態による、ニューラルネットワークの操作結果を示す図45を参照する。この実施例では、ディスプレイ4500は、図44のコード4400の表示命令文4426に応答して生成されたディスプレイの一実施例である。
ニューラルネットワークに加えて、図6の定義602内のオブジェクトの様々な属性及び特性を管理するために動的リストを使用することができる。動的リストは、図8のオブジェクト800の特徴804及び図9のオブジェクト900の特徴904のような特徴を定義するために使用することができる。
【0125】
例えば、動的リストを使用して、オブジェクトのコンポーネント、能力、特徴、又はその他の適切なパラメータを識別することができる。例えば、オブジェクトが車である場合、動的リストを使用して、車輪、エンジン、ボディ、塗料、トランスミッション、窓、及びその他構成部品などの構成部品を識別することができる。車に構成部品が付け加えられたり取り外されたりすると、このリストはこれらの変化を識別するように修正される。
異なる有利な実施形態では、リストにはどのような変数も使用できる。動的リストを用いることで、予想される構成部品又はパラメータに基づいてリストの大きさを予め決定する必要があることにより定義が制約されることはない。そうではなく、様々なパラメータ又はコンポーネントが追加されたり、特定の定義から削除されたりするにつれて、リストの大きさは変化することができる。
【0126】
図46には、有利な一実施形態によるリストの一実施例が示されている。この実施例では、コード4600は、命令文4600中のlist1を定義している。命令文4602、4604、及び4606は、list1に含まれる値の三つの変数を識別する。この実施例では、list1はアレイとして機能する。コード4600中の命令文4608は、アレイの大きさを識別する値を返すサイズ関数の一実施例である。この実施例では、命令文4608は値3を返す。
命令文4610及び4612は、コード4600中のリストの検索に使用される命令文の一実施例である。命令文4610は、trueに相当する値2を返し、命令文4612はfalseに相当する値0を返す。命令文4610及び4612のこれら検索機能を使用して、リストが特定の値を含むかどうかを決定することができる。リスト中に特定の値が存在する場合、リスト中のその値のインデックスが返される。存在しない場合、値0が返される。
【0127】
図47は、有利な一実施形態による、リストからの変数の削除を示す。この実施例では、コード4700はセクション4702に定義されたリストを含む。命令文4704は、コード4700中のリストから一のアイテムを削除するために使用可能な削除機能である。命令文4704はリストを検索して特定のアイテムがリスト中に存在するかどうかを決定する。アイテムが見つかった場合、当該アイテムがリストから削除される。命令文4704は、削除されるアイテムを識別するインデックスを返す。リスト中にアイテムが無かった場合、命令文4704は0を返す。この実施例では、コード4700中のリストに値25は存在せず、ゼロが返されており、何の動作も行われない。この実施例では、値を識別することによりアイテムが削除される。
図48は、有利な一実施形態による、アイテムを削除するためのコードを示す。この実施例では、コード4800はセクション4802のリストを定義する。命令文4804及び4806は、インデックスの値に基づいて、リスト中のアイテムを削除するのに使用される命令文である。命令文がリストの大きさより小さいインデックスの値を識別する場合、リスト中のアイテムの位置が決定され、アイテムは削除される。次いでこの機能は削除されたアイテムの値を返す。逆の場合、アイテムがリスト中に見つからなかったことを意味する0を返す。セクション4802に定義されるように、リストには3つのアイテムしか含まれていないので、命令文4804は0を返す。結果として命令文4806は、命令文4808に定義されている削除されているアイテムにより、20を返す。
【0128】
図49は、有利な一実施形態による、リスト中のアイテムを操作するためのコードを示す。この実施例では、コード4900を使用して、リスト中のアイテムを操作することができる。このような実施例では、コード4900は、スタックのリストを使用するためのプッシュ及びポップ機能を含む。命令文4902は、操作される対象のリストを識別する。この実施例では、セクション4904は、リストに対して行われる三つのプッシュを識別する。命令文4906は、リストに対して行われる一のポップを示す。命令文4906は、リストの前面からポップされたアイテムから一の値を返す。
これらの種類の機能は、コンピュータシステムのスタックの操作に使用される機能と類似している。プッシュは、特定のアイテムをリストの一番上にプッシュする又は動かすために使用される。ポップは、リストの一番上にあるアイテムの値を返すために使用される。ポップ命令文が値又はパラメータを含む場合、この命令文はパラメータの値に従ってスタックから値をポップするか又は返す。このような実施例では、命令文4908中でポップされているアイテムは、インデックス値3を有するアイテムであり、リスト中において3番目のアイテムである。
【0129】
図50は、有利な一実施形態による、リストのキューとしての使用を示す。この実施例では、コード5000は、キューとしてリストを操作するために使用可能なエンキューとデキューとを示している。命令文5002に示されるようなエンキュー機能は、リストの一番下に引数を加える。
命令文5004に示されるようなデキュー機能は、リストの一番上のアイテムを削除し、そのアイテムの値を返す。この実施例では、命令文5002はlist1にアイテムを加え、命令文5006はキューの一番上に別のアイテムを加える。ここで、命令文5002中のアイテムはキューの2番目となる。命令文5008はまた別のアイテムをキューに加え、他のアイテムをキューの下方へ押しやる。
【0130】
図51は、有利な一実施形態による、リスト中のアイテムの読み取りを示す。この実施例では、コード5100は、セクション5102で定義されるように、リストの一番上と一番下からのアイテムの読み取りを示す。命令文5104は、リストの一番上に位置するアイテムを読み取り、命令文5106はリストの一番下に含まれるアイテムを読み取る。
【0131】
図52は、有利な一実施形態による、リスト中の検索属性を示す。コード5200は、リストの検索状態の識別に使用される命令文を含む。命令文5202は、リストに検索状態が設定されているかを識別する。命令文5202がtrueと等しく設定されている場合、アイテムはそれらの値に従ってリスト中に挿入される。命令文5204は検索順序を識別する。
命令文5204がtrueに等しく設定されている場合、リストは小さい方から大きい方へと降順に検索される。この実施例では、命令文5204はfalseに等しく設定されている。その結果、セクション5206に示されるように、アイテムは降順にリストに追加される。さらに、追加の命令文を使用してリストを様々な順序で検索することができる。
【0132】
図6のソースコード600の実施に使用可能なプログラム技術の別の実施例はファジー理論である。ファジー理論の実施に使用される言語の一実施例はPrologであり、これはファジー理論及び人工知能プログラミングに使用可能な論理型プログラミング言語である。
ここに開示される実施例では、ファジー理論システムは、オペランドが複数のセットから得られた条件である論理的命令文に基づくことができる。一実施例では、そのセットは、例えば、燃料、距離、及び速度とすることができる。燃料は、三つの条件、即ち、少、中、多を含むことができる。距離は、近距離及び遠距離とすることができる。このような実施例では、速度は、低、中、及び高とすることができる。これらのセットを使用して、燃料が少ない又は近距離の場合は速度を低とする、などのルールを適用することができる。別のルールは、燃料が中程度で遠距離の場合、速度を中にすることである。3番目のルールは、燃料が多で遠距離の場合、速度を高にすることである。ファジー理論により、セットの異なるメンバーについて範囲を設定することができる。これらの範囲は最小範囲及び最大範囲を含む。
【0133】
図53は、有利な一実施形態による、燃料、距離及び速度を用いたファジー理論の一実施例を示す。この実施例では、コード5300はセクション5302にこれらのセットを定義する。燃料は整数値であり、距離及び速度は浮動変数である。セクション5304は、燃料の最小範囲及び細大範囲を1〜100の間で識別する。
燃料の開始条件及び終了条件は、セクション5306に定義される。このセクションは、ファジーセットの左右の端を識別する。セクション5308、5310、及び5312は、燃料の条件を識別する。セクション5308は、trapezoid条件を、セクション5310はtriangle条件を、セクション5312はBell curve条件を識別する。
【0134】
距離の同様の定義はセクション5314に見出される。ファジー論理のルールは、この実施例ではセクション5316に定義されている。セクション5318は、燃料及び距離の初期値を識別する。命令文5320は、速度の計算に使用される。
図6のソースコード600内の様々なオブジェクトのシミュレーションに使用可能な別の種類のプログラム技術は、進化的計算を利用する。進化的計算は、一種の人工知能であえる。特定の一方法又は方法論は遺伝的アルゴリズムである。このアルゴリズムは、解決策を識別するために使用される検索技術である。この種の技術は、グローバルサーチヒューリスティック型の技術と考えられる。遺伝的アルゴリズムにより、遺伝子並びに染色体を断じることができる。適応機能、選択プロセス、及び組換え機能も、この種の技術を用いて特定される。
【0135】
ここで、有利な一実施形態による、遺伝的アルゴリズムを使用した方程式の解法を示す図54を参照する。この実施例では、コード5400は、方程式2X+3Y=20を解くために使用される。
この実施例では、セクション5402において二つの遺伝子が初期化される。これら二つの遺伝子は変数X及びYに対応する。セクション5404において染色体が遺伝子に添加される。命令文5406において適応機能のコードを初期化することができる。選択機能のコードは命令文5408を用いて特定することができる。組換え機能のコードは命令文5410において特定できる。
【0136】
これらの機能のコードは、特定の命令文に利用可能な機能を用いて実施することができる。これらの選択プロセスは、コードによって特定される最適な染色体又は最も良く適応する染色体を選択するために使用される。例えば、ルーレット選択プロセスを使用することができる。命令文5410中の組換え機能に関し、この命令文を使用して染色体の新規世代を形成するためのコードを識別することができる。
一実施例では、2値変数クロスオーバー法を使用することができる。命令文5412はプロセスのエラーマージンを特定し、命令文5414はコード5400中の進化機能を呼び出す。このような実施例では、命令文5414で識別される新化プロセスは、最も良く適応する染色体のエラーマージンが命令文5412で特定されるエラーより小さくなる度に停止する。コード5400に定義されるように本プロセスを実行することにより、遺伝子Xは染色体に最も良く適応するXの値を返し、遺伝子Yは染色体に最も良く適応するYの値を返す。
【0137】
図55A及び55Bは、有利な一実施形態による、ソースコード中のオブジェクトに対するコードを示す。この実施例では、コード5500は、フォレストの形態のオブジェクトの定義の一実施例である。セクション5502はフォレスト内のツリーの色を識別する。コード5500のセクション5504は、フォレストのグリッドを識別する。セクション5506は、フォレストのグリッド内に存在しうるツリーを定義する。セクション5508はフォレストのツリーの一の行を定義する。セクション5510は、セクション5508で定義されるように、ツリーの一又は複数の行を含むツリーのパッチを生成するために使用される。セクション5512は、フォレストの提示に使用可能なコードの一実施例である。このような実施例では、ライン5514及び5516は、フォレスト内にランダム性を提供するために使用される変換命令文である。例えば、これらの命令文に加えて又は替えて、回転及び/又はスケールの命令文のような他の命令文も使用できる。
このような実施例では、コード5500はC言語を使用して書かれる。当然のことながら、フォレストの定義を生成するためにあらゆる言語を使用することができる。さらに、フォレストの提示は、図6のソースコード600中の定義602に見出される一のオブジェクトの実施例である。当然のことながら、コードは、用途に応じてあらゆる言語を使用して又はあらゆるオブジェクトのために、生成することができる。
【0138】
ここに示した種々の実施形態のフローチャート及びブロック図は、装置、方法及びコンピュータプログラム製品の幾つかの可能な実施形態のアーキテクチャ、機能性、及び操作を示す。これに関し、フローチャート又はブロック図の各ブロックは、コンピュータで使用可能又は読み取り可能なプログラムコードの、一のモジュール、セグメント、又は部分を表わし、これは一又は複数の特定の機能を実施するための一又は複数の実行可能な命令を含んでいる。幾つかの他の実施形態では、ブロック内に言及される一又は複数の機能を、図に示した順序とは異なる順序で発生させることができる。例えば、場合によっては、連続して示される二つのブロックをほぼ同時に実行することができるか、又は関連する機能性に応じて、時にそれらブロックを逆の順序で実行することができる。
種々の有利な実施形態は、完全にハードウェアで実現された形態、完全にソフトウェアで実現された形態、又はハードウェアとソフトウェア両方の要素を含んで実現された形態を取ることができる。一部の実施形態はソフトウェアで実施され、これには例えばファームウェア、常駐ソフトウェア、及びマイクロコードのような形式が含まれるがこれらに限定されない。
【0139】
さらに、種々の実施形態は、命令を実行するコンピュータ或いは任意のデバイス又はシステムにより使用されるか、或いはそれと連動して使用されるプログラムコードを提供する、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体からアクセス可能なコンピュータプログラム製品の形態を採ることができる。本開示の目的に関し、コンピュータで使用可能又はコンピュータで読み取り可能な媒体は、通常、命令実行システム、装置、又はデバイスにより使用されるか又はそれと連動して使用されるプログラムを、含む、保存する、通信する、伝播する、或いは転送することができる任意の有形装置とすることができる。
コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、例えば、電子システム、磁気システム、光システム、電磁システム、赤外線システム、又は半導体システムであるか、或いは伝播媒体であるが、これらに限定されない。コンピュータで読み取り可能な媒体の非限定的実施例には、半導体又は固体メモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが含まれる。光ディスクには、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。このような実施例では、物理的な又は有形のコンピュータで読み取り可能な媒体を、追記型コンピュータ記憶媒体と称する。
【0140】
さらに、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを含むか又は保存することができ、よって、コンピュータで読み取り可能な又は使用可能なプログラムコードがコンピュータ上で実行されると、このようなコンピュータで読み取り可能な又は使用可能なプログラムコードの実行により、コンピュータは、通信リンクを介して別のコンピュータで読み取り可能な又は使用可能なプログラムコードを送る。このような通信リンクは、例えば、限定しないが、物理的媒体又は無線媒体を使用することができる。
コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードの保存及び/又は実行に適したデータ処理システムは、システムバスのような通信ファブリックを介してメモリ要素に直接又は間接に連結された一又は複数のプロセッサを含む。メモリ要素は、プログラムコードが実際に実行される間に使用されるローカルメモリ、大量記憶装置、及び、コードが実行される間に大量記憶装置からコードを取り出す回数を減らすための、少なくとも何らかのコンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを一時的に記憶するキャッシュメモリを含むことができる。
【0141】
入力/出力又はI/Oデバイスを、直接、又は中間のI/Oコントローラを介して、本システムに連結することができる。これらのデバイスは、例えば、キーボード、タッチスクリーンディスプレイ、及びポインティングデバイスを含むが、これらに限定されない。種々の通信アダプタをシステムに連結することにより、中間のプライベート又はパブリックネットワークを介して処理システムを他のデータ処理システム又は遠隔プリンタ又は貯蔵装置に連結することもできる。非限定的な実施例はモデムであり、ネットワークアダプタは、現在利用可能な通信アダプタのごく一部である。
本明細書の説明は、例示及び説明を目的としており、包括的であることを意図しておらず、開示された形態の開示内容に限定されるものではない。当業者であれば、多数の修正及び変更が可能であることは明らかである。さらに、異なる有利な実施形態は、他の有利な実施形態とは異なる利点を提供しうる。選択された一又は複数の実施形態は、本開示内容の理念、実用例を最もよく説明し、他の当業者が、考慮される特定の用途に適した様々な修正が施された様々な実施形態の開示内容を理解できるように、選択及び説明されている。
【特許請求の範囲】
【請求項1】
ネットワークデータ処理システム(100)内の記憶システムに位置するソースコード(402、510、600)であって、人の行動を予測するための言語で書かれているソースコード、
ネットワークデータ処理システム(100)上で動作するインタープリタ(404、518、1700)であって、ソースコード(402、510、600)を用いてシミュレーションを実行し、変換されたソースコードを生成するインタープリタ、
ソースコード(402、510、600)に定義された人工的人であって、シミュレーションの間のユーザ入力を生成し、このユーザ入力が、ソースコード(402、510、600)を修正するために使用される現在の変換済みソースコードとなる、人工的人、及び
ネットワークデータ処理システム(100)上で動作するグラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)であって、インタープリタ(404、518、1700)から変換されたソースコードを受け取って、受け取った変換済みソースコードを形成し、受け取った変換済みソースコードを使用してデバイスに応じた出力を生成するグラフィカルユーザインターフェースプロセッサ
を備え、
インタープリタ(404、518、1700)が、グラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)と通信するデバイスを介して実際の人からリアルタイムのユーザ入力を受け取って、これで人工的人により生成されたユーザ入力を置換し、且つインタープリタ(404、518、1700)は、リアルタイムのユーザ入力を受け取ると、ソースコード(402、510、600)に定義されている人工的人により生成される入力の使用を停止し、さらにはインタープリタ(404、518、1700)が、ソースコード(402、510、600)の修正に使用される変換済みソースコードを有するリアルタイムのユーザ入力を含む、装置。
【請求項2】
人工的人が人工知能プログラムである、請求項1に記載の装置。
【請求項3】
実際の人によるリアルタイムの入力が、シミュレーションを中断することなく人工的人の入力を置換する、請求項1に記載の装置。
【請求項4】
人工的人により生成されたユーザ入力に固有の識別子が関連付けられ、リアルタイムのユーザ入力に当該人工的人の固有の識別子が関連付けられることにより、リアルタイムのユーザ入力で当該ユーザ入力が置換される、請求項1に記載の装置。
【請求項5】
人による入力を受け取るための、コンピュータで実施される方法であって、
ネットワークデータ処理システム(100)内の記憶システムに位置するソースコード(402、510、600)からデータを取り出して、取り出されたデータを形成する工程であって、取り出されたデータに人工的人が含まれる工程、
取り出したデータを変換し、ネットワークデータ処理システム(100)上で動作するインタープリタ(404、518、1700)を用いて人の行動のシミュレーションを実行し、取り出したデータを変換する間に人工的人により生成された入力を含む結果を生成する工程、
結果を使用してソースコード(402、510、600)を修正し、修正されたソースコードを形成する工程、
リアルタイムのユーザ入力の使用に対するリクエストに応じて、シミュレーションの実行に人工的人を使用することを停止する工程、及び
人工的人による入力を置換するリアルタイムのユーザ入力を受け取ると、ソースコード(402、510、600)に、リアルタイムのユーザ入力を含む結果を書き込むことにより修正されたソースコードを形成する工程であって、修正されたソースコードが、人の行動を予測するためのシミュレーションの実行において、取り出したデータのその後の変換に利用される新規データを提供する工程
を含む方法。
【請求項6】
人の行動を予測するためのシミュレーションの間に、取り出す工程、変換する工程、修正する工程、停止する工程、及び書き込む工程を繰返す、請求項5に記載のコンピュータで実施される方法。
【請求項7】
ネットワークデータ処理システム(100)上で動作するグラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)と通信するデバイスからリアルタイムのユーザ入力を受け取る工程、及び
リアルタイムのユーザ入力をグラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)からインタープリタ(404、518、1700)へ送る工程
をさらに含む、請求項5に記載のコンピュータで実施される方法。
【請求項8】
人工的人によって生成された入力に、当該入力を人工的人によって生成された入力として識別する固有の識別子を関連付け、リアルタイムのユーザ入力に当該人工的人の固有の識別子が関連付けられると、リアルタイムのユーザ入力で当該入力を置換する、請求項5に記載のコンピュータで実施される方法。
【請求項9】
デバイスから固有の識別子を有するユーザ入力を受け取ると、当該ユーザ入力が、リアルタイムのユーザ入力の生成を許可されたユーザによるものかどうかを判断する工程、及び
ユーザがリアルタイムのユーザ入力の生成を許可されている場合、当該ユーザ入力をリアルタイムのユーザ入力として使用する工程
をさらに含む、請求項5に記載のコンピュータで実施される方法。
【請求項10】
リアルタイムのユーザ入力を送るデバイスでユーザによるリクエストを受け取る工程、及び
ユーザがリアルタイムのユーザ入力を送る権限を有している場合、固有の識別子をデバイスに送る工程であって、固有の識別子を含むあらゆるユーザ入力がリアルタイムのユーザ入力として識別される工程
をさらに含む、請求項5に記載のコンピュータで実施される方法。
【請求項11】
人工的人によって生成された入力の、リアルタイムのユーザ入力による置換が、シミュレーション中にユーザに意識されること無く実行される、請求項5に記載のコンピュータで実施される方法。
【請求項12】
書き込む工程が、インタープリタ(404、518、1700)のディスパッチャーによって実行される、請求項5に記載のコンピュータで実施される方法。
【請求項13】
固有の識別子を、インタープリタ(404、518、1700)によりリアルタイムのユーザ入力に加える、請求項5に記載のコンピュータで実施される方法。
【請求項14】
リアルタイムのユーザ入力を生成する実際の人によって使用されるデバイスにおいて、リアルタイムのユーザ入力に固有の識別子を加える、請求項5に記載のコンピュータで実施される方法。
【請求項1】
ネットワークデータ処理システム(100)内の記憶システムに位置するソースコード(402、510、600)であって、人の行動を予測するための言語で書かれているソースコード、
ネットワークデータ処理システム(100)上で動作するインタープリタ(404、518、1700)であって、ソースコード(402、510、600)を用いてシミュレーションを実行し、変換されたソースコードを生成するインタープリタ、
ソースコード(402、510、600)に定義された人工的人であって、シミュレーションの間のユーザ入力を生成し、このユーザ入力が、ソースコード(402、510、600)を修正するために使用される現在の変換済みソースコードとなる、人工的人、及び
ネットワークデータ処理システム(100)上で動作するグラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)であって、インタープリタ(404、518、1700)から変換されたソースコードを受け取って、受け取った変換済みソースコードを形成し、受け取った変換済みソースコードを使用してデバイスに応じた出力を生成するグラフィカルユーザインターフェースプロセッサ
を備え、
インタープリタ(404、518、1700)が、グラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)と通信するデバイスを介して実際の人からリアルタイムのユーザ入力を受け取って、これで人工的人により生成されたユーザ入力を置換し、且つインタープリタ(404、518、1700)は、リアルタイムのユーザ入力を受け取ると、ソースコード(402、510、600)に定義されている人工的人により生成される入力の使用を停止し、さらにはインタープリタ(404、518、1700)が、ソースコード(402、510、600)の修正に使用される変換済みソースコードを有するリアルタイムのユーザ入力を含む、装置。
【請求項2】
人工的人が人工知能プログラムである、請求項1に記載の装置。
【請求項3】
実際の人によるリアルタイムの入力が、シミュレーションを中断することなく人工的人の入力を置換する、請求項1に記載の装置。
【請求項4】
人工的人により生成されたユーザ入力に固有の識別子が関連付けられ、リアルタイムのユーザ入力に当該人工的人の固有の識別子が関連付けられることにより、リアルタイムのユーザ入力で当該ユーザ入力が置換される、請求項1に記載の装置。
【請求項5】
人による入力を受け取るための、コンピュータで実施される方法であって、
ネットワークデータ処理システム(100)内の記憶システムに位置するソースコード(402、510、600)からデータを取り出して、取り出されたデータを形成する工程であって、取り出されたデータに人工的人が含まれる工程、
取り出したデータを変換し、ネットワークデータ処理システム(100)上で動作するインタープリタ(404、518、1700)を用いて人の行動のシミュレーションを実行し、取り出したデータを変換する間に人工的人により生成された入力を含む結果を生成する工程、
結果を使用してソースコード(402、510、600)を修正し、修正されたソースコードを形成する工程、
リアルタイムのユーザ入力の使用に対するリクエストに応じて、シミュレーションの実行に人工的人を使用することを停止する工程、及び
人工的人による入力を置換するリアルタイムのユーザ入力を受け取ると、ソースコード(402、510、600)に、リアルタイムのユーザ入力を含む結果を書き込むことにより修正されたソースコードを形成する工程であって、修正されたソースコードが、人の行動を予測するためのシミュレーションの実行において、取り出したデータのその後の変換に利用される新規データを提供する工程
を含む方法。
【請求項6】
人の行動を予測するためのシミュレーションの間に、取り出す工程、変換する工程、修正する工程、停止する工程、及び書き込む工程を繰返す、請求項5に記載のコンピュータで実施される方法。
【請求項7】
ネットワークデータ処理システム(100)上で動作するグラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)と通信するデバイスからリアルタイムのユーザ入力を受け取る工程、及び
リアルタイムのユーザ入力をグラフィカルユーザインターフェースプロセッサ(406、522、524、528、2600)からインタープリタ(404、518、1700)へ送る工程
をさらに含む、請求項5に記載のコンピュータで実施される方法。
【請求項8】
人工的人によって生成された入力に、当該入力を人工的人によって生成された入力として識別する固有の識別子を関連付け、リアルタイムのユーザ入力に当該人工的人の固有の識別子が関連付けられると、リアルタイムのユーザ入力で当該入力を置換する、請求項5に記載のコンピュータで実施される方法。
【請求項9】
デバイスから固有の識別子を有するユーザ入力を受け取ると、当該ユーザ入力が、リアルタイムのユーザ入力の生成を許可されたユーザによるものかどうかを判断する工程、及び
ユーザがリアルタイムのユーザ入力の生成を許可されている場合、当該ユーザ入力をリアルタイムのユーザ入力として使用する工程
をさらに含む、請求項5に記載のコンピュータで実施される方法。
【請求項10】
リアルタイムのユーザ入力を送るデバイスでユーザによるリクエストを受け取る工程、及び
ユーザがリアルタイムのユーザ入力を送る権限を有している場合、固有の識別子をデバイスに送る工程であって、固有の識別子を含むあらゆるユーザ入力がリアルタイムのユーザ入力として識別される工程
をさらに含む、請求項5に記載のコンピュータで実施される方法。
【請求項11】
人工的人によって生成された入力の、リアルタイムのユーザ入力による置換が、シミュレーション中にユーザに意識されること無く実行される、請求項5に記載のコンピュータで実施される方法。
【請求項12】
書き込む工程が、インタープリタ(404、518、1700)のディスパッチャーによって実行される、請求項5に記載のコンピュータで実施される方法。
【請求項13】
固有の識別子を、インタープリタ(404、518、1700)によりリアルタイムのユーザ入力に加える、請求項5に記載のコンピュータで実施される方法。
【請求項14】
リアルタイムのユーザ入力を生成する実際の人によって使用されるデバイスにおいて、リアルタイムのユーザ入力に固有の識別子を加える、請求項5に記載のコンピュータで実施される方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54】
【図55A】
【図55B】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図52】
【図53】
【図54】
【図55A】
【図55B】
【公表番号】特表2010−520535(P2010−520535A)
【公表日】平成22年6月10日(2010.6.10)
【国際特許分類】
【出願番号】特願2009−551879(P2009−551879)
【出願日】平成20年2月29日(2008.2.29)
【国際出願番号】PCT/US2008/055568
【国際公開番号】WO2008/106661
【国際公開日】平成20年9月4日(2008.9.4)
【出願人】(500520743)ザ・ボーイング・カンパニー (773)
【氏名又は名称原語表記】The Boeing Company
【公表日】平成22年6月10日(2010.6.10)
【国際特許分類】
【出願日】平成20年2月29日(2008.2.29)
【国際出願番号】PCT/US2008/055568
【国際公開番号】WO2008/106661
【国際公開日】平成20年9月4日(2008.9.4)
【出願人】(500520743)ザ・ボーイング・カンパニー (773)
【氏名又は名称原語表記】The Boeing Company
[ Back to top ]