CN101739256A - 用于集成优化软件的通用接口系统 - Google Patents
用于集成优化软件的通用接口系统 Download PDFInfo
- Publication number
- CN101739256A CN101739256A CN200910243286A CN200910243286A CN101739256A CN 101739256 A CN101739256 A CN 101739256A CN 200910243286 A CN200910243286 A CN 200910243286A CN 200910243286 A CN200910243286 A CN 200910243286A CN 101739256 A CN101739256 A CN 101739256A
- Authority
- CN
- China
- Prior art keywords
- function
- variable
- interface
- assembling
- calculation task
- 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.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
用于集成优化软件的通用接口系统,包含通用接口及软件功能模块两部分内容。其中通用接口是集成优化软件功能模块与外部程序连接的桥梁,通过通用接口的调用可以实现软件功能模块的功能,通用接口包含文档接口、装配接口、计算任务接口、变量接口及连接接口等5类接口;软件功能模块包含模型管理模块、装配建模模块、集成应用程序模块、设计结构矩阵模块及优化运算模块等5个功能模块。该方法能够解决复杂产品集成优化软件的通用接口设计问题,为复杂产品集成优化软件的通用接口设计提供了技术支撑。
Description
技术领域
本发明涉及一种用于集成优化软件的通用接口系统,用于外部程序对集成优化软件的调用。
背景技术
在航天产品研制过程中,涉及多个专业学科,往往需要进行多专业耦合设计才能实现航天产品的总体性能最优,现在,通用的集成优化软件很多,如iSIGHT,optimus,ModelCenter等,这些软件提供了复杂产品进行集成优化的功能模块,其目标是将原有的各专业模型通过包装工具集成到集成优化软件中,通过软件中的设计结构矩阵(DSM)功能模块完成参数耦合关系映射及各专业之间的数据传递关系,最后应用不同的优化算法开展面向多专业的设计优化工作,从而获取总体最优的技术方案。
虽然,集成优化软件较多,但这些软件往往只提供一些算法的接口,用户可以在这些接口的基础上开发自己的优化算法,丰富软件的功能。但其它软件(外部程序)无法实现对这些集成优化软件功能模块的直接调用,针对航天产品对集成优化软件的高利用率和需求,迫切需要一种能够实现外部程序或软件直接调用集成优化软件的通用接口系统,目前,国内外未见相关报道。
发明内容
本发明的技术解决问题:克服现有技术的不足,提供一种用于集成优化软件的通用接口系统,该系统能够实现外部软件对集成优化软件的模块级功能调用,在不启动集成优化软件的基础上可以开展复杂产品的研究工作,有利于功能模块的重用和共享,可以大大提高设计效率,而且节约成本。
本发明的技术解决方案:
用于集成优化软件的通用接口系统,所述集成优化软件包括模型管理模块、装配建模模块、集成应用程序模块、设计结构矩阵模块及优化运算模块,其特征在于主要包括文档接口、装配接口、计算任务接口、变量接口及连接接口:
文档接口:文档接口是顶层接口,外部程序通过文档接口的标记信息获取到文档接口对象,并通过文档接口调用模型管理模块,而且外部程序通过文档接口中的函数实现与其他接口的直接连接,文档接口通过建立属性和函数实现,属性包括文档名称、文档版本、文档作者和文档路径,用于对文档进行说明,函数包括新建装配函数、新建计算任务函数、新建变量函数、新建连接函数、获取计算任务函数与获取变量函数,新建装配函数、新建计算任务函数、新建变量函数、新建连接函数,分别用于实现与装配接口、计算任务接口、变量接口及连接接口的直接连接,获取计算任务函数与获取变量函数用于实现文档接口与已有计算任务和变量的连接;
装配接口:外部程序通过文档接口获取到装配接口以后,通过装配接口调用装配建模模块;装配接口通过建立属性和函数实现,属性用于存储当前装配包含的数据信息,包括子装配集合、计算任务集合、变量集合,子装配集合为当前装配包含的所有子装配的数据信息的集合,计算任务集合为当前装配中包含的所有计算任务数据信息的集合,变量集合为当前装配中包含的所有变量数据信息的集合,函数包括添加装配函数、添加变量函数、删除装配变量函数、装配重命名函数,添加装配函数用于在当前装配中添加新的子装配,添加变量函数用于添加当前装配中的变量,删除装配变量函数用于删除当前装配中的变量,装配重命名函数用于给当前装配重命名;
计算任务接口:外部程序获取到计算任务接口以后,通过计算任务接口调用集成应用程序模块;计算任务接口通过建立属性和函数实现,属性包括变量集合、连接集合,变量集合用于存储当前计算任务输入、输出变量数据信息,连接集合用于存储当前计算任务中的变量与其它变量的连接关系,函数包括运行计算任务函数、获取变量函数、更改当前计算任务名称函数,运行计算任务函数用于执行当前计算任务,获取变量函数用于获取当前计算任务中的变量,更改当前计算任务名称函数用于更改当前计算任务名称;
变量接口:外部程序获取到变量接口以后,通过变量接口调用优化运算模块;变量接口通过建立属性和函数实现,属性包括变量的状态,用于记录当前变量是否更改过,函数包括读取数据函数、变量名称函数、变量类型函数、输入变量函数、变量是否有效函数、保存数据函数,读取数据函数用于读取当前变量的信息,变量名称函数用于识别变量,变量类型函数用于判断当前变量类型,输入变量函数用于判断当前变量是否为输入变量,变量是否有效函数用于判断当前变量是否需要重新赋值,保存数据函数用于保存当前变量的数据信息;
连接接口:外部程序获取到连接接口以后,通过连接接口调用设计结构矩阵模块,连接接口通过建立属性和函数实现,属性包括左关系和右关系,左关系为一个变量,右关系为一个表达式,用于表达式给变量赋值,建立数据传递关系,函数包括断开连接函数,用于把当前的连接关系断开。
本发明与现有技术相比具有的有益效果是:
(1)本发明将集成优化软件中的各个功能模块通过文档接口、装配接口、计算任务接口、变量接口、连接接口等通用接口与外部程序连接,外部程序可以通过通用接口实现对集成优化软件的功能控制,可以实现在不启动集成优化软件的基础上开展集成优化工作,便于将现有的集成优化软件在其它管理系统中进行重用,可以方便高效的被其它软件系统调用,从而有效解决现有集成优化软件与其它软件的协同应用问题。
(2)本发明的通用接口系统能够实现对整个产品集成优化过程的有效管理,并可以在此基础上进行灵活的产品定制开发。该发明具有灵活性、通用性、实用性及可扩展性的特点能满足未来复杂产品研制或工程应用中的扩展需求。
(3)本发明用于集成优化软件的通用接口系统可采用C++、Java等面向对象语言编写,具有很强的通用性。
(4)通过本发明的通用接口系统可直接将集成优化软件发布为通用软件,易于非专业开发人员使用,降低对使用者的要求。
(5)提供了一种基于文档的层次化的接口设计模式,可以按照该方法完成其它软件系统的通用接口设计,形成具有良好扩展性的通用软件系统。
附图说明
图1为本发明的组成结构框图;
图2为本发明的通用接口层次结构图;
图3为本发明的文档接口实现图;
图4为本发明的装配接口实现图;
图5为本发明的装配接口实现的配置信息图;
图6为本发明的计算任务接口实现图;
图7为本发明的变量接口实现图;
图8为本发明的连接接口实现图。
具体实施方式
目前,集成优化软件很多,如iSIGHT、optimus、ModelCenter等商业软件,也有用户根据自身需求自行研发的集成优化软件。一般情况下,从集成优化软件实现的功能看,其主要功能是在软件模型集成的基础上进行设计方案的优化,通常都包含模型管理模块、装配建模模块、集成应用程序模块、设计结构矩阵模块及优化运算模块。
模型管理模块:用于对整个集成优化软件文档的模型管理,实现文档的新建、保存和读取,在通用接口的文档接口中需要对集成优化软件中的模型管理模块功能进行调用,来实现外部程序通过文档接口调用模型管理模块的功能。
装配建模模块:将需要进行集成优化的问题集合,组合成为一个装配,当前装配由子装配、计算任务、变量中的一种或多种构成,子装配也由下一级子装配、计算任务、变量中的一种或多种构成,计算任务由一个或多个需要进行集成优化的集成应用程序构成,变量可以是一个或多个需要进行集成优化的变量;集成优化软件中的装配建模模块提供新建子装配、新建变量、删除变量以及重命名本装配的功能,在通用接口的装配接口中需要调用集成优化软件的装配建模模块工能,实现外部程序通过文档接口获取到装配接口后调用装配建模模块的功能。
集成应用程序模块:集成应用程序模块包含集成程序、运行程序等功能,集成程序功能将不同的应用程序进行封装集成,并作为一个计算任务添加到当前装配中,每个计算任务可以包含多个输入、输出变量,运行程序提供驱动集成应用程序运算的功能。在通用接口的计算任务接口中需要调用集成应用程序模块的功能,实现外部程序通过计算任务接口直接相连集成应用程序模块的功能,封装的应用程序如CAD、CAE、CAA及自研软件等常用应用软件。
设计结构矩阵模块:设计结构矩阵模块包含创建连接、断开连接等功能,创建连接功能用于建立不同变量之间的连接关系,可以将前一个计算任务的输入或输出变量赋值给后一个计算任务的输入,断开连接功能用于删除已经存在的连接。在通用接口的连接接口中需要调用设计结构矩阵模块的功能,实现外部程序通过连接接口调用设计结构矩阵模块的功能。
优化运算模块:集成优化软件中的优化运算模块实现在给定的优化变量、优化约束及约束目标下,自动寻求目标最优的功能。在通用接口的设计变量的基础上,需要增加对优化模块的调用,将通用接口中的设计变量对象作为优化模块的优化变量、优化约束及优化目标,从而实现外部接口通过对变量接口调用优化运算模块的功能。优化算法模块是为了实现工程问题寻优而开发的算法模块,可以根据问题的不同开发相应的适用算法,如遗传算法、单纯行法等。
如图1所示,本发明是外部程序调用集成优化软件使用的一种通用接口系统,该系统是一个层次化的结构构成的,其中文档接口是顶层接口,通过该接口可以获取其它4类接口;装配接口可以包含子装配接口,同时可以包含计算任务接口、变量接口;计算任务接口可以包含变量接口及连接接口,具体层次关系如图2所示。其中,外部程序或软件是指需要增加或调用集成优化软件功能的软件产品,包含现有的系统级协同设计软件、专业设计分析软件以及用户自定义开发软件,如工作流管理系统(BPM)等。
下面具体的对本发明进行介绍。以Microsoft Visual C++6.0为系统开发平台、以COM技术为接口实现方式。通过基于一个单文档的标准MFC程序进行介绍,其中文档接口通过单文档的文档类实现,装配、活动、变量及连接关系为MFC扩展类实现,具体的实施步骤如下:
通用接口系统的实现如下:
(1)建立文档接口,定义文档接口的标记信息,建立文档接口的函数及属性信息。文档接口是顶层接口,外部程序通过文档接口的标记信息获取到文档接口对象,并通过文档接口调用模型管理模块,而且外部程序通过文档接口中的函数实现与其他接口的直接连接,文档接口通过建立属性和函数实现,属性包括文档名称、文档版本、文档作者和文档路径,用于对文档进行说明,函数包括新建装配函数、新建计算任务函数、新建变量函数、新建连接函数、获取计算任务函数与获取变量函数,新建装配函数、新建计算任务函数、新建变量函数、新建连接函数,分别用于实现与装配接口、计算任务接口、变量接口及连接接口的直接连接,获取计算任务函数与获取变量函数用于实现文档接口与已有计算任务和变量的连接,文档接口的实现方式如图3所示;
在VC6.0中建立一个标准的单文档应用程序,例如,程序名称为”MDO”,按照向导默认参数顺序执行,其中在预览的第三步,需要选择Automation模式。
为了增加文档接口的标记信息,需要在生成的CMDODoc类的基础上进行修改。具体步骤为:
在MDODoc.h文档中的“DECLARE_DISPATCH_MAP()”语句之前增加一行“DECLARE_OLECREATE(CMDODoc)”内容。
在MDODoc.cpp文档中的“END_INTERFACE_MAP()”语句的下一行增加“IMPLEMENT_OLECREATE(CMDODoc,″MDO.calt″,0x3803a97f,0xca07,0x4460,0xb7,0x9,0xa1,0x49,0x1,0xff,0x99,0xdc)”,其中MDO.calt为接口标记信息,外部程序可以通过该标记信息获取接口对象。
程序生成IMDO接口,通过IMDO接口实现文档接口功能,建立文档接口函数及属性,其中接口函数包括新建装配、新建活动、新建变量、新建连接、获取活动以及获取变量,属性包含文档名称、文档版本、文档作者、文档路径,文档接口的函数及属性的IDL文件如下:
[uuid(8BA85E33-1EB1-400E-8F7E-22B558FAECE1)]
dispinterface IMDO
{
properties:
//{{AFX_ODL_PROP(CMDODoc)
[id(1)]BSTR ModelName;
[id(2)]BSTR ModelVersion;
[id(3)]BSTR ModelAuthor;
[id(4)]BSTR ModelPath;
//}}AFX_ODL_PROP
methods:
//{{AFX_ODL_METHOD(CMDODoc)
[id(5)]IDispatch*CreateAssembly(BSTR name,BSTR
parent);
[id(6)]IDispatch*CreateActivity(BSTR name,BSTR parent,
BSTR resource);
[id(7)]IDispatch*CreateAssemblyVariable(BSTR name,
BSTR parent,BSTR type);
[id(8)]IDispatch*CreateLink(BSTRvar,BSTR equation);
[id(9)]IDispatch*GetActivity(BSTR name);
[id(10)]VARIANT GetValue(BSTR name);
//}}AFX_ODL_METHOD
};
文档名称属性为BSTR ModelName,新建文档时,需要给出文档名称,并将该名称的数据信息存储到ModelName中,外部程序可以通过ModelName属性获取当前文档的名称。
文档版本属性为BSTR ModelVersion,新建文档时,需要给出文档的版本信息,并将该版本信息存储到ModelVersion中,外部程序可以通过ModelVersion属性获取当前文档的版本号。
文档作者属性为BSTR ModelAuthor,新建文档时,需要给出文档的创建作者信息,并将该数据信息存储到ModelAuthor中,外部程序可以通过ModelAuthor属性获取当前文档的创建作者。
文档路径属性为BSTR ModelPath,新建文档时,需要给出文档的路径信息,并将该数据信息存储到ModelPath中,外部程序可以通过ModelPath属性获取当前文档的存储路径。
新建装配函数为IDispatch*CreateAssembly(BSTR name,BSTRparent),其中name表示新建装配的名称,parent为新建装配的父装配名称,对于顶层装配,其父装配名称为空,该函数生成一个装配类对象,并将该对象作为函数返回值,外部调用程序通过这个返回值可以调用相应的装配接口函数及属性。
新建计算任务函数为IDispatch*CreateActivity(BSTR name,BSTRparent,BSTR resource),其中name表示新建任务的名称,parent为新建任务所属的装配名称,resource为任务的资源信息标识(如程序地址,运行参数等),该函数生成一个计算任务类对象,并将该对象作为函数返回值,外部程序通过这个返回值可以调用相应的计算任务接口函数及属性。
新建变量函数为IDispatch*CreateAssemblyVariable(BSTR name,BSTR parent,BSTR type),其中name表示新建的变量名称,parent为新建变量所属的装配名称,type为变量的类型,可以为double、int、bool、String等类型,该函数生成一个变量类对象,并将该对象作为函数返回值,外部程序通过这个返回值可以调用相应的变量接口函数及属性。
新建连接函数为IDispatch*CreateLink(BSTR var,BSTR equation),其中var表示需要连接的变量名称,equation为给var变量赋值的表达式,该函数生成一个连接类对象,并将该对象作为函数返回值,外部程序通过这个返回值可以调用相应的连接接口函数及属性。
获取计算任务函数为IDispatch*GetActivity(BSTR name),其中name表示需要获取的计算任务名称,该函数搜索当前所有的计算任务,并将名称为name的计算任务对象作为函数返回值,外部程序通过这个返回值可以调用相应的计算任务接口函数及属性。
获取变量函数为VARIANT GetValue(BSTR name),其中name为所需获取的变量名称,该函数搜索当前所有的计算任务,并将名称为name的变量对象作为函数返回值,外部程序通过这个返回值可以调用相应的变量接口函数及属性。
在MDODoc.cpp文件中实现上述函数及属性的功能,从而完成文档接口的建立及功能实现。
通过文档接口调用模型管理模块,其实现方式为:在文档接口实现函数中,调用模型管理模块的功能函数,包含新建、保存及读取等模型管理模块功能函数,从而通过文档接口可以实现对模型管理模块功能的调用,实现对基于XML标准的模型文档的新建、保存及读取。
(2)建立装配接口,外部程序通过文档接口获取到装配接口以后,通过装配接口调用装配建模模块;装配接口通过建立属性和函数实现,属性用于存储当前装配包含的数据信息,包括子装配集合、计算任务集合、变量集合,子装配集合为当前装配包含的所有子装配的数据信息的集合,计算任务集合为当前装配中包含的所有计算任务数据信息的集合,变量集合为当前装配中包含的所有变量数据信息的集合,函数包括添加装配函数、添加变量函数、删除装配变量函数、装配重命名函数,添加装配函数用于在当前装配中添加新的子装配,添加变量函数用于添加当前装配中的变量,删除装配变量函数用于删除当前装配中的变量,装配重命名函数用于给当前装配重命名。装配接口的实现如图4所示
在MDO工程中,增加装配(Assembly)类,其配置信息如图5所示,选取基类为CCmdTarget,选取Automation类型。通过该新建类,生成IAssembly接口及Assembly类。
通过IAssembly接口定义装配接口功能,包含接口函数及属性信息,装配接口的函数及属性实现的IDL文件如下:
[uuid(D54D4C3D-0597-4B4A-B33F-CF07A9C0EEC4)]
dispinterface IAssembly
{
properties:
//{{AFX_ODL_PROP(Assembly)
[id(1)]VARIANT Assemblies;
[id(2)]VARIANT Activities;
[id(3)]VARIANT Variables;
//}}AFX_ODL_PROP
methods:
//{{AFX_ODL_METHOD(Assembly)
[id(4)]IDispatch*AddAssembly(BSTR name);
[id(5)]IDispatch*AddVariable(BSTR name,BSTR type);
[id(6)]void DeleteVariable(BSTR name);
[id(7)]void rename(BSTR name);
//}}AFX_ODL_METHOD
};
子装配集合属性为VARIANT Assemblies,其中Assemblies为一个数组变量,新建一个装配时,在本装配的Assemblies中增加新的装配对象,通过Assemblies可以获取当前装配的所有子装配对象,通过子装配对象可以调用装配接口的属性及函数。
计算任务集合属性为VARIANT Activities,其中Activities为一个数组变量,新建一个计算任务时,在本装配的Activities中增加新的计算任务对象,通过Activities可以获取当前装配的所有计算任务对象,通过计算任务对象可以调用计算任务接口的属性及函数。
变量集合属性为VARIANT Variables,其中Variables为一个数组变量,新建一个变量时,在本装配的Variables中增加新的变量对象,通过Variables可以获取当前装配的所有变量对象,通过变量对象可以调用变量接口的属性及函数。
添加装配函数为IDispatch*AddAssembly(BSTR name),其中name为要添加的新装配名称,该函数创建一个新的装配对象,并将创建的对象存储到Assemblies属性中,同时,将新建的装配对象作为函数返回值,外部程序通过这个返回值可以调用新建装配的接口函数及属性。
添加变量函数为IDispatch*AddVariable(BSTR name,BSTR type),其中name表示新建的变量名称,type为变量的类型,可以为double、int、bool、String等类型,该函数生成一个变量类对象,并将该对象存储到Variables属性中,同时,将新建的变量对象作为函数返回值,外部程序通过这个返回值可以调用相应的变量接口函数及属性。
删除装配变量函数为void DeleteVariable(BSTR name),其中name表示需要删除的变量名称,该函数将在本装配的Variables属性中进行搜索,如果查到要删除的变量名称,则从Variables属性中去掉该变量对象。
装配重命名函数为void rename(BSTR name),其中name本装配的新名称,该函数将对本装配的名称进行修改,用name的数据替换已有的装配名称。
在Assembly.cpp文件中实现上述函数及属性的功能,从而完成对装配接口的设计。
通过装配接口调用装配建模模块,其实现方式为:装配建模模块的功能包含新建装配、新建变量、删除变量及重命名等,与装配接口的4个函数对应,通过在装配接口函数中直接调用集成优化软件中的装配建模功能函数,实现通过装配接口函数调用装配建模模块的功能。
(3)建立计算任务接口。外部程序获取到计算任务接口以后,通过计算任务接口调用集成应用程序模块;计算任务接口通过建立属性和函数实现,属性包括变量集合、连接集合,变量集合用于存储当前计算任务输入、输出变量数据信息,连接集合用于存储当前计算任务中的变量与其它变量之间的数据关系,函数包括运行计算任务函数、获取变量函数、更改当前计算任务名称函数,运行计算任务函数用于执行当前计算任务,获取变量函数用于获取当前计算任务中的变量,更改当前计算任务名称函数用于更改当前计算任务名称。计算任务接口的实现如图6所示
在MDO工程中,增加计算任务Activity类,选取基类为CCmdTarget,选取Automation类型。通过该新建类,生成IActivity接口及Activity类。
通过IActivity接口定义计算任务接口功能,包含接口函数及属性信息,计算任务接口的函数及属性实现IDL文件如下:
[uuid(F00F6950-1D3A-41A5-A85B-A58B5B1EFC96)]
dispinterface IActivity
{
properties:
//{{AFX_ODL_PROP(Activity)
[id(1)]VARIANT Variables;
[id(2)]VARIANT Links;
//}}AFX_ODL_PROP
methods:
//{{AFX_ODL_METHOD(Activity)
[id(3)]void Run();
[id(4)]IDispatch*GetVariable(BSTR name);
[id(5)]void rename(BSTR name);
//}}AFX_ODL_METHOD
};
变量集合属性为VARIANT Variables,其中Variables为一个数组变量,新建一个变量时,在本计算任务的Variables中增加新的变量对象,通过Variables可以获取当前计算任务的所有变量对象,通过变量对象可以调用变量接口的属性及函数。
连接集合属性为VARIANT Links,其中Links为一个数组变量,新建一个连接时,在本计算任务的Links中增加新的连接对象,通过Links可以获取当前计算任务的所有连接对象,通过连接对象可以调用连接接口的属性及函数。
运行计算任务函数为void Run(),该函数实现计算任务的运算,该计算任务可以是商业软件、自研软件或脚本程序等,在Run函数的实现过程中,需要根据上述三类程序进行开发设计,实现程序的自动运行。
获取变量函数为IDispatch*GetVariable(BSTR name),其中name为变量的名称,该函数将在本计算任务的Variables属性中进行搜索,如果查到变量名称,则从Variables属性获取该变量对象,并将变量对象作为函数返回值,外部程序通过这个返回值可以调用相应的变量接口函数及属性。
更改当前计算任务名称函数为void rename(BSTR name),其中name本计算任务的新名称,该函数将对本计算任务的名称进行修改,用name的数据替换已有的装配名称。
在Activity.cpp文件中实现上述函数及属性的功能,从而完成对计算任务接口的设计。
通过文档接口的获取计算任务、新建计算任务两个接口函数以及装配接口的活动集合属性,可以获取计算任务接口对象,从而实现对计算任务的函数及属性的调用。
在文档接口的新建计算任务函数中,增加对集成优化软件中集成应用程序模块中的集成程序功能的调用,从而实现对各种软件的集成功能,将该计算任务所包含的输入/输出变量存储到当前计算任务的Variables属性中。
在计算任务接口的运行任务函数中,增加对集成应用程序模块中的运行程序的功能调用,从而实现通过计算任务接口调用集成应用程序运行的功能。
(4)建立变量接口。外部程序获取到变量接口以后,通过变量接口调用优化运算模块;变量接口通过建立属性和函数实现,属性包括变量的状态,用于记录当前变量是否更改过,函数包括读取数据函数、变量名称函数、变量类型函数、输入变量函数、变量是否有效函数、保存数据函数,读取数据函数用于读取当前变量的信息,变量名称函数用于识别变量,变量类型函数用于判断当前变量类型,输入变量函数用于判断当前变量是否为输入变量,变量是否有效函数用于判断当前变量是否需要重新赋值,保存数据函数用于保存当前变量的数据信息。变量接口的实现如图7所示。
在MDO工程中,增加Variable类,选取基类为CCmdTarget,选取Automation类型。通过该新建类,生成IVariable接口及Variable类。
通过IVariable接口定义变量接口功能,包含接口函数及属性信息,变量接口的函数及属性实现IDL文件如下:
[uuid(F0172779-E02B-4931-AFD4-53C95F427BFF)]
dispinterface IVariable
{
properties:
//{{AFX_ODL_PROP(Variable)
[id(1)]boolean hasChanged;
//}}AFX_ODL_PROP
methods:
//{{AFX_ODL_METHOD(Variable)
[id(2)]void fromString(BSTR value);
[id(3)]BSTR getFullName();
[id(4)]BSTR getType();
[id(5)]boolean islnput();
[id(6)]boolean isValid();
[id(7)]BSTR toString();
//}}AFX_ODL_METHOD
};
变量状态属性为boolean hasChanged,当变量数据改变时,该参数为真,否则为假。
读取数据函数为void fromString(BSTR value),其中value为该变量的数值,外部程序可以调用该函数为本变量赋值。
变量名称函数为BSTR getFullName(),该函数将返回本变量的名称。
变量类型函数为BSTR getType(),该函数用于获取变量的数据类型,可以为double、int、bool、String等类型,外部程序通过该函数获取变量的类型。
输入变量函数为boolean islnput(),对于属于计算任务的变量,该函数判断当前变量是输入变量或输出变量,如果是输入变量则返回真,否则返回假。
变量是否有效函数为boolean isValid(),对于属于计算任务的变量,该函数可以判断变量是否有效,当计算任务运行后,当前变量已经更新则该函数返回真,否则返回假。
保存数据函数为BSTR toString(),该函数获取变量数值,并将数值作为函数返回值,外部程序通过该函数可以获取变量数值。
在Variable.cpp文件中实现上述函数及属性的功能,从而完成对变量接口的建立及功能实现。
外部程序通过文档接口的新建变量、获取变量函数,装配接口的添加变量函数、变量集合属性,计算任务接口的获取变量函数、变量集合属性,能够获取变量接口,通过变量接口可以调用变量接口的函数及属性。
在集成优化软件中,包含优化运算模块,在变量接口的基础上,需要对集成优化软件中的优化运算模块进行功能调用,具体实现方式为:通过变量接口将系统中的变量作为优化问题的优化变量、优化约束及优化目标,开展优化计算,当满足优化运算的收敛条件时,完成优化运算,否则通过变量接口获取新的变量数值,进行下一轮优化,直到满足收敛条件。
(5)建立连接接口。外部程序获取到连接接口以后,通过连接接口调用设计结构矩阵模块,连接接口通过建立属性和函数实现,属性包括左关系和右关系,左关系为一个变量,右关系为一个表达式,用于表达式给变量赋值,建立数据传递关系,函数包括断开连接函数,用于把当前的连接关系断开。连接关系接口的实现如图8所示。
在MDO工程中,增加Link类,选取基类为CCmdTarget,选Automation类型。通过该新建类,生成ILink接口及Link类。
通过ILink接口定义连接关系接口功能,包含接口函数及属性信息,连接关系接口的函数及属性实现IDL文件如下:
[uuid(33E1FB77-3A92-498B-94EB-719821AD5C49)]
dispinterface ILink
{
properties:
//{{AFX_ODL_PROP(Link)
[id(1)]BSTR LeftString;
[id(2)]BSTR RightString;
//}}AFX_ODL_PROP
methods:
//{{AFX_ODL_METHOD(Link)
[id(3)]void breakLink();
//}}AFX_ODL_METHOD
};
连接接口左关系属性为BSTR LeftString,该属性为一个变量的字符串数值,该变量为需要赋值的变量。
连接接口右关系属性为BSTR RightString,该属性为一个表达式,该表达式中可以包含变量及一些数据运算,该表达式用于对左关系的赋值。
连接接口的断开连接函数为void breakLink(),该函数先通过左关系获取变量名称,让后获取变量所属的计算任务,然后删除这个计算任务中的左关系为当前变量名称的连接对象。
在Link.cpp文件中实现上述函数及属性的功能,从而完成对连接接口的设计。
外部程序通过文档接口中的新建连接函数以及计算任务接口中的连接集合属性可以获取连接接口对象,从而调用连接接口的函数及属性。
集成优化软件中的设计结构矩阵模块主要包含新建连接、断开连接等功能。
新建连接的接口调用实现方式为:在文档接口的新建连接函数中调用设计结构矩阵模块中的新建连接功能,实现通过文档接口的新建连接函数可以实现设计结构矩阵的新建连接功能。同时,在文档接口的新建连接函数实现中,需要将生成的连接对象存储到连接变量所属的计算任务中的连接集合中。
断开连接的接口调用实现方式为:由计算任务中的连接集合中选出左关系为需要断开的变量,将该连接对象从连接集合中删除。
下面以某产品结构设计为例,说明该通用接口的使用过程,该结构为长方体,在满足强度的基础上需要进行结构减重优化设计,具体实施方案如下:
(1)建立文档,通过文档接口对文档属性进行赋值,其中文档名称为”结构设计“、文档版本为”1.0”、文档作者为”lis”、文档路径为”E:\”,该接口将调用集成优化软件模型管理模块中的新建功能,将文档属性信息写到集成优化软件中。
(2)创建装配,该产品包含1个结构设计装配,通过文档接口的新建装配函数CreateAssembly(BSTR name,BSTR parent)建立装配,其中装配名称为”Model”,父装配parent为空,表示建立顶层装配。在集成优化软件中将调用装配建模模块的新建装配功能,实现在集成优化软件中增加一个新的装配。经过该步骤后,通用接口系统形成了一个用于结构设计的装配对象。
(3)创建计算任务,该产品的结构设计包含3个计算任务,分别为总体计算任务(System)、质量计算任务(mass)、强度分析计算任务(stress),通过文档接口的新建计算任务函数在”Model”装配的基础上新建上述3个计算任务,新建计算任务函数会调用集成优化软件的集成应用程序模块中的集成程序功能,实现对计算任务的集成,三个计算任务的名称分别为”Model.System”、”Model.mass”、”Model.stress”。经过该步骤,在结构设计装配(Model)中的Activities属性集合中存储上述三个计算任务对象。
(4)创建变量,该产品的结构设计共包含11个变量,其中总体包含3个变量,分别为长(length)、宽(width)、高(height),调用文档接口的创建装配变量函数,其中函数的name参数赋值为3个变量的名称,函数的parent参数赋值为”Model.System”,函数的type参数赋值为”double”。经过上述函数调用后,在”Model.System”计算活动的变量集合属性中包含上述3个变量对象,其中长度变量名称为”Model.System.length”,宽度变量为名称”Model.System.width”,高度变量名称为”Model.System.height”,创建装配变量函数需要调用集成优化软件的集成应用程序模块中的集成程序功能,实现对程序输入、输出变量的集成。同样质量计算包含4个变量,长(length)、宽(width)、高(height)以及质量(mass),强度计算包含4个变量长(length)、宽(width)、高(height)以及应力(stress),按照总体计算任务中变量相同的方式创建变量。
(5)创建连接,共需要创建6个连接对象,对于质量计算任务中的长(length)、宽(width)、高(height)等3个变量,需要与总体计算中的长(length)、宽(width)、高(height)3个变量建立连接关系,通过文档接口中的创建连接函数,完成上述三个连接的创建,其中var为质量计算中三个变量的名称,equation为总体计算中三个变量的名称,经过创建后,在质量计算任务中的连接集合中,增加上述三个连接对象。创建连接函数需要调用集成优化软件中的设计结构矩阵模块中的新建连接功能,实现在集成优化软件中增加新的连接。同理,在强度计算任务中,也需要与总体计算的3个变量建立连接关系。
(6)创建优化问题,其中设计变量为总体计算任务的的三个变量长(length)、宽(width)、高(height),约束变量为强度计算任务的应力(stress)变量,优化目标为质量计算任务的质量(mass)变量。在集成优化软件的优化运算模块中,给出上述优化问题参数,通过外部程序调用优化计算,当需要变量数据时,先调用计算任务的运行函数,获取新的变量数值,当数值满足收敛条件时,完成迭代,否则继续更新变量数值,进行任务计算。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (1)
1.用于集成优化软件的通用接口系统,所述集成优化软件包括模型管理模块、装配建模模块、集成应用程序模块、设计结构矩阵模块及优化运算模块,其特征在于主要包括文档接口、装配接口、计算任务接口、变量接口及连接接口:
文档接口:文档接口是顶层接口,外部程序通过文档接口的标记信息获取到文档接口对象,并通过文档接口调用模型管理模块,而且外部程序通过文档接口中的函数实现与其他接口的直接连接,文档接口通过建立属性和函数实现,属性包括文档名称、文档版本、文档作者和文档路径,用于对文档进行说明,函数包括新建装配函数、新建计算任务函数、新建变量函数、新建连接函数、获取计算任务函数与获取变量函数,新建装配函数、新建计算任务函数、新建变量函数、新建连接函数,分别用于实现与装配接口、计算任务接口、变量接口及连接接口的直接连接,获取计算任务函数与获取变量函数用于实现文档接口与已有计算任务和变量的连接;
装配接口:外部程序通过文档接口获取到装配接口以后,通过装配接口调用装配建模模块;装配接口通过建立属性和函数实现,属性用于存储当前装配包含的数据信息,包括子装配集合、计算任务集合、变量集合,子装配集合为当前装配包含的所有子装配的数据信息的集合,计算任务集合为当前装配中包含的所有计算任务数据信息的集合,变量集合为当前装配中包含的所有变量数据信息的集合,函数包括添加装配函数、添加变量函数、删除装配变量函数、装配重命名函数,添加装配函数用于在当前装配中添加新的子装配,添加变量函数用于添加当前装配中的变量,删除装配变量函数用于删除当前装配中的变量,装配重命名函数用于给当前装配重命名;
计算任务接口:外部程序获取到计算任务接口以后,通过计算任务接口调用集成应用程序模块;计算任务接口通过建立属性和函数实现,属性包括变量集合、连接集合,变量集合用于存储当前计算任务输入、输出变量数据信息,连接集合用于存储当前计算任务中的变量与其它变量的连接关系,函数包括运行计算任务函数、获取变量函数、更改当前计算任务名称函数,运行计算任务函数用于执行当前计算任务,获取变量函数用于获取当前计算任务中的变量,更改当前计算任务名称函数用于更改当前计算任务名称;
变量接口:外部程序获取到变量接口以后,通过变量接口调用优化运算模块;变量接口通过建立属性和函数实现,属性包括变量的状态,用于记录当前变量是否更改过,函数包括读取数据函数、变量名称函数、变量类型函数、输入变量函数、变量是否有效函数、保存数据函数,读取数据函数用于读取当前变量的信息,变量名称函数用于识别变量,变量类型函数用于判断当前变量类型,输入变量函数用于判断当前变量是否为输入变量,变量是否有效函数用于判断当前变量是否需要重新赋值,保存数据函数用于保存当前变量的数据信息;
连接接口:外部程序获取到连接接口以后,通过连接接口调用设计结构矩阵模块,连接接口通过建立属性和函数实现,属性包括左关系和右关系,左关系为一个变量,右关系为一个表达式,用于表达式给变量赋值,建立数据传递关系,函数包括断开连接函数,用于把当前的连接关系断开。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910243286 CN101739256B (zh) | 2009-12-30 | 2009-12-30 | 用于集成优化软件的通用接口系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910243286 CN101739256B (zh) | 2009-12-30 | 2009-12-30 | 用于集成优化软件的通用接口系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101739256A true CN101739256A (zh) | 2010-06-16 |
CN101739256B CN101739256B (zh) | 2012-12-26 |
Family
ID=42462782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910243286 Expired - Fee Related CN101739256B (zh) | 2009-12-30 | 2009-12-30 | 用于集成优化软件的通用接口系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101739256B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110020A (zh) * | 2011-02-09 | 2011-06-29 | 浪潮集团山东通用软件有限公司 | 一种引用外部程序的方法 |
CN102833015A (zh) * | 2012-07-27 | 2012-12-19 | 北京空间飞行器总体设计部 | 一种卫星自动化测试系统公共软件接口确定方法 |
WO2015196786A1 (zh) * | 2014-06-25 | 2015-12-30 | 成都普中软件有限公司 | 一种基于界面元模型以构造界面模型的通用界面建模方法 |
CN105653363A (zh) * | 2015-12-28 | 2016-06-08 | 北京致远协创软件有限公司 | 一种接口功能实现方法及装置 |
CN108243407A (zh) * | 2017-12-21 | 2018-07-03 | 深圳市宏电技术股份有限公司 | 一种多个无线模块设备网络接口管理的方法及终端设备 |
CN109901934A (zh) * | 2017-12-11 | 2019-06-18 | 北京京东尚科信息技术有限公司 | 生成接口帮助文档的方法和装置 |
CN110109651A (zh) * | 2019-04-21 | 2019-08-09 | 合肥市太泽透平技术有限公司 | 一种基于数据库统一管理的用户自定义方法 |
CN111258674A (zh) * | 2020-01-14 | 2020-06-09 | 清华大学 | 一种数值应用程序的软件模块集成系统及运行方法 |
CN113655932A (zh) * | 2021-08-13 | 2021-11-16 | 北京数码大方科技股份有限公司 | 用于信息系统的接口调用方法及接口调用装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346647B2 (en) * | 2002-04-19 | 2008-03-18 | Computer Associates Think, Inc. | System and method for interfacing with existing system management products or software solutions |
CN101206565A (zh) * | 2006-12-21 | 2008-06-25 | 英业达股份有限公司 | 用户接口设计系统与方法 |
-
2009
- 2009-12-30 CN CN 200910243286 patent/CN101739256B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7346647B2 (en) * | 2002-04-19 | 2008-03-18 | Computer Associates Think, Inc. | System and method for interfacing with existing system management products or software solutions |
CN101206565A (zh) * | 2006-12-21 | 2008-06-25 | 英业达股份有限公司 | 用户接口设计系统与方法 |
Non-Patent Citations (1)
Title |
---|
汪纪峰等: "系统集成中通用接口设计与实现", 《重庆邮电学院学报(自然科学版)》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110020A (zh) * | 2011-02-09 | 2011-06-29 | 浪潮集团山东通用软件有限公司 | 一种引用外部程序的方法 |
CN102833015A (zh) * | 2012-07-27 | 2012-12-19 | 北京空间飞行器总体设计部 | 一种卫星自动化测试系统公共软件接口确定方法 |
CN102833015B (zh) * | 2012-07-27 | 2014-08-27 | 北京空间飞行器总体设计部 | 一种卫星自动化测试系统公共软件接口确定方法 |
CN105224298B (zh) * | 2014-06-25 | 2018-04-24 | 成都普中软件有限公司 | 一种基于界面元模型构造界面模型的通用界面建模方法 |
WO2015196786A1 (zh) * | 2014-06-25 | 2015-12-30 | 成都普中软件有限公司 | 一种基于界面元模型以构造界面模型的通用界面建模方法 |
CN105224298A (zh) * | 2014-06-25 | 2016-01-06 | 成都普中软件有限公司 | 一种基于界面元模型构造界面模型的通用界面建模方法 |
CN105653363B (zh) * | 2015-12-28 | 2018-10-26 | 北京致远互联软件股份有限公司 | 一种接口功能实现方法及装置 |
CN105653363A (zh) * | 2015-12-28 | 2016-06-08 | 北京致远协创软件有限公司 | 一种接口功能实现方法及装置 |
CN109901934A (zh) * | 2017-12-11 | 2019-06-18 | 北京京东尚科信息技术有限公司 | 生成接口帮助文档的方法和装置 |
CN108243407A (zh) * | 2017-12-21 | 2018-07-03 | 深圳市宏电技术股份有限公司 | 一种多个无线模块设备网络接口管理的方法及终端设备 |
CN108243407B (zh) * | 2017-12-21 | 2021-07-13 | 深圳市宏电技术股份有限公司 | 一种多个无线模块设备网络接口管理的方法及终端设备 |
CN110109651A (zh) * | 2019-04-21 | 2019-08-09 | 合肥市太泽透平技术有限公司 | 一种基于数据库统一管理的用户自定义方法 |
CN111258674A (zh) * | 2020-01-14 | 2020-06-09 | 清华大学 | 一种数值应用程序的软件模块集成系统及运行方法 |
CN111258674B (zh) * | 2020-01-14 | 2021-01-01 | 清华大学 | 一种数值应用程序的软件模块集成系统及运行方法 |
CN113655932A (zh) * | 2021-08-13 | 2021-11-16 | 北京数码大方科技股份有限公司 | 用于信息系统的接口调用方法及接口调用装置 |
CN113655932B (zh) * | 2021-08-13 | 2023-08-08 | 北京数码大方科技股份有限公司 | 用于信息系统的接口调用方法及接口调用装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101739256B (zh) | 2012-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101739256B (zh) | 用于集成优化软件的通用接口系统 | |
CN101398860B (zh) | 基于PDM/Matlab的飞行器控制系统异地协同设计方法 | |
Jansson et al. | A coupled model of water, heat and mass transfer using object orientation to improve flexibility and functionality | |
CN101617292B (zh) | 面向生成器图的编程和执行 | |
Kolovos et al. | The epsilon transformation language | |
CN102103497B (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
JP2003518694A (ja) | ソフトウェア・コンポーネント作成に使用するn層ソフトウェア・アーキテクチャのデザイン方法及びシステム | |
CN108280291A (zh) | 可重用仿真模型接口设计与对接方法、装置和计算机设备 | |
CN102184285A (zh) | 一种数字化样机设计集成开发方法和集成开发系统 | |
CN101593294A (zh) | 动态配置工作流的方法和系统 | |
CN105808428A (zh) | 一种对分布式文件系统进行统一性能测试的方法 | |
CN110673844A (zh) | 一种图像处理软件开发方法及系统 | |
CN114117645B (zh) | 一种舰船总体性能预报集成应用系统 | |
Männistö et al. | Product configuration view to software product families | |
CN102592251B (zh) | 地球系统模式的通用模块化并行耦合系统 | |
Tulke et al. | A Dynamic Framework for Construction Scheduling based on BIM using IFC | |
CN101706840A (zh) | 基于产品节点树的产品性能仿真信息的表示方法 | |
CN111176658B (zh) | 基于元对象机制的AADL到Simulink模型自动转换方法 | |
Amor et al. | A survey and analysis of integrated project databases | |
CN116796498A (zh) | 一种基于模型的体系研发流程方法及管理系统 | |
CN104750916A (zh) | 一种用于锅炉虚拟样机设计的设计资源集成系统 | |
CN115357300A (zh) | 一种assetbundle资源的批量打包与分步加载系统及方法 | |
CN102023866A (zh) | 基于Google Maps JavaScript API的地图控件及其生成方法 | |
Sun et al. | Research on Application Ecological Architecture Technology of Digital Substation System | |
Tann et al. | The collaboration modelling framework for ship structural design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121226 Termination date: 20211230 |