CN111444635B - 一种基于xml语言的系统动力学仿真建模方法及系统 - Google Patents
一种基于xml语言的系统动力学仿真建模方法及系统 Download PDFInfo
- Publication number
- CN111444635B CN111444635B CN202010382055.9A CN202010382055A CN111444635B CN 111444635 B CN111444635 B CN 111444635B CN 202010382055 A CN202010382055 A CN 202010382055A CN 111444635 B CN111444635 B CN 111444635B
- Authority
- CN
- China
- Prior art keywords
- component
- simulation
- model
- calculation
- stock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E60/00—Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于仿真建模技术领域,具体涉及一种基于XML语言的系统动力学仿真建模方法及系统,依据系统动力学模型的特点,定义一种XML通用系统动力学仿真建模语言,将构建好的XML文件作为输入,解析XML文件以重构系统动力学模型;基于系统动力学流量存量的积分关系,以一种连续的方式定量地对系统动力学模型进行蒙特卡洛仿真建模;将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息进行存储和整理并输出,所述数据信息指每个组件的数值参数在对应的每一个时间步长上的数据水平。
Description
技术领域
本发明属于仿真建模技术领域,具体涉及一种基于XML语言的系统动力学仿真建模方法及系统。
背景技术
系统动力学方法是一种针对强调系统模型结构特性的复杂问题解决之道,一种连续性的系统建模方法,采用连续的时间模拟方法方法,在模拟中,时间被划分成预先设定好的时间间隔。模型变量在每个时间间隔的结束时计算,随着时间调整它们的行为。
系统动力学仿真模型易于构建和学习,具有多变量、定性与定量分析相结合的特点,可以处理多回路、非线性的时变复杂系统问题。方便定义动态过程中相关因素的因果关系,可以帮助研究者很好地定量分析相关因素对动态过程的影响。
自20世纪90年代初以来,市场上的仿真工具层出不穷,常见的系统动力学仿真工具有iThink、Vensim等,这些软件允许用户以图形化的方式建立模型,对实际问题进行仿真,且提供对模型仿真结果的分析。然而,这些仿真软件大多是商业的、收费的,没有相关的开源内核,无法剥离出独立的引擎。这直接导致了可定制性差,可扩展性差,集成第三方工具的能力弱,无法有效地被调用。
发明内容
本发明的目的在于:解决上述问题,提供一种基于XML语言的系统动力学仿真建模方法及系统(仿真建模系统在本申请后续亦称仿真建模引擎),支持解析基于XML通用建模语言构建的仿真模型,根据解析出的模型执行系统动力学仿真,收集和分析模型运行过程中的数据信息并输出分析结果。
本发明的技术方案为:提供一种基于XML语言的系统动力学仿真建模方法,包括以下步骤:
步骤1:定义一种XML通用系统动力学仿真建模语言,将构建好的XML文件作为输入,解析XML文件以重构系统动力学模型;
步骤2:基于系统动力学流量存量的积分关系,采取连续的时间模拟方法,在模拟中,将时间划分成预设好的时间间隔,模型变量在每个时间间隔结束时计算以实现定量地对系统动力学模型进行蒙特卡洛仿真建模;所述蒙特卡洛仿真建模为使用伪随机数来代替模型中的部分变量,通过大量独立的单次仿真建模,来降低随机误差,达到用频率近似概率的效果;
步骤3:将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息进行存储和整理并输出,所述数据信息指每个组件的数值参数在对应的每一个时间步长上的数据水平;
所述步骤2中所述的单次仿真建模的具体方法为:对重构后的系统动力学模型依次进行组件排序、组件初始化以及组件计算;
所述组件排序是指在对系统动力学模型进行拓扑排序时,若组件为流量,则计算前驱时,忽略流量组件所有存量前驱;
所述组件初始化是指将排序后的组件赋初值以及将所有存量组件从所有组件中选择出来后保持每个存量组件之间的原顺序再将所有存量组件放到模型的末尾;
所述组件计算是指将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
优选地,所述组件计算的具体方法包括对变量组件的计算方法、对流量组件的计算方法和存量组件的计算方法,
变量组件的计算方法为:先从计算器中取出变量组件的原始值,之后取出变量组件原始值的计算公式,放入计算器中进行计算,将计算得出的值存入对应的变量对象,用于后续输出;
流量组件的计算方法为:先从计算器中取出流量组件的原始值,之后取出流量组件原始值的计算公式,放入计算器进行计算,将计算得出的值存入对应的流量对象,需要结合考虑步长的因素,即将从计算器计算得到的值乘以步长,得到最终结果,再存入计算器,用于后续输出;
存量组件的计算方法为:先从计算器中取出存量组件的初值,之后取出存量组件初值的计算公式,放入计算器进行计算,将计算得出的值与存量组件的初相加得到存量组件的新初值,新初值存入对应的存量对象,用于后续输出。
优选地,所述步骤3中涉及的将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息输出的具体方法为:
收集并整理N次独立的单次仿真建模的全部仿真数据,对于每一个时间步长,将N次独立的单次仿真建模对应的全部仿真数据在对应时间步长上形成的一一映射的N个数据划为一个集合A,计算集合A在置信度为C时的置信区间及平均值,其中C为用户自行指定的置信度,利用频率来代替概率,由此来判断对应的时间步长过程中以及整个仿真过程中的仿真数据的概率分布情况。
优选地,所述引擎包括输入模块、计算模块和输出模块;
所述输入模块用于输入构建好的XML文件,解析XML文件以重构系统动力学模型;
所述计算模块用于以一种连续的方式定量地对所述输入模块构建出的系统动力学模型进行蒙特卡洛仿真建模;所述蒙特卡洛仿真建模为使用伪随机数来代替模型中的部分变量,通过大量独立的单次仿真建模,来降低随机误差,达到用频率近似概率的效果;
所述输出模块用于将所述计算模块在蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息进行存储和整理并输出。
优选地,所述计算模块进行单次仿真建模的具体过程为读取XML文件,依次进行组件排序、组件初始化以及组件计算;
所述组件排序是指在对系统动力学模型进行拓扑排序时,若组件为流量,则计算前驱时,忽略流量组件所有存量前驱;
所述组件初始化是指将排序后的组件赋初值以及将所有存量组件从所有组件中选择出来后保持每个存量组件之间的原顺序再将所有存量组件放到模型的末尾;
所述组件计算是指将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
优选地,所述计算模块进行组件计算的具体方法包括对变量组件的计算方法、对流量组件的计算方法和存量组件的计算方法,
变量组件的计算方法为:先从计算器中取出变量组件的原始值,之后取出变量组件原始值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值存入对应的变量对象,用于后续输出;
流量组件的计算方法为:先从计算器中取出流量组件的原始值,之后取出流量组件原始值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值存入对应的流量对象,需要结合考虑步长的因素,用于后续输出;
存量组件的计算方法为:先从计算器中取出存量组件的初值,之后取出存量组件初值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值与存量组件的初相加得到存量组件的新初值,新初值存入对应的存量对象,用于后续输出。
优选地,所述输出模块将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息输出的具体方法为:
收集并整理N次独立的单次仿真建模的全部仿真数据,对于每一个时间步长,将N次独立的单次仿真建模对应的全部仿真数据在对应时间步长上形成的一一映射的N个数据划为一个集合A,计算集合A在置信度为C时的置信区间及平均值,其中C为用户自行指定的置信度,利用频率来代替概率,由此来判断对应的时间步长过程中以及整个仿真过程中的仿真数据的概率分布情况。
本发明的有益效果在于:
通过解析输入使用XML通用建模语言构建的仿真模型,根据解析出的模型基于系统动力学的积分关系执行仿真,收集和分析模型运行过程中的数据信息并输出分析结果,实现了利用对基于建模语言构建的系统动力学模型进行仿真建模,并收集模型运行过程中的数据信息并输出分析结果的方法,便于更好的理解模型的仿真过程,从而针对仿真预测结果和期望目标的差距对现有状态进行调整。
附图说明
图1是本发明基于XML语言的系统动力学仿真建模方法流程图;
图2是本发明实施例一中的一种定义的仿真建模语言的树形结构图;
图3是本发明实施例一中的系统动力学兔子繁殖模型;
图4是本发明实施例一中兔子繁殖模型在Vensim中的仿真配置信息;
图5是本发明实施例一中的兔子繁殖模型基于XML建模语言的系统动力学模型文件;
图6是本发明实施例一中的一种解析XML模型文件的方法流程图;
图7是本发明实施例一中的一种改进的拓扑排序算法流程图;
图8是本发明实施例一中的一种针对不同类型模型组件的计算流程图;
图9是本发明实施例一中的一种蒙特卡洛模拟流程图;
图10是本发明实施例一中的一种兔子繁殖模型所有组件的数据水平矩阵结果图;
图11是本发明实施例二中的一种集成仿真引擎的web系统的架构示意图;
图12是本发明实施例二中的一种单一波动图的web例图;
图13是本发明实施例二中的一种原因波动图的web例图;
图14是本发明实施例二中的一种蒙特卡洛仿真结果图的web例图。
图15是本发明实施例三提供的一种对使用基于XML的仿真建模语言构建的系统动力学模型进行仿真的装置的结构示意图。
具体实施方式
本文使用的术语“模型”是指系统动力学模型;“模型具体参数”是指系统动力学模型中用来表示系统逻辑结构及变量间的反馈关系的信息,具体包括系统参数、存量、流量、变量、关系式等;“系统参数”是指系统动力学模型的仿真配置信息,具体包括仿真的初始时间、结束时间、时间步长以及时间单位;“模型组件”是指在系统动力学模型中用以仿真的最小单元——模型组件元素,主要包括存量、流量和变量;“存量”是指系统动力学模型中的存量,存量指在过程中移动或存储的物理或逻辑实体;“流量”是指系统动力学模型中的流量,流量指存量变化的速率;“变量”是指变量是仿真过程中系统的信息量及决定系统结构的参数;“计算器”是指Jmathlib科学计算库,是一个计算数学函数的程序,可以用来计算复杂的数学表达式;“蒙特卡洛”是指蒙特卡罗统计模拟法,通过大量单次模拟,利用频率来代替概率,最终用这些概率作为问题的解;“仿真结果数据”是指在仿真过程中模型所有组件的数值参数随时间变化的数据信息,即所有组件在每一个时间步长上的数据水平;“仿真数据数组”是指与模型组件相对应的仿真结果数据数组,表示模型组件在仿真过程的每个时间步长的数据水平情况;“单一波动图”是指模型组件的数据水平随仿真时间推进而变化的数据波动图像;“原因波动图”是指模型组件及对该组件有影响的所有前驱组件的数据水平随仿真时间推进而变化的数据波动图像;“蒙特卡洛仿真结果图”是指使用伪随机数获得的大量仿真结果数值的概率分布图。
为了便于理解,将本发明实施例的主要发明构思进行简述。
支持解析基于XML通用建模语言构建的仿真模型,根据解析出的模型执行仿真,收集和分析模型运行过程中的数据信息并输出仿真结果。观察仿真结果数据便于更好的理解模型仿真过程,从而针对仿真预测结果和期望目标的差距对现有状态进行调整。
本发明提供了一种基于XML语言的系统动力学仿真建模方法,包括以下步骤:
步骤1:定义一种XML通用系统动力学仿真建模语言,将构建好的XML文件作为输入,解析XML文件以重构系统动力学模型;
步骤2:基于系统动力学流量存量的积分关系,采取连续的时间模拟方法,在模拟中,将时间划分成预设好的时间间隔,模型变量在每个时间间隔结束时计算以实现定量地对系统动力学模型进行蒙特卡洛仿真建模;所述蒙特卡洛仿真建模为使用伪随机数来代替模型中的部分变量,通过大量独立的单次仿真建模,来降低随机误差,达到用频率近似概率的效果;
步骤3:将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息进行存储和整理并输出,所述数据信息指每个组件的数值参数在对应的每一个时间步长上的数据水平;
所述步骤2中所述的单次仿真建模的具体方法为:对重构后的系统动力学模型依次进行组件排序、组件初始化以及组件计算;
所述组件排序是指在对系统动力学模型进行拓扑排序时,若组件为流量,则计算前驱时,忽略流量组件所有存量前驱;
所述组件初始化是指将排序后的组件赋初值以及将所有存量组件从所有组件中选择出来后保持每个存量组件之间的原顺序再将所有存量组件放到模型的末尾;
所述组件计算是指将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
所述组件计算的具体方法包括对变量组件的计算方法、对流量组件的计算方法和存量组件的计算方法,
变量组件的计算方法为:先从计算器中取出变量组件的原始值,之后取出变量组件原始值的计算公式,放入计算器中进行计算,将计算得出的值存入对应的变量对象,用于后续输出;
流量组件的计算方法为:先从计算器中取出流量组件的原始值,之后取出流量组件原始值的计算公式,放入计算器进行计算,将计算得出的值存入对应的流量对象,需要结合考虑步长的因素,即将从计算器计算得到的值乘以步长,得到最终结果,再存入计算器,用于后续输出;
存量组件的计算方法为:先从计算器中取出存量组件的初值,之后取出存量组件初值的计算公式,放入计算器进行计算,将计算得出的值与存量组件的初相加得到存量组件的新初值,新初值存入对应的存量对象,用于后续输出。
所述步骤3中涉及的将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息输出的具体方法为:
收集并整理N次独立的单次仿真建模的全部仿真数据,对于每一个时间步长,将N次独立的单次仿真建模对应的全部仿真数据在对应时间步长上形成的一一映射的N个数据划为一个集合A,计算集合A在置信度为C时的置信区间及平均值,其中C为用户自行指定的置信度,利用频率来代替概率,由此来判断对应的时间步长过程中以及整个仿真过程中的仿真数据的概率分布情况。
所述仿真建模系统(仿真建模系统在本申请后续亦称仿真建模引擎)包括输入模块、计算模块和输出模块;
所述输入模块用于输入构建好的XML文件,解析XML文件以重构系统动力学模型;
所述计算模块用于以一种连续的方式定量地对所述输入模块构建出的系统动力学模型进行蒙特卡洛仿真建模;所述蒙特卡洛仿真建模为使用伪随机数来代替模型中的部分变量,通过大量独立的单次仿真建模,来降低随机误差,达到用频率近似概率的效果;
所述输出模块用于将所述计算模块在蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息进行存储和整理并输出。
所述计算模块进行单次仿真建模的具体过程为读取XML文件,依次进行组件排序、组件初始化以及组件计算;
所述组件排序是指在对系统动力学模型进行拓扑排序时,若组件为流量,则计算前驱时,忽略流量组件所有存量前驱;
所述组件初始化是指将排序后的组件赋初值以及将所有存量组件从所有组件中选择出来后保持每个存量组件之间的原顺序再将所有存量组件放到模型的末尾;
所述组件计算是指将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
所述计算模块进行组件计算的具体方法包括对变量组件的计算方法、对流量组件的计算方法和存量组件的计算方法,
变量组件的计算方法为:先从计算器中取出变量组件的原始值,之后取出变量组件原始值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值存入对应的变量对象,用于后续输出;
流量组件的计算方法为:先从计算器中取出流量组件的原始值,之后取出流量组件原始值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值存入对应的流量对象,需要结合考虑步长的因素,用于后续输出;
存量组件的计算方法为:先从计算器中取出存量组件的初值,之后取出存量组件初值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值与存量组件的初相加得到存量组件的新初值,新初值存入对应的存量对象,用于后续输出。
所述输出模块将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息输出的具体方法为:
收集并整理N次独立的单次仿真建模的全部仿真数据,对于每一个时间步长,将N次独立的单次仿真建模对应的全部仿真数据在对应时间步长上形成的一一映射的N个数据划为一个集合A,计算集合A在置信度为C时的置信区间及平均值,其中C为用户自行指定的置信度,利用频率来代替概率,由此来判断对应的时间步长过程中以及整个仿真过程中的仿真数据的概率分布情况。
图1为本发明基于XML语言的系统动力学仿真建模方法的步骤流程图。
本发明的引擎支持系统动力学,本发明实施例一提供的一种系统动力学仿真建模方法具体包括如下步骤:
步骤110、定义一种基于XML的通用建模语言,利用建模语言构建的XML模型文件作为仿真的输入。
系统动力学(System Dynamics)仿真模型主要包括以下信息:
模型的仿真配置信息(系统参数),包括仿真的初始时间T1、结束时间T 2、时间步长S以及时间单位Unit。通过将模拟时间T 2-T 1划分为长度均为S的离散区间,然后按照S的间隔对模型进行推进,从而可完成动态模型的仿真;
模型组件的基本信息,包括组件的类型信息type、组件名称name、具体关系式equation、初始值initial value等。系统动力学模型主要有三种组件:存量Stock、流量Rate及变量Variable。存量指在过程中移动或存储的物理或逻辑实体,存量可以在每一个模拟时间间隔发生变化;流量指存量变化的速率;变量是仿真过程中系统的信息量及决定系统结构的参数。存量、流量、变量及所有元素间的相互影响和反馈关系构成了系统动力学模型。具体关系式说明了如何利用其他组件以及系统可用的信息来对组件产生影响,初始值为模型组件在仿真开始时的数据水平;
流图的顺序信息,包括每一个组件的前趋组件predecessor和后继组件succeed。前驱和后继关系表示系统的逻辑结构及变量间的相互影响关系。其中,前驱组件指会对该组件造成影响的其他组件,后继组件指该组件会影响的其他组件。
定义的一种基于XML的通用建模语言基于系统动力学仿真建模的范式,能够表示系统动力学模型具体参数信息,是系统动力学模型的一种描述方法。
图2为定义的仿真建模语言的树形结构图。excute元素中表示模型的仿真配置信息,setup元素要表示所有的模型执行信息。根据组件类型将setup元素分为三部分,分别描述存量Stocks、流量Rates及变量Variables。其中,Stocks元素内可含多个Stock元素,表示模型的多个存量组件。Stock元素描述该存量组件的所有信息。Rates及Variables元素与Stocks定义大致相同。
图3是本发明实施例一中的系统动力学兔子繁殖模型在商业软件Vensim中的模型图,模型图中元素的具体含义参见Vensim使用手册。
在兔子繁殖模型中,图4是Vensim中模型的仿真配置信息,如图所示,仿真的初始时间“0年”、结束时间“5年”、仿真时间步长“1年”及时间单位“年”为仿真模型的仿真配置信息。
在该模型中,兔子的现存数量RabbitPopulation为模型存量,兔子的出生量births及死亡量deaths为模型的流量,兔子的平均寿命averageLifetime及出生率birthRate为可能影响模型变化的变量。其中,births的前驱组件有RabbitPopulation和birthRate,后继组件有RabbitPopulation。
本发明定义的基于XML的系统动力学仿真建模语言可以描述系统动力学仿真模型包括的主要信息。
本实施例中提供了一种将图3的Vensim系统动力学模型转换为图5的基于XML建模语言的系统动力学模型文件的方法,具体步骤如下:
步骤111、仿真配置信息转换,将模型的仿真配置信息转换为XML的execute节点信息;
将Vensim中模型的仿真配置信息转换为execute的四个子节点,使用<Initialtime>0</Initialtime>、<Finaltime>5</Finaltime>、<Timestep>1</Timestep>、<TimeUnits>Year</TimeUnits>四个节点表示模型的仿真配置信息,以完成对模型仿真配置信息的设置。
步骤112、模型组件序号生成,按照系统动力学存量、流量及变量的顺序依次对模型所有组件进行编号,赋予ID值,每个编号可唯一标识一个组件,得到ID-组件映射表;
对图2所示的系统动力学林木资源消耗模型的所有模型组件进行编号,赋予ID值,以便后续对流图顺序信息的系列操作。首先,对模型组件中的所有存量组件分配ID,将该模型中的存量组件——兔子的现存数量RabbitPopulation的ID值设为“0”。随后,对模型组件中的所有流量组件分配ID,将该模型中的流量组件——兔子的出生量births及死亡量deaths的ID值设为“1”和“2”。最后,对模型组件中的所有变量组件分配ID,将该模型中的变量组件——兔子的出生率birthRate及平均寿命averageLifetime ID值设为“3”、“4”。组件-ID映射情况见表1。
表1
组件名称组件ID RabbitPopulation 0births 1deaths 2birthRate3averageLifetime 4
步骤113、模型组件信息转换,将存量组件、流量组件及变量组件的基本信息及模型流图的顺序信息等转换为XML的setup节点下所有子节点的节点信息。
将系统动力学兔子繁殖模型中存量组件、流量组件及变量组件的基本信息及模型流图的顺序信息转换为Setup节点下的Stocks、Rates以及Variables子节点。
首先,将存量组件——兔子的现存数量RabbitPopulation转换为Stocks节点下的Stock子节点。使用Stock节点来代表存量,并在Stock节点中存储组件的基本信息。其中,该存量组件的基本信息见表2。
表2
组件名称前驱后继关系式初始值RabbitPopulation births、deaths births、deaths Births-deaths 1000
表一每一行代表一个存量组件,将组件的名称、前驱、后继、关系式以及初始值转换为Stock节点下的name、predecessors、succeeds、equation及initialvalue节点。其中,predecessors的predecessor子节点的属性中代表前驱组件的ID值,succeeds节点同理。
随后,将流量组件——兔子的出生量births及死亡量deaths转换为Rates节点下的两个Rate子节点。使用Rate节点来代表两个流量,并在Rate节点中存储组件的基本信息。其中,两个流量组件的基本信息见表3。
表3
表一每一行代表一个流量组件,将组件的名称、前驱、后继以及关系式转换为Rate节点下的name、predecessors、succeeds及equation节点。其中,predecessors的predecessor子节点的属性中代表前驱组件的ID值,succeeds节点同理。
最后,将变量组件——兔子的出生率birthRate及平均寿命averageLifetime转换为Variables节点下的两个Variable子节点。使用Variable节点来代表两个变量,并在Variable节点中存储组件的基本信息。其中,两个变量组件的基本信息见表4。
表4
组件名称前驱后继关系式birthRate无births 0.2averageLifetime无deaths 8
表一每一行代表一个变量组件,将组件的名称、单位、前驱、后继以及关系式转换为Variable节点下的name、unit、predecessors、succeeds及equation节点。其中,predecessors的predecessor子节点的属性中代表前驱组件的ID值,succeeds节点同理。
步骤120、解析XML模型文件,从XML模型文件中提取出系统动力学模型的所有信息,根据提取出的模型信息进行模型组件对象的创建及模型的重构。
需要解析的XML文件所含的模型信息主要包括:模型的仿真配置信息(仿真的初始时间、结束时间、步长等),模型组件的基本信息(组件的类型信息、组件名称、具体关系式、初始值等),流图的顺序信息(前趋后继)。
本实施例提供了一种解析形如图5的XML文件的方法,如图6所示,具体步骤如下:
步骤121、创建dom4j的SAX解析器SAXReader。SAX是一种快速有效的XML解析方法,它逐行扫描文档,一边扫描一边解析;
步骤122、在XML文件中找到execute节点,遍历该节点下的子节点,依次提取该节点中模型的仿真配置信息(仿真的初始时间、结束时间、步长),根据提取到的信息为系统动力学仿真系统参数赋值;
步骤123、在XML文件中找到Stocks节点,遍历该节点下的所有Stock子节点,对于每个子节点,依次提取该节点中存量组件的基本信息(组件ID、组件名称、具体关系式、初始值等),根据提取到的信息创建模型存量对象,并将组件对象放入模型的map组件集合中;
步骤124、在XML文件中找到Rates节点,遍历该节点下的所有Rate子节点,对于每个子节点,依次提取该节点中流量组件的基本信息(组件ID、组件名称、具体关系式等),根据提取到的信息创建模型流量对象,并将组件对象放入模型的map组件集合;
步骤125、在XML文件中找到Variables节点,遍历该节点下的所有Variable子节点,对于每个子节点,依次提取该节点中变量组件的基本信息(组件ID、组件名称、具体关系式等),根据提取到的信息创建模型变量对象,并将组件对象放入模型的map组件集合。
在解析基于XML通用建模语言构建的仿真模型,重构系统动力学模型之前,还包括:对以XML模型文件的格式输入的基于所述XML格式构建的仿真模型进行模型语言的校验。判断输入的仿真模型是否符合XML通用建模语言,是否按照规定的结构正确地对系统动力学模型进行描述。
XML Schema用来描述既定XML的结构,可以用一个指定的XML Schema来验证XML文档,以检查该XML文档是否符合XML Schema的结构要求。
创建SAXValidator校验工具,设置校验工具的属性及校验工具的错误处理器,然后进行校验。SAXValidator将文档写入文本缓冲区,并使用SAX解析器进行解析,从而验证XML文档是否符合校验工具属性中指定的XML Schema结构要求。
若校验通过,说明输入的模型文件符合XML通用建模语言,可以使用引擎进行仿真建模。若校验发生错误,说明输入的模型文件没有正确地描述系统动力学模型,此时,返回错误信息并中止计算引擎的调用。
步骤130、基于系统动力学流量存量的积分关系,以一种连续的方式定量的对模型进行单次仿真建模及蒙特卡洛仿真建模。
其中可选的单次仿真建模是指包括读取XML文件对组件排序,组件初始化以及组件计算的处理过程。
组件排序是指为组件计算做准备的过程,将读取后的XML文件根据记录的前驱和后继信息进行去环化的拓扑排序;组件初始化是指将排序后的组件赋初值,以及调整顺序;组件计算为核心模块,是指将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
具体的,由于拓扑排序只能针对有向无环图的局限性,本系统采用去环化的拓扑排序。去环化的拓扑排序在拓扑排序的基础上进行改进的。拓扑排序的是指:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序的序列,简称拓扑序列。拓扑排序是针对有向无环图的排序算法,但实际模型中绝大多数的模型为有向有环图。
因此传统的拓扑算法并不适用。进来需要设计一个改进的拓扑排序算法,在排序的同时对模型进行“去环化处理”。示例性的,如图3中的模型,流量组件births(下称B组件)和存量组件Rabbit population(下称RP组件)之间存在一个正反馈环路,即当B组件的值变化,会对RP组件的值有正相关的影响,而RP组件的值变化也会对B组件的值产生正向影响。此时拓扑排序将无法对其进行排序。但是实际仿真中,RP组件对B组件的影响是在整个环路计算一个周期后才生效的,也就是说RP组件指向B组件的箭头可以在当次循环计算中忽略,所以进行排序的时候我们可以暂时忽略此箭头。这样整个模型即变为一个有向无环图。如图7所示的改进的拓扑排序算法可以解决我们常用的所有模型的排序问题。
其中组件计算部分,在单次仿真计算中,对排序后的组件,分别计算。针对不同类型的组件,计算方式不同。区分计算,如图8所示。
变量计算先要从计算器中取出其原始值,之后取出其计算公式,并判断公式中包含了哪种函数,再调用相应函数计算。最后将新计算的值存入计算器中并将值存入对应的变量对象,以备之后输出。流量计算与变量计算的不同在于,流量计算需要考虑步长。在根据公式计算出结果后,需要结合考虑步长的因素,最后存入计算器中,并将值存入对应的流量对象,以备之后输出。存量计算时,由于建模过程为动态建模过程,而存量的实现是积分过程,而积分是微观的累加,所以需要将其计算结果与原结果相加,计算完成后,最后将新计算的值存入计算器中并将值存入对应的存量对象,以备之后输出。
其中可选的蒙特卡洛模拟是指借用蒙特卡洛仿真方法的原理,使用伪随机数来代替模型中的部分变量,通过大量独立的单次模拟,来降低随机误差,达到用频率近似概率的效果。如图9所示,在进行蒙特卡洛模拟之前,用户可以输入模拟的次数,也可以使用系统预设次数。开始模拟之后每次单次模拟之前系统会重新设置模型里的随机数,以达到模拟的目标。模拟次数达到设定值时,计算停止,等待进入下一步。
步骤140、在系统动力学模型仿真过程中,收集并分析模型运行产生的信息,输出模型的仿真结果数据。
其中,模型运行产生的信息是指模型所有组件的数值参数随时间变化的数据信息,即所有组件在每一个时间步长上的数据水平。
在仿真计算的过程中,可以将组件在每一个时间步长上新计算的值存入对应的数组对象以生成仿真数据数组。仿真数据数组是与模型组件相对应的仿真数据数组,表示模型组件在仿真过程的每个时间步长的数据水平情况。
输出模型仿真结果数据有助于用户分析或考察组件在仿真过程中的波动情况,追踪模型所有变量之间的相互影响关系。
示例性的,以年为步长获取兔子r在仿真周期内每一年的总体数量,并将这些数量按照仿真时间的先后进行排序,得到一个数组N r=[RabbitPopulation,rabbit,0.0,1.0,x 1,x 2,...,x k],该数组N r即为与兔子r对应的仿真数据数组,其中,RabbitPopulation为该组件的名称,rabbit为该组件的单位,0.0为本次仿真的初始时间,1.0为本次仿真的时间步长,X k是兔子r在仿真的第k年的总体数量。图10为在仿真过程中兔子繁殖模型所有组件的数据水平矩阵。
其中可选的输出蒙特卡洛仿真结果,是指收集并整理N次蒙特卡洛模拟的全部仿真数据。对于每一个时间步长,将N次仿真在该时间步长上的N个数据划为一个集合,计算该数据集合在置信度为C时的置信区间及平均值,C为用户自行指定的置信度,利用频率来代替概率,由此来判断该时间步长乃至整个仿真过程中的仿真数据的概率分布情况。
具体的,组件A的N个仿真数据数组可以构成一个仿真数据数组矩阵根据矩阵D可得到组件A的数值序列矩阵对于每一个时间步长,将N次仿真在该时间步长上的N个数据(矩阵F的每一列)划为一个集合,使用stats.norm.interval方法计算该数据集合在置信度为C时的置信区间上下界及平均值,并将上下界及平均值分别存储在上限序列、下限序列、平均值序列三个list中。遍历矩阵F的每一列,计算每一个时间步长上仿真数据的置信区间上下界及平均值,逐渐扩充三个对应的序列。根据最终得到的这三个序列,可以判断整个仿真过程中的仿真数据的概率分布情况。
本发明实施例的技术方案,通过解析使用XML通用建模语言构建的仿真模型,根据解析出的模型基于系统动力学的积分关系执行仿真,收集和分析模型运行过程中的数据信息并输出仿真结果。实现了对基于所述建模语言构建的系统动力学模型进行仿真建模,并收集模型运行过程中的数据信息并输出分析结果的方法。便于更好的理解模型的仿真过程,从而针对仿真预测结果和期望目标的差距对现有状态进行调整。
实施例二,本实施例在上述实施里的基础上进一步扩充,本实施例提供的系统动力学仿真建模引擎可以由软件和/或硬件来实现,并可以集成在各种通用计算机设备和web系统中。图11为本发明实施例二提供的一种集成仿真引擎的web系统的架构示意图,具体包括如下步骤:
步骤210、按照XML通用建模语言构建与系统动力学模型对应的XML模型文件。XML模型文件描述的模型组件主要包括系统动力学存量、流量及变量。
本实施例中,按照XML通用建模语言构建与系统动力学模型对应的XML模型文件。XML模型文件描述的模型组件主要包括系统动力学存量、流量及变量,该XML模型文件将作为引擎的输入。
步骤220、解析基于XML通用建模语言构建的仿真模型,重构系统动力学模型。
引擎接受作为输入的构建的XML模型文件,执行仿真前,需要对输入的XML进行解析。从XML模型文件中提取出系统动力学模型的所有信息,根据提取出的模型信息进行模型组件对象的创建及模型的重构。
可选的,在解析基于所述XML格式构建的仿真模型,重构系统动力学模型之前,还包括:对以XML模型文件的格式输入的基于所述XML格式构建的仿真模型进行模型语言的校验,判断输入是否可以使用引擎进行仿真建模。
步骤230、基于系统动力学流量存量的积分关系,以一种连续的方式定量的对模型进行单次仿真建模及蒙特卡洛仿真建模。
步骤240、在系统动力学模型仿真过程中,收集并整理模型运行产生的所有数据信息。
具体的,模型运行产生的信息是指模型所有组件的数值参数随时间变化的数据信息,即所有组件在每一个时间步长上的数据水平。
本实施例中提供了一种收集和整理模型运行过程中产生的数据信息并将数据信息的具体方法,包括:
在仿真计算的过程中,将组件在每一个时间步长上新计算的值存入对应的仿真数据数组;
仿真结束时,将所有的仿真数据数组按行输出到dat文件中;
将所需的具体组件的数据信息从dat文件中抽取出来,形成一个子集,将数据子集存储在txt中。
具体的,仿真数据数组是指在仿真过程中以时间步长为单位获取模型组件在第k个时间步长上的数据水平y k,并将y k按照仿真时间的先后进行排序,得到一个数组N=[name,unit,initialtime,timestep,y 1,y 2,…,y k],该数组N即为与该组件对应的仿真数据数组。
输出模型仿真结果数据有助于分析或考察组件在仿真过程中的波动情况,追踪模型所有系统变量之间的相互影响关系。
示例性的,系统动力学模型有15个模型组件,每个模型组件有其对应的仿真数据数组,数组中包含组件ID、组件名称、组件单位、仿真初始时间、仿真时间步长以及仿真过程中每个时间步长上该组件的详细数据水平。将15个模型组件对应的仿真数据数组按行输出到dat文件中。根据用户在前端选择的具体组件获取组件ID,在dat文件中搜索组件ID以定位组件数据的位置,然后将锁定位置的数据抽取出来形成数据子集,并存储在txt中。
步骤250、对整理的模型数据信息进行分析,以web图表的形式输出模型的仿真结果。
本实施例中提供了一种使用web图表来呈现仿真结果的方法,输出的web图表主要有3种类型,包括:
单一波动图:模型组件的数据水平随仿真时间推进而变化的数据波动图像。单一波动图便于观察组件在仿真周期内的变化情况。
原因波动图:模型组件及对该组件有影响的所有前驱组件的数据水平随仿真时间推进而变化的数据波动图像。原因波动图便于分析和追踪模型所有组件间的相互影响关系。
蒙特卡洛仿真结果图:使用伪随机数获得的大量仿真结果数值的概率分布情况。蒙特卡洛仿真通过大量单次模拟获取更多的仿真结果,可以反映出仿真过程中数据的概率分布情况。
具体的,单一波动图可由单个组件的仿真数据数组生成。对于单个模型组件A的仿真数据数组N A=[name,unit,initialtime,timestep,y 1,y 2,…,y k],y k代表组件A在第k个步长的数据水平,根据仿真数据数组N可以得到组件A在仿真周期内的数值序列M A=[y 1,y 2,...,y k],数组M A的长度即为单次仿真的时间间隔总数k,根据时间间隔总数k、仿真初始时间initialtime(简称t 1)以及仿真时间步长timestep(简称s),可以构造出仿真的时间序列T=[t 1+0×s,t 1+1×s,...,t 1+(k-1)×s]。时间序列T对应折线图的X轴数据,数值序列M对应折线图的Y轴数据。由此可以画出组件A的数据水平随仿真时间的变化情况。图12为本发明实施例二中的单一波动图的web例图。
原因波动图可由原组件A及其K个前驱组件的仿真数据数组生成。首先使用subplot将绘图面板进行切分,切分为K+1个子图面板,然后根据组件A的仿真数据数组获得数值序列及时间序列,在第一个子图的位置根据数值序列及时间序列画出组件A的数据水平随仿真时间的变化情况,其他K个前驱组件的数值波动情况按照此方式依次绘制在剩余的子图位置上。图13为本发明实施例二中的原因波动图的web例图。
蒙特卡洛仿真结果图由单个组件A在N次仿真中的N个仿真数据数组所生成。组件A的N个仿真数据数组构成一个仿真数据数组矩阵根据矩阵D可以得到组件A的数值序列矩阵对于每一个时间步长,将N次仿真在该时间步长上的N个数据(矩阵F的每一列)划为一个集合,使用stats.norm.interval方法计算该数据集合在置信度为C时的置信区间上下界及平均值,并将上下界及平均值分别存储在上限序列、下限序列、平均值序列三个list中。遍历矩阵F的每一列,计算每一个时间步长上仿真数据的置信区间上下界及平均值,逐渐扩充三个对应的序列。最后由三个数值序列及一个时间序列在面板中画出三条对应的曲线,并用阴影填充上下限曲线之间的部分。图14为本发明实施例二中的蒙特卡洛仿真结果图的web例图。
本发明实施例的技术方案,通过解析输入的使用XML通用建模语言构建的仿真模型,根据解析出的模型基于系统动力学的积分关系执行仿真,收集和分析模型运行过程中的数据信息,并以图表的形式输出仿真结果。实现了利用本方法对基于XML通用建模语言构建的系统动力学模型进行仿真建模,并收集模型运行过程中的数据信息并输出分析结果的方法。便于更好的理解模型的仿真过程,从而针对仿真预测结果和期望目标的差距对现有状态进行调整。
实施例三,图3为本发明实施例三提供的一种系统动力学模型的仿真装置的结构示意图,该系统动力学模型的仿真装置,包括:XML处理模块310、系统动力学仿真计算模块320和仿真结果输出模块330。
其中,XML处理模块310,用于解析基于XML通用建模语言构建的仿真模型,重构系统动力学模型,重构的系统动力学模型包括系统动力学模型仿真配置信息及模型组件元素信息;
系统动力学仿真计算模块320,用于基于系统动力学流量存量的积分关系,以一种连续的方式定量的对模型进行单次仿真建模及蒙特卡洛仿真建模;
仿真结果输出模块330,用于在系统动力学模型仿真过程中,收集并分析模型运行产生的信息,以图表的格式输出模型的仿真结果数据。
本发明实施例的技术方案,通过对基于XML通用建模语言构建的仿真模型进行解析,重构系统动力学模型,然后基于系统动力学流量存量的积分关系,以一种连续的方式定量的对模型进行单次仿真建模及蒙特卡洛仿真建模,并在系统动力学模型仿真过程中,收集并分析模型运行产生的信息,以图表的格式输出模型的仿真结果数据。实现了对基于XML通用建模语言构建的系统动力学模型进行仿真建模,收集模型运行过程中的数据信息并输出分析结果的方法。便于更好的理解模型的仿真过程,从而针对仿真预测结果和期望目标的差距对现有状态进行调整。
所述XML处理模块310,包括:
XML模型文件校验单元,对输入的XML模型文件进行模型语言的校验,判断是否可以使用引擎进行仿真建模;
XML模型文件解析单元,从XML模型文件中提取出系统动力学模型的所有信息,根据提取出的模型信息进行模型组件对象的创建及模型的重构。
可选的,所述系统动力学仿真计算模块320,包括:
模型组件排序单元,用于将读取后的XML文件根据记录的前驱和后继信息进行去环化的拓扑排序,为组件计算做准备;
模型组件初始化单元,用于对排序后的所有模型组件赋初值,以及调整计算顺序。
模型组件计算单元,用于将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
所述模型组件计算单元,具体用于:
变量计算首先从计算器中取出其原始值,之后取出其计算公式,判断公式中包含了哪种函数,再调用相应函数计算。最后将新计算的值存入计算器中并将值存入对应的变量对象,以备之后输出;
流量计算需要考虑步长,在根据公式计算出结果后,需要结合考虑步长的因素,最后存入计算器中,并将值存入对应的流量对象,以备之后输出;
存量计算时,由于建模过程为动态建模过程,而存量的实现是积分过程,而积分是微观的累加,所以需要将其计算结果与原结果相加,计算完成后,最后将新计算的值存入计算器中并将值存入对应的存量对象,以备之后输出。
所述仿真结果输出模块330,包括:
模型组件数据收集单元,用于收集和整理模型运行过程中产生的数据信息并将数据信息的具体方法,为结果输出做准备;
模型组件数据输出单元,用于对整理的模型数据信息进行分析,以图表的形式输出模型的仿真结果。
可选的,所述模型组件数据收集单元,具体用于:
在仿真计算的过程中,将组件在每一个时间步长上新计算的值存入对应的仿真数据数组;仿真结束时,将所有的仿真数据数组按行输出到dat文件中;
将所需的具体组件的数据信息从dat文件中抽取出来,形成一个子集,将数据子集存储在txt中。
可选的,所述模型组件数据输出单元,具体用于:
输出模型组件的数据水平随仿真时间推进而变化的数据单一波动图像,便于观察组件在仿真周期内的变化情况。
输出模型组件及对该组件有影响的所有前驱组件的数据水平随仿真时间推进而变化的数据原因波动图像,便于分析和追踪模型所有组件间的相互影响关系。
输出使用伪随机数获得的大量仿真结果数值的蒙特卡洛仿真图像,通过大量单次模拟获取更多的仿真结果,可以反映出仿真过程中数据的概率分布情况。
本发明实施例所提供的系统动力学模型的仿真装置可执行本发明任意实施例所提供的系统动力学模型的仿真方法,具备执行方法相应的功能模块和有益效果。
Claims (6)
1.一种基于XML语言的系统动力学仿真建模方法,其特征在于,包括以下步骤:
步骤1:定义一种XML通用系统动力学仿真建模语言,将构建好的XML文件作为输入,解析XML文件以重构系统动力学模型;
步骤2:基于系统动力学流量存量的积分关系,采取连续的时间模拟方法,在模拟中,将时间划分成预设好的时间间隔,模型变量在每个时间间隔结束时计算以实现定量地对系统动力学模型进行蒙特卡洛仿真建模;所述蒙特卡洛仿真建模为使用伪随机数来代替模型中的部分变量,通过大量独立的单次仿真建模,来降低随机误差,达到用频率近似概率的效果;
步骤3:将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息进行存储和整理并输出,所述数据信息指每个组件的数值参数在对应的每一个时间步长上的数据水平;
所述步骤2中所述的单次仿真建模的具体方法为:对重构后的系统动力学模型依次进行组件排序、组件初始化以及组件计算;
组件排序是指为组件计算做准备的过程,将读取后的XML文件根据记录的前驱和后继信息进行去环化的拓扑排序;
所述组件排序是指在对系统动力学模型进行拓扑排序时,若组件为流量,则计算前驱时,忽略流量组件所有存量前驱;
所述组件初始化是指将排序后的组件赋初值以及将所有存量组件从所有组件中选择出来后保持每个存量组件之间的原顺序再将所有存量组件放到模型的末尾;
所述组件计算是指将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
2.根据权利要求1所述的基于XML语言的系统动力学仿真建模方法,其特征在于,
所述组件计算的具体方法包括对变量组件的计算方法、对流量组件的计算方法和存量组件的计算方法,
变量组件的计算方法为:先从计算器中取出变量组件的原始值,之后取出变量组件原始值的计算公式,放入计算器中进行计算,将计算得出的值存入对应的变量对象,用于后续输出;
流量组件的计算方法为:先从计算器中取出流量组件的原始值,之后取出流量组件原始值的计算公式,放入计算器进行计算,将计算得出的值存入对应的流量对象,需要结合考虑步长的因素,即将从计算器计算得到的值乘以步长,得到最终结果,再存入计算器,用于后续输出;
存量组件的计算方法为:先从计算器中取出存量组件的初值,之后取出存量组件初值的计算公式,放入计算器进行计算,将计算得出的值与存量组件的初相加得到存量组件的新初值,新初值存入对应的存量对象,用于后续输出。
3.根据权利要求1所述的基于XML语言的系统动力学仿真建模方法,其特征在于,所述步骤3中涉及的将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息输出的具体方法为:
收集并整理N次独立的单次仿真建模的全部仿真数据,对于每一个时间步长,将N次独立的单次仿真建模对应的全部仿真数据在对应时间步长上形成的一一映射的N个数据划为一个集合A,计算集合A在置信度为C时的置信区间及平均值,其中C为用户自行指定的置信度,利用频率来代替概率,由此来判断对应的时间步长过程中以及整个仿真过程中的仿真数据的概率分布情况。
4.一种基于XML语言的系统动力学仿真建模系统,其特征在于,所述仿真建模系统包括输入模块、计算模块和输出模块;
所述输入模块用于输入构建好的XML文件,解析XML文件以重构系统动力学模型;
所述计算模块用于以一种连续的方式定量地对所述输入模块构建出的系统动力学模型进行蒙特卡洛仿真建模;所述蒙特卡洛仿真建模为使用伪随机数来代替模型中的部分变量,通过大量独立的单次仿真建模,来降低随机误差,达到用频率近似概率的效果;
所述输出模块用于将所述计算模块在蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息进行存储和整理并输出;
所述计算模块进行单次仿真建模的具体过程为读取XML文件,依次进行组件排序、组件初始化以及组件计算;
所述组件排序是指在对系统动力学模型进行拓扑排序时,若组件为流量,则计算前驱时,忽略流量组件所有存量前驱;组件排序是指为组件计算做准备的过程,将读取后的XML文件根据记录的前驱和后继信息进行去环化的拓扑排序;
所述组件初始化是指将排序后的组件赋初值以及将所有存量组件从所有组件中选择出来后保持每个存量组件之间的原顺序再将所有存量组件放到模型的末尾;
所述组件计算是指将排序并赋初值的模型组件,以既定步长和既定次数逐个计算。
5.根据权利要求4所述的基于XML语言的系统动力学仿真建模系统,其特征在于,所述计算模块进行组件计算的具体方法包括对变量组件的计算方法、对流量组件的计算方法和存量组件的计算方法,
变量组件的计算方法为:先从计算器中取出变量组件的原始值,之后取出变量组件原始值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值存入对应的变量对象,用于后续输出;
流量组件的计算方法为:先从计算器中取出流量组件的原始值,之后取出流量组件原始值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值存入对应的流量对象,需要结合考虑步长的因素,用于后续输出;
存量组件的计算方法为:先从计算器中取出存量组件的初值,之后取出存量组件初值的计算公式,并判断公式中包含的函数种类,再调用相应函数计算,将计算得出的值与存量组件的初相加得到存量组件的新初值,新初值存入对应的存量对象,用于后续输出。
6.根据权利要求4所述的基于XML语言的系统动力学仿真建模系统,其特征在于,所述输出模块将蒙特卡洛仿真建模期间系统动力学模型所有组件的数值参数随时间变化的数据信息输出的具体方法为:
收集并整理N次独立的单次仿真建模的全部仿真数据,对于每一个时间步长,将N次独立的单次仿真建模对应的全部仿真数据在对应时间步长上形成的一一映射的N个数据划为一个集合A,计算集合A在置信度为C时的置信区间及平均值,其中C为用户自行指定的置信度,利用频率来代替概率,由此来判断对应的时间步长过程中以及整个仿真过程中的仿真数据的概率分布情况。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010382055.9A CN111444635B (zh) | 2020-05-08 | 2020-05-08 | 一种基于xml语言的系统动力学仿真建模方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010382055.9A CN111444635B (zh) | 2020-05-08 | 2020-05-08 | 一种基于xml语言的系统动力学仿真建模方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444635A CN111444635A (zh) | 2020-07-24 |
CN111444635B true CN111444635B (zh) | 2022-09-23 |
Family
ID=71655035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010382055.9A Active CN111444635B (zh) | 2020-05-08 | 2020-05-08 | 一种基于xml语言的系统动力学仿真建模方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444635B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130812B (zh) * | 2020-08-04 | 2022-04-15 | 中科天玑数据科技股份有限公司 | 一种基于数据流混合编排的分析模型构建方法及系统 |
CN116484768B (zh) * | 2023-05-25 | 2023-08-18 | 之江实验室 | 一种系统动力学模型构建方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298593A (zh) * | 2014-09-23 | 2015-01-21 | 北京航空航天大学 | 一种基于复杂网络理论的soa系统可靠性评价方法 |
CN109491266A (zh) * | 2018-11-28 | 2019-03-19 | 北京宇航系统工程研究所 | 一种基于多体虚拟样机的运载火箭飞行仿真方法 |
CN110110493A (zh) * | 2019-06-06 | 2019-08-09 | 国耀量子雷达科技有限公司 | 一种舰载机着舰轨迹仿真方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769576B2 (en) * | 2005-06-30 | 2010-08-03 | The Mathworks, Inc. | Method and apparatus for integrated modeling, simulation and analysis of chemical and biological systems having a sequence of reactions, each simulated at a reaction time determined based on reaction kinetics |
US10275545B2 (en) * | 2013-03-15 | 2019-04-30 | Ventana Systems, Inc. | Modeling and simulation |
-
2020
- 2020-05-08 CN CN202010382055.9A patent/CN111444635B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104298593A (zh) * | 2014-09-23 | 2015-01-21 | 北京航空航天大学 | 一种基于复杂网络理论的soa系统可靠性评价方法 |
CN109491266A (zh) * | 2018-11-28 | 2019-03-19 | 北京宇航系统工程研究所 | 一种基于多体虚拟样机的运载火箭飞行仿真方法 |
CN110110493A (zh) * | 2019-06-06 | 2019-08-09 | 国耀量子雷达科技有限公司 | 一种舰载机着舰轨迹仿真方法及系统 |
Non-Patent Citations (5)
Title |
---|
XMILE: An XML Interchange Language for System Dynamics;Karim Chichakly;《Information Systems SIG of the Systems Dynamics Society Language Subcommittee》;20130607;第1-44页 * |
刘喜春 ; 王强 ; 李群 ; 王维平.飞机编队飞行保障系统的建模与仿真.《系统仿真学报》.2006, * |
蒋宏宇 ; 吴亚东 ; 彭娟 ; 杨文超 ; 李立.基于动力学蒙特卡洛方法的溶解扩散仿真可视化.《西南科技大学学报》.2016, * |
郭飞燕 ; 刘检华 ; 邹方 ; 翟雨农 ; 王仲奇 ; 李少卓.数字孪生驱动的装配工艺设计现状及关键实现技术研究.《机械工程学报》.2019, * |
金光 ; 张永强.航天系统仿真试验框架与集成环境设计.《计算机仿真》.2008, * |
Also Published As
Publication number | Publication date |
---|---|
CN111444635A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230161974A1 (en) | Applied Artificial Intelligence Technology for Narrative Generation Using an Invocable Analysis Service | |
Mitchell et al. | On the evaluation of the bunch search-based software modularization algorithm | |
CN107844424B (zh) | 基于模型的测试系统及方法 | |
CN111444635B (zh) | 一种基于xml语言的系统动力学仿真建模方法及系统 | |
CN111611236A (zh) | 一种数据分析方法及系统 | |
CN112597062B (zh) | 军用软件结构化质量数据抽取方法、装置及软件测试装置 | |
CN111444682A (zh) | 一种系统动力学模型转换为xml文件的方法 | |
CN107704235A (zh) | 图形化建模中数据流程图的解析方法、系统及存储介质 | |
Shishmarev et al. | Visual search tree profiling | |
CN116991750B (zh) | 利用多线程和分布式代理实现大并发模拟的压力测试方法 | |
Zhang et al. | Tuning performance of Spark programs | |
Chakhchoukh et al. | Understanding how in-visualization provenance can support trade-off analysis | |
BRZOZOWSKA et al. | DATA ENGINEERING IN CRISP-DM PROCESS PRODUCTION DATA–CASE STUDY | |
CN116467219A (zh) | 一种测试处理方法及装置 | |
CN115169578A (zh) | 一种基于元宇宙数据标记的ai模型生产方法及系统 | |
CN110928705B (zh) | 面向高性能计算应用的通信特征分析方法及系统 | |
CN111523685B (zh) | 基于主动学习的降低性能建模开销的方法 | |
US9477927B2 (en) | Automatic test generation for decision table based rules | |
CN112667591A (zh) | 一种基于海量日志的数据中心任务干扰预测方法 | |
CN113190582A (zh) | 一种数据实时交互式挖掘流建模分析系统 | |
Fernando et al. | Workflowdsl: Scalable workflow execution with provenance for data analysis applications | |
Czibula et al. | Hierarchical clustering for software systems restructuring | |
Simankov et al. | Situational center as an intelligent decision support system taking into account the uncertainty of the source information | |
Liu | Integrating process mining with discrete-event simulation modeling | |
CN113918211B (zh) | 一种工业设备对象数据模型的执行方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |