首页> 中国专利> 一种实体行为建模的组装方法和系统

一种实体行为建模的组装方法和系统

摘要

本发明是一种实体行为建模的组装方法和系统,属于计算机生成兵力领域。组装系统包括行为编辑构件、模型库和运行时任务管理器。利用行为编辑部件对实体任务建模,其中原子行为模型表示基本动作,再利用流程图、有限状态机或规则集,对原子行为模型和/或组合行为模型进行组装。原子行为模型和运行时任务管理器的各子引擎都实现统一的接口调用规范。组装方法基于所述系统,领域专家通过行为编辑构件将实体任务进行自顶向下逐层地分解并建模,当任务被指派给运行时的仿真实体后,运行时任务管理器解析和执行任务行为模型。本发明简化了建模过程,提高了仿真开发效率和减少了开发成本;模型被复用从而节省了计算机存储资源和减少了模型维护的工作量。

著录项

  • 公开/公告号CN103336694A

    专利类型发明专利

  • 公开/公告日2013-10-02

    原文格式PDF

  • 申请/专利权人 北京航空航天大学;

    申请/专利号CN201310283594.7

  • 发明设计人 龚光红;吴雨淋;李妮;

    申请日2013-07-08

  • 分类号G06F9/44(20060101);

  • 代理机构11121 北京永创新实专利事务所;

  • 代理人祗志洁

  • 地址 100191 北京市海淀区学院路37号

  • 入库时间 2024-02-19 20:16:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-06-22

    授权

    授权

  • 2013-11-06

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20130708

    实质审查的生效

  • 2013-10-02

    公开

    公开

说明书

技术领域

本发明属于计算机仿真中的计算机生成兵力领域,涉及一种实体行为建模的组装方法和 系统。

背景技术

计算机生成兵力是用计算机模型来模拟作战人员或武器系统等真实作战对象,从而减少 军事仿真中真实作战人员和武器装备的参与,降低训练成本。仿真应用要求兵力实体对象所 表现的作战人员或武器系统的行为尽可能真实,使其它参与者无法区分人和计算机生成兵力。 因此行为建模是其关键技术。

军事领域的专家具有丰富的战术行为知识,然而实现这些知识的计算机模型需要编写大 量的计算机代码。通常领域专家并不具备编程技能,因而需要依赖软件工程技术和编程人员 才能将领域知识转化为计算机模型。具体方式是领域专家将有关物理实体运行的知识和数据 编制成文档,形成规格说明书后提交给编程人员,然后经过代码实现和测试步骤形成计算机 模型,最后返回给领域专家或仿真执行用户使用。目前已经有大量的实体行为采用了流程图、 状态机、规则集这类过程化的结构进行建模,但大都是通过代码直接实现。这种方式使得模 型之间存在大量重复的基本动作,带来存储浪费和维护困难;实体行为的相关数据被硬编码 到模型中,难以定制和修改,缺少灵活性;领域专家由于缺少编程技能因而不能直接对行为 进行建模、验证和修改。还有一些系统虽然将这些过程化的建模结构提炼出来形成描述性数 据而非纯代码,实现了一定的扩展性和复用性,但是存在的问题有:或者没有图形化的建模 工具而是采用脚本的形式;或者有图形化工具但仅支持特定的仿真应用,表现为使用特定的 数据结构、特定的概念或执行方法;另外没有同时支持流程图、有限状态机、规则集三种建 模方法混合使用的统一工具和系统。如果按照实体运行机理将行为模型分类为实现基本动作 的原子行为和基于原子行为组装成的组合行为,并提供统一的建模工具和执行部件则可以解 决上述问题。

另一方面,其它领域例如办公自动化出现了许多使用流程图、状态机、规则集的可视化 建模语言和工具,用于帮助人们理解和建模业务。但这些领域的方法和工具无法直接应用于 仿真领域,因为建模对象的特点不同,仿真运行机理与业务的执行过程也不相同。例如商务 过程常使用电子表单来驱动执行,而仿真模型是通过仿真步长来驱动的;商务过程关注人工 活动的作用而仿真应用关注不同模型之间的互操作能力;商务过程关注不同活动在高层次的 集成而仿真模型关注低层次的紧耦合以获得高执行效率;行为模型还具有仿真平台类别和建 制级别的限制要求等等。此外,多数通用建模工具使用复杂,选项和配置属性多,甚至面向 编程用户。因此,需要构造符合仿真特点和需求的模型组合方法和系统。

发明内容

针对现有行为模型的存储浪费、维护困难、缺少灵活性等缺点,本发明提供了一种实体 行为建模的组装方法和系统。

本发明提供的一种实体行为建模的组装系统,包括行为编辑构件、模型库和运行时任务 管理器。行为编辑构件是可视化的模型编辑工具,包括基于流程图、基于有限状态机和基于 规则集的三个编辑构件。行为编辑构件用于将实体任务进行建模,具体是:领域专家将实体 任务进行自顶向下逐层地分解,每一步的分解按照流程图、有限状态机或规则集的方式,分 解结果形成子任务,一直分解到各个子任务都只完成实体的基本动作,分解工作结束;作为 叶子节点的子任务由原子行为模型描述,原子行为模型由程序员以可执行的动态链接库实现; 非叶子节点的子任务和顶层节点的任务由组合行为模型描述,组合行为模型由原子行为模型 和其它组合行为模型组装而成。原子行为模型和组合行为模型都表现为XML格式的行为模 型描述文件,描述需要的元数据由模型库提供。模型库由关系数据库实现,存储行为建模的 元数据、行为编辑构件产生的行为模型描述文件和原子行为模型的最终实现文件。运行时任 务管理器包括基于流程图的组合行为执行子引擎、基于有限状态机的组合行为执行子引擎和 基于规则集的组合行为执行子引擎。运行时任务管理器作为仿真引擎的一部分,当仿真执行 时自动从模型库中下载行为模型描述文件,根据组合行为模型是基于流程图、有限状态机或 规则集的编辑方式,调用对应的子引擎进行解析和调度,并下载和执行原子行为模型的实现 文件。

原子行为模型遵守统一的接口调用规范,运行时任务管理器的各子引擎遵守与原子行为 模型相同的接口调用规范。原子行为模型和运行时任务管理器的各子引擎都实现了如下标准 接口,以支持统一的接口调用规范:

●初始化接口Init(),用于绑定该行为模型所属的仿真实体,设置来自用户输入的初始 参数值,传入行为模型描述文件,并提供运行时任务管理器的服务接口以支持为下级动态指 派任务;

●步长调度接口Tick(),用于周期性地执行模型,传入了当前仿真时间、输入参数值, 返回该模型是否运行结束的标志;步长调度接口返回1、2或3,分别表示该行为模型的持续 时间小于、等于或大于一个步长,当小于一个仿真步长时将在本回合继续调度下一个行为模 型,当等于一个步长时将结束本回合的调度并在下一回合调度下一个行为模型,当大于一个 仿真步长时将结束本回合的调度并在下一回合继续调度该行为模型;

●事件调度接口ProcessInteraction(),用于在行为模型感兴趣的事件被触发后进行通知 处理;

●控制接口Start()、Stop()和Suspend(),分别用于启动、停止和暂停行为模型的执行;

●判定接口Predicate(),用于实现判断逻辑,返回真或者假;

●写消息接口PostMessage(),用于向运行时任务管理器中的黑板结构写信息,以便相互 独立的行为模型之间共享数据;传入参数是以属性-值对表示的信息;

●读信息接口ReadMessage(),用于读取运行时任务管理器中的共享黑板上的数据,传 入参数为信息名称,接口返回该信息名称对应的信息值;

●设置调用周期接口GetPeriod(),用于设置行为模型被调用的周期间隔,运行时任务管 理器设置调度单位,行为模型被调用的周期间隔必须大于等于调度单位;

●设置输出参数接口SetOutput(),设置行为模型执行时产生的输出参数值。

基于所述的实体行为建模的组装系统,本发明还提供一种实体行为建模的组装方法,具 体包括如下步骤。

步骤一:为实体任务建立模型,并设置模型的基本数据,基本数据包括:模型的标识; 模型所属的装备平台类别;模型所属的建制级别;模型提供的能力;模型的逼真度级别;模 型的输入和输出参数;

步骤二:领域专家通过行为编辑构件将实体任务进行自顶向下逐层地分解,每一步的分 解按照流程图、有限状态机或规则集的方式,分解结果形成子任务,一直分解到各个子任务 都只完成实体的基本动作,分解工作结束;作为叶子节点的子任务由原子行为模型描述,原 子行为模型由程序员以可执行的动态链接库实现;非叶子节点的子任务和顶层节点的任务由 组合行为模型描述;某一组合行为模型由下层分解的原子行为模型和/或组合行为模型组装而 成;行为模型用XML格式的行为模型描述文件表示,并设置各行为模型的基本数据;各行 为模型的装备平台类别、建制级别、提供的能力和逼真度级别与步骤一所建立的模型相同;

步骤三:将分解建立的各行为模型保存入模型库,由程序员实现各原子行为模型,并将 各原子行为模型的实现文件保存如模型库;

步骤四:生成对应实体任务的仿真想定文件;

步骤五:运行时任务管理器执行仿真想定文件。

所述的步骤五,具体包括如下子步骤:

步骤5.1:启动初始化;

步骤5.2:任务管理器打开想定文件,解析实体任务,一个任务是一个行为模型;

步骤5.3:判断当前行为模型是否是组合行为模型,若是执行步骤5.4,否则执行步骤5.5;

步骤5.4:进一步打开各个成员行为模型的描述文件,对各成员行为模型执行步骤5.3;

步骤5.5:动态载入各原子行为模型的实现文件;

步骤5.6:初始化结束;

步骤5.7:等待外部的启动指令;

步骤5.8:收到开始指令后执行一个仿真步长;

步骤5.9:以实体为单位,执行各个实体的任务队列的首任务;

步骤5.10:根据任务类型,选择运行时任务管理器中的基于流程图、基于有限状态机或 基于规则集的组合行为执行子引擎进行执行;

步骤5.11:判断子任务是否是组合行为模型,若是,执行步骤5.10,否则执行步骤5.12;

步骤5.12:调用原子行为模型的实现文件,按仿真步长开始执行,直到该行为模型结束;

步骤5.13:判断队首任务是否执行完毕,若是,执行步骤5.14,否则执行步骤5.8;

步骤5.14:从实体任务队列删除队首任务;

步骤5.15:判断任务队列是否为空,若是执行步骤5.16,否则执行步骤5.8;

步骤5.16:实体任务执行完毕。

本发明的实体行为建模的组装方法和系统,具有如下优点和积极效果:

(1)将传统行为模型建模的结果区分为原子行为和组合行为,交由不同的用户角色分别 设计和实现;同时支持流程图、有限状态机、规则集三种最常用的计算机生成兵力建模方法 并把它们统一了起来以允许互相组装。最终使得领域专家能够极大地减少对程序员的依赖而 直接运用自己的领域知识设计行为模型,简化了行为建模工作,提高了开发效率,降低了开 发成本。

(2)可视化的建模方式和最小化组合元素的设计方法使得工具易于理解,例如统一的判 定原子行为模型封装了实现细节而提供了丰富的语义,可同时用于流程图、有限状态机、规 则集中。因此用户只需少量培训即可使用相应的设计工具进行模型开发。同时,通过检查模 型逻辑的图形表示,使得模型检验工作也变得更加容易。

(3)可组装的方式使得行为得以复用,即同一行为模型可被用来组成不同的更高层的行 为模型。当模型被修改时,所有引用的高层模型自动使用修改后的模型,减少了维护工作量。 复用同时能节省计算机存储资源。

(4)统一的接口和递归的组装方式提供了扩展性,使得未来可以在新的建模方法出现时 增加相应的组装方法和工具而无需修改现有的组装结构,能适应建模技术的发展变化。

(5)提供了多种仿真步长管理方法,满足单次模型解算小于、等于及大于一个步长的三 种情况,从而方便了模型的集成和仿真的互操作。

附图说明

图1为本发明的实体行为建模的组装系统的整体部件图;

图2为本发明的实体任务建模的组装方法的整体流程图;

图3为运行时任务管理器执行组合行为的流程图;

图4为本发明实施例基于流程图的“攻占”行为组装控制流建模实例图;

图5为本发明实施例基于流程图的“攻占”行为组装数据流建模实例图;

图6为本发明实施例基于有限状态机的“战斗”行为组装建模实例图;

图7为本发明实施例基于规则集的“冲击”行为组装建模实例图;

图8为本发明实施例基于有限状态机的“巡逻”行为组装建模实例图。

具体实施方式

下面将结合附图和实例,对本发明的实体行为建模的组装方法和系统执行过程作进一步 的说明。

如图1所示,本发明提供的实体行为建模的组装系统,包括:行为编辑构件100、模型库 200和运行时任务管理器300。行为编辑构件100是一种可视化的模型编辑工具,具体包括基 于流程图的编辑构件101、基于有限状态机的编辑构件102和基于规则集的编辑构件103,三 种编辑构件用于将人员或武器装备的行为知识和数据(实体行为)表示为原子行为和组合行 为,对应建立原子行为模型201和组合行为模型202,并存储在模型库200中。原子行为模 型201是基本执行单元,完成实体的基本动作。组合行为模型202由原子行为模型和其它组 合行为模型依据实体的运行机理组装而成,完成了更复杂的动作或特定任务。模型库200由 关系数据库实现,用来存储行为编辑构件100产生的行为模型描述文件和原子行为模型的最 终实现文件。

