一种连续时间系统的并行仿真及误差补偿方法与流程

文档序号:15616010发布日期:2018-10-09 21:23阅读:273来源:国知局

本发明涉及一种针对于连续时间系统的并行仿真及误差补偿方法,属于复杂系统仿真技术领域。



背景技术:

20世纪以来,随着计算机、互联网、可视化等技术的飞速发展与融合,仿真技术在工业产品的研制过程中获得了大规模应用,尤其在设计、制造和综合保障等多个关键研制环节发挥着举足轻重的作用。

连续时间系统广泛见于工业各领域的建模与仿真中,通常以常微分方程组(ordinarydifferentialequations,odes)或微分代数方程(differentialalgebraicequation,dae)的形式表达。随着系统越来越复杂,系统求解的耗时问题日益突出,尤其在实时仿真领域这一问题尤其致命。如何提高仿真的效率成为迫切需要解决的问题。

并行仿真是解决这一问题的有效方法之一。并行仿真的主要任务是将仿真目标分解为多个子目标并将其分布在不同处理机上同时仿真,从而提高仿真的效率。将一个串行的仿真问题转化成并行仿真问题的过程称为仿真并行化,针对连续时间系统的仿真并行化研究尚有不足。此外,仿真并行化过程中由于子目标间数据交换不频繁会产生额外的时延误差。针对于此,现有的误差补偿方法普遍采用单一的插值策略:或者是常量插值、或者是线性插值等,这一单一策略无法适应系统不同时段的变化要求,更无法适应不同系统间的变化。



技术实现要素:

针对现有技术存在的下述不足:首先是没有用于连续时间系统并行仿真的系统性方法,其次是误差补偿策略不够通用。本发明公开的一种连续时间系统的并行仿真及误差补偿方法要解决的技术问题是:(1)将串行连续时间系统仿真问题转化为并行仿真问题,缩短连续时间系统求解耗时;(2)通过更加通用且合理的误差补偿策略尽量减小由串行问题转化成并行问题导致的额外误差,使误差补偿策略更通用。

本发明的目的是通过下述技术方案实现的。

本发明公开的一种连续时间系统的并行仿真及误差补偿方法,首先建立连续时间系统的雅可比矩阵,然后将雅可比矩阵转化为超图形式表达,利用超图分割策略将所述超图分割成相互间耦合度尽可能低的多个部分,再将超图分割结果映射到连续时间系统中以实现将连续时间系统分割成多个子连续时间系统且子连续时间系统间耦合低。最后各子连续时间系统被分布在不同处理机上并行仿真,每个子连续时间系统在仿真过程中采用动态选取的插值方式进行输入量的插值以补偿误差。所述方法具有误差补偿策略通用性好,能够缩短连续时间系统求解耗时,能降低单个计算机的负载的优点,适用于工程领域连续时间系统仿真。

本发明公开的一种连续时间系统的并行仿真及误差补偿方法,包括以下步骤:

步骤1:建立连续时间系统的雅可比矩阵。

步骤1具体实现方法如下:

连续时间系统用式(1)表示:

式(1)中fi(i=1,2,...,n)为状态转移函数,xi(i=1,2,...,n)为状态变量。那么连续时间系统的雅可比矩阵表示为:

矩阵中为0的元素(即)表示fi不依赖于状态变量xj,也即是的求解不依赖于状态变量xj,反之表示依赖于xj。即实现直观表达连续时间系统中的数据依赖关系。

步骤2:将步骤1中雅可比矩阵转换为超图形式表示。

步骤2具体实现方法如下:

式(2)所示的雅可比矩阵的每列对应超图的顶点,每行对应超图的超边结点。若则将对应的顶点i与对应的超边结点j相连接从而构成超边的一条边,顶点集合和超边集合共同构成完整的超图。

步骤3:利用超图划分策略将所有的超边结点划分为多个超边结点子集合。

步骤3具体实现步骤如下:

步骤3.1:利用超图划分策略将所有超边结点划分为多个完全独立的超边结点子集合以及耦合超边结点集合。

所述完全独立的超边结点子集合是指与子集合中所有超边结点相连接的顶点的集合不会发生交叉,即不存在一个顶点能够同时连接到属于两个完全独立的超边结点子集合的两个超边结点。

