首页> 中国专利> 连续离散混合系统仿真推进方法及装置、设备及介质

连续离散混合系统仿真推进方法及装置、设备及介质

摘要

本发明实施例提供的一种连续离散混合系统仿真推进方法及装置、设备及介质,该方法包括:针对连续系统仿真时间推进,整个系统按照最小步长推进仿真时间,其中仿真对象的时间推进步长为最小步长的整数倍;针对离散事件,将事件划分为同步事件和异步事件,同步事件产生后立即执行,异步事件根据时戳大小在事件队列中按先后排序,当仿真时间推进到时戳时调度和执行异步事件,仿真对象随仿真时间的推进改变仿真对象的状态,该方法综合了时间步进与事件推进两者的优点,拓宽应用范围,提高仿真推进和调度的效率。

著录项

  • 公开/公告号CN112463326A

    专利类型发明专利

  • 公开/公告日2021-03-09

    原文格式PDF

  • 申请/专利权人 中国人民解放军海军航空大学;

    申请/专利号CN202011341455.1

  • 发明设计人 黄晓冬;谢孔树;简涛;

    申请日2020-11-25

  • 分类号G06F9/48(20060101);G06F16/23(20190101);

  • 代理机构11002 北京路浩知识产权代理有限公司;

  • 代理人陈新生

  • 地址 264001 山东省烟台市芝罘区二马路188号

  • 入库时间 2023-06-19 10:08:35

说明书

技术领域

本发明涉及计算机技术领域,尤其涉及一种连续离散混合系统仿真推进方法及装置、设备及介质。

背景技术

仿真装置运行的效率最终体现在仿真时间推进的速率上,因此,如何提高推进速率是仿真的关键问题之一。目前,仿真装置有两种基本的推进机制,基于时间步进的推进机制和基于事件的推进机制。基于时间步进的推进机制以逻辑时间为变量计算装置状态的变化,每次仿真推进逻辑时间递增一个固定的步长,并根据这个时间步长计算装置的最新状态。仿真步长在运行之前根据装置和模型特点确定,在整个仿真过程中通常维持不变。

基于事件的仿真推进机制即根据未来一段时间内即将发生的所有事件的最小发生时刻作为下一个仿真推进到的时刻,仿真时间的推进步长不是固定的,是根据事件发生的时刻而不断调整的。事件推进机制不存在多余的计算,具有最高的仿真精度,但却没有提供调整仿真效率和仿真精确度的手段。而且,当仿真装置中事件数越多、事件发生得越频繁、越密集时,仿其仿真推进的效率就越低。当在一定仿真时间内发生大量的事件时,采用下次事件时间仿真推进机制的效率比固定步长时间推进机制的仿真效率还要低。

固定步长时间推进机制适用于事件发生在时间轴上呈均匀分布的情况,而基于事件的推进机制则适用于对事件在时间轴上比较稀疏并且非均匀的情况。通常,连续装置被采样离散化后,采样点在时间轴上是均匀分布的,因此,固定步长时间推进机制适合于连续装置仿真;而离散事件装置以事件作为状态驱动的因素,则适合采用基于事件的推进机制。

目前,主流的仿真技术构架在离散事件仿真DEVS理论基础上,DEVS在解决离散事件为装置主要驱动时的仿真是非常有效的,但对于连续装置仿真或连续-离散混合装置的仿真,DEVS显得比较生硬而且低效。但是,现实世界建模仿真时,大部分情况面对的装置是连续离散的混合装置,这类装置既要模拟连续的时间推进中发生的状态改变,也要模拟离散的事件导致的状态转换。比较典型的连续离散的混合装置是战场模拟装置,这类装置既要模拟各种装备连续的运动情况,也要模拟事件(如开火、发射、爆炸)对装置的影响。

因此,如何提供一种连续离散混合系统仿真推进方案,能够综合了时间步进与事件推进两者的优点,拓宽应用范围,提高仿真推进和调度的效率是本领域技术人员亟待解决的技术问题。

发明内容

本发明实施例提供一种连续离散混合系统仿真推进方法及装置、设备及介质,能够综合了时间步进与事件推进两者的优点,拓宽应用范围,提高仿真推进和调度的效率。

第一方面,本发明实施例提供一种连续离散混合系统仿真推进方法,其特征在于,包括:

针对连续系统仿真时间推进,整个系统按照最小步长推进仿真时间,其中仿真对象的时间推进步长为最小步长的整数倍;

针对离散事件,将事件划分为同步事件和异步事件,同步事件产生后立即执行,异步事件根据时戳大小在事件队列中按先后排序,当仿真时间推进到时戳时调度和执行异步事件;

仿真对象随仿真时间的推进改变仿真对象的状态。

进一步地,所述针对离散事件,将事件划分为同步事件和异步事件,同步事件产生后立即执行,异步事件根据时戳大小在事件队列中按先后排序,当仿真时间推进到时戳时调度和执行异步事件包括:

获取仿真对象的事件,所述事件包括时间戳;

在基于所述时间戳确定所述事件为同步事件的情况下,立即执行所述同步事件;在基于所述时间戳确定所述事件为异步事件的情况下,添加所述异步事件到与仿真时刻一一对应的事件队列中;

按照最小步长推进仿真时间,并基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态;执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态。

进一步地,所述基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态包括:

接收用户对所述仿真对象的仿真精度参数值的设定N,N为正整数;

每隔N倍的最小步长,基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态。

进一步地,所述执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态包括:

查找与当前仿真时刻对应的第一事件队列;

执行第一事件队列中的事件以改变所述仿真对象的状态。

进一步地,还包括:

按照时间先后顺序确定当前仿真时刻后首次存在的第二事件队列;

确定所述第二事件队列对应的目标仿真时刻;

推进当前仿真时刻到所述目标仿真时刻,并执行所述第二事件队列。

第二方面,本发明实施例提供一种连续离散混合系统仿真推进装置,包括:

步长推进模块,用于针对连续系统仿真时间推进,整个系统按照最小步长推进仿真时间,其中仿真对象的时间推进步长为最小步长的整数倍;

事件推进模块,用于针对离散事件,将事件划分为同步事件和异步事件,同步事件产生后立即执行,异步事件根据时戳大小在事件队列中按先后排序,当仿真时间推进到时戳时调度和执行异步事件;

状态改变模块,用于仿真对象随仿真时间的推进改变仿真对象的状态。

进一步地,所述事件推进模块包括:

事件获取单元,用于获取仿真对象的事件,所述事件包括时间戳;

事件处理单元,用于在基于所述时间戳确定所述事件为同步事件的情况下,立即执行所述同步事件;在基于所述时间戳确定所述事件为异步事件的情况下,添加所述异步事件到与仿真时刻一一对应的事件队列中;

仿真推进单元,用于按照最小步长推进仿真时间,并基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态;执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态。

进一步地,还包括:

队列确定模块,用于按照时间先后顺序确定当前仿真时刻后首次存在事件的第二事件队列;

确定所述第二事件队列对应的目标仿真时刻;

推进当前仿真时刻到所述目标仿真时刻,并执行所述第二事件队列。

第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述连续离散混合系统仿真推进方法的步骤。

第四方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述连续离散混合系统仿真推进方法的步骤。

本发明实施例提供的一种连续离散混合系统仿真推进方法及装置、设备及介质,通过获将仿真对象的事件分为同步事件和异步事件,并且在进行推进时,执行相应的事件队列,并且基于仿真时间更新仿真对象的状态,从而综合了时间步进与事件推进两者的优点,拓宽应用范围,提高仿真推进和调度的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种连续离散混合系统仿真推进方法的流程图;

图2为本发明实施例提供的一种连续离散混合系统仿真推进方法的又一流程图;

图3为本发明实施例提供的一种连续离散混合系统仿真推进方法的精度设定流程图;