所有行为模型均使用XML(可扩展标记语言)文件描述其元数据,原子行为模型201和 组合行为模型202都表现为XML格式的行为模型描述文件,并且原子行为模型201以可执 行的动态链接库例如DLL方式实现。运行时任务管理器300则是仿真引擎的一部分,当仿真 执行时自动从模型库200中下载行为模型描述文件进行解析和调度,并下载原子行为模型实 现文件以执行。运行时任务管理器300包括基于流程图的组合行为执行子引擎301、基于有 限状态机的组合行为执行子引擎302和基于规则集的组合行为执行子引擎303。

本发明中为行为模型定义了必要的元数据,以支持行为的高效组装,避免了无意义的组 合结果。元数据直接保存在模型库200中,由行为编辑构件100使用。每个行为模型都由一 系列元数据定义,必要的元数据有:

●模型标识:字符串类型,用于唯一的代表一个行为。

●模型所属的装备平台类别,也就是兵力类别:枚举类型,其范围允许用户自定义,采 用树形结构表示,用于表示各个兵种的武器平台类别。例如空军->直升机->型号X。此外, 定义了一种特殊的兵力类别“通用”。只有具有相同兵力类别或“通用”的行为模型可以组装 到一起。

●模型所属的建制级别:枚举类型,其范围允许用户自定义,采用树形结构表示,用于 表示各个兵种的编制级别。例如陆军->旅->团->营。此外,定义了一种特殊的建制级别“通 用”。只有具有相同建制级别或“通用”的行为模型可以组装到一起。

●模型提供的能力:枚举类型,其范围允许用户自定义,采用集合结构表示,用于表示 该行为模型提供的评估、决策、行动等能力属性。例如火力控制、态势评估。

●模型的逼真度级别:枚举类型,其范围包括:低、中、高三种,用于表示该行为模型 的真实程度,高逼真度的模型需要更多的计算量但能反应更多的模型细节。该属性被用于满 足对同一模型的不同细节实现程度的需要,例如聚合与解聚场景。

●模型的输入与输出参数:允许用户自定义模型的输入或输出参数的个数,使用字符串 表示其名称,使用枚举类型表示参数类型,支持短整型,长整型,浮点型,布尔型,字符串 型,坐标类型,路径类型,以及集合类型。其中集合类型是复合了多个其它基本类型元素的 类型。模型的参数属性体现了行为运行时要具备的动态特征,即根据不同的参数值选择不同 的运算逻辑或得到不同的运算结果。

行为编辑组件100提供了实体行为的组装描述,领域专家通过行为编辑组件100将实体 需要执行的任务进行自顶向下逐层地分解和细化。每一步的分解过程可以是按照流程图、有 限状态机或规则集的方式,分解结果形成子任务;一直分解到各个子任务都只完成实体的基 本动作后,分解编辑工作就结束了,此时,实体任务被划分为一个树形结构,叶子层的各子 任务都将表示为一个原子行为模型201,除叶子层的其它层的子任务和顶层的子任务都表示 为组合行为模型202。原子行为模型201和组合行为模型202,均由XML文件描述;原子行 为模型201的实现则交由程序员完成。因此行为编辑组件100使得领域专家能够脱离编程人 员而独立进行自顶向下的行为模型设计。组合行为模型202允许递归组装,并且多个基于流 程图、有限状态机或规则集的不同方式的组合行为,可按流程图、有限状态机或规则集中的 任意一种方式进一步组装在一起,形成更高层的组合行为模型202。当模型库200足够丰富 时,领域专家能够直接复用现有行为模型进行新的组装,从而形成自顶向上的模型设计。本 发明的一个特点是能同时支持多种组装方式以满足常用的建模方法需要,并且不同组装方式 形成的模型能够进一步组装在一起。

下面具体介绍行为编辑构件100的三个子构件:

1)基于流程图的编辑构件101,使用串行、并行、分支、循环结构组织模型之间的控制 流,使用不同模型间的输入输出参数的绑定关系来组织数据流。

