首页> 中国专利> 人类行为建模和仿真架构

人类行为建模和仿真架构

摘要

一种用于仿真人类行为的计算机实施方法、装置和计算机可用程序代码。以用于预测人类行为的语言编写的源代码被放置在网络数据处理系统中的存储系统中。在硬件上执行的解释器具有语言解释器和通信模块。语言解释器使用人工智能利用源代码来执行仿真,以便生成新定义和解释后的源代码。图形用户接口处理器从语言解释器接收解释后的源代码,并且生成设备相关输出。设备显示该设备相关输出,接收用户输入,并且将接收到的用户输入发送到图形用户接口处理器。通信模块接收从图形用户接口处理器接收到的用户输入和来自语言解释器的新定义,并且修改所述源代码,以便形成由语言解释器执行的修改后的源代码。

著录项

  • 公开/公告号CN101681446A

    专利类型发明专利

  • 公开/公告日2010-03-24

    原文格式PDF

  • 申请/专利权人 波音公司;

    申请/专利号CN200880006762.5

  • 发明设计人 克劳德·科梅尔;

    申请日2008-02-29

  • 分类号G06N3/00;

  • 代理机构北京纪凯知识产权代理有限公司;

  • 代理人赵蓉民

  • 地址 美国伊利诺伊州

  • 入库时间 2023-12-17 23:44:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-02-28

    未缴年费专利权终止 IPC(主分类):G06N 3/00 专利号:ZL2008800067625 申请日:20080229 授权公告日:20160406

    专利权的终止

  • 2016-04-06

    授权

    授权

  • 2010-04-28

    实质审查的生效 IPC(主分类):G06N3/00 申请日:20080229

    实质审查的生效

  • 2010-03-24

    公开

    公开

说明书

相关临时申请

本公开涉及并要求于2007年3月1日提交的美国临时专利申请序列号No.60/892,422、标题为“Human Behavior Modeling and Simulation Framework”的优先权的利益,在此并入其作为参考。

技术领域

本公开提供了一种改进的数据处理系统,并且具体提供了一种用于处理数据的方法和装置。更具体地,本公开涉及用于建模和仿真人类行为(humanbehavior)的计算机实施方法、装置和计算机可用程序代码。

背景技术

人类行为是指由人类进行的活动(activitie)集合。这些活动受下列因素影响:例如,文化、态度、情绪、价值、道德规范、权力、信念和/或高压政治。人类的行为落入一种范围之内,即,在该范围中,一些行为是共同的,一些行为被认为是不寻常的,再一些行为被认为是可接受的,而其它行为在可接受界限以外。许多学术学科,例如心理学、社会学和人类学已经研究了人们的行为。最近,已经应用计算机的使用来研究人类行为。

另外,已经使用人类行为的仿真来进行军事训练和计划编制。针对预测其它情况,例如经济学和社会学动作,也可以使用人类行为仿真。预测人类行为的能力将有助于研发培训程序。了解受训员将如何响应不同的刺激物可被用来研发并修改培训程序。

目前的模型和仿真程序由于不同的原因而没有适当地仿真人类行为。例如,目前可用的仿真程序仅适用于特定类型的仿真。结果,当需要不同类型的仿真时,需要编写新程序来执行该仿真。另外,关系的数量和修改那些关系的能力也受到限制。

因此,具有一种用于建模和仿真人类行为以供培训程序使用的改进的计算机实施方法、装置和计算机可用编程代码,将会非常有益。

发明内容

有利的实施例提供了一种用于仿真人类行为的计算机实施方法、装置和计算机可用程序代码。源代码被放置在网络数据处理系统中的存储系统上。所述源代码是以用于预测人类行为的语言编写的。解释器在所述网络数据处理系统中的硬件上执行,其中该解释器包括语言解释器和通信模块。所述语言解释器使用人工智能利用所述源代码来执行仿真,以便生成新定义和解释后的源代码。图形用户接口处理器在所述网络数据处理系统中的硬件上执行。所述图形用户接口处理器从所述语言解释器接收所述解释后的源代码,以便形成接收到的解释后的源代码,并且使用所述接收到的解释后的源代码生成设备相关输出。设备组与所述图形用户接口处理器通信。所述设备组显示所述设备相关输出,接收用户输入以便形成接收后的用户输入,并且将接收后的用户输入发送到所述图形用户接口处理器。通信模块接收来自所述图形用户接口处理器的所述接收后的用户输入和来自所述语言解释器的新定义,使用所述接收后的用户输入和所述新定义修改所述源代码,以便形成由所述语言解释器执行的修改后的源代码。

另一有利实施例提供了一种用于仿真人类行为的计算机实施方法。从网络数据处理系统中的存储系统中存储的源代码中恢复数据,以便形成恢复后数据。使用在所述网络数据处理系统上执行的解释器解释所述恢复后数据以便执行人类行为的仿真,从而生成结果。使用在所述网络数据处理系统上执行的图形用户接口处理器,从所述结果生成设备相关数据。所述设备相关数据可被用来呈现所述结果。使用所述结果修改所述源代码,以便形成修改后源代码。所述修改后源代码提供在随后解释中利用的新数据,以便预测人类行为。

另一有利实施例提供了一种用于仿真人类行为的数据处理系统。这个数据处理系统包括恢复部件,用于从网络数据处理系统中的存储系统中存储的源代码中恢复数据,以便形成恢复后数据。解释部件被呈现用以使用在所述网络数据处理系统上执行的解释器解释所述恢复后数据以便执行人类行为的仿真,从而生成结果。数据处理系统也包括生成部件,用于使用在所述网络数据处理系统上执行的图形用户接口处理器,从所述结果生成设备相关数据。所述设备相关数据可被用来呈现所述结果。修改部件被呈现用以使用所述结果修改所述源代码,以便形成修改后源代码。所述修改后源代码提供在随后解释中利用的新数据,以便预测人类行为。

特征、功能和优点可以在本公开的各个实施例中独立地实现或者可以结合其它实施例来实现。

附图说明

在所附权利要求中阐述了本公开认定的新颖的特征特点。然而,通过参考当结合附图阅读的有利实施例的下列详细描述,本公开本身、以及优选使用实施例、其进一步目的和优点将会被更好地理解,其中:

图1是可实施有利实施例的数据处理系统的网络的图示表示;

图2是图示根据有利实施例的数据处理系统的图;

图3是图示根据有利实施例的仿真系统的图;

图4是根据有利实施例的人类行为建模和仿真开发架构的图;

图5是图示根据有利实施例的架构中的模块分配的图;

图6是图示根据有利实施例的源模块代码的图;

图7是图示根据有利实施例的源代码的定义部分的图;

图8是图示根据有利实施例的对象的方块图;

图9是图示根据有利实施例的对象的图;

图10是图示根据有利实施例的动作对象的图;

图11是图示根据有利实施例的动作的应用的图;

图12是图示根据有利实施例的在具有调度程序中断(scheduler interrupt)的时间表(timeline)上的动作的应用的图;

图13是图示根据有利实施例的其中时隙重叠的事件的应用的图;

图14、15和16是图示根据有利实施例的持续事件(lasting event)的图;

图17是图示根据有利实施例的解释器(interpreter)的图;

图18是图示根据有利实施例的词汇分析器(lexical analyzer)的数据流的图;

图19是图示根据有利实施例的由语法剖析器执行的剖析或句法分析的图;

图20是图示根据有利实施例的剖析树的另一实例的图;

图21是图示根据有利实施例的解释器的执行模块的图;

图22是图示根据有利实施例的用于生成标记的处理的流程图;

图23是图示根据有利实施例用于执行人类行为的仿真的处理的流程图;

图24是图示根据有利实施例的用于生成句子或产品(production)的处理的流程图;

图25是图示根据有利实施例的用于执行产品的声明(statement)的处理的流程图;

图26是图示根据有利实施例的图形用户接口(GUI)处理器的图;

图27是图示根据有利实施例的通过图形用户接口处理器的数据流的图;

图28是图示根据有利实施例的显示器的图;

图29是图示根据有利实施例的显示器的操纵的图;

图30是图示根据有利实施例的用于识别位图的变化的处理的流程图;

图31是图示根据有利实施例的用于处理差数据的处理的流程图;

图32是图示根据有利实施例的在提供人类透明聚合体(paradigm)中供使用的组件的图;

图33是图示根据有利实施例的用活人代替合成人的处理的流程图;

图34是图示根据有利实施例的输入神经元(neuron)的实例图;

图35是图示根据有利实施例的为输入神经元左操作数(left operand)定义的输入范围的实例图;

图36是图示根据有利实施例的输入行为的声明的图;

图37是图示根据有利实施例的输出宣告(declaration)的图;

图38是图示根据有利实施例的对神经网络中的输出范围的声明的图;

图39是图示根据有利实施例的用于修改输出行为的声明的图;

图40是图示根据有利实施例的用于隐藏层的声明的图;

图41是图示根据有利实施例的样本神经网络的图;

图42是根据有利实施例的用于培训神经网络的示例声明;

图43是图示根据有利实施例的神经网络中的计算功能的图;

图44是图示根据有利实施例的神经网络的实例图;

图45是图示根据有利实施例的来自神经网络的操作的结果的图;

图46是图示根据有利实施例的列表的实例图;

图47是图示根据有利实施例的从列表中删除变量的图;

图48是图示根据有利实施例的用于删除项目的代码的图;

图49是图示根据有利实施例的用于操纵列表中的项目的代码的图;

图50是图示根据有利实施例的作为队列的列表的使用的图;

图51是图示根据有利实施例的读取列表中的项目的图;

图52是图示根据有利实施例的列表中的分类属性的图;

图53是根据有利实施例的使用燃料距离和速度的模糊逻辑实施(fuzzylogic implementation)的图;

图54是图示根据有利实施例的使用遗传算法求解方程式的图;和

图55A和图55B是图示根据有利实施例的源代码中针对一个对象的代码的图。

具体实施方式

现在参考附图,并且具体地参考图1-2,提供了数据处理环境的示例图,其中可以实施图示性的实施例。应当理解,图1-2只是示例性的,而不试图主张或暗示对其中可以实施不同有利实施例的环境的任何限制。可以对所描述的环境进行许多修改。

如此处所使用的,术语“至少一个”,当与项目列表一起使用时,是指可以使用一个或多个项目的不同组合,并且列表中的每一项中的仅一个是必需的。例如“项目A、项目B和项目C中的至少一个”可以包括例如(但不限于)项目A或项目A和项目B。这个示例也可以包括项目A、项目B和项目C,或者项目B和项目C。

现在参考附图,图1描绘了其中实施了有利实施例的数据处理系统的网络的图示表示。在这些所描绘的示例中,网络数据处理系统100被用来实施人类行为的建模和仿真研发架构。该架构提供用于预测人类行为的能力。

网络数据处理系统100是其中可以实施有利实施例的计算机和其它设备的网络。网络数据处理系统100包括网络102,该网络102是被用来提供在网络数据处理系统100内被连接在一起的各种设备与计算机之间的通信链接的介质。网络102可以包括诸如有线、无线通信链接、和/或光缆之类的连接。

在所描绘的示例中,服务器104和服务器106与存储单元108一起连接到网络102。另外,客户机110、112和114连接到网络102。这些客户机110、112和114可以是例如个人计算机、工作站计算机和个人数字助理。在所描绘的示例中,服务器104向客户机110、112和114提供数据,例如引导文件、操作系统图像和应用程序。在这个示例中,客户机110、112和114是到服务器104和服务器106的客户机。网络数据处理系统100可以包括附加的服务器、客户机和其它设备(未示出)。使用网络数据处理系统100中的一个或多个数据处理系统可以实施有利实施例中用于预测人类行为的架构。

现在转向图2,描绘了根据图示性实施例的数据处理系统的图。在该示例性示例中,数据处理系统200包括通信结构202,该通信结构202在处理器单元204、存储器206、永久性存储器208、通信单元210、输入/输出(I/O)单元212和显示器214之间提供通信。