所述耦合超边结点是指该超边结点不能归属于任一独立的超边结点子集合,否则会造成独立性不成立。耦合超边结点集合是原系统内部的最基本耦合关系。完全独立的超边结点子集合允许有多个,而耦合超边结点集合只有一个。

对于无法直接计算的复杂的连续时间系统,步骤3.1优选借助patoh工具实现利用超图划分策略将所有超边结点划分为多个完全独立的超边结点子集合以及耦合超边结点集合。

步骤3.2:将耦合超边结点分配到独立的各超边结点子集合中,无需特别的分配规则,但应尽量使得各子集合中超边结点数量均匀。

步骤4:将步骤3划分的结果映射到原连续时间系统中,使得原连续时间系统分为多个子连续时间系统。

步骤5:对子连续时间系统分别建模以得到各子模型并将其分布到不同处理机上。

步骤6:确定子模型间的输入输出依赖关系也即数据流。

步骤7:各子模型在不同处理机上并行仿真。

对每个子模型仿真处理,具体实现方法包括如下步骤:

步骤7.1:模型初始化。

所述初始化内容包括:当前仿真时钟、状态变量及输入量初始值、当前所选取插值函数。

步骤7.2:判断当前仿真时刻是否为仿真结束时刻,如果是,则仿真结束;如果不是则继续。

步骤7.3:判断当前仿真时刻是否为通信点。如果是,则继续;如果不是,跳至步骤7.6。

所述通信点是子模型间数据交换的时间点。在并行仿真中,各子模型的依赖关系被限制在离散的通信点上,子模型的数据交换只发生在通信点上,两个通信点之间(称之为“通信区间”)各子模型并行独立求解。通信区间的长度为通信步长,通信步长通常为子模型仿真步长的n倍。

步骤7.4:将各输出量的值及其当前时刻的导数传给下游模型以更新下游模型的输入;同时检查自身输入是否已经更新,若没有则等待上游模型更新,若已更新则继续。

所述输出量当前时刻导数通过最后两次计算值的差除以仿真步长得出。

步骤7.5:根据当前通信时刻和上一通信时刻各输入量的导数,确定当前各输入量采用的插值方式。

步骤7.5为误差补偿策略,步骤7.5具体实现方法如下:

子模型的每个输入ui(i=1,2,...,m)当前通信时刻的导数为上一通信时刻的导数为规定:当时,用符号“\”表示其变化性;时,用符号“_”表示其变化性;时,用符号“/”表示其变化性。则该通信区间内各输入量的插值方式通过表1选取。

所述的a和b根据要求设定,优选a=-0.2,b=0.2。

表1插值方式选取表

步骤7.6:各输入量采用其当前插值方式插值获取当前时刻的值。

步骤7.7:模型仿真一个仿真步长,同时仿真时钟推进一个仿真步长。然后跳至步骤7.2。

步骤8:根据步骤1到步骤7将连续时间系统分割成若干子连续时间系统后并行仿真,将串行连续时间系统仿真问题转化为并行仿真问题,缩短连续时间系统求解耗时长;根据步骤7.5所述的误差补偿策略尽量减小由串行问题转化成并行问题导致的额外误差,使误差补偿策略更通用。

还包括步骤9:将步骤1至8所述一种连续时间系统的并行仿真及误差补偿方法应用于工程领域连续时间系统仿真,解决相应工程问题,所述的工程领域连续时间系统仿真包括:弹道仿真、结构模态仿真等。

有益效果:

1.本发明公开的一种连续时间系统的并行仿真及误差补偿方法,将现有技术中单一的插值策略转变为步骤7.5所示的动态选择的插值策略,即实现更加合理的误差补偿策略,尽量减小由串行问题转化成并行问题导致的额外误差,使误差补偿策略更通用。

2.本发明公开的一种连续时间系统的并行仿真及误差补偿方法,采用雅可比矩阵和超图划分策略,将连续时间系统拆分成相互间耦合度尽可能低的多个子连续时间系统,从而实现将复杂连续时间系统仿真问题变成多个简单的子连续时间系统并行仿真问题,即将串行连续时间系统仿真问题转化为并行仿真问题,缩短复杂的连续时间系统求解耗时。

3.本发明公开的一种连续时间系统的并行仿真及误差补偿方法,采用多处理机分布仿真,拆分后的子连续时间系统可以分布在不同计算机上实现分布式仿真,降低单个计算机的负载。

附图说明

图1本发明公开的一种连续时间系统的并行仿真及误差补偿方法流程图。

图2为本发明公开的一种连续时间系统的并行仿真及误差补偿方法中子模型间的通信机制;

图3为具体实施例中雅可比矩阵转化为超图结果图;图中,空心圆表示超图的顶点,实际意义表示矩阵a的列,数字j表示对应矩阵a中第j列;黑色圆点表示超图的超边结点,实际意义表示矩阵a的行,数字i表示表示对应矩阵a中第i行。

图4为具体实施例中超图划分结果图;

图5为具体实施例中子系统间数据流。

具体实施方式

为了更好地说明本发明的目的和优点,下面通过对一个包含6个状态变量的连续时间系统实现并行仿真,对本发明做出详细解释。

实施例1:

考虑到篇幅和易读性,本实施例的对象为一个简单的包含6个状态变量的连续时间系统。本实施例所采用的连续时间系统如式(3)所示:

如图1所示,本实施例公开的一种连续时间系统的并行仿真及误差补偿方法,具体实施步骤如下:

步骤1:建立连续时间系统的雅可比矩阵。

按式(2)求出雅可比矩阵a为:

步骤2:将步骤1中雅可比矩阵转换为超图形式表示。

雅可比矩阵a中六列分别对应超图中六个顶点,a中六行分别对应超图中六个超边结点,a中非零元素则在超图中生成对应顶点和超边结点的连线,转换结果如附图3所示。

步骤3:利用超图划分策略将所有的超边结点划分为多个超边结点子集合。

步骤3包括以下两个步骤:

步骤3.1:利用超图划分策略将所有超边结点划分为多个完全独立的超边结点子集合以及耦合超边结点集合。

划分结果如附图4所示,原超图被分为两个完全独立的子集合p1、p2以及耦合部分。其中,p1包括超边结点1和4;p2包括超边结点2和5;耦合部分包括超边结点3和6。

步骤3.2:将耦合超边结点分配到独立的各超边结点子集合中。

耦合部分包括超边结点3和6,考虑到均衡原则,将超边节点3分配给p1,将超边节点6分配给p2。分配后的p1包含超边节点1、3、4;p2包含超边节点2、5、6。

步骤4:将步骤3划分的结果映射到原连续时间系统中,使得原系统为为多个子连续时间系统。

步骤3将超图分成了p1、p2两部分,则原连续时间系统分为两个子连续时间系统s1、s2。p1包含超边节点1、3、4;p2包含超边节点2、5、6,由于超边结点与雅可比矩阵a的行是一一映射的,而矩阵a的各行也即是原连续时间系统的各方程,则将p1、p2分别映射到s1、s2得到:

步骤5:对子连续时间系统分别建模以得到各子模型并将其分布到不同处理机上。

步骤6:确定子模型间的输入输出依赖关系。

子模型s1的求解需要输入值x6,该值由子模型s2输出;子模型s2的求解需要输入值x1,该值由子模型s1输出。输入输出关系如附图5所示。

步骤7:各子模型在不同处理机上并行仿真。

对每个子模型,步骤7具体实现方法包括如下步骤:

步骤7.1:模型初始化。

设置当前仿真时钟t=0(s);状态变量初值xi=0(i=1,2,...,6);当前插值函数选为常量插值。

步骤7.2:判断当前仿真时刻是否为仿真结束时刻,如果是,则仿真结束;如果不是则继续。

步骤7.3:判断当前仿真时刻是否为通信点。如果是,则继续;如果不是,跳至步骤7.6。

步骤7.4:将各输出量的值及其当前时刻导数传给下游模型以更新下游模型的输入;同时检查自身输入是否已经更新,若没有则等待上游模型更新,若已更新则继续。

步骤7.5:根据当前通信时刻和上一通信时刻各输入量的导数,确定当前各输入量采用的插值方式。

步骤7.6:各输入量采用其当前插值方式插值获取当前时刻的值。

步骤7.7:模型仿真一个仿真步长,同时仿真时钟推进一个仿真步长。然后跳至步骤7.2。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例,用于解释本发明,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1