流程图使用过程化、图形化的建模语言,其建模过程包含了控制流和数据流的设计。图4 和图5给出了实例。控制流的语言元素包括:(1)开始节点,标识整个组合行为的开始执行 点;(2)串行,即两个行为顺序执行,当第一个行为执行完毕后才开始执行第二个行为;(3) 并行,即两个行为同时执行,不分先后;(4)分支,涉及到三个行为模型,其中有一个能返 回真假值的特殊原子行为被称为判定,其真假值分别连接一个行为模型,当判定执行完毕后, 根据其返回值选择连接对应的一个行为模型执行;(5)循环,一个行为执行完毕后转向一个 已经执行过的行为再次执行;(6)终止节点,标识整个组合行为的结束。通过上述元素,可 以对具有可预见执行轨迹的行为进行建模。数据流关系建立方法为:(1)在组合行为的输入 或输出参数与该组合行为包含的各个成员行为的输入或输出参数之间进行关系绑定;一个组 合行为的输入参数可以和多个成员行为的输入参数绑定;一个组合行为的输出参数只可以和 至多一个成员行为的输出参数绑定;(2)在内部成员行为之间进行输入和输出参数关系的绑 定,即一个行为模型的输出可以是另一个行为模型的输入。数据绑定不要求参数名称相同, 但要求参数的数据类型必须相同。通过建立数据流,实现了组合行为内部的数据生产与消费 关系的定义。

2)基于有限状态机的编辑构件102使用行为模型表示状态节点,使用判定表示不同状态 节点之间的转换条件,使用局部变量表示状态数据并和行为模型的输入输出参数进行绑定。

有限状态机同样使用过程化、图形化的建模语言,不同与流程图的是其内部运行轨迹不 能预先确定,但可以确定其所处的状态范围。图6给出了实例。该方法中每个状态节点被建 模为行为模型,状态节点之间的转换则建模为判定,有限状态机有一个当前活跃的状态。由 于一个状态可能转向多个其它状态中的一个,因此一个状态就关联了多个判定。多个判定之 间定义了优先级,用序号表示,序号越低优先级越高。执行时首先检查优先级高的判定,如 果一个判定运行结果为真,则活跃状态转向其相连状态;如果所有关联的判定都返回假,则 执行当前活跃状态对应的行为模型。一种特殊的状态转换条件可定义为当当前状态对应的行 为模型执行完毕时自动转换。由于有限状态机还需要数据来度量实体运行状态,因此定义了 状态机范围的本地变量(局部变量),各个状态对应的行为模型可以使用输入输出参数与本地 变量绑定。

3)基于规则集的编辑构件103,使用“IF[前件]THEN[后件]”的格式来表示一条规则, 前件使用判定来表示,后件使用行为模型来表示,当判定为真时则执行对应行为。

规则集是由多个规则组成的,每个规则由if[前件]then[后件]表示。前件建模为判定, 后件建模为行为模型。这种组合方式可用来表达战术条例这样的规则。规则集定义了输入输 出参数,可以和各个规则后件对应的行为模型的输入输出参数进行绑定。

当行为模型描述到实体基本动作层次的时候就形成了原子行为,这时候需要编程人员来 实现。为了让运行时任务管理器300能够执行原子行为201,同时为了支持不同行为模型之 间的紧耦合例如相互调用,提供了如下标准的编程接口。原子行为201和运行时任务管理器 300的各子引擎都实现了如下标准接口,以支持统一的接口调用规范。

●初始化接口Init(),用于绑定该行为模型所属的仿真实体,设置来自用户输入的初始 参数值,传入模型描述文件,并提供运行时任务管理器300的服务接口以支持为下级动态指 派任务。

●步长调度接口Tick(),用于周期性地执行模型,传入了当前仿真时间、输入参数值, 返回该行为模型是否运行结束的标志;由于一个仿真步长通常以毫秒为单位,而行为的持续 时间存在小于、等于或大于一个步长的三种情况,所以该接口返回1,2或3分别表示这三种 需求;当小于一个仿真步长时将在本回合继续调度下一个行为模型,当等于一个步长时将结 束本回合的调度并在下一回合调度下一个行为模型,当大于一个仿真步长时将结束本回合的 调度并在下一回合继续调度该行为模型。

●事件调度接口ProcessInteraction(),用于在行为模型感兴趣的事件被触发后进行通知 处理。

●控制接口Start()、Stop()和Suspend(),分别用于启动、停止和暂停行为模型的执行。

●判定接口Predicate(),用于实现判断逻辑,返回真或者假。

●写消息接口PostMessage(),用于向运行时任务管理器300中的黑板结构写信息,以便 相互独立的行为模型之间共享数据;传入参数是以“属性-值”对表示的信息。

●读信息接口ReadMessage(),用于读取运行时任务管理器300中的共享黑板上的数据, 传入参数为信息名称,接口返回该信息名称对应的信息值。

●设置调用周期接口GetPeriod(),用于设置该行为模型被调用的周期间隔,运行时任务 管理器300设置调度单位,行为模型被调用的周期间隔必须大于等于调度单位;较大间隔意 味着节省更多性能。本发明中运行时任务管理器300设置的调度单位为50毫秒。

●设置输出参数接口SetOutput(),设置行为模型执行时产生的输出参数值。

本发明的另一个特点是,行为编辑构件100对“判定”建立原子行为模型,称为判定的 特殊原子行为模型,该行为模型由程序员实现判定接口并通过简单返回真假值,就可重复应 用于流程图中的分支判断、有限状态机中的状态转换条件、或者规则集的前件,这使得领域 专家不用关心代码实现细节就可以表达丰富的语义。

为了支持组合行为的递归组装,并允许不同方式组合成的行为模型能够相互组装,运行 时任务管理器300实现了基于流程图的组合行为执行子引擎301、基于有限状态机的组合行 为执行子引擎302和基于规则集的组合行为执行子引擎303。各子引擎解析和执行其对应组 合方式的组合行为,并且各子引擎本身实现了与上述原子行为201接口相同的标准编程接口。 标准接口保证了运行时各种行为模型正确地组装在一起执行。

本发明的运行时任务管理器300通过提供了统一的行为模型调用方法,当不同方式的组 合行为模型202进一步组装在一起时,运行时任务管理器300自动识别各个组合行为模型202 的编辑方式,基于流程图、有限状态机或规则集,调用相应的子引擎解析行为模型描述文件, 并按照统一的标准接口有序解析和执行原子行为模型201的实现文件。

基于本发明所述的实体行为建模的组装系统,本发明还提供一种实体行为建模的组装方 法,具体如图2所示。下面结合实例对实体行为建模的组装方法进行说明。实例中需要建模 的实体为M1A2坦克,需要建模的任务为攻占。在该任务中,坦克需要从起点出发,沿指定 路径行进到敌方基地附近后,与敌方防守车辆展开战斗;战斗胜利则占领敌方基地。应用本 发明的实体行为建模方法可以按照如下步骤完成。

步骤一:为实体任务建立模型,并设置基本数据。本发明实施例中新建一个坦克攻占模 型并设置基本数据。

具体建立的行为模型为:模型标识为“攻占”;兵力类别为地面->坦克->M1A2;建制级 别为地面->单车;提供的能力为作战;模型的逼真度为中;有一个名称为“行进路线”类型 为路径的输入参数,还有一个名称为“敌方基地”类型为位置的输入参数。下面说明中的所 有行为模型均采用相同的兵力类别、建制级别、提供的能力和模型的逼真度级别。

步骤二:对实体任务进行分解。领域专家通过行为编辑构件1将实体任务进行自顶向下 逐层地分解,每一步的分解按照流程图、有限状态机或规则集的方式,分解结果形成子任务, 一直分解到各个子任务都只完成实体的基本动作,分解工作结束。最终,将实体任务分解为 一个树形结构的子任务,作为叶子节点的子任务由原子行为模型201描述,原子行为模型201 由程序员以可执行的动态链接库实现;非叶子节点的子任务和顶层节点的任务由组合行为模 型202描述。某一组合行为模型202由下层分解的原子行为模型201和/或组合行为模型202 组装而成。原子行为模型201和组合行为模型202都表现为XML格式的行为模型描述文件, 描述需要的元数据由模型库202提供。

本发明实施例中,对实体任务进行分解如下:

第一步:进行第一层分解,实现组合行为“攻占”。

第一层行为使用流程图方式,参见图4。成员行为有:

●“按路径行进”:是原子行为模型,有一个“行进路线”的输入参数并使用路径类型; 其功能是按照指定的路径前进到终点;

●“探测”:是原子行为模型,用于探测周围敌方车辆的信息,当发现敌方时将其位置 和类型信息写入运行时任务管理器300中的黑板结构以供其它原子行为模型共享;该行为模 型的执行与战斗过程是同时发生的。

●“目标选择”:是原子行为模型,用于在发现敌情后确定作战对象,需要从运行时任 务管理器300的黑板结构中读取敌方车辆信息后选择威胁度最大的作为目标,有一个名为“作 战对象”的输出参数用来标识目标实体,其数据类型为整形;