处理器单元204用于执行可被加载到存储器206的软件的指令。根据特定实现方式,处理器单元204可以是一组一个或多个处理器或者可以是多处理器核心。而且,可以使用一个或多个异类处理器系统来实现处理器单元204,其中主处理器与辅助处理器一起存在于单个芯片上。作为另一个示例性示例,处理器单元204可以是包含多个相同类型的处理器的对称多处理器系统。

在这些示例中,存储器206可以是例如随机存取存储器或者任何其它适当易失性或非易失性存储器件。永久性存储器208根据特定实现方式而可以采用各种形式。例如,永久性存储器208可以包括一个或多个组件或器件。例如,永久性存储器208可以是硬盘驱动器、闪存、可重写光盘、可重写磁带、或者上面的某一组合。永久性存储器208所使用的介质也可以是可拆卸的。例如,对于永久性存储器208可以使用可拆卸的硬盘驱动器。

在这些示例中,通信单元210提供与其它数据处理系统或设备的通信。在这些示例中,通信单元210是网络接口卡。通信单元210可以通过使用物理通信链接和无线通信链接中的任一个或两个来提供通信。

输入/输出单元212允许与可以连接到数据处理系统200的其它设备的数据输入和输出。例如,输入/输出单元212可以通过键盘和鼠标来提供对用户输入的连接。而且,输入/输出单元212可以将输出发送到打印机。显示器214向用户提供用于显示信息的机制。

用于操作系统和应用或程序的指令被放置在永久性存储器208上。这些指令可被载入到存储器206以供处理器单元204执行。不同实施例的处理可以通过处理器单元204使用计算机实施的指令(其可被放置在诸如存储器206的存储器中)来执行。这些指令被称作可以由处理器单元204中的处理器读取并执行的程序代码、计算机可用程序代码、或者计算机可读程序代码。不同实施例中的程序代码可被包含在不同的物理或有形的计算机可读介质上,例如存储器206或永久性存储器208。

程序代码216以函数形式被放置在可选择性地拆卸的计算机可读介质218上,并且可被载入到或者传递到数据处理系统200以供处理器单元204执行。在这些示例中,程序代码216和计算机可读介质218形成计算机程序产品220。在一个示例中,计算机可读介质218可以是有形形式,例如被插入或放置到驱动器或者作为永久性存储器208的一部分的其它设备的光盘或磁盘,用以被传递到存储设备(例如作为永久性存储器208的部分的硬盘驱动器)。以有形形式,计算机可读介质218也可以采取永久性存储器的形式,例如硬盘驱动器、拇指驱动器或者连接到数据存储系统200的闪存。有形形式的计算机可读介质218也被称作计算机可读存储介质。在一些示例中,计算机可读介质218不可以拆卸。

可替换地,通过到通信单元210的通信链接和/或通过到输入/输出单元212的连接,可以将程序代码216从计算机可读介质218传送到数据处理系统200。在图示性的示例中,所述通信链接和/或所述连接可以是物理的或者无线的。计算机可读介质也可以采取非有形介质的形式,例如包含程序代码的通信链接或无线传输。

针对数据处理系统200图示的不同组件并不意味着提供对其中可以实现不同实施例的方式的结构性限制。该不同的图示性实施例可被实施于包括除了或者代替针对数据处理系统200图示的那些组件的组件的数据处理系统中。从所示的图示性示例中可以改变图2中所示的其它组件。

作为一个示例,数据处理系统200中的存储设备是可以存储数据的任何硬件装置。存储器206、永久性存储器208和计算机可读介质218是有形形式的存储设备的示例。

在另一示例中,总线系统可被用来实现通信结构202,并且可以由一个或多个总线(例如系统总线或输入/输出总线)组成。当然,总线系统可以使用任何合适类型的提供不同组件或者附着到总线系统的设备之间的数据传送的架构来实现。另外,通信单元可以包括一个或多个用于发送和接收数据的设备,例如调制解调器或网络适配器。而且,存储器可以是例如存储器206或例如在可以存在于通信结构202中的接口和存储器控制器集线器中发现的高速缓存器。

在所描绘的示例中,网络数据处理系统100是具有网络102的互联网,代表使用传输控制协议/网际协议(TCP/IP)协议组彼此进行通信的网络与网关的世界范围的聚集。当然,除了或者代替因特网,网络数据处理系统100也可被实现为许多不同类型的网络。这些其它网络包括例如内联网、局域网(LAN)和广域网(WAN)。图1被认为是一个示例,不能被认为是对不同实施例的结构性限制。

现在转向图2,描绘了根据有利实施例的数据处理系统的图。数据处理系统200可被用来实现服务器和客户机,例如图1中的服务器104和106以及客户机110、112和114。在这个图示性的示例中,数据处理系统200包括通信结构202,该通信结构202提供在处理器单元204、存储器206、永久性存储器208、通信单元210、输入/输出(I/O)单元212与显示器214之间的通信。

处理器单元204用于执行可被加载到存储器206的软件的指令。根据特定实现方式,处理器单元204可以是一组一个或多个处理器或者可以是多处理器核心。而且,可以使用一个或多个异类处理器系统来实现处理器单元204,其中主处理器与辅助处理器一起存在于单个芯片上。作为另一个示例性示例,处理器单元204可以是包含多个相同类型的处理器的对称多处理器系统。

在这些示例中,存储器206可以是例如随机存取存储器或者任何其它适当易失性或非易失性存储器件。永久性存储器208根据特定实现方式而可以采用各种形式。例如,永久性存储器208可以包括一个或多个组件或器件。例如,永久性存储器208可以是硬盘驱动器、闪存、可重写光盘、可重写磁带、或者上面的某一组合。永久性存储器208所使用的介质也可以是可拆卸的。例如,对于永久性存储器208可以使用可拆卸的硬盘驱动器。

在这些示例中,通信单元210提供与其它数据处理系统或设备的通信。在这些示例中,通信单元210是网络接口卡。通信单元210可以通过使用物理通信链接和无线通信链接中的任一个或两个来提供通信。

输入/输出单元212允许与可以连接到数据处理系统200的其它设备的数据输入和输出。例如,输入/输出单元212可以通过键盘和鼠标来提供对用户输入的连接。而且,输入/输出单元212可以将输出发送到打印机。显示器214向用户提供用于显示信息的机制。

用于操作系统和应用或程序的指令被放置在永久性存储器208上。这些指令可被载入到存储器206以供处理器单元204执行。不同实施例的处理可以通过处理器单元204使用计算机实施的指令(其可被放置在诸如存储器206的存储器中)来执行。这些指令被称作可以由处理器单元204中的处理器读取并执行的程序代码、计算机可用程序代码、或者计算机可读程序代码。不同实施例中的程序代码可被包含在不同的物理或有形的计算机可读介质上,例如存储器206或永久性存储器208。

程序代码216以函数形式被放置在可选择性地拆卸的计算机可读介质218上,并且可被载入到或者传递到数据处理系统200以供处理器单元204执行。在这些示例中,程序代码216和计算机可读介质218形成计算机程序产品220。在一个示例中,计算机可读介质218可以是有形形式,例如被插入或放置到驱动器或者作为永久性存储器208的一部分的其它设备的光盘或磁盘,用以被传递到存储设备(例如作为永久性存储器208的部分的硬盘驱动器)。以有形形式,计算机可读介质218也可以采取永久性存储器的形式,例如硬盘驱动器、拇指驱动器或者连接到数据存储系统200的闪存。有形形式的计算机可读介质218也被称作计算机可读存储介质。在一些示例中,计算机可读介质218不可以拆卸。

可替换地,通过到通信单元210的通信链接和/或通过到输入/输出单元212的连接,可以将程序代码216从计算机可读介质218传送到数据处理系统200。在图示性的示例中,所述通信链接和/或所述连接可以是物理的或者无线的。计算机可读介质也可以采取非有形介质的形式,例如包含程序代码的通信链接或无线传输。

针对数据处理系统200图示的不同组件并不意味着提供对其中可以实现不同实施例的方式的结构性限制。该不同的图示性实施例可被实施于包括除了或者代替针对数据处理系统200图示的那些组件的组件的数据处理系统中。从所示的图示性示例中可以改变图2中所示的其它组件。

作为一个示例,数据处理系统200中的存储设备是可以存储数据的任何硬件装置。存储器206、永久性存储器208和计算机可读介质218是有形形式的存储设备的示例。

在另一示例中,总线系统可被用来实现通信结构202,并且可以由一个或多个总线(例如系统总线或输入/输出总线)组成。当然,总线系统可以使用任何合适类型的提供不同组件或者附着到总线系统的设备之间的数据传送的架构来实现。另外,通信单元可以包括一个或多个用于发送和接收数据的设备,例如调制解调器或网络适配器。而且,存储器可以是例如存储器206或例如在可以存在于通信结构202中的接口和存储器控制器集线器中发现的高速缓存器。

作为客户机,数据处理系统200可以采取各种形式。例如,数据处理系统200可以采取平板计算机、膝上型计算机、工作站、个人计算机、电话设备或者个人数字助理(PDA)。

不同的实施例提供了可被用来预测一组人可能如何地单独反应和/或作为当经受一系列动作和/或事件的一组的仿真环境。以这种方式,可以使用被用来帮助判断针对所述组将要采取最后一组行动的结果,来仿真不同的“如果...将会怎样”情境。

不同的实施例提供了用于仿真人类行为的计算机实施方法、装置和计算机可用程序代码。在一个实施例中,源代码被放置在网络数据处理系统(例如图1中所示的网络数据处理系统100)中的存储器系统中。源代码用于预测人类行为。解释器在网络数据处理系统中的硬件上执行。该解释器使用源代码执行仿真,以便生成新的定义和解释后的源代码。在网络数据处理系统中的硬件上执行的图形用户接口处理器接收解释后的源代码,并且使用这个解释后的源代码生成设备相关输出。该设备相关输出被发送到与图形用户接口处理器通信的一组设备。

这些设备显示设备相关输出并且接收用户输入。接收到的用户输入被返回到图形用户接口处理器,该图形用户接口处理器依次将接收到的用户输入发送到解释器。该解释器使用接收到的用户输入和新的定义来改变或者修改源代码。在这些示例中,新的定义是用于修改现有源代码或者将新的信息添加到现有源代码的信息。这个修改后的源代码随后被执行来生成新的定义和新的解释后的源代码。以这种方式,在这些有利实施例中,生成反馈循环,以便改变源代码。

现在转向图3,描绘了图示根据有利实施例的仿真系统的图。系统300是可以在图1中的网络数据处理系统100中实现的仿真系统的示例。具体地,系统300可以使用一个或多个数据处理系统(例如图2中的数据处理系统200)来实现。

在这些示例中,定义302由系统300基于动作304来处理。动作304被应用到定义302以便执行人类行为的仿真。在这些示例中,可以通过系统300的用户来选择动作304。可以从配置文件中或者通过程序或处理来选择动作304。在这些示例中,定义302是用于仿真的源代码的一部分。

系统300使用动作304来修改定义302,以便生成定义306。在这些所描绘的示例中,定义306是被用作基于对定义302采取的动作304提供结果的输出的新的定义。另外,定义306被用来修改定义302,随后该定义302被用来继续执行仿真。该连续反馈发生,以便将从不同迭代中学习的能力提供给系统300。另外,先前仿真的结果被存储在定义302中,允许系统300从先前仿真学习。

在这些示例中,定义302是一组人以及该组人生存的环境的表示。环境的描述包括有形形式资产和无形形式资产两种。另外,定义302也包含不同人以及对应用于该组人和环境的不同事件或者输入的反应的描述,该不同人可以居住在除了定义动作的国内关系以外的组中。

系统300可被用作仿真池以便当对定义302中描述的该组人采取某些动作时预测结果和各种反应和/或影响。换句话说,当对定义302应用或采取动作304时,系统300可被编程来访问例如经济上、社会上和心理上的影响。

在图示性的示例中,使用计算机语言来写定义302。在所描绘的示例中,计算机语言是解释性语言,其使用解释器来执行仿真,但是对于执行而不需要编辑。可以使用考虑定义在仿真处理中包含的各种对象的任何语言。例如,C和C++是在这些示例中可以使用的解释性语言的示例。在这些示例中,对象的定义包括人类以及人类居住的环境。不同的有利实施例提供了针对系统300的架构以及定义302和动作304。

现在参考图4,描绘了根据有利实施例的人类行为建模和仿真研发架构的图。架构400是图3中系统300的架构的示例。在这个示例中,架构400包括源代码402、解释器404、图形用户接口(GUI)处理器406和设备408。

源代码402是架构400中包括数据库的所有信息的模块。了解仿真的任何事物被存储在这个特殊组件中。源代码402包括运行仿真所需的所有信息。该信息包括例如对人类组的定义和使用该定义执行仿真所需的代码。源代码402也包括可以对该定义采取的动作以及用于展示结果的代码。

用于源代码402的语言可被修改为包括特定用于仿真和预测人类行为的功能和特征。具有这些特征的语言被称作人类行为定义语言(HBDL)。可以使用当前可用的语言例如C或者C++来实现HBDL。当然,在这些实施例中,可以使用任何解释性语言来实现HBDL。

而且,使用完全新的语言而不是使用被修改来为仿真人类行为作准备的现有语言,可以实现HBDL。在图示性的实施例中,可以使用不同的语言来实现HBDL的不同组分。在这些示例中,源代码402是以HBDL写的数据库并且可以跨越位于不同地理位置的不同存储设备上分布。

解释器404从源代码402中收集数据410以便执行仿真。在这些图示性的示例中,数据410包括人类组和它们的环境、以及将被应用到人类的动作的定义。而且,数据410也包括来自用于生成源代码402的编程语言的声明或范围(lines)。数据410中的这些声明被解释器404用来执行仿真。

数据410中的声明可以包括例如用于仿真合成人类的人工智能程序的代码。这些声明也可以包括例如用于模糊逻辑神经网络和用于执行仿真的其它处理的代码。另外,数据410也可以包括用于生成图形用户接口(GUI)以便呈现结果的处理或代码。以这种方式,源代码402包括关于人类组和环境的信息以及执行仿真所需的处理或代码。根据实现方式,这些声明可以是C或C++。可替换地,声明可以是更高级的语言,解释器404将该更高级的语言翻译成C或C++声明用以执行。

这个仿真生成图形数据412,该图形数据412被发送到GUI处理器406。在这些示例中,图形数据412的形式是不需要可能降低网络的大量数据传输。在图示性的实施例中,图形数据412采用基元的格式。通过发送基元,而不是要求传送更多数据的位图或者其它格式,减少了网络上所使用的带宽量。在一些情况下,可能需要发送图形数据412中的一些位图,但是当可能时使用基元。

相反,图形数据412被GUI处理器406处理来生成设备数据414,该设备数据414被设备408显示。在这些示例中,设备数据414可以是例如由设备408显示的像素数据或位图。

设备408也可以接收用户输入以便生成设备数据416,该设备数据416被GUI处理器406接收。GUI处理器406将设备数据416转换为需要较少使用网络资源来传输的格式。在这些示例中,用户输入418被返回到解释器404。用户输入418和来自从数据410的仿真的结果被用来生成修改420。修改420被用来覆盖或修改源代码402。这些修改被用来修改源代码402中的定义。修改420类似于图3中的定义306,该定义306被用来修改图3中的定义302。以这种方式,源代码402可被改变来考虑由解释器404执行的仿真的结果和从设备408接收到的用户输入。

修改420也可以包括例如将用于正被解释器404执行的仿真或者其中包含的动作的选择。在这些示例中,可以从在设备408处生成的用户输入中接收动作和修改420的该选择。

数据410可以包括例如图3中的定义302和动作304的信息。修改420可以包括例如图3中对定义306的改变的信息。这些改变可以例如是对现有定义的修改或新定义的添加。在这些示例中,图形数据412被用来呈现图3中的定义306。

架构400中的不同模块的图示并不意味着暗示对可以实现这些模块的方式的结构性的限制。例如,不同的模块可以包括实现架构400中的不同特征的子模块或处理。而且,特殊模块可被实现在单个数据处理系统上或者可以跨越多个数据处理系统扩展。

使用架构400的模块性,不同模块可被分布到网络上的不同位置,以便最大化硬件资源的使用。架构400中的这种模块性在允许其它功能性被迁移或者被分布到网络数据处理系统中的远处位置的同时,也考虑一些功能性的集中度。例如,将图形处理和设备相关数据放置在集中环境中并且随后在网络上将该信息发送到远程设备,提供了一些优点。通常,图形数据尺寸较大,并且可能降低网络速度。结果,信息和处理的这种类型的集中会引起关于等待时间(latency)、数据传输和数据同步的问题。架构400被设计成使得架构400的实现可以避免这些问题。

接着参考图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的一种方式的示例。

源代码510也可被存储在特定网络上而不是跨越不同位置的单个存储系统上。存储源代码510的一些存储设备可以是存储源代码510的副本的备用设备。使用这种实现方式,能够迁移其它位置的系统的部分,以享有可能在那些位置中发现的优势,而不是将该实现方式限制到特定位置。

在这个示例中,解释器518位于数据处理系统520上。数据处理系统520可以使用数据处理系统(例如图2中的数据处理系统200)来实现。数据处理系统520连接到局域网508。解释器518从跨越不同网络的不同存储设备中的源代码510收集数据,以便执行仿真。

仿真的结果被发送到GUI处理器522,该GUI处理器522也被放置在数据处理系统520上。GUI处理器522生成设备数据用以在设备523上显示。另外,解释器518可以将图形数据发送到数据处理系统526上执行的GUI处理器524和数据处理系统530上执行的GUI处理器526。GUI处理器524生成设备数据用以在设备530上显示,同时GUI处理器528生成设备数据用以在设备532上显示。GUI处理器522、524和528分别位于接近设备523、530和532。

以这种方式,由这些处理器生成的数据不需要使用大量的网络资源。在这些示例中,在图4中的架构400中描述的GUI处理器模块被复制在系统500内的多个不同位置,以便最小化使用以可以降低网络资源速度或者使用大量网络资源的方式经由网络将图形数据传送到远程设备。

现在参考图6,描绘了图示根据有利实施例的源模块代码的图。在这个示例中,源代码600是图4中的源代码402的更详细的图示。

源代码600包括定义602、动作604和图形用户接口(GUI)语言606。定义602和动作604被引导朝向环境中人类组的模拟。GUI语言606被利用来呈现结果并且接收来自所述仿真的结束用户的用户输入。使用GUI语言606,源代码600控制设备上结果呈现的外观。在这些示例中,使用GUI语言606来控制该结果的外观。

而且,在这些示例中,源代码600是自适应的并且开放的。源代码600包括用于模拟的信息和用于执行或者进行仿真的实际语言。源代码600取走从读取并解释数据库的传统应用中做出的判断。相反,源代码600是包括所述信息和所述应用的数据,其中所述信息和应用可以根据通过执行仿真而生成的结果而改变。

数据608表示数据到解释器(例如图4中的解释器404)的流动。修改610呈现对从解释器接收到的源代码600的改变。数据608包括从定义602、动作604和GUI语言606到解释器的信息以供在执行仿真时使用。在这些示例中,源代码600是自由格式数据库。

在这些图示性示例中,以HBDL写源代码600。作为一种自由格式数据库,源代码600不需要不同组件之间的分隔符的效果。可以使用单条线来写源代码600内的程序。源代码600也可以包括环路、情形声明、条件跳跃和其它类似声明,以便更改仿真的执行。

而且,源代码600包含存储部分代码的对象。结果,对象可以反复被调用,而不需要副本。而且,在源代码600内,对象可被索引并且定义成包含默认参数。以这种方式,在源代码600内使能智能对象的创建。

而且,在源代码600内可以定义不同类型的变量。这些类型的变量可被指向特定任务。例如,除了传统的数字类型,源代码600可以包括诸如人类、个人、家庭、动作、时间表、日期和其它之类的类型。另外,源代码600提供基于时间表的执行模型用以执行仿真。在源代码600内,人工智能组件可以与功能命令一起被提供用以支持这些组件。

在源代码600内,定义602描述了人类组和该人类组居住的环境。动作604表示在仿真期间应用到定义602的影响。在这些示例中,动作604是被称作投入到时间表的事件的一部分或一小片代码。

在这些示例中,参与仿真的人类以及使用仿真的人类被源代码600处理。参与仿真的人类可以是真实的人或者是合成人。定义602、动作604和GUI语言606包括功能码以及参数。功能码和参数以及其它信息被输出作为数据608用以通过解释器解释。

通过将该信息移动到源代码600,源代码600能够控制仿真。以这种方式,仿真不再是特定的应用,就象当前使用风格和语言编写的那样。例如,一旦在定义602中定义了特殊项目,则可以用动作604中的预定动作集来使用该项目。例如,在与动作604中运行的动作一起使用的定义602中,可以定义类型X的人。结果,可以创建并运行无限数量的仿真,而不记录人类X并且不对每个仿真运行。

而且,使得GUI语言606位于源代码600内意味着定义602和动作604可以控制呈现给用户的显示。以这种方式,源代码600实际上是数据库,其负责仿真的用户看到什么。这个特征也支持定义和知识的可重复使用性,以便使得将会创建无限数目的仿真,而不必定制编写对应用的仿真或者对每个仿真的程序。

当前系统利用在从最开始被编码的单个仿真中静态的数据。最多,仿真单个对象的代码被保存在库中,但是对于每个仿真,用于每个对象的动作是唯一的。所述动作通常是以单独的程序编写的。结果,当前使用的技术要求对于每种特定类型的仿真的实质编码。而且,在当前实践下,图形用户接口通常被重新使用并且在应用程序的控制下。

结果,这些接口不改变特殊仿真,而不必记录或重写应用程序。以这种方式,使用有利实施例中的源代码设计,与当前使用的用于仿真的技术相比,对于显示结果和接收用户输入呈现出更大的灵活性。

GUI语言606提供被解释器通过图形用户接口处理器(例如图4中的GUI处理器406)选择性发送的代码。该代码提供对末端用户的显示或视觉画面以及在各种显示处提供的输入和输出控制。GUI语言606控制每个末端用户在他们的屏幕上看到什么以及每个用户与系统交互作用的方式。在这些图示性示例中,GUI语言606是HBDL的子集。根据特殊实现方式,GUI语言606可以使用不同的语言来实现,以便提供不同的有利特征。以这种方式,不同的有利实施例示出了对源代码600的控制。

具有由源代码600内的GUI语言606控制的输入和输出的优势是在末端设备处提供的用户接口可以被仿真来控制。仿真通常涉及具有不同背景的用户。定制各种用户接口的能力有助于这些用户快速地理解系统。因此,减少了执行仿真的学习曲线。而且,仅最相关的信息被呈现给不同用户,这增强了仿真的相关性。

例如,不同用户对于特殊仿真可以需要不同的用户接口。一些用户可被提供用户接口来从动作604中选择特殊动作以便应用于定义602。其它用户能够代替定义602中定义的合成人。这种用户被从选择动作的用户中提供不同的用户接口。

而且,正被执行的不同仿真也要求不同类型的接口。这种结构也提供了动态添加或者简化用户接口的能力。以这种方式,用户接口可以按实施方式相关的方式来提供。

另外,不同的仿真可以强加新参数和新环境。这些新的和变化情形意味着将要分析不同的数据集。这些情形也可以包括需要包括不同的用户或专家。当通过源代码600提供时,即将到来任务的这种不断变化的特性强加了对多种自适应环境的需要。源代码600在定义602、动作604和GUI语言606内提供了该范例。

