一种多学科优化仿真软件的优化器插件开发方法转让专利

申请号 : CN201610580927.6

文献号 : CN106250204B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李文光马行雷俊杰

申请人 : 北京理工大学

摘要 :

一种多学科优化仿真软件的优化器开发方法,该方法中的优化器插件包括插件接口模块、API接口模块、算法程序模块和插件界面模块,其中,插件接口模块实现仿真软件对优化器插件的功能调用;API接口模块实现优化器插件对软件中分析模型的调用;算法程序模块实现调用算法程序、执行优化策略的功能;插件界面模块实现图形化配置算法程序参数。本发明的接口简单易学,可以实现优化器插件程序的在线调试,缩短优化器插件开发周期,同时,优化器插件与仿真软件之间的调用和数据传递采用内存交互的方式进行,提高了优化器插件的运行效率。

权利要求 :

1. 一种多学科优化仿真软件的优化器插件开发方法,其特征在于: 依托一种多学科优化仿真软件简称仿真软件,包括仿真软件界面、分析模型、仿真软件主程序以及仿真软件插件管理程序;所述仿真软件界面为仿真软件运行时显示的人机交互界面;

其中,优化器插件与仿真软件之间的调用和数据传递采用内存交互的方式进行;

所述分析模型包括模型输入参数和模型输出参数、模型程序和数据关系;

其中,模型输入参数和模型输出参数是模型程序与外部程序进行数据交互的接口;模型程序是模型所描述系统的逻辑程序;数据关系是两个模型之间接口的映像关系,模型之间按照数据关系进行数据传递;

所述仿真软件主程序是仿真软件的主要逻辑程序,负责模型之间数据的传递以及运行模型程序;

所述仿真软件插件管理程序主要实现调用优化器插件的功能;

本方法所依托的优化器插件包括插件接口模块、API接口模块、算法程序模块和插件界面模块;

各模块的功能如下:

插件接口模块实现仿真软件对优化器插件的功能调用;API接口模块实现优化器插件对仿真软件中分析模型的调用;算法程序模块实现调用优化算法程序、执行优化策略的功能;插件界面模块实现图形化配置优化算法程序参数;

插件接口模块、API接口模块采用dll文件的方式定义接口成员,并开发优化器插件,具体过程为:

1)插件接口模块定义插件接口模块中的接口成员;

2)API接口模块建立仿真软件与优化器插件的接口调用关系;

3)算法程序模块集成优化算法程序并利用API接口模块调用分析模型;

4)插件界面模块编写一个可实现拖拽功能的插件界面;

5)生成优化器插件dll文件,并把dll文件集成到仿真软件中;

所述优化器插件开发方法,包括如下步骤:

步骤1:仿真软件打开待优化的分析模型并加载优化器插件,显示优化器插件界面;

步骤2:仿真软件通过步骤1显示出来的优化器插件界面,配置优化器插件运行所需参数条件;

其中,优化器插件运行所需参数条件包括设计空间参数以及初始化参数;

其中,设计空间参数包括设计变量、约束条件、目标函数,设计变量即模型输入参数;约束条件和目标函数即模型输出参数;初始化参数为优化算法程序运行所需的参数;优化器插件运行所需参数条件的配置均通过拖拽的方式从仿真软件加载;

步骤3:仿真软件初始化优化器插件,即创建API接口实例并将此接口实例与步骤2输出的所需参数条件传递给优化器插件,具体为:步骤3.1 仿真软件根据API接口模块中定义的接口成员创建API接口实例,调用插件接口模块,将创建的API接口实例传递给优化器插件;

步骤3.2 将步骤2中得到的优化器插件运行所需参数条件和步骤3.1中得到的API接口实例传递到算法程序模块;

步骤4:优化器插件执行算法程序模块中的优化算法程序;

步骤5:优化器插件调用分析模型,具体为:

优化算法程序通过API接口实例中的接口成员调用步骤1中打开的分析模型,对分析模型的调用过程包括对设计变量赋值、驱动模型运行、获取约束条件和目标函数参数值,具体包括:步骤5.1 调用API接口实例中的输入参数赋值接口成员,完成对步骤2中设计变量的赋值;