图4为本发明实施例提供的一种连续离散混合系统仿真推进方法的事件执行流程图;

图5为本发明实施例提供的一种连续离散混合系统仿真推进方法的仿真推进流程图;

图6为本发明实施例提供的一种连续离散混合系统仿真推进方法的示例图;

图7为本发明实施例提供的一种连续离散混合系统仿真推进装置的组成结构示意图;

图8是本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图2-图5描述本发明实施例的一种连续离散混合系统仿真推进方法。图2为本发明实施例提供的一种连续离散混合系统仿真推进方法的流程图;图3为本发明实施例提供的一种连续离散混合系统仿真推进方法的精度设定流程图;图4为本发明实施例提供的一种连续离散混合系统仿真推进方法的事件执行流程图;图5为本发明实施例提供的一种连续离散混合系统仿真推进方法的仿真推进流程图;图6为本发明实施例提供的一种连续离散混合系统仿真推进方法的示例图。

在本发明一种具体实施方式中,本发明实施例提供一种连续离散混合系统仿真推进方法,包括:

步骤S1:针对连续系统仿真时间推进,整个系统按照最小步长推进仿真时间,其中仿真对象的时间推进步长为最小步长的整数倍;

在本实施例中,首先需要定义一个最小步长,任何两个相邻事件的时间戳不会小于这个步长,从而避免了事件过于密集而降低推进效率的情况;每个仿真对象的推进步长是不相同的,根据模型精度要求步长为最小步长的整数倍

步骤S2:针对离散事件,将事件划分为同步事件和异步事件,同步事件产生后立即执行,异步事件根据时戳大小在事件队列中按先后排序,当仿真时间推进到时戳时调度和执行异步事件;

在每次最小步长推进时,均会检测和调度事件队列的事件。相比传统的离散事件仿真DEVS方法,能大幅减少事件的数量和排队时间,同时可以根据对象的仿真粒度和精度的差异灵活设定扫描和调度策略,提高了仿真推进效率。

步骤S3:仿真对象随仿真时间的推进改变仿真对象的状态。

仿真对象的状态既会按时间推进变化,也会按事件发生和响应情况发生变化;对象间的交互关系由事件表示,对象在接收到事件时将作出响应,并也可能状态发生变化。

具体地,为了实现步骤S2:针对离散事件,将事件划分为同步事件和异步事件,同步事件产生后立即执行,异步事件根据时戳大小在事件队列中按先后排序,当仿真时间推进到时戳时调度和执行异步事件,可以进行以下步骤:

步骤S11:获取仿真对象的事件,所述事件包括时间戳;

在本发明实施例中,本发明实施例的主要思路是假设在连续-离散的混合仿真系统,系统由对象及对象间的交互关系表示,所有对象集合的状态表示了系统的状态,对象的状态随时间推进通常会发生变化;对象间的交互关系由事件表示,在接收到事件时对象作出响应并也可能发生状态变化。

具体地,仿真对象被定义如下:

其中,Advance()表示对象的时间推进函数,对象的状态在执行该函数时得到更新;OnEvent1到OnEventN表示对象能响应N种事件响应函数,任何一个事件的响应也可能使状态发生变化;attribute1到attributeM表示对象具有M个属性,这些属性集合构成对象的状态变量;Event表示事件,事件对象evt含有关于事件描述、参数、调度方式、时间戳等信息。

而事件模型定义为下:

Event:={事件ID,接收对象ID,事件参数表,时间戳};

其中,事件ID为事件的类型标识;由事件发送方和接收方共同定义;接收对象ID用于指定事件由哪个对象接收;事件参数表的模板由事件收方双方定义,但具体参数值由发送方填写,由接收方解释;时间戳表示事件在何时被调度执行。

步骤S12:在基于所述时间戳确定所述事件为同步事件的情况下,立即执行所述同步事件;在基于所述时间戳确定所述事件为异步事件的情况下,添加所述异步事件到与仿真时刻一一对应的事件队列中;

为了实现离散时间点上混合时间推进,所有对象按时间步进的推进函数为Advance,仿真系统运行过程中,仿真系统(调度引擎)通过扫描所有仿真对象并调度Advance函数完成时间推进。本发明的时间推进方法综合了固定步长时间推进机制和下次事件时间推进机制的特点,即仿真时间的推进同时考虑时间步进和事件的发生。

在接收到仿真对象的事件后,可以通过比较事件发生的时间与调度的时间戳的大小,引入同步事件与异步事件的概念:如果事件发生的时间等于调度的时间戳即为同步事件,同步事件发生后,事件不进入事件队列缓冲和排序,而是直接发送到接收对象;如事件发生的时间大于调度的时间戳即为异步事件,异步事件按照步骤3调度执行。由于同步事件不缓冲和不排序,而且发送方与响应方的上下文相同,它的执行等价于函数调用,因此发送方可以将地址变量作为参数传入接收方直接使用,这种方式大大提供了事件处理的效率。

步骤S13:按照最小步长推进仿真时间,并基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态;执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态。

在整个连续的逻辑时间轴上,只有在逻辑时间为T的整数倍的时刻点上,调度引擎才会检测事件队列,当且仅当检测到当前仿真时间与事件队列中的事件时间戳匹配,才调度该事件。事件调度策图如图3所示。具体匹配规则即在当前时刻,只扫描和调度T这一小段时间内未来事件,避免仿真系统中未来所有事件的扫描,而且这种扫描方式还能够支持仿真中的动态发生事件。

进一步地,如图6所示,为了实现仿真对象的仿真精度的用户可设置,可以进行以下步骤:步骤S21:接收用户对所述仿真对象的仿真精度参数值的设定N,N为正整数;

步骤S22:每隔N倍的最小步长,基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态。

也就是说,系统定义一个最小时间步长(也就是最小步长,系统中最小的单位时间),任何两个相邻事件的时间戳不会小于这个步长,从而避免了事件过于密集而降低推进效率的情况;每个模型的推进步长是不相同的,根据模型精度要求步长为最小步长的整数倍;系统在每次最小步长推进时,均会检测和调度事件队列的事件。相比传统的离散事件仿真DEVS方法,能大幅减少事件的数量和排队时间,同时可以根据对象的仿真粒度和精度的差异灵活设定扫描和调度策略,提高了仿真推进效率。

调度引擎维护一个最小单元的逻辑步长T,T代表了仿真系统的最高时间分辨率;而每个模型对象采用N*T的步长作为模型解算的步长(N为大于等1的整数),即仿真引擎每扫描N次调度该模型一次。不同的模型N的取值可以不一样,它反映了模型随时间变化时的更新周期,模型精度越高,更新周期越小,N的值也越小(比如高速运动目标需要的采样率高,则N就小)。如图6所示,可以看到,系统的最小步长为T,而仿真对象1没隔2T才会进行一次状态更新,而仿真对象2每隔3T才会进行一次状态更新,当然也可以是其他的整数N,本发明实施例中不做限制。

更近一步地,为了执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态可以具体包括以下步骤:

步骤S31:查找与当前仿真时刻对应的第一事件队列;

步骤S32:执行第一事件队列中的事件以改变所述仿真对象的状态。

在事件列表的执行中,每次最小步长推进时,均会检测和调度事件队列的事件,从而实现事件的执行,与每个最小步长的时刻对应地存在一一对应的事件列表,从而可以方便时间戳与仿真时刻相同的事件的存储。

还需要说明的是,为了避免多余的计算和判断,本发明实施例提供的时间推进机制还能够跳过大段没有事件发生的时间,避免多余的计算和判断;同时,在一个逻辑时间T的范围内,调度引擎只对事件队列作一次检测,并将所有时间戳与当前逻辑时间匹配的事件统一调度,从而防止了事件过于密集的情况下频繁编历事件队列的发生,大幅提高了调度效率。具体地,可以进行以下步骤:

步骤S41:按照时间先后顺序确定当前仿真时刻后首次存在的第二事件队列;

步骤S42:确定所述第二事件队列对应的目标仿真时刻;

步骤S43:推进当前仿真时刻到所述目标仿真时刻,并执行所述第二事件队列。

也就是说,可以在当前仿真时刻,顺次检测接下来的仿真时刻中是否存在空的事件队列,只要检测到不为空的第二事件队列,直接将仿真时刻推进到与第二事件队列对应的目标仿真时刻去,从而避免了在空的事件队列上浪费计算资源。

本发明实施例提供的一种连续离散混合系统仿真推进方法,通过获将仿真对象的事件分为同步事件和异步事件,并且在进行推进时,执行相应的事件队列,并且基于仿真时间更新仿真对象的状态,从而综合了时间步进与事件推进两者的优点,拓宽应用范围,提高仿真推进和调度的效率。

下面对本发明实施例提供的连续离散混合系统仿真推进装置进行描述,下文描述的连续离散混合系统仿真推进装置与上文描述的连续离散混合系统仿真推进方法可相互对应参照。

请参考图7,图7为本发明实施例提供的一种连续离散混合系统仿真推进装置的组成结构示意图。

在本发明又一具体实施方式中,本发明实施例提供一种连续离散混合系统仿真推进装置700,包括:

事件获取模块710,用于获取仿真对象的事件,所述事件包括时间戳;

事件处理模块720,用于在基于所述时间戳确定所述事件为同步事件的情况下,立即执行所述同步事件;在基于所述时间戳确定所述事件为异步事件的情况下,添加所述异步事件到与仿真时刻一一对应的事件队列中;

仿真推进模块730,用于按照最小步长推进仿真时间,并基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态;执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态。

进一步地,所述仿真推进模块包括:

精度值接收单元,用于接收用户对所述仿真对象的仿真精度参数值的设定N,N为正整数;

仿真推进单元,用于每隔N倍的最小步长,基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态。

进一步地,所述仿真推进模块还包括:

队列查找单元,用于查找与当前仿真时刻对应的第一事件队列;

事件执行单元,用于执行第一事件队列中的事件以改变所述仿真对象的状态。

进一步地,还包括:

队列确定模块,用于按照时间先后顺序确定当前仿真时刻后首次存在事件的第二事件队列;

确定所述第二事件队列对应的目标仿真时刻;

推进当前仿真时刻到所述目标仿真时刻,并执行所述第二事件队列。

本发明实施例在对仿真对象进行周期扫描和调度基础上,将仿真事件按时间戳进行排队和调度。相比传统的离散事件仿真推进方法,能大幅减少事件的数量和排队时间,同时可以根据对象的仿真粒度和精度灵活设定扫描和调度策略,提高了仿真推进效率。本方法主要适用于开发仿真支撑平台或定制高性能仿真应用系统,其他高性能计算系统也可作为设计参考。

图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行连续离散混合系统仿真推进方法,该方法包括:获取仿真对象的事件,所述事件包括时间戳;在基于所述时间戳确定所述事件为同步事件的情况下,立即执行所述同步事件;在基于所述时间戳确定所述事件为异步事件的情况下,添加所述异步事件到与仿真时刻一一对应的事件队列中;按照最小步长推进仿真时间,并基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态;执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态。

此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的连续离散混合系统仿真推进方法,该方法包括:获取仿真对象的事件,所述事件包括时间戳;在基于所述时间戳确定所述事件为同步事件的情况下,立即执行所述同步事件;在基于所述时间戳确定所述事件为异步事件的情况下,添加所述异步事件到与仿真时刻一一对应的事件队列中;按照最小步长推进仿真时间,并基于仿真对象随仿真时间的事件推进函数改变所述仿真对象的状态;执行与当前仿真时刻对应的事件队列中的事件以改变所述仿真对象的状态。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号