在这些图示性的示例中,GUI处理器处于源代码600的控制下并且当与目前使用的仿真系统同时发生时不是静态应用程序,GUI语言606为硬件提供抽象层。GUI语言606的内容确保以可预测的方式发生仿真处理并且从各种用户和设备传递和接收适当的信息。GUI语言606包含在其上实现解释器和GUI处理器的任意硬件上运行所必需的所有代码。以这种方式,当硬件变化发生时,仅环绕硬件的底层部分必须被重写。

在这些图示性示例中,GUI语言606提供各种结构以便创建在运行时间期间用户接口的必要元素。这些元素包括例如鼠标跟踪运动、鼠标点击运动、类似操纵杆、菜单、窗口、对话框、复选框、无线按钮、列表框和表格。使用这些和其它元素,实现图形用户接口会变得更容易。而且,在使用GUI语言606创建图形用户接口中生成的输出可被保存在GUI语言606中以供后来使用。

GUI语言606提供大量的不同特征,以便允许源代码600呈现和接收关于人类组的仿真和人类组居住的环境的输入。GUI语言606提供了三维基元(primitives)组。这些三维基元支持一些特征,例如用于控制假定相机和查看端口的一组命令。也包含一些数学函数(包括矢量和矩阵运算)以及输入和输出不同类型的图形文件格式的能力。

GUI语言606内提供的特征也可以包括创建嵌有不止三维数据的三维对象。例如,这些三维对象可以包括其它信息,例如关于三维对象的价格、重量、颜色、价值或者规则。当然,任何种类的信息可被嵌入或者与这些三维对象相关联。

而且,GUI语言606也可以包括三维模型和堆栈、以及用于管理该模型和堆栈的一组命令。该三维模型和堆栈考虑将被应用于不同三维实体的复杂变换的创建。以这种方式,可以生成其中对象被暂时影响的不同的世界。

GUI语言606为大型三维数据库带来了创建和维护简单的优点。在定义602内可以发现这些数据库。该数据库可被用来呈现任意三维对象,不管是对象的大小、复杂度或特性。

而且,GUI语言606提供建立语言的图形用户接口。这个语言允许源代码600控制每一末端用户设备的感知(look and feel)。GUI语言606可以包括二维基元,例如点、线、曲线和表面。而且,也存在一组二维控制对象。这些二维控制对象包括例如窗口、对话框、请求者(requestor)、复选框、无线按钮和菜单。

接着参考图7,描绘了图示根据有利实施例的源代码的定义部分的图。定义700是图6中的定义602的更详细的图示。定义700包括资产702、人704和内部关系706。

资产702包括人类所在的环境中的有形资产708和无形资产710两者。有形资产708包括活体对象和无生命对象。活体对象可以包括例如牲畜、鸟类、细菌和植物。无生命对象可以包括例如房屋、山脉、湖泊、汽车、桌子、笔、飞机或枪支。

无形资产710可以包括例如用于正被仿真的人类组的规则、法律和条例。无形资产710也可以包括被解释器用来处理所述资产的信息。该信息也可以包括普通代码、库和例程。

更具体地,这类资产包括例如数学库、图形库、二维基元库、三维基元库、模型和堆栈管理库、人工智能库、输入/输出库、加密库、网络库、系统调用库和时间管理库。换句话说,无形资产710可以包括执行仿真所必需的任何信息。

人类704描述在人类组中存在的各种人类特性。人类704可以包括细述在人类组中的人当中的各种家庭树和关系的信息。而且,人类704包括创建各个个体的心理简档所需的信息。

内部关系706包含在定义700中被人工智能使用的动作和反应。这些动作和反应能够以各种方式触发。例如,所述触发可以是随机的、基于警报、状态机、或者作为对应用于定义700的一组事件的反应。

资产702内的不同对象可以依赖无形资产710来执行必需的功能和计算。普通代码、库和例程是支持不同编程任务所必需的代码。这些不同组分可被作为数据发送到解释器以供在执行仿真中使用。三维对象是组成不同世界的所有对象,包括活体对象和无生命对象。

现在参考图8,描绘了根据有利实施例的对象的方框图。在这个示例中,对象800是图6中的定义602内的对象的一个图示性实施方式的例示。在这个图示性示例中,对象800包括人工智能802、特征804和内部关系806。

人工智能802包含用于仿真特殊对象的代码。在这些示例中,对象800是活体对象,例如人、植物或动物。人工智能802包含仿真被选对象的动作和反应所必需的代码。

特征804包括特殊对象的特征的识别。例如,如果对象802是人,则特征804可以包括例如人的身高、体重、皮肤颜色、头发颜色、眼睛颜色、体形和任何其它合适特征。特征804可以包括其它物理特征,例如这个人可以跑多快、这个人的敏捷度和这个人的耐力。

特征804中的非物理特征可以包括例如但不限于忍耐性、同情心、情绪、智力和人际关系。人工智能802可以使用特征804来仿真对象800的动作和反应。具体地,在所描绘的示例中,使用特征804来仿真人类行为。

人工智能802的复杂度和特征804内的特征的数量将根据特殊实现方式而变化。这些成分的复杂度随着使得仿真与真实对象不可区分的期望性能增加而增加。

内部关系806包括可被人工智能802用来触发事件的动作和反应。这些事件包括对象800采取的动作。这些动作可以由对象800启动,或者所述动作可以是响应于对对象800采取的动作而发生的动作。对对象800采取的这些动作可以是指向于对象800的动作或者可以是由对象800基于仿真期间该对象800所处的环境而觉察的动作。

现在转向图9,描绘了根据有利实施例的对象的图。在这个示例中,对象900是可以使用图6中的定义602仿真的无生命对象的示例。对象900可以是例如汽车、笔、飞机、山脉或者湖泊。

在这个示例中,对象900包括模型902和特征904。模型902包括用于仿真特殊对象的代码。模型902包括用于仿真特殊对象的功能的代码。例如,如果对象900是汽车,则对于产生某些结果的汽车执行各种动作。例如,可以打开引擎,并且车轮可以转动。

模型902可以例如是数学模型。例如,可以使用有限状态机器组来对汽车的功能和操作建模。模型902中可以包括其它功能和处理,例如通过随时间使用和曝露于环境对正被建模的对象仿真老化。

特征904识别汽车的各种特征,例如轮胎大小、引擎大小、油漆颜色、无线电类型和内部空间量。而且,特征904也可以包括针对对象900的关于汽车特色的其它信息。例如,针对特征904内的特殊轮胎类型,可以识别轮胎上的胎面量。

模型902被用来响应于由对对象900采取的各种动作仿真汽车做什么,例如用户驾驶汽车、在特征904中识别的轮胎上发生的磨损。该磨损被记录在特征904内。磨损可以是模型902内的算法的一部分。而且,在汽车示例中,模型902可以考虑环境曝露(例如阳光和冰雹),以便呈现模型902的陈旧外观。对于这些对象可以执行由图8中的对象800以及图9中的对象900执行的不同动作,并且在图6中的动作604内可以定义由图8中的对象800以及图9中的对象900执行的不同动作。

现在参考图10,描绘了根据有利实施例的动作对象的图。在这个示例中,动作对象1000是可以在图6的动作604内发现的动作的示例。

动作对象1000包括动作1002、对象1004、用户许可1006和图形用户接口(GUI)1008。动作1002可以是例如可以执行的动作,例如谈话、击打、移动、坐下、抓、讲或者看。对象1004是其中可以采取动作的对象的识别。用户许可1006确定特殊用户是否可以对对象1004执行动作1002。图形用户接口1008识别呈现给特殊用户的用户接口的类型。

对象1004可以是无生命对象或活体对象。用户许可1006被用来确定某些用户是否能够对对象执行选择性动作。在一些示例中,特殊用户不期望对对象执行动作。图形用户接口1008识别对对象的动作被呈现给用户的方式以及用户与对象的交互作用可以如何发生。

图8、图9和图10中的对象的图示被呈现,其目的是图示其中可以使用当前可用的编程语言和方法论来实现图6中的源代码600的一种方式。然而,这些示例并不意味着对可以使用图6中的源代码600的方式的限制。

现在转向图11,描绘了根据有利实施例的动作的应用的图。在这些示例中,时间表1100图示了在仿真期间定义(例如图6中的定义602)经受的影响。在这些图示性示例中,诸如图6中的动作604的动作被称作时间表1100上的事件。这些动作是代码的一小片或一部分。具体地,动作包括事件1102、事件1104、事件1106和事件1108。在这个示例中,事件1102是在时隙1110处应用的。事件1104在时隙1112处发生,事件1106是在时隙1114期间应用的。事件1108在时隙1116期间发生。这些事件可以是自然程序上的或者是驱动的事件。换句话说,所述事件可以是响应于由解释器发出或生成的各种消息而应用的。

在这些示例中,如果必要,在执行中间期间,由时间表1100的执行发出的主中断会中断这些事件,并且仿真立即传递到仿真的下一时隙。与当前使用的编程语言不同,其中源代码的执行或者是程序上的或者事件驱动的,在有利实施例中,源代码中的动作遵循基于时间的执行模型。在这些示例中,时隙可以具有各种粒度(granularity)。例如,每个时隙可以表示星期、日、小时、分钟或者某一其它时间段。

在所描绘的实施例中,时间表1100在调度程序(将在后面更详细地描述)的监督下运行。该调度程序运行事件1102、1104、1106和1108,它们与时间表1100相关或者附着到时间表1100。调度程序对这些事件具有全面的控制,并且可以按需要中断它们。而且,调度程序运行存储器管理器和存储器恢复设施。以这种方式,为被中断的任务分配的全部存储可以变得可用于即将到来的事件。

现在转向图12,描绘了图示根据有利实施例的在具有调度程序中断的时间表上应用动作的图。在这个示例中,时间表1200包括事件1202和事件1204。事件1202在时间表1200上的时隙1206期间开始执行。在这个示例中,事件1202包括输入1208、判断1210和处理1212。事件1202在时隙1206期间开始执行。当时隙1206结束时,调度程序在点1214处中断事件1202的执行。然后,执行被传递到针对时隙1216的事件1204,该时隙1216在时隙1206之后开始。在这个示例中,在时隙1206与时隙1216之间不存在重叠。

现在转向图13,描绘了图示根据有利实施例的其中时隙重叠的事件应用的图。在这个示例中,调度程序执行时间表1300,该时间表1300具有附着到各种时隙的事件1302、1304、1306和1308。事件1302被附着到时隙1310。事件1304被附着到时隙1312或者与时隙1312相关联。事件1306和1308被分别附着到时隙1314和1316。

在这个图示性示例中,不同的时隙可以彼此重叠。换句话说,一个时隙可以比另一个时隙持续更长时间段。如图示的,时隙1310和时隙1312彼此重叠。结果,事件1302和事件1304可以在某一时间段(契其中时隙1310和时隙1312重叠)期间同时运行。在这个特殊示例中,事件1302被提供更长时间以执行。

时隙的重叠并不意味着在重叠发生的时间瞬间期间事件会合并。在这些图示性示例中,如果由于任何原因针对时隙1310的事件1302的中断发生,则如果该中断是在时隙1312的执行开始或者期间之前发生的,则控制传递到时隙1312。然而,如果在时隙1310期间但是在时隙1312的结束之后发生中断,则控制被传递到时隙1314中事件1306的执行。

现在参考图14、图15和图16,描绘了图示根据有利实施例的持续事件的图。如图示的,时间表1400包含事件1402、持续事件1404和事件1406,这些事件都被附着到或者被分配到时隙1408。事件1410与时间表1400上的时隙1412相关联。事件1414被附着到时隙1416,而事件1418被附着到时隙1420。可以毫无间断地或者假定延长地(given extensions)进行事件。当等待来自末端用户的输入或者来自仍未终止但是必需的某一其它事件的输入时,可以存在这种事件。在这些示例中,这种事件是持续事件,例如持续事件1404。可以从一个时隙到另一个时隙继续持续事件1404,直到事件完全发生为止。

如图15中所示,持续事件1404变成附着到时隙1412。在图16中,持续事件1404再次延长或移动到时隙1416。在这些示例中,在这个特定时隙期间完成持续事件1404。

现在转向图17,描绘了图示根据有利实施例的解释器的图。解释器1700是图4中解释器404的更详细的图示。解释器1700是将以一种语言编写的源代码转换为以其它语言编写的目标代码的程序。当解释器继续处理源代码时,解释器1700也执行目标代码。该目标语言可以是以其它高级语言或者由特殊数据处理系统或处理器使用的语言编写的。

对于将被正确地解释和执行的任何程序,根据由该语言定义的结构来组织源代码。具体地,这些结构是依照句法的结构。完整结构集形成用于源代码的语言的语法。解释器1700丢弃不是根据这些结构组织的或者语法上不正确的任何代码。

解释器1700包括通信模块1702和语言解释器1704。另外,解释器1700包括加密/解密模块1706,其为解释器1700与GUI处理器(例如图4中的GUI处理器406)之间的信息的安全发送和接收作准备。

在这些图示的示例中,语言解释器1704接收HBDL 1708。HBDL 1708是数据的示例,例如从源代码模块(例如图4中的源代码402)接收的图4中的数据410。HBDL 1708被语言解释器1704解释来执行仿真。结果是解释后的HBDL(IHBDL)1710,其被发送到加密/解密模块1706用以加密。在加密之后,加密结果被作为加密后的解释后的HBDL(EIHBDL)1712发送到GUI处理器,例如图4中的GUI处理器406。EIHBDL 1712是图4中的图形数据412的示例。用户输入当被来自一组设备的GUI处理器收集时被接收作为加密后的HBDL(EHBDL)1714。EHBDL 1714是图4中的用户输入418的示例。该加密后的信息被解密并且被发送到通信模块1702作为HBDL1716。

HBDL 1716是被用来修改源代码的用户输入的示例。所述修改可以是例如改变源代码内的定义或者选择将应用于所述定义的动作。另外,语言解释器1704的输出被发送到通信模块1702作为HBDL 1718以供修改源代码时使用。HBDL 1716和HBDL 1718被通信模块1702用来形成HBDL 1720,该HBDL 1720用于修改源代码。HBDL 1720是对于被用来修改源代码的图4中的修改420的格式的示例。如可以看出的,HBDL 1718为由语言解释器1704生成的输出而提供反馈,以便修改源代码。

更具体地,通信模块1702包括调度器模块1722、输入模块1724和注册模块1726。语言解释器1704包括词汇分析器1728、语法剖析器1730和执行模块1732。

语言解释器1704包含处理词汇分析、语法剖析和进行判断的模块。当数据被接收为HBDL 1708时,词汇分析器1728以源代码语言将HBDL 1708中的数据仔细分析为单独的标记或字。在这些图示性示例中,源代码是以HBDL编写的。换句话说,词汇分析器1728以HBDL 1708识别不同的标记或成分。这些标记被发送到语法剖析器1730,该语法剖析器1730将所述标记分组为用于HBDL 1708的有意义的句子或声明。一旦构造HBDL 1708的句子或声明,语法剖析器1730就将该声明发送到执行模块1732。随后相应地采取基于这些声明的动作。

执行模块1732包括大量用于执行仿真的不同子模块。在这些示例中,执行模块1732生成解释后的HBDL(IHBDL)1710和HBDL 1718。HBDL 1710采取图形数据(例如图形基元)的形式。HBDL 1718是修改后的或新的定义,用于修改源代码。HBDL 1718被返回到输入模块1724,以供在修改或重写源代码时使用。输入模块1724将HBDL 1718中的新定义传递到调度器模块1722,该调度器模块1722调度将被编写为源代码的HBDL 1720。

在这些图示性的实施例中,语法剖析器1730启动词汇分析器1728和执行模块1732。语法剖析器1730请求来自词汇分析器1728的标记。词汇分析器1728接收来自HBDL 1708的字符以便生成标记。每次生成一个标记时,词汇分析器1728将该标记发送到语法剖析器1730。语法剖析器1730使用该标记生成一个或多个剖析树。当完成剖析树时,语法剖析器1730基于所完成的剖析树请求将被执行模块1732执行的动作。

在这些图示性示例中,每个剖析树表示一产品。产品具有一组一个或多个动作,所述动作在每次标记流匹配产品的定义时被激起(fire)或执行。响应于来自语法剖析器1730的请求,执行模块1732执行语义分析,以便确定在对动作的指令中是否发现任何语义错误。如果出现错误,则报告该错误。否则,执行对该组动作的指令。使用对沿着线路分配的完成产品实施的动作,进行递归回到非终端调用器(recursive return to non-terminal callers)。

在这些示例中,执行模块1732确定在由语法剖析器1730创建的剖析树中生成的指令是否语义上正确。在这些示例中,如果语义错误发生,则执行模块1732生成一个错误并且忽略该指令。然而,在一些情况下,如果对于执行模块1732呈现足够的信息进行校正,则可以校正该错误。

当用户输入被接收为EHBDL 1714时,加密/解密模块1706对所述信息进行解密以便形成HBDL 1716。HBDL 1716是被注册模块1702接收到的HBDL的非加密形式的用户输入。注册模块1726注册并验证返回用户输入的每个用户。这个注册模块确保仅被授权的或者注册的用户被允许将输入返回到系统。例如,注册模块1726可以对特殊用户验证密码。

一旦用户被验证,则HBDL 1716的用户输入被传递到输入模块1724。输入模块1724充当一个焦点,集中所有形式的输入并且将具有特定指令的输入发送到调度器模块1722。输入模块1724可以添加调度器模块1722必需的指令以便处理该输入。在这些示例中,所述输入定义在源代码中什么要改变。

在这些示例中,特定指令包括下列指令,例如关于源代码的什么部分可被特殊用户修改的指令。例如,如果用户输入修改定义,则该指令告知将要修改源代码的什么部分。可以使用生成输入的用户的识别和输入自身来识别将被输入修改的源代码的部分。

然后,调度器模块1722确保当HBDL 1720被发送回源代码时重写源代码的适当部分。调度器模块1722确定是否使用具有用户的识别、输入和将被编写的源代码的一部分的一策略对源代码编写。该策略是用于确定是否响应于输入对于源代码进行编写的一组规则。该策略提供了冗余以便防止其中未被授权的用户可能得以通过注册模块1726的情况。例如,未被授权的用户可以哄骗真实用户并且提交输入。该策略可以识别输入作为将不被真实用户进行或者不是由真实用户进行的输入的特征的改变。在这种情况下,所述输入被调度器模块1722拒绝。

在这些示例中,每个用户具有用户可以添加或修改的它们自己的动作组。结果,用户可以仅修改源代码的动作片段。来自执行模块1732的输出HBDL1718可被用来重写定义和动作。在这些情况下,语言解释器1704也被认为是系统中的另一用户。然而,解释器是永久被授权的用户。调度器模块1722同样地查看语言解释器1704,以便使用HBDL 1718来重写定义。

结果,在仿真的任意给定点处,真实人末端用户可以替换数据库中的任意定义的人。通过这一数据流,解释器1700可以重写或者变更源代码。随着时间流逝和仿真运行,定义被恒定地生成用以重写源代码。

输入模块1724提供仿真中正被执行的“虚拟世界”与在与系统通信的设备处由用户通过用户输入接收的“真实世界”之间的连接。调度器模块1722提供一种机制来编写新定义,以便修改源代码。

接着转向图18,描绘了图示根据有利实施例的词汇分析器的数据流的图。如图示的,词汇分析器1800接收源1802并且处理源1802以便生成标记1804。词汇分析器1800是图17中的词汇分析器1728的示例。词汇分析器1800逐个字符地从源1802中读出内容,并且将来自源1802的输入字符分组为称作标记的基本单元,例如标记1804。

在这些图示性示例中,使用常规表达1806中的一组标记描述来执行将源1802中的字符分组为标记1804。常规表达1806包含将源1802中的字符分组为标记1804所需的描述。在这些示例中,常规表达1806可以使用脚本来实现。这些脚本使用描述供在将字符分组为标记中使用的字符图案的语言的符号。

常规表达1806中定义的每个常规表达被分配一符号。该符号通常是数字。使用针对常规表达1806中的特殊常规表达的符号,识别由词汇分析器1800在标记1804中生成的标记。

除了常规表达1806,词汇分析器1800也使用保留字1808。当标记被识别在源1802内时,保留字1808内的字也被分配一符号。保留字是对于一种语言具有特殊语法含义并且在那种语言中不能被用作识别符的字。

现在转向图19,描绘了图示根据有利实施例的由语法剖析器剖析或语法分析的图。图19中图示的剖析可以由图17中的语法剖析器1730来执行。树1900是可被语法剖析器用来分组标记的剖析树的示例。在这个示例中,图示了声明1902的剖析。声明1902是var1=20。这个声明被用来管理或定义将被解释器执行的动作。

具体地,语法剖析器根据一组语法结构(也称作产品)来识别词汇分析器产生的标记之间的关系。每个产品表示逻辑单元并且通常以其它逻辑单元中的标记来定义。大多数语言定义两种广泛类型的逻辑单元。在这些示例中,这些逻辑单元是声明和表达。表达通常是提供值的语法语言结构。声明是改变变量的状态、控制程序流、或者执行由语言支持的其它操作的语法结构。

语法剖析器将标记流分组为逻辑单元,并且指示执行模块基于逻辑单元来执行动作。在这个示例中,声明1902包含由词汇分析器产生的标记流。这些标记是varname 1904、EQ 1906、表达1908和NL 1910。表达1908包含整数、INT 1912。Varname 1904的值是var1;EQ 1906的值是=;INT 1912的值是20;和NL 1910的值是\n。如可以看出的,假设标记流,语法剖析器基于流中的标记序列重新生成语法。

现在转向图20,描绘了图示根据有利实施例的剖析树的另一示例的图。在这个示例中,剖析树2000是从声明2002中生成的。在这个示例中,声明2002是输出=var1+var2*var3。

在这个示例中,声明2002的标记包括varname 2004、EQ 2006、varname2008、加法2010、varname 2012、MUL 2014、varname 2016和NL 2018。Varname2004具有值output;EQ 2006具有值=;varname 2008具有值var1;加法2010具有值+;varname 2012具有值var2;MUL 2014具有值*;varname 2016具有值var3;以及NL 2018具有值\n。声明2002的=符号的另一侧的表达由标记varname 2008、加法2010、varname 2012、MUL 2014和varname 2016来定义。

通过关于识别节点的这些标记的位置,在剖析树2000中表示了语言中这些表达和它们的用途的识别。例如,表达2020表示表达2022和2026是使用算子2024来运算的。在这种情况下,算子2024是加法2010。表达2020也包括表达2026,其识别当使用算子2032时运算的表达2028和2030。在这个示例中,表达2022包含varname 2008,而表达2026包括将算子2032应用于表达2028和2030的结果。

现在转向图21,描绘了根据有利实施例的解释器中的执行模块的图。在这个示例中,执行模块2100是图17中的执行模块1732的更详细的图示。如所图示的,执行模块2100包括主时间表控制模块2102、数学模块2104、物理模块2106、人工智能(AI)模块2108、报告生成器2110和图形模块2112。

主时间表控制模块2102是用于在执行模块2100内随时间将事件应用于定义的调度器。数学模块2104和物理模块2106为必须用于确定对不同对象的动作的效果的计算作准备。人工智能模块2108是用于运行不同人工智能组件的源代码的组件,以便当事件被主时间表控制模块2102应用于定义时辅助人类行为的仿真。