●“战斗”:是组合行为模型,与确定的敌方对象进行交战的过程,有一个名为“作战 对象”的输入参数用来标识目标实体,其数据类型为整形;

●“所有敌人被消灭”:是判定原子行为模型,根据运行时任务管理器300的黑板结构 中的信息确认敌情,如果返回真则进入下一阶段,否则继续选择敌方目标;

●“占领”:是原子行为模型,在战斗胜利后占领敌方的基地,有一个“敌方基地”的 输入参数,采用位置类型。

该组合行为模型定义的数据流参见图5。“攻占”行为模型的输入参数“行进路线”与成 员行为模型“按路径行进”的同名输入参数绑定;“攻占”行为模型的输入参数“敌方基地” 与成员行为模型“占领”的同名输入参数绑定;成员行为模型“目标选择”的输出参数“作 战对象”和成员行为模型“战斗”的同名输入参数绑定。

为了允许复用同名的行为模型,在同一流程图内所有节点均使用唯一序号来表示。“攻占” 组合行为模型的XML描述文件如下所示:

第二步:进行第二层分解,实现组合行为模型“战斗”。

该行为模型采用状态机描述,参见图6。成员行为模型有:

●“开进”状态:是组合行为模型,用于向作战目标对象的方向前进;图中关联条件1 表示当与目标足够接近时则转向“冲击”状态;

●“冲击”状态:是组合行为模型,用于在接近敌方目标后发起攻击;图中关联条件1 表示当不具备优势时则转向“休整”状态,条件2表示当敌人离开有效作战距离范围时则转 向“开进”状态,条件3表示当消灭敌人时则转向“结束”状态;由于有三个可能的下一状 态,因此需要为每个转换条件设置优先级,图中序号较小的条件其优先级更高;

●“休整”状态:是原子行为模型,当出现不利局面时则撤退休整;图中关联条件1表 示休整完毕后自动转向“开进”状态继续作战,即当前行为执行完毕后自动转换状态而无需 判定行为。

●“与敌人距离较近”条件:是判定原子行为模型,与“开进”状态关联为条件1;

●“失去优势”条件:是判定原子行为模型,与“冲击”状态关联为条件1;

●“与敌人距离较远”条件:是判定原子行为模型,与“冲击”状态关联为条件2;

●“敌人被消灭”条件:是判定原子行为模型,与“冲击”状态关联为条件3;

“战斗”组合行为模型的XML描述文件如下:

第三步,进一步分解“开进”和“冲击”组合行为模型,这里仅以“冲击”为例。“冲击” 组合行为模型采用规则集方式。为简单起见这里仅包括两条规则,参见图7。该行为模型包 括以下成员行为模型:

●“规避动作”:是原子行为模型,作为规则1的后件,用于躲避对方的反坦克弹;

●“短停射击”:是原子行为模型,作为规则2的后件,用于发射武器;

●“判断威胁”:是判定原子行为模型,有一个整数类型的输入参数“威胁类别”;本例 中两条规则的前件均使用该判定,但输入参数不同从而处理目的不同,分别用于判断威胁是 敌反坦克弹或敌方坦克。

规则集中的规则存在优先级,序号较小的优先级高,一旦高优先级的规则其前件对应的 判定结果为真,那么执行相应的后件行为模型,后续规则将不再作比较和执行。其XML格 式的描述文件如下:

步骤三,将分解建立的各行为模型保存入模型库2中。由程序员实现各原子行为模型201, 并将各原子行为模型201的实现文件保存如模型库2。顶层和中间层的子任务形成组合行为 模型202,叶子节点的子任务形成原子行为模型201。原子行为模型201交由程序员实现。

步骤四,生成对应实体任务的仿真想定文件。当行为模型作为任务被指派给仿真实体后, 便形成仿真想定文件以备执行。

仿真人员将“攻占”任务指派给仿真想定中的M1A2坦克实例,并设定好“行进路线” 和“目标位置”参数值,然后发布到仿真引擎就可以开始自动执行。

步骤五,运行时任务管理器300执行仿真想定文件。

不同的任务可按顺序指派给仿真实体形成任务队列。仿真引擎中的运行时任务管理器300 将按照图3的流程解析和执行“攻占任务”,具体如下:

步骤5.1:开始初始化。

步骤5.2:运行时任务管理器300打开仿真想定文件,解析实体任务,一个任务是一个行 为模型。

