一种分布式架构下的代码集成仿真方法技术

技术编号:30544566 阅读:24 留言:0更新日期:2021-10-30 13:22
本发明专利技术公开了一种分布式架构下的代码集成仿真方法,建立由服务器和客户端组成的分布式仿真架构,服务器与客户端的通信采用TCP/IP协议,其中客户端加载fmu格式的通信控件和仿真模型,以进行模型分布式求解;在分布式仿真架构的客户端加载dll格式的异构代码集成中间件,其作为TCP/IP客户端挂接模型总线并按照约定的通信协议完成数据交互;以异构代码集成中间件为数据中转的枢纽,将各类编程语言代码与分布式仿真数据总线相连接,达到编程语言代码接入模型总线实现分布式联合仿真。本发明专利技术将代码集成在一个分布式仿真架构下,在提高仿真效率的基础上将各类型、不同语言编制的数值计算程序兼容,实现了异构代码集成仿真;使用方便,而且通用性好。而且通用性好。

【技术实现步骤摘要】
一种分布式架构下的代码集成仿真方法


[0001]本专利技术属于仿真
,涉及一种分布式架构下的代码集成仿真方法。

技术介绍

[0002]随着计算机仿真技术的广泛应用,特别是现代军事需求的推动,仿真需求对仿真系统的要求越来越高,逐渐地从单机、单对象、同地的简单仿真系统向多机、多对象、异地的复杂仿真系统发展。分布式交互仿真技术正是随着计算机技术、网络技术和虚拟现实等技术的高速发展为了满足不断增长的仿真应用需求而不断地完善,成为领域内复杂任务和复杂对象研究的主要方法。
[0003]在集成仿真过程中,有时不可避免地需要集成一些特殊的模型,如C/C++源代码、*.dll文件、Python函数等。这种需求的来源比较复杂,主要有以下几个方面:首先,许多公司或机构出于采购成本的考虑,并不愿意用商业工具,更偏向于使用开源环境自己编写仿真计算程序,以达到便于修改且容易受控地目的;
[0004]其次,有的仿真计算方法成型于很多年以前,受限于当时的仿真条件,许多计算程序都是自研程序,后来经过多年修改与迭代,模型的准确度已经达到了非常准确的程度,但是代码的可移植性却已经非常差,所以最现实的办法就是直接调用而不是重构;
[0005]再次,目前各种商业仿真工具大多数仅提供了调用*.dll文件的接口或方法,且普遍操作复杂不易使用,而能够便捷支持调用C/C++源代码或Python代码的商业工具更是寥寥无几,这就给异构模型集成仿真带来了困扰;
[0006]最后,随着软件科学的不断进步,许多编程语言提供了非常丰富的库函数和工程包,许多以往需要大量时间开发的功能现在都有了可以直接调用的函数接口,比如神经网络算法、复杂的数据处理方法等,这些库函数和工程包显著地弥补了传统仿真软件中计算方法的不足,将这些强大的代码包引入分布式仿真中能够最大限度地发挥数值算法的优势。
[0007]此外,根据公开资料显示可知,国外的分布式仿真集成商业工具(如美国的CosiMate和德国的TISC)普遍也具备集成C/C++源代码和*.dll文件的功能。
[0008]将源代码挂接分布式集成仿真数据总线并开展仿真的需求很早就有,有些仿真工具也提供了一些代码集成环境或dll文件调用接口,但仍存在一些问题:1)使用不方便。一些仿真工具提供了典型的程序代码(如C/C++等)接口或dll文件调用接口,但大都基于自身仿真工具拓展而来,并不具备普遍性。如果几种自研的仿真程序需要开展分布式仿真时也需要借助某个仿真工具作为中转,非常不便捷;2)支持的代码种类不多,有的仅支持C/C++,有的仅支持dll文件调用,通用性较差;3)代码大都只能单独运行,无法接入分布式仿真架构体系,这样带来的结果是效率无法进一步提升。

技术实现思路