图形模块2112生成图形数据,以便发送到GUI处理器用以在末端设备处呈现。在这些示例中,报告生成器2110生成两种输出。一种输出是用于修改源代码的新定义。所生成的该输出例如是图17中HBDL 1718。在这些示例中,由报告生成器2110生成的另一种输出是图形数据,其也是以HBDL格式化的。该输出例如是图17中的IHBDL 1710。

图形模块2112包括用于生成向用户呈现仿真的结果的输出的大量不同类型的处理。这些类型的处理包括二维图形管道、二维图形基元、三维图形管道、三维图形基元、二维和三维模型和堆栈、显示列表生成器、以及二维和三维描画引擎。这些,以及其它类型的图形处理可存在于图形模块2112中,以供在生成呈现给用户的输出时使用。

现在转向图22,描绘了根据有利实施例的用于生成标记的处理的流程图。图22中图示的处理可以在软件组件(例如图17中的词汇分析器1728)中实现。

所述处理开始于从源接收下一字符(操作2200)。在这些示例中,字符的源是图17中的HBDL 1708。以队列排列所述字符(操作2202)。

接着,确定在队列中的串与常规表达或保留字之间是否存在匹配(操作2204)。如果存在匹配,则使用队列中的串创建标记(操作2206)。然后清除该队列(操作2208)。

之后,确定在源中是否已经达到文件的末尾(操作2210)。如果已经达到文件的末尾,则所述处理结束。否则,所述处理返回到操作2200,以便获得下一字符。如果在操作2204中不发生串匹配,则所述处理继续到操作2210,如上所述。

现在转向图23,描绘了根据有利实施例的用于执行人类行为的仿真的处理的流程图。所图示的处理是图23,其可以在架构(例如图4中的架构400)中实现。具体地,使用源代码,例如图6中的源代码600,可以执行该仿真。

所述处理开始于以在源代码内的定义定义的一组人居住于虚拟环境(操作2300)。在这些示例中,所述定义例如是图16中的定义602的定义。所述处理使用源代码内的动作对虚拟环境中的该组人执行一组动作,以便形成仿真人类行为的结果(操作2302)。在这些示例中,该组动作可以是从例如图6中的动作604中的动作中取出的。

之后,使用源代码中的图形接口语言从所述结果中生成输出,以便形成格式化输出(操作2304)。在这些示例中,所述图形用户接口语言可以是图6中的GUI语言606。之后,当仿真发生时,该格式化输出被呈现在网络数据处理系统中的一组设备上(操作2306),之后所述处理结束。

以这种方式,不同的有利实施例通过可以随着仿真发生而变化的源代码来仿真人类行为。而且,图形用户接口语言考虑结果被呈现给用户以便改变并且被仿真本身控制的方式。

现在转向图24,描绘了根据有利实施例的用于生成句子或产品的处理的流程图。图19中图示的处理可以以软件组件(例如图17中的语法剖析器1730)实现。

所述处理开始于获取用于处理的下一标记(操作2400)。在这些示例中,所述标记是从词汇剖析器(例如图17中的词汇剖析器1728)中接收的。确定对于所述标记是否已经遇到文件的末尾(操作2402)。如果已经遇到文件的末尾,则判断所述标记是否适合剖析树(操作2404)。如果所述标记不适合剖析树,则生成一个错误(操作2406),然后所述处理返回到操作2400。

否则,确定所述标记是否完成剖析树(操作2408)。如果所述标记完成剖析树,则进行针对与所完成的剖析树对应的产品的指令的执行(操作2410)。之后,所述处理递归地返回到调用器(操作2412),然后所述处理返回到操作2400,如上所述。

再次参考操作2408,如果剖析树未完成,则所述处理也返回到操作2400。返回参考操作2402,如果已经到达文件的末尾,则确定是否已经部分地重新生成语法(操作2414)。该操作被执行来确定是否存在未完成的声明或产品。这个确定可以通过检查剖析树以便查看是否存在未完成的剖析树来进行。如果部分地重新生成语法,则生成一个错误(操作2416),之后所述处理结束。否则,所述处理结束,并不生成错误。

现在转向图25,描绘了根据有利实施例的用于执行对产品的声明的处理的流程图。图25中图示的处理可以以软件组件(如图17中的执行模块1732)实现。

所述处理开始于对产品的指令组执行语义分析(操作2500)。执行这一操作来确定语义错误是否发生在针对产品的任何指令中。在这些示例中,该指令组是一个或多个指令。之后,判断是否存在语义错误(操作2502)。

如果不存在语义错误,则所述处理执行该指令组(操作2504),之后所述处理结束。如果在操作2502中发生语义错误,则报告该错误(操作2506),之后所述处理结束。在一些情况下,不是结束,而是所述处理可以尝试校正所述错误以便允许执行所述指令。

现在转向图26,描绘了图示根据有利实施例的图形用户接口(GUI)处理器的图。GUI处理器2600是图4中的GUI处理器406的更详细的图示。在这个示例中,GUI处理器2600包括加密/解密模块2602、图形模块2604、输出模块2606、输入模块2608和HBDL生成器2610。

在这些图示性示例中,GUI处理器2600执行从源代码(图6中的源代码600)接收的声明。具体地,所述声明包括来自图6中的源代码600中的GUI语言606的那些声明。在这些源中发现了用于生成显示的真实代码,而不是分离的应用程序。

GUI处理器2600执行所述声明并且接收用户输入。GUI处理器2600从例如图17中的解释器1700的解释器中接收加密后的解释后的HBDL(EIHBDL)2612。加密/解密模块2602对进行解密以便形成解释后的HBDL(IHBDL)2614,该解释后的HBDL(IHBDL)2614被图形模块2604处理。在这些示例中,IHBDL 2614表示可被用来生成用于设备2618的显示的基元或一组声明。

图形模块2604可以生成用于在设备2618中显示的像素,并且将所述数据发送到输出模块2606,该输出模块2606依次发送所述数据作为设备2616到设备2618。通过输入模块2608从设备2618接收用户输入作为设备2620。该模块将设备数据发送到HBDL生成器2610,该HBDL生成器2610以HBDL2622的形式表示该用户输入。HBDL 2622是以HBDL编写的用户输入。该输入被加密/解密模块2602加密并且返回到解释器作为加密后的HBDL(EHBDL)2624。

在这些图示性示例中,GUI处理器2600在靠近设备2618的硬件上进行。事实上,在许多情况下,GUI处理器2600的一部分可以实际上在设备2618上执行,其它部分在数据处理器系统例如服务器上执行。GUI处理器2600以减少使用呈现数据必需的网络资源的方式位于靠近设备2618。而且,在这些示例中,GUI处理器2600的放置被布置成减少显示数据和接收用户输入的等待时间。

现在转向图27,描绘了图示根据有利实施例的通过图形用户接口(GUI)处理器的数据流的图的流程图。在这个示例中,图形模块2700是图26中的图形模块2604的示例。在这些示例中,图形模块2700以基元2702的形式接收解释后的HBDL。这些基元是通过解释器的源代码的解释结果。

图形模块2700处理这些基元以便生成用于位图的像素和识别可以如何操纵或显示位图的数据。该信息被作为位图数据2704发送到客户机处理2706。在这些示例中,客户机处理2706是在诸如图19中的设备1918之类的设备上执行的处理。该客户机处理执行需要在显示2708上显示位图数据的操作。以这种方式,由图形模块2700来执行渲染用于显示的图形所需的图形处理。客户机处理2706仅显示所提供的位图数据,并且不需要不同的处理和需要从基元渲染位图图形的处理功率。使用处理的这种划分,显示数据的设备不需要在渲染图形中使用的不同的图形处理器和图形管道(例如在工作站中使用的那些)。

结果,图形可被显示在许多不同的设备(通常不具有足够的处理功率来处理基元)上。例如,在移动电话、个人数字助理或膝上型PC中可以实现客户机处理2706和显示2708。

对于在显示2708中正被显示的数据,输入设备2710接收用户输入。该用户输入可以操纵图形,例如选择按钮、输入数据或发送命令。当用户通过操纵显示2708上的位图来修改所显示的图像时,正被显示的图像的修改中的差异或变化由客户机处理2706识别。图像中的这些差异形成差异数据2712,该差异数据被返回到HBDL生成器2714。

HBDL生成器2714类似于图26中的HBDL生成器2610。HBDL生成器2210识别信息中的该变化或增量,并且将其转换为HBDL 2716以便传输到解释器。HBDL 2716包含源代码模块的语言的声明或代码,并且可被用来对源代码进行变化。图形模块2700使用基元2702来生成用于不同位图的像素。

现在转向图28,描绘了图示根据有利实施例的显示的操纵的图。在这个图示性示例中,显示2800是在图27中的显示2708处呈现的显示的示例。显示2800是使用从基元生成的位图而呈现的。在这个示例中,位图被用来呈现不同的组件,例如滑雪者2802和场地2804。与指示可以如何操纵这些位图的数据一起发送用于表示滑雪者2802和场地2804的位图数据。在这个示例中,滑雪者2802可以通过用户输入从图28中的位置2806移动到在图29中的显示2902内的位置2900,其是显示2800的修改版本。而且,例如50的值可被输入到如图29中的显示2902中描绘的场地2804。根据有利实施例,位图中的这些变化可被返回到GUI处理器,然后该GUI处理器基于这些变化生成对于源代码的适当声明。

现在参考图30,描绘了根据有利实施例的用于识别位图中的变化的处理的流程图。图30中图示的处理是可以在一设备处的客户机处理(诸如图27中的客户机处理2706)中实现的处理的示例。

所述处理开始于监控用户输入(操作3000)。随后确定对于显示是否检测到用户输入(操作3002)。如果未检测到用户输入,则所述处理返回到操作3000。否则,确定用户输入是否操纵一控制(操作3004)。如果用户输入操纵一控制,则在位图中识别对所述控制进行的变化(操作3006)。位图中的这一差异或变化被发送回GUI处理器(操作3008),然后所述处理返回到操作3000,以便监控另外的用户输入。根据特殊实现方式,数据变化可以是变化的真实位图或者位图位置中的变化的识别。当然,根据实施例可以使用其它类型的变化。

再次参考操作3004,如果用户输入不是控制的操纵,则判断用户输入是否是将数据输入到一字段(操作3010)。如果用户输入不是输入数据,则所述处理返回到操作3000。否则,所述处理继续到(操作3006)以便识别位图中进行的变化。

在这些示例中,对用户输入做出的特殊判断是用于识别对字段的变化和显示中的控制,例如图21中的执行模块2100。确定可以是对感兴趣的位图的任意类型的变化。例如,所述变化可以是是否已经选择或者扭转特殊按钮。

现在转向图31,描绘了根据有利实施例的用于处理差异数据的处理的流程图。图31中图示的处理可以在GUI处理器(例如图26中GUI处理器2600)中实现。具体地,图31中图示的处理可以在图27中的HBDL生成器2714中实现。

所述处理开始于从客户机处理接收差异数据(操作3100)。在这些示例中,差异数据包含通过用户输入形成的位图中的变化。然后所述处理基于所述差异识别用户输入(操作3102)。该用户输入可被识别为例如滑雪者位置的变化、数据输入到数据字段、或者一些其它用户输入。操作3102中进行的识别可以通过将发送到设备的原始位图与改变后的位图进行比较来完成。例如,如果所述差异被识别为滑雪者的运动是沿着这种控制向上,则用户输入可以是改变人的时间表(timeliness)。关于执行模块2100,在图21中图示了这种差异的示例。

之后,用户输入被转换为源代码所采用的格式数据(操作3104)。在这些示例中,用户输入被改变为HPDL格式。转换后的用户输入被发送到解释器(操作3106),之后所述处理结束。

现在参考图32,描绘了图示根据有利实施例的供在提供人类透明聚合体中使用的组件的图。在这个图示的示例中,使用架构(例如图4中的架构400)执行仿真3200。具体地,由解释器(图4中的解释器404)通过源代码的解释来执行仿真3200。