步骤5.2 调用API接口实例中的分析模型运行接口成员,运行分析模型,并等待分析模型运行结束;

步骤5.3 调用API接口实例中的输出参数值获取接口成员,获取步骤2中约束条件;

步骤5.4 调用API接口实例中的输出参数值获取接口成员,获取步骤2中目标函数;

步骤6: 优化算法程序判断是否已经达到优化停止条件,并决定跳至步骤5还是完成本方法,具体为:

6.1 若优化算法程序未达到优化停止条件,则跳至步骤5;

6.2 若优化算法程序已达到优化停止条件,则停止优化算法程序执行,输出优化结果,完成本方法;

其中,所述的优化停止条件为优化算法程序调用分析模型的最大调用次数。

说明书 :

一种多学科优化仿真软件的优化器插件开发方法

技术领域

[0001] 本发明涉及一种多学科优化仿真软件中的优化器插件开发方法,属于软件开发技术领域。

背景技术

[0002] 复杂系统的设计需要涉及不同的学科领域,由于各学科领域有各自的仿真分析软件,这些软件之间的差异性使得各学科之间的集成和耦合非常有限,并且在进行仿真时需要进行大量的数据转换与传递,导致仿真缺乏关联性和一致性,影响了精度和效率。上个世纪80年代,多学科优化设计的思想应运而生,针对复杂系统进行设计,在分析系统各要素以及相互作用关系的基础上,采用多学科优化仿真平台进行各个学科软件的集成与系统级建模,通过平台提供的优化方法进行优化设计,从而得到最优解。
[0003] 目前,市面上的多学科优化仿真软件不多,这些软件能够提供的优化器也相对局限,在一定程度上不能够满足设计人员的优化设计需求。因此,这类多学科优化仿真软件有必要具备一个可扩展的优化器插件开发功能,能够使设计人员根据自身设计任务开发与之匹配的优化器。
[0004] 本发明依托实验室自研的多学科优化仿真软件,提出一种多学科优化仿真软件的优化器插件开发方法。本发明采用动态链接库接口的方式进行插件接口的开放,采用调用API接口的方式实现优化器插件、优化算法程序对优化仿真软件的功能调用,采用图形化的方式进行优化器插件的参数配置,从而实现第三方优化器插件在多学科优化仿真软件中的集成与调用。
[0005] 与本发明相关的具备优化器插件开发功能的多学科优化仿真软件有两款,分别为美国Phoenix Integration公司的ModelCenter和法国达索公司的ISIGHT,下文分别对这两款软件的优化器插件开发方法进行剖析:
[0006] ModelCenter的优化器插件开发方法采用插件接口与API接口的方式实现ModelCenter软件与优化器插件之间的互相调用,并规范了优化器插件接口成员,使第三方开发人员能够规范的、有针对性进行优化器插件的开发。该方法中的插件接口通过组件对象模型(即:COM)实现,使用COM进行插件接口的开发十分复杂,需要第三方开发人员具备COM相关的技能,因此造成了优化器插件开发周期长的问题。
[0007] ISIGHT提出一种基于模板的优化器插件开发方法,ISIGHT为第三方开发人员提供了优化器插件程序集模板、优化器插件界面模板,在一定程度上提高了优化器插件开发的规范性。ISIGHT与优化器之间的互相调用以及数据传递采用文件交互的方式进行,由于文件读写的速度慢,造成了优化器插件调用以及数据传递效率低的问题;采用文件交互的方式进行优化器插件的开发需要设置、读取不同的文件路径,增加了开发过程的复杂程度,降低了开发效率;基于模板的优化器开发方法不支持优化器插件的在线调试,增加了优化器插件的开发周期。
[0008] 以上两种优化器插件开发方法虽然实现了优化器插件的集成与调用的功能,但是采用文件交互和COM的方式进行软件与优化器插件的互相调用与数据交换增加了优化器插件开发的复杂程度,降低了开发效率,文件交互的方式还容易造成文件读写失败、进程占用的现象,造成优化器插件程序崩溃的问题,因此多学科优化仿真软件的优化器插件开发方法的改进还存在很大空间。本发明的目的是致力于解决上述优化器插件开发技术的缺陷,提出一种多学科优化仿真软件的优化器插件开发方法。

发明内容

[0009] 本发明的目的在于针对背景技术中提到的采用COM或文件交互的方式造成优化器插件开发周期长、运行效率低的技术缺陷,提出了一种多学科优化仿真软件的优化器插件开发方法。
[0010] 一种多学科优化仿真软件的优化器插件开发方法,简称本方法,
[0011] 其中,一种多学科优化仿真软件简称仿真软件,包括仿真软件界面、分析模型、仿真软件主程序以及仿真软件插件管理程序;
[0012] 所述仿真软件界面为仿真软件运行时显示的人机交互界面;
[0013] 所述分析模型包括模型输入参数和模型输出参数、模型程序和数据关系;
[0014] 其中,模型输入参数和模型输出参数是模型程序与外部程序进行数据交互的接口;模型程序是模型所描述系统的逻辑程序;数据关系是两个模型之间接口的映像关系,模型之间按照数据关系进行数据传递;
[0015] 所述仿真软件主程序是仿真软件的主要逻辑程序,负责模型之间数据的传递以及运行模型程序;
[0016] 所述仿真软件插件管理程序主要实现调用优化器插件的功能;
[0017] 本方法所依托的优化器插件包括插件接口模块、API接口模块、算法程序模块和插件界面模块;
[0018] 各模块的功能如下:
[0019] 插件接口模块实现仿真软件对优化器插件的功能调用;API接口模块实现优化器插件对仿真软件中分析模型的调用;算法程序模块实现调用优化算法程序、执行优化策略的功能;插件界面模块实现图形化配置优化算法程序参数;
[0020] 本方法采用的技术方案是:
[0021] 插件接口模块、API接口模块采用dll文件的方式定义接口成员,并开发优化器插件,具体过程为:
[0022] 1)插件接口模块定义插件接口模块中的接口成员;2)API接口模块建立仿真软件与优化器插件的接口调用关系;3)算法程序模块集成优化算法程序并利用API接口模块调用分析模型;4)插件界面模块编写一个可实现拖拽功能的插件界面;5)生成优化器插件dll文件,并把dll文件集成到仿真软件中;
[0023] 一种多学科优化仿真软件的优化器插件开发方法,包括如下步骤:
[0024] 步骤1:仿真软件打开待优化的分析模型并加载优化器插件,显示优化器插件界面;
[0025] 如前所述,分析模型包括模型输入参数和模型输出参数、模型程序和数据关系;
[0026] 步骤2:仿真软件通过步骤1显示出来的优化器插件界面,配置优化器插件运行所需参数条件;
[0027] 所述的优化器插件运行所需参数条件包括设计空间参数以及初始化参数;
[0028] 其中,设计空间参数包括设计变量、约束条件、目标函数,设计变量即模型输入参数;约束条件和目标函数即模型输出参数;初始化参数为优化算法程序运行所需的参数;优化器插件运行所需参数条件的配置均通过拖拽的方式从仿真软件加载;
[0029] 步骤3:仿真软件初始化优化器插件,即创建API接口实例并将此接口实例与步骤2输出的所需参数条件传递给优化器插件,具体为;
[0030] 步骤3.1仿真软件根据API接口模块中定义的接口成员创建API接口实例,调用插件接口模块,将创建的API接口实例传递给优化器插件;
[0031] 步骤3.2将步骤2中得到的优化器插件运行所需参数条件和步骤3.1中得到的API接口实例传递到算法程序模块;
[0032] 步骤4:优化器插件执行算法程序模块中的优化算法程序;
[0033] 步骤5:优化器插件调用分析模型;
[0034] 优化算法程序通过API接口实例中的接口成员调用步骤1中打开的分析模型,对分析模型的调用过程包括对设计变量赋值、驱动模型运行、获取约束条件和目标函数参数值,具体包括:
[0035] 步骤5.1调用API接口实例中的输入参数赋值接口成员,完成对步骤2中设计变量的赋值;
[0036] 步骤5.2调用API接口实例中的分析模型运行接口成员,运行分析模型,并等待分析模型运行结束;
[0037] 步骤5.3调用API接口实例中的输出参数值获取接口成员,获取步骤2中约束条件;
[0038] 步骤5.4调用API接口实例中的输出参数值获取接口成员,获取步骤2中目标函数;
[0039] 步骤6:优化算法程序判断是否已经达到优化停止条件,并决定跳至步骤5还是完成本方法,具体为:
[0040] 6.1若优化算法程序未达到优化停止条件,则跳至步骤5;
[0041] 6.2若优化算法程序已达到优化停止条件,则停止优化算法程序执行,输出优化结果,完成本方法;
[0042] 其中,所述的优化停止条件为优化算法程序调用分析模型的最大调用次数。
[0043] 有益效果
[0044] 一种多学科优化仿真软件中的优化器插件开发方法,与现有优化器插件开发方法相比,具有如下有益效果:
[0045] 本发明采用动态链接库的方式进行插件接口模块、API接口模块的开发,相较于COM和文件交互的方式,本发明的接口简单易学,可以实现优化器插件程序的在线调试,缩短优化器插件开发周期,同时,优化器插件与仿真软件之间的调用和数据传递采用内存交互的方式进行,提高了优化器插件的运行效率。

附图说明

[0046] 图1为本发明“一种多学科优化仿真软件的优化器插件开发方法”及实施例1中优化器插件的模块组成方框图;
[0047] 图2为本发明“一种多学科优化仿真软件的优化器插件开发方法”及实施例1的仿真软件与优化器插件调用关系方框图;
[0048] 图3为本发明“一种多学科优化仿真软件的优化器插件开发方法”实施例1中的压力容器外形图;
[0049] 图4为本发明“一种多学科优化仿真软件的优化器插件开发方法”及实施例2中的优化器插件运行流程图;
[0050] 图5为本发明“一种多学科优化仿真软件的优化器插件开发方法”实施例2中的优化器插件设计空间参数配置界面;
[0051] 图6为本发明“一种多学科优化仿真软件的优化器插件开发方法”实施例2中的优化器插件初始化参数配置界面;
[0052] 图7为本发明“一种多学科优化仿真软件的优化器插件开发方法”实施例2中的目标函数值曲线图。

具体实施方式

[0053] 为了更好地说明本发明的目的,下面结合附图并通过实施例,结合表格、附图对本发明做进一步说明。
[0054] 实施例1
[0055] 本实施例对本发明所提出的一种多学科优化仿真软件的优化器插件开发方法进行进一步的概述,主要阐述模块组成及调用关系。
[0056] 图1为本发明“一种多学科优化仿真软件的优化器插件开发方法”中的优化器插件的模块组成方框图;由图1可以看出,优化器插件包括插件接口模块、API接口模块、算法程序模块和插件界面模块。
[0057] 图2为本发明“一种多学科优化仿真软件的优化器插件开发方法”中的仿真软件与优化器插件调用关系方框图;由图2可以看出,仿真软件通过界面对优化器插件的插件界面模块进行参数配置,优化器插件将参数条件传递到算法程序模块的优化算法程序,优化算法程序通过API接口模块实现对分析模型的调用,仿真软件通过插件接口模块实现对优化器插件的调用;
[0058] 为了验证本发明的有效性,具体到本实施例中的优化器插件,包括实现插件接口模块接口成员,插件界面模块的开发,API接口模块的调用,并采用一种基于序列径向基函数代理模型的离散混合多目标优化算法(SRBF-MDC)作为该优化器插件的算法程序模块,最后将优化器插件集成到仿真软件,并对压力容器设计问题(Pressure Vessel Design,PVD)进行优化。
[0059] 其中,优化器插件的插件接口模块采用C#语言进行接口成员的实现,插件接口模块成员定义以及各成员功能如下表所示:
[0060] 表1插件接口模块成员定义
[0061]
[0062] 优化器插件界面的开发采用WPF技术进行实现;
[0063] API接口模块成员定义如下表所示:
[0064] 表2API接口模块成员定义
[0065]
[0066] 采用Matlab语言进行SRBF-MDC算法程序模块的开发,通过C#与Matlab混合编程的方式实现算法程序模块对API接口模块接口成员的调用,Matlab中该调用方式如下:
[0067] mdCom.invoke('SetValue',variableName,value);%模型输入参数赋值[0068] mdCom.Invoke('Start',modelName);%模型运行
[0069] objValue=mdCom.invoke('GetValue',objectName);%输出参数值获取[0070] PVD问题是一个常见的优化设计问题,其目标是在满足约束条件下减少包括焊接、材料及构型在内的制造成本。压力容器的外形如图3所示,四个设计变量分别为:球形头厚度x1,、外壳厚度x2、半径x3以及圆柱形外壳长度x4。PVD问题的表达式如下所示:
[0071]
[0072] s.t.g1(x)=0.0193x3-x1≤0
[0073] g2(x)=0.00954x3-x2≤0
[0074]
[0075] g4(x)=x4-240≤0
[0076] x1∈[1.0,1.375],x2∈[0.625,1.0]
[0077] x3∈[25,150],x4∈[25,240]
[0078] 本实施例中以PVD问题的表达式为原型在仿真软件中建立PVD问题的分析模型,并以此分析模型作为本实施例中优化器插件的优化对象。
[0079] 实施例2
[0080] 本实施例对本方法中的优化器插件运行流程进行进一步的阐述:
[0081] 图4为本发明的优化算法插件运行流程图,从图中可以看出,本实施例具体包含以下步骤:
[0082] 步骤I:仿真软件打开待优化的分析模型并加载优化器插件,显示优化器插件界面;
[0083] 具体到本实施例,PVD问题的分析模型,其输出参数为:x1、x2、x3和x4,输出参数为:g1、g2、g3、g4和f,模型程序如下所示:
[0084]
[0085] 仿真软件通过调用插件接口模块的ShowGUI接口成员加载优化器插件,优化器插件的设计空间配置界面、初始化参数配置界面如图5、图6所示。
[0086] 步骤II:仿真软件通过步骤I显示出来的优化器插件界面,配置优化器插件运行所需参数条件;
[0087] 仿真软件从模型参数列表选取设计空间参数,并加载到优化器插件的设计空间配置界面,其中x1、x2、x3和x4作为优化器插件的设计变量,g1、g2、g3、g4作为优化器插件的约束条件,f作为优化器插件的目标函数,具体设计空间参数配置如下表所示:
[0088] 表3SRBF-MDC算法设计空间参数配置
[0089]
[0090] SRBF-MDC算法的初始化参数配置如下表所示:
[0091] 表4SRBF-MDC算法初始化参数配置
[0092]参数名称 含义 参数值
NumInitialScale 初始采样比例因子 3
NumIterationScale 迭代次数比例因子 2
MaxEvalNumScale 最大模型调用次数比例因子 100
eaps 约束违背度 0.01
mineap 样本空间比例系数 0.05
modelType 代理模型基函数 多二次函数
[0093] 步骤III:仿真软件初始化优化器插件,即创建API接口实例并将此接口实例与步骤II输出的参数条件传递给优化器插件,具体为;
[0094] 步骤III.1,仿真软件调用插件接口模块的Init接口成员,将API接口实例作为参数传递到优化器插件;
[0095] 步骤III.2,将步骤II表3、表4中的优化器插件运行所需参数条件和步骤III.1中得到的API接口实例传递到Matlab中的SRBF-MDC优化算法程序。
[0096] 本实施例中参数条件具体传递过程如下所示:
[0097] //启动Matlab引擎
[0098] Type matlabAppType=GetTypeFromProgID("Matlab.Application");
[0099] matlab=System.Activator.CreateInstance(matlabAppType)as MLApp.MLApp;
[0100] //传入API接口实例
[0101] matlab.PutWorkspaceData("mdCom","base",md);
[0102] //传入设计变量、约束条件、目标函数
[0103] matlab.PutWorkspaceData("variableNames","base",variableNames);
[0104] matlab.PutWorkspaceData("constrantNames","base",constrantNames);
[0105] matlab.PutWorkspaceData("objectNames","base",objectNames);
[0106] //传入初始化参数
[0107] matlab.PutWorkspaceData("NumInitialScale","base",3);
[0108] matlab.PutWorkspaceData("NumIterationScale","base",2);
[0109] matlab.PutWorkspaceData("MaxEvalNumScale","base",100);
[0110] matlab.PutWorkspaceData("eaps","base",0.01);
[0111] matlab.PutWorkspaceData("mineap","base",0.05);
[0112] matlab.PutWorkspaceData("modelType","base",多二次函数);
[0113] 步骤IV:优化器插件执行算法程序模块中的优化算法程序;
[0114] 优化器插件调用Matlab引擎,执行SRBF-MDC优化算法程序,具体如下:
[0115] matlab.Execute("optResults=SRBF_MDC_Run()");
[0116] 计算最大分析模型调用次数kmax,其中kmax=MaxEvalNumScale*设计变量维度,并设置初始化调用次数初值k;
[0117] 具体到本实施例,MaxEvalNumScale为100,设计变量维度为4,即kmax=400,k被初始化为0。
[0118] 步骤V:优化器插件调用分析模型,具体为:
[0119] 步骤V.1,在SRBF-MDC优化算法程序中调用API接口实例中的SetValue接口成员,完成对表3中设计变量的赋值,具体如下:
[0120] mdCom.invoke('SetValue','PVD.x1',value1);
[0121] mdCom.invoke('SetValue','PVD.x2',value2);
[0122] mdCom.invoke('SetValue','PVD.x3',value3);
[0123] mdCom.invoke('SetValue','PVD.x4',value4);
[0124] 步骤V.2,调用API接口实例中的Start接口成员,驱动分析模型运行,并等待分析模型运行结束,具体如下:
[0125] mdCom.Invoke('Start','PVD');
[0126] 步骤V.3,调用API接口实例中的GetValue接口成员,完成对表3中约束条件参数值的获取,具体如下:
[0127] const_g1_value=mdCom.invoke('GetValue','PVD.g1');
[0128] const_g2_value=mdCom.invoke('GetValue','PVD.g2');
[0129] const_g3_value=mdCom.invoke('GetValue','PVD.g3');
[0130] const_g4_value=mdCom.invoke('GetValue','PVD.g4');
[0131] 步骤V.4,调用API接口实例中的GetValue接口成员,完成对表3中目标函数参数值的获取,具体如下:
[0132] object_f_value=mdCom.invoke('GetValue','PVD.f');
[0133] 步骤VI,判断是否已经达到优化停止条件
[0134] 具体到本实施例,优化停止条件为达到最大分析模型调用次数,即判断是否k<kmax,并决定是否完成优化,具体为:
[0135] 步骤VI.1,若否,则令k=k+1,并跳至步骤V。
[0136] 步骤VI.2,若是,则停止优化算法程序执行,输出优化结果,完成本方法。
[0137] 本实施例中,采用SRBF-MDC算法对PVD问题进行优化,得到目标函数值曲线图如图7所示,优化结果如下表所示:
[0138] 表5优化器插件优化结果
[0139]
[0140]
[0141] 表6为将SRBF-MDC算法集成到ModelCenter、ISIGHT中所用时间与本实施例集成所用时间的对比,从表中可以看出本实施例优化器插件集成所用时间为2个小时左右,而集成到ModelCenter和ISIGHT所用时间分别为4、5个小时左右。
[0142] 表6本实施例和其他方法优化器插件集成时间
[0143]采用方法 本实施例 ModelCenter ISIGHT
优化器插件集成时间/h 1 4 5
[0144] 表7为分别通过ModelCenter、ISIGHT采用SRBF-MDC算法对PVD问题优化,优化器插件运行时间与本实施例优化器插件运行时间的对比,从表中可以看出,本实施例优化器插件运行时间为38.09秒,ModelCenter和ISIGHT的优化器插件运行时间分别为45秒和158秒。
[0145] 表7本实施例和其他方法优化器插件运行时间
[0146]采用方法 本实施例 ModelCenter ISIGHT
优化器插件运行时间/s 38.09 45 158
[0147] 从以上数据可以看出,采用本发明提供的优化器插件开发方法可以很大限度的减少优化器插件的开发周期,并达到提高优化器插件的运行效率的目的。
[0148] 以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。