[0009]本专利技术解决的技术问题在于提供一种分布式架构下的代码集成仿真方法,将不同
种类的程序代码(或函数)接入分布式仿真架构体系开展分布式集成仿真,同时也要能够兼顾不同种类源代码。
[0010]本专利技术是通过以下技术方案来实现:
[0011]一种分布式架构下的代码集成仿真方法,包括以下操作:
[0012]1)建立由服务器和客户端组成的分布式仿真架构,服务器与客户端的通信采用TCP/IP协议,其中客户端加载fmu格式的通信控件和仿真模型,以进行模型分布式求解;服务器与客户端通过数据并行通信,进行仿真过程的全部客户端的同步、仿真计算推进和数据交互:
[0013]在T通信时刻,当所有客户端的仿真模型都完成计算并推进到T时刻后,服务器利用多线程并发的方法同时与各个仿真模型完成当前时间步的数据交互通信;完成较快的仿真模型原地等待,等到全部客户端的数据通信都完成后,服务器发出指令,时间步向前推进,开始T+1时间步的运算;
[0014]2)在分布式仿真架构的客户端加载dll格式的异构代码集成中间件,其作为TCP/IP客户端挂接模型总线并按照约定的通信协议完成数据交互;同时,其给出规范且唯一的调用接口,以便各代码对其进行调用;以异构代码集成中间件为数据中转的枢纽,将各类编程语言代码与分布式仿真数据总线相连接,达到编程语言代码接入模型总线实现分布式联合仿真。
[0015]所述的客户端的仿真模型为异构模型,各客户端的仿真工具可以相同也可以不同,其求解模型、求解算法、求解步长允许不同,以支持不同学科领域的仿真模型在最适合的条件下进行仿真计算。
[0016]所述fmu格式的通信控件是基于modelica语言开发的TCP/IP通信客户端程序所生成的*.fmu格式文件,此*.fmu格式文件作为TCP/IP通信控件使用。在进行分布式仿真之前,在仿真工具中导入所生成的*.fmu格式文件,服务器通过*.fmu格式文件实现与各个仿真工具的分布式联合仿真。
[0017]*.fmu格式文件按照提前约定的FMI 1.0或者2.0标准生成的,其同时包含Model

Exchange和Co

Simulation两种FMI标准格式。
[0018]所述服务器通过同步时钟实现客户端的同步:
[0019]每个客户端的仿真模型在各自的仿真工具中运行,在服务器同步时钟的控制下,每到一个约定的通信时间点,所有仿真模型通过fmu格式的通信控件将提前约定好的数据传输到服务器,同时从服务器接受后续计算所需要的数据;
[0020]在服务器同步时钟的控制下,先运行到达通信时间点的仿真模型会被挂起,处于等待状态;直到全部客户端的仿真模型都完成计算并到达通信时刻,服务器才会发出指令推进各仿真模型运行下一时间步的仿真。
[0021]所述的异构代码集成中间件为*.dll格式的中间件,保证所有能够支持dll文件调用的编程语言都可以调用;需要参与仿真的程序,调用该中间件就可以接入分布式联合仿真。
[0022]与现有技术相比,本专利技术具有以下有益的技术效果:
[0023]本专利技术提供的分布式架构下的代码集成仿真方法,通过分布式仿真架构实现仿真模型的分布式计算求解,同时架构中的服务器端采用并行通信;在分布式架构内实现“模型
并行计算”+“数据并行通信”;同时在客户端加载统一形式的异构代码集成中间件,以统一格式的dll程序作为连接不同语言源代码和分布式仿真数据总线的中间件,以此为数据中转的枢纽将各类编程语言代码与分布式仿真数据总线相连接。
[0024]本专利技术提供的分布式架构下的代码集成仿真方法,代码集成中间件为dll格式的程序,其调用接口规范且唯一,不存在歧义,,也就能够实现接入模型总线开展分布式仿真;只需要在自研程序中调用该中间件dll就可以接入分布式仿真,无需借助任何商业仿真工具,使用方便;而且一个代码集成中间件就可以同时兼容多种异构代码的集成仿真,所有能够支持dll文件调用的编程语言(C/C++、Python、Java、VB、Golang、C#、Delphi、JavaScript、R、Fortran等语言)都可以调用此中间件,通用性好。
[0025]本专利技术本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式架构下的代码集成仿真方法,其特征在于,包括以下操作:1)建立由服务器和客户端组成的分布式仿真架构,服务器与客户端的通信采用TCP/IP协议,其中客户端加载fmu格式的通信控件和仿真模型,以进行模型分布式求解;服务器与客户端通过数据并行通信,进行仿真过程的全部客户端的同步、仿真计算推进和数据交互:在T通信时刻,当所有客户端的仿真模型都完成计算并推进到T时刻后,服务器利用多线程并发的方法同时与各个仿真模型完成当前时间步的数据交互通信;完成较快的仿真模型原地等待,等到全部客户端的数据通信都完成后,服务器发出指令,时间步向前推进,开始T+1时间步的运算;2)在分布式仿真架构的客户端加载dll格式的异构代码集成中间件,其作为TCP/IP客户端挂接模型总线并按照约定的通信协议完成数据交互;同时,其给出规范且唯一的调用接口,以便各代码对其进行调用;以异构代码集成中间件为数据中转的枢纽,将各类编程语言代码与分布式仿真数据总线相连接,达到编程语言代码接入模型总线实现分布式联合仿真。2.如权利要求1所述的分布式架构下的代码集成仿真方法,其特征在于,所述的客户端的仿真模型为异构模型,各客户端的仿真工具可以相同也可以不同,其求解模型、求解算法、求解步长允许不同,以支持不同学科领域的仿真模型在最适合的条件下进行仿真计算。3.如权利要求1所述的分布式架构下的代码集成仿真方法,其特征在于,所述fmu格式的通信控件是基于modelica语言开...

【专利技术属性】
技术研发人员:付翔郝康康吕文军
申请(专利权)人:西安中锐创联科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1