在这个特殊示例中,仿真3200包括人工智能(AI)3202,其表示仿真3200内的人类。在这些示例中,正被人工智能3202执行的该人类是合成人。除了用于仿真3200的其它信息,从定义3204中恢复用于人工智能3202的代码。在源代码(例如图4中的源代码402)中发现定义3204。定义3204包括合成人、其它人以及存在人类用以仿真3200的环境的定义。

当在仿真3200期间生成结果时,这些结果被发送到通信模块3206作为用户输入3208。在这个示例中,也在解释器(例如图4中的解释器404)中发现这些通信模块。通信模块3206从仿真3200中取出用户输入3208,并且修改或将新定义编写成定义3204。这形成了修改后的源代码,随后该修改后的源代码被仿真3200用来生成附加结果。在这些示例中,人工智能3202以与活体用户相同的方式登录到架构。

而且,来自仿真3200的结果3210被发送到设备3212用以呈现给用户3214。在这些示例中,用户3214是真正的人类。

图示性的实施例考虑使用人类透明聚合体。在这个聚合体中,由人工智能3202生成的重写为定义3204的用户输入3208可以用来自用户3214的活体用户输入来替换。换句话说,用户3214可以将用户输入3216发送到通信模块3206,以便修改或编写新定义成定义3204,以代替由通过仿真3200内的人工智能3202仿真的合成人生成的用户输入3208。在这些示例中,用户3214可以是提供用户输入3216的主题专家。在这些示例中,在仿真3200期间提供用户输入3216。该用户输入可以响应于在设备3212处接收到且呈现的结果。

被人工智能3202仿真的合成人生成与针对合成人的唯一标识符(UI)3218相关联的用户输入3208。在仿真3200期间通过人工智能3202生成用户输入3208。用户输入3216与唯一标识符3218相关联。用户输入3208被发送到通信模块3206。通信模块3206通过添加新定义或者使用用户输入3208修改当前定义,来修改定义3204。通信模块3206了解定义3204的哪个部分基于唯一标识符3218来进行修改。

当用户3214生成用户输入3216时,用户输入3216被通信模块3206接收。在这些图示性的示例中,用户输入3216也可以包括唯一标识符3218。以这种方式,通信模块3206为与唯一标识符3218相关联的合成人修改定义3204。

以这种方式,用户3214可以替换通过仿真3200内的人工智能3202仿真的合成人。用户3214可以基于发送到通信模块3206的请求,无线地(on thefly)打开和关闭人工智能3202。

在开始用用户输入3216替换用户输入3208时,设备3212处的用户3214向通信模块3206发送一个请求。在这点上,假设用户3214已经登录通信模块3206并且被通信模块3206验证。通信模块3206确定用户3214是否被授权打开和关闭人工智能3202。换句话说,通信模块3206确定用户3214是否可以替换合成人。如果用户3214被授权,则通信模块3206使用人工智能3202将标志设置为停止。换句话说,在仿真3200内不再调用用于人工智能3202的函数。

在这个时间点,用户3214生成包括唯一标识符3218的用户输入3216。根据特定实现方式,通过通信模块3206基于识别用户3214在设备3212处发送用户输入,可以添加唯一标识符3218。

现在参考图33,描绘了根据有利实施例的用于用活体人替换合成人的处理的流程图。在这个示例中,图33中所示的处理可以在解释器(如图4中的解释器404)中实现。具体地,所述处理可以在解释器404内的通信模块中实现。

所述处理开始于从用户接收用于替换合成人的请求(操作3300)。之后,确定用户是否被授权来替换仿真人(操作3302)。在这些示例中,通过将用户与定义在仿真期间什么用户可以替换合成人的列表或数据库来进行确定。例如,某些用户可以是某些领域中的主题专家并且可被允许来替换那些特殊领域的合成人。例如,特定用户可以是关于政治的主题专家。该用户可被允许来替换在仿真中是政治家的合成人。然而,该主题用户不能被允许来替换是农民或士兵的合成人,因为该主题专家在那些领域中没有特长。

什么用户可以替换合成人的特殊规则完全取决于特殊实施方式。如果用户被授权来替换合成人,则在定义中关闭针对合成人的人工智能的使用(操作3304)。

之后,所述处理等待来自用户的用户输入(操作3306)。当接收到用户输入时,确定用户输入是否是在定义中编写新定义(操作3308)。如果用户输入是编写新定义,则用户输入被格式化成用于编写新定义的形式(操作3310)。之后,所述定义被编写到源代码(操作3312),所述处理随后返回到如上所述的操作3306。

再次参考操作3308,如果用户输入不是编写新定义,则确定用户输入是否是打开人工智能(操作3314)。如果用户输入不是打开人工智能,则所述处理返回到操作3306。否则,返回人工智能以供仿真合成人使用(操作3316),之后所述处理结束。操作3316将合成人放置到仿真中的适当位置,并且从所述仿真中移除活体人。

再次参考操作3302,如果用户未被授权替换合成人,则生成一个错误消息(操作3318),之后所述处理结束。

所述架构提供的仿真不试图百分百肯定地预测人类行为,而是提供可能判断或改变的可能性。来自仿真的结果提供了指导和预测,如果没有由架构进行的仿真则不可能得到所述指导和预测。

在不同的有利实施例中,源代码600可以使用被特别设计来提供图6中的定义602、动作604和GUI语言606中的不同特征的语言来实现。在其它有利实施例中,图6中的源代码600也可以包括来自其他现有语言或编程方法论的函数和特征。

在不同的有利实施例中,人工智能可被用来实现部分源代码600,例如图6中的定义602和/或动作604。在一些有利实施例中,神经网络形式的人工智能(或者其它形式的人工智能)可被用来仿真各种对象。例如,神经网络可被用来仿真活人或活体对象,例如人或动物。

人工智能可以是例如传统的人工智能,其中使用特征为形式体系和统计分析的机器学习。另外,人工智能可以是例如计算智能的形式。计算智能涉及迭代发展或学习。这种人工智能可以基于实验数据来学习。计算智能的示例包括例如但不限于神经网络、模糊逻辑和遗传算法。这些编程技术可被用来补充或提供图6中的源代码600内的附加特征。在其它有利实施例中,除了或者结合各种编程技术,图6中的源代码600可以使用现有的编程语言来实现。

在一个有利的实施例中,可以使用诸如神经网络的编程技术来实现图6中的部分源代码600。例如,可以使用神经网络来实现图6中的部分或全部定义602。神经网络是基于生物学神经网络的数学计算模型。神经网络提供了非线性统计数据建模池,并且可被用来对输入与输出之间的复杂关系建模。神经网络可被利用来提供对图6中的定义602内的各种对象的学习函数。

在一个示例中,神经网络技术可被用来提供对不同对象(例如,人、动物或图6中的源代码600的定义602内的其它合适对象)的学习特征。在这种示例中,NN表示神经网络型变量。宣告的示例可以是“NN n;”。在这个示例中,这种声明宣告了神经网络变量。也可以创建儿子,n.input、n.output、和n.hidden。这些其它变量表示神经网络中的输入、输出和隐藏层。这些层允许用户将神经元添加到不同层。使用这些不同层,输入神经元可被作为儿子添加到输入神经网络层。

转向图34,声明3400和3402是输入神经元的示例。声明3400中的部分3404宣告“左操作数”作为神经网络n的输入神经元。这个输入成员也可被用来读取输入神经元的总数。成员“输出”的值每次添加一个新成员时递增1。结果,输入值是输入神经元的总数。这些声明是可以使用C语言来实现的HBDL伪代码的示例。其它语言,例如是C+和/或对象-C。

在这些示例中,输入神经元变量的范围可以是从值0到值1。每个输入神经元变量具有最小范围和最大范围。这些范围允许用户输入所述范围内的任意值。根据特殊实现方式,这些值在使用之前也可被规格化。

参考图35,声明3500和3502是为输入神经元左操作数定义的输入范围的示例。在这个示例中,声明3500定义了最小值-10,声明3502定义了最大值10。

现在参考图36,描绘了根据有利实施例的对输入行为的声明的图。声明3600允许在使用输入神经元之前修改该输入神经元。换句话说,输入神经元可以具有附着神经元或者与神经元相关的代码以允许通过那个神经元操纵用户输入。例如,用户输入可以是长的和短的。在这个示例中,神经元输入行为解释短和长,以便在0与1之间进行估算。声明3600是可被用来将这种行为附着到输入神经元的代码的示例。

接着转向图37,描绘了图示根据有利实施例的输出宣告的图。声明3700是用于将儿子添加到输出神经网络层的声明的示例。

现在参考图38,描述了图示根据有利实施例的对神经网络中的输出范围的声明的图。在这个示例中,声明3800和3802是可为输出神经元设置的范围的示例。最小范围和最大范围由声明3800和3802设置。

在这个特殊示例中,对于输出神经元,最小值是-15,而最大值是15。而且,用户可以将绝对规格化的(implicit normalized)输出转换为特定范围内的值。例如,输出1可被转换为50,而输出0.5被转换为0。而且,输出神经元也可以与操纵输出的代码相关联。

现在转向图39,描绘了图示根据有利实施例的用于修改输出行为的声明的图。声明3900是可以与输出神经元相关联的代码的示例。在这个示例中,用户输出可以是低的和高的。使用这个特殊示例,神经元的输出行为可以将0和1之间的值解释为低和高。

现在转向图40,描绘了图示根据有利实施例的对隐藏层的声明的图。声明4000和4002是可被用来宣告任何神经网络的隐藏层的声明的示例。在这些示例中,隐藏层顺序遵循隐藏层宣告的顺序。隐藏层变量的值指定被分配给特殊隐藏层的神经元的数目。在这些示例中,声明4000和4002宣告两个隐藏层。由声明4000定义的第一层包括5个神经元,在声明4002中宣告的第二层定义了3个神经元。

现在参考图41,代码4100图示了被用来指定神经元取样值的取样神经网络成员。可以指定不同的取样。每个输入和输出神经元在声明内包括“取样[int]”。当完成神经网络时,用户可以培训和使用神经网络。

现在参考图42,描绘了根据有利实施例的用于培训神经网络的示例声明。声明4200、4202和4204是用于执行神经网络培训的声明的示例。声明4200表示神经网络将被培训500次。声明4202表示300次,声明4204表示用于培训200次。在这些示例中,培训是累积性的,结果被存储。这些不同的结果可被存储在图6中的定义602或者源代码602内用于特殊对象。

现在转向图43,描绘了图示根据有利实施例的神经网络中的完成函数的图。在这个示例中,声明4300和声明4302提供了用于使得输入神经元执行函数并且返回结果的声明的示例。在这些示例中,声明4304是声明4300和4302的替换表达。

现在参考图44,描绘了图示根据有利实施例的神经网络的示例的图。在这个示例中,代码4400包括神经网络的定义以及用于培训和执行该神经网络的声明。在部分4402中发现输入宣告。在步骤4404和4406中发现输入范围。在声明4408和4410中发现与神经元相关的代码。在部分4412中发现输出范围,并且在声明4414中发现对输出的行为。

在部分4416中定义隐藏层,并且在声明4418中发现功能性。在部分4420中可以发现取样,并且声明4422是培训声明的示例。部分4424图示了用于操作神经网络的声明的示例。部分4424内的声明4426显示结果。

现在转向图45,描绘了图示根据有利实施例的来自神经网络的操作的结果的图。在这个示例中,显示4500是响应于来自图44中的代码4400的显示声明4426而生成的显示的示例。

除了神经网络,可以使用动态列表来管理图6中的定义602内的对象的各种属性和性质。可以使用动态列表来定义特征,例如图8中的对象800中的特征804和图9中的对象900的特征904。

例如,可以使用动态列表来提供对对象的组件、性能、特征或其它合适参数的识别。例如,如果对象是汽车,则可以使用动态列表来识别组件,例如车轮、引擎、车体、油漆、传动、车窗和其它组件。当添加组件或者从汽车中移除组件时,可以修改所述列表来识别这些变化。

在不同的有利实施例中,在列表中可以使用任何变量。使用动态列表,定义不被限制为必须根据期望的组件或参数来预定义列表大小。相反,当各种参数或组件被添加或者从特殊定义中移除时,列表大小可以变化。

参考图46,描绘了图示根据有利实施例的列表的示例的图。在这个示例中,代码4600在声明4600中定义列表1。声明4602、4604和4606识别具有列表1中的值的三个变量。在这个示例中,列表1担当阵列。代码4600中的声明4608是返回一个识别阵列大小的值的大小函数。在这个示例中,声明4608返回值3。

声明4610和4612是用于搜索代码4600中的列表的声明的示例。声明4610返回等价于真的值2,而声明4612返回等价于假的值0。声明4610和4612中的这些搜索函数可被用来确定所述列表是否包括某一值。如果在列表中存在该某一值,则返回对列表中的该值的索引。否则,返回值0。

现在转向图47,描绘了图示根据有利实施例的从列表中删除变量的图。在这个示例中,代码4700包括如在部分4702中定义的列表。声明4704是可被用来从代码4700中的列表中删除一个项目的删除函数。声明4704搜索该列表以便确定特定项目是否存在于该列表中。如果发现该项目,则从列表中移除该项目。声明4704返回一个识别被移除的项目的索引。否则,声明4704返回0。在这个示例中,值25未存在于代码4700中的列表中,返回0,并且不采取动作。在这个示例中,通过识别值来删除项目。

现在参考图48,描绘了根据有利实施例的用于删除项目的代码的图。在这个示例中,代码4800在部分4802中定义一个列表。声明4804和4806是用于基于索引值删除列表中的项目的声明。如果声明识别小于列表大小的索引值,则该项目位于列表中并且被删除。对于被删除的项目,该函数然后返回一个值。否则,返回0,意味着在列表中未发现该项目。声明4804返回0,因为仅三个项目存在于如部分4802中定义的列表中。声明4806导致返回20,并且声明4808中定义的项目被删除。

现在参考图49,描绘了图示根据有利实施例的用于操纵列表中的项目的代码的图。在这个示例中,代码4900可被用来操纵列表中的项目。在这些示例中,代码4900包含用于使用堆栈的列表的push函数(压栈函数)和pop函数(弹栈函数)。声明4902识别对其将进行操纵的列表。在这个示例中,部分4904识别对列表进行的三次压栈。声明4906图示了对列表进行的弹栈。声明4906从列表的前面弹栈出的项目返回一个值。

这些类型的函数类似于用于操纵计算机系统中的堆栈的那些函数。压栈用于将特定项目压栈或移动到列表的顶部。对于在列表顶部处的项目,弹栈用于返回一个值。如果弹栈声明包括一个值或参数,则这个声明根据该参数的值从堆栈弹栈出或者返回值。在这些示例中,在声明4908中,正被弹栈出的项目是具有索引值3的项目,其是列表中的第三个项目。

现在转向图50,描绘了图示根据有利实施例的作为队列的列表的使用的图。在这个示例中,代码5000图示了可被用来操纵作为队列的列表的enqueue函数(入队函数)和dequeue函数(出队函数)。enqueue函数(例如声明5002中所示的enqueue函数)将一个自变量添加到列表的底部。

dequeue函数(例如声明5004中所示的dequeue函数)从列表中移除顶部项目,并且返回该项目的值。在这个示例中,声明5002将一个项目添加到列表1,声明5006将另一个项目添加到队列的顶部。声明5002中的项目现在在队列中是第二。声明5008将又另一个项目添加到该队列,将其它项目压栈到队列低处。

现在转向图51,描绘了图示根据有利实施例的读取列表中的项目的图。在这个示例中,代码5100图示了从如在部分5102中定义的列表的顶部和底部读取项目。声明5104读取位于列表顶部的项目,声明5106读取包含在列表底部的项目。

现在转向图52,描绘了图示根据有利实施例的列表中的分类属性的图。代码5200包含用于识别列表的分类状态的声明。声明5202识别是否对于列表设置了分类状态。如果声明5202被设置为等于真,则根据它们的值将项目插入列表。声明5204识别分列顺序。

如果声明5204被设置为等于真,则以递减顺序从最小到最大来分类所述列表。在这个示例中,声明5204被设置为等于假。结果,以如部分5206中所示的递减顺序将项目添加到列表。而且,可以使用附加声明以各种顺序来分类列表。

可被用来实现图6中的源代码600的编程技术的另一示例是模糊逻辑。用于实现模糊逻辑的语言的示例是Prolog,它是可被用于模糊逻辑和人工智能编程的逻辑编程语言。

在所描绘的示例中,模糊逻辑系统可以基于逻辑声明,其中操作数是取自多个集的项。在一个示例中,所述集可以是例如燃料、距离和速度。燃料可以包括三项,低、中和高。距离可以是近和远。在这些示例中,速度可以是低速、中速和高速。这些集可被用来应用规则,例如如果燃料为低或者距离较近,则速度较低。另一规则是如果燃料为中且距离为远,则速度为中速。第三规则是如果燃料为高且距离远,则速度为高速。使用模糊逻辑,对于该集的不同成员可以设置范围。这些范围包括最小范围和最大范围。

现在转向图53,描绘了根据有利实施例的使用燃料、距离和速度的模糊逻辑实现的示例。在这个示例中,代码5300在部分5302中定义这些集。燃料是整数,而距离和速率是浮点变量。部分5304对于在0和100之间的燃料识别最小范围和最大范围。

在部分5306中定义燃料的起始项和结束项。这个部分识别模糊集的左边缘和右边缘。部分5308、5310和5312识别燃料的项。部分5308识别梯形项,部分5310识别矩形项,部分5312识别钟形曲线项。

在部分5314中发现针对距离的类似定义。在这个示例中,在部分5316中定义针对模糊逻辑的规则。部分5318识别燃料和距离的初始值。声明5320被用来计算速度。

可被用来仿真图6中源代码600内的各种对象的另一种类型的编程技术包括进化计算。进化计算是人工智能的一种类型。一种特定方法或方法学是遗传算法。该算法是用于识别解决方案的搜索技术。这种技术被认为是全球搜索启发类型的技术。使用遗传算法,可以承认基因和染色体。使用这种技术也可以执行fitness(适应度)函数、选择处理和重组函数。

现在转向图54,描述了图示根据有利实施例的使用遗传算法求解方程式的图。在这个示例中,代码5400被用来求解方程式2X+3Y=20。

在这个示例中,在部分5402中初始化两个基因。这两个基因对应于变量X和Y。在部分5404中,染色体被添加到基因中。在声明5406中可以识别对于fitness函数的代码。使用声明5408可以指定对于选择函数的代码。在声明5410中可以指定对于重组函数的代码。

使用针对特殊声明的任何可用函数,可以实现这些函数的代码。可以使用这些选择处理来选择如由代码指定的最适宜或最恰当的染色体。例如,可以使用旋转滚轮选择处理。对于声明5410中的重组函数,该声明可被用来识别用于建立染色体的新生成的代码。

在一个示例中,可以使用二进制变量交叉(cross-over)方法。声明5412指定处理的误差容限,并且声明5414调用代码5400中的进化函数。在这些示例中,只要最恰当染色体的误差容限小于声明5412中指定的误差,声明5414中识别的进化处理就停止。通过执行如在代码5400中定义的处理,基因X返回最适合染色体的X的值,并且基因Y返回最适合染色体的Y的值。

现在转向图55A和图55B,描绘了图示根据有利实施例的源代码中针对对象的代码的图。在这个示例中,代码5500是森林形式的针对对象的定义的示例。部分5502识别森林中的树的颜色。代码5500中的部分5504识别森林的栅格。部分5506定义可以存在于森林的栅格中的树。部分5508识别森林的树的行。部分5510被用来生成一小片树,其包含如在部分5508中定义的一行或多行树。部分5512是可被用来呈现森林的代码的示例。在这些示例中,线5514和5516是用于提供在森林中的随机性的转换声明。除了或者替换这些声明,也可以使用其它声明,例如旋转和/或缩放声明。

在这些示例中,代码5500是使用C语言编写的。当然,可以使用任意语言来生成对森林的定义。而且,森林的呈现是可以在图6中的源代码600中的定义602中发现的一个对象的示例。当然,根据特定实现方式,可以使用任何语言或者对于任何对象生成代码。

不同描绘的实施例中的流程图和方框图图示了装置、方法和计算机程序产品的一些可能实现方式的结构、功能性和操作。在这点上,流程图或方框图中的每一块可以表示模块、片段或者计算机可使用或可读取程序代码的一部分,其包括用于实现特定功能或多个功能的一个或多个可执行指令。在一些替换性实施方式中,方块中注释的一个或多个函数可以不按照附图中注释的顺序发生。例如,在一些情况下,根据所涉及的功能性,可以基本同时地执行连续示出的两个块,或者有时可以按相反的顺序执行所述块。

不同的有利实施例能够采取完全硬件实施例的形式、完全软件实施例的形式、或者包含硬件和软件元件的实施例的形式。一些实施例实现为软件,包括但是不限于例如固件、固有软件和微代码之类的形式。

而且,不同的实施例可以采取可从计算机可使用或计算机可读介质访问的计算机程序产品的形式,所述计算机可使用或计算机可读介质提供由执行指令的计算机或任何设备或系统使用的程序代码或者结合由执行指令的计算机或任何设备或系统提供程序代码。为了本公开的目的,计算机可使用或计算机可读介质通常可以是任何有形装置,能够包括、存储、通信、传播或者传输由指令执行系统、装置或者设备使用或者结合它们使用的程序。

计算机可使用或计算机可读介质可以例如但是不限于电子的、磁的、光学的、电磁的、红外的、或者半导体系统、或者传播介质。计算机可读介质的非限制示例包括半导体或者固态存储器、磁带、可拆卸计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘可以包括致密盘——只读存储器(CD-ROM)、致密盘——读/写(CD-R/W)和DVD。在这些示例中,物理或有形的计算机可读介质被称作可记录计算机存储介质。

而且,计算机可使用或计算机可读介质可以包括或者存储计算机可读或可使用程序代码,因此当计算机可读或可使用程序代码在计算机上被执行时,该计算机可读或可使用程序代码的执行使得计算机经由通信链接发送其它计算机可读或可使用程序代码。该通信链接可以使用例如但是不限于物理的或无线的介质。

适用于存储和/或执行计算机可读或计算机可使用程序代码的数据处理系统将包括一个或多个处理器,该一个或多个处理器通过诸如系统总线的通信结构直接地或者间接地耦接到存储器元件。所述存储器元件可以包括在程序代码的实际执行器件采用的本地存储器、海量存储器和高速缓冲存储器,其提供至少一些计算机可读或计算机可使用程序代码的临时存储以便在代码执行期间减少代码可以从海量存储器恢复的次数。

输入/输出或I/O设备或者可以直接耦接到系统或者可以通过接入I/O控制器耦接到系统。这些设备可以包括例如但是不限于键盘、触屏显示器和指针设备。不同的通信适配器也可以耦接到系统,以便使得数据处理系统能够变得通过接入私有或公共网络耦接到其它数据处理系统或者远程打印机或者存储设备。非限制性的示例是调制解调器,并且网络适配器仅仅是当前可使用类型的通信适配器的一种。

本公开的描述已被展示用于图示和描述目的,并且并不是穷举性的或者并不限于所公开形式的公开。许多修改和变动对于本领域的普通技术人员来说都是显而易见的。而且,与其它有利实施例相比,不同的有利实施例可以提供不同的优点。所选择的一个或多个实施例被选择并描述,以便最好地解释本公开的原理、实际的应用,并且使得本领域的普通技术人员能够理解针对具有各种修改的各种实施例的公开适于预期的特定使用。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号