本发明实施例中运行时任务管理器300打开仿真想定文件,解析M1A2实例对应的“攻 占”任务并放入其任务队列。

步骤5.3:判断当前行为模型是否是组合行为模型,若是执行步骤5.4,否则执行步骤5.5。

本发明实施例中发现“攻占”任务是组合行为,包括:“按路径行进”、“探测”、“目标选 择”、“战斗”、“判断所有敌人是否被消灭”、“占领”六个成员行为;

步骤5.4:进一步打开各个成员行为的描述文件进行解析,对各成员行为模型执行步骤5.3。

本发明实施例发现“战斗”行为是组合行为模型,于是自顶向下递归解析,一直到原子 行为模型。

步骤5.5:动态载入各原子行为模型的实现文件。

步骤5.6:初始化结束。

步骤5.7:等待外部的启动指令。

步骤5.8:收到开始指令后,执行一个仿真步长。

步骤5.9:以实体为单位,执行各个实体的任务队列的首任务。

本发明实施例取M1A2实例的任务队列的首任务,即“攻占”行为。

步骤5.10:根据任务类型,选择运行时任务管理器中的基于流程图、基于有限状态机或 基于规则集的组合行为执行子引擎进行执行。

本发明实施例中,发现“攻占”行为的类型是基于流程图的,调用基于流程图的组合行 为子引擎301进行执行。

步骤5.11:判断子任务是否是组合行为模型,若是,执行步骤5.10,否则执行步骤5.12。

本发明实施例基于流程图的组合行为子引擎301发现“按路径行进”行为是原子行为模 型,转步骤5.12执行。

步骤5.12:调用原子行为模型的实现文件,按仿真步长开始执行,直到该行为模型结束。

本发明实施例中,直接调用“按路径行进”行为模型的Tick()接口,按仿真步长执行;当 返回标识该行为模型结束后,开始并行执行“探测”行为模型和“目标选择”行为模型。

步骤5.13:判断队首任务是否执行完毕,若是,执行步骤5.14,否则执行步骤5.8。

本发明实施例中,发现队首任务“攻占”行为模型未执行完毕,则转步骤5.8继续执行, 当发现队首任务执行完毕后,执行步骤5.14。

本发明实施例中,当“探测”行为模型和“目标选择”行为也执行完毕后,执行“战斗” 行为;发现“战斗”行为模型是基于有限状态机的,调用基于有限状态机的组合行为执行子 引擎302进行执行。

执行“战斗”行为模型的第一个状态“开进”,发现是基于规则集的,于是调用基于规则 集的组合行为执行子引擎303执行“开进”行为模型;当基于有限状态机的组合行为执行子 引擎302检测到条件“与敌人距离较近”为真时,执行下一个状态“冲击”;以此类推直到“战 斗”行为结束。

当基于流程图的组合行为执行子引擎301检测到“战斗”行为结束后,便执行判定是否 “所有敌人被消灭”,如果为假则循环执行“目标选择”和“战斗”行为,如果为真则该并行 分支结束。

因为不再有敌情,“探测”任务也会结束;于是并行过程结束;最后执行“占领”原子行 为模型。

步骤5.14:从实体任务队列删除队首任务。

本发明实施例“攻占”任务执行结束后,运行时任务管理器300从实体任务队列中删除 该“攻占”任务。

步骤5.15:判断任务队列是否为空,若是执行步骤5.16,否则执行步骤5.8。本发明实施 例中,任务队列中只有M1A2实例的任务,当该任务执行完毕后,任务队列为空。

步骤5.16:实体任务执行完毕。

本发明中,模型库200中已经保存的原子行为模型201和组合行为模型202可以复用, 并且当某一模型修改时,所有引用该模型的组合行为模型将自动使用修改后的模型,减少了 工作量,节约了存储资源。

本发明实施例中,当需要为M1A2坦克开发其它任务时,例如“巡逻”,其包含了按指定 路线循环移动以及遇敌反应的逻辑,因此可以复用已经开发好的“按路径行进”行为模型、 “探测”行为模型和“战斗”行为模型,“探测”行为模型需要简单地将判定行为修改为是否 遇敌。可将“巡逻”行为模型按照有限状态机的编辑方式进行组装。图8显示了建模细节: 首先按路径由B点移动到A点,然后由A点移动到B点,如此反复,如果在此过程探测到 敌人,那么优先进入“战斗”行为,“战斗”行为结束后,继续“按路径行进”到A点。因 此,之前的大部分工作可以复用,并且领域专家对程序员的依赖非常小,从而提高了开发效 率。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号