首页 理论教育 仿真调用基础及接口|进化算法与混合动力系统优化

仿真调用基础及接口|进化算法与混合动力系统优化

时间:2023-10-14 理论教育 版权反馈
【摘要】:DSPEA算法是在Visual Studio.NET 2003平台上实现的,调用仿真软件前,需要进行一些环境变量设置以便能够成功调用MATLAB引擎。完成后单击“确定”按钮保存设置。图7-5 Visual Studio 2003中设置头文件的窗口图7-6 链接库输入项窗口4.设置环境变量在系统环境变量Path中增加目录“MATLAB安装目录\bin\win32”。在engine.h中,提供了需要用到的接口函数:1)执行MATLAB语句的方法当函数的返回值为0时,表示引擎成功处理了用户的指令。

仿真调用基础及接口|进化算法与混合动力系统优化

DSPEA算法是在Visual Studio.NET 2003平台上实现的,调用仿真软件前,需要进行一些环境变量设置以便能够成功调用MATLAB引擎。以Visual Studio 2003为例(高级版本中的设置与此类似),设置过程包括以下几个步骤(生成程序均指32位的):

1.设置头文件目录

打开开发环境后,单击“工具”选项卡,然后选择此选项卡下的“选项”,此时将弹出图7-5所示的窗口。单击此窗口中组织树的“项目”项(有些版本中显示为“Projects”),选择此项下的“VC++目录”项;之后在图中右上部分的下拉框中选择“包含文件”。选择好后,单击图中右上部分下拉框下面的新行插入图标978-7-111-42535-9-Chapter07-90.jpg新增加一行,然后在其中写入目标文件engine.h所在目录,即MATLAB安装目录下的\extern\include路径。本研究中,目标文件所在的目录为“F:\backupofsoft\usefulsoft\Matlab6p5FULL\extern\include”。设置好后单击“确定”按钮退出对话框保存设置。

2.设置库文件目录

在图7-5所示的窗口中,选择“VC++目录”,在图中右上部分的“显示以下内容的目录”下拉框中选择“库文件”。选择好后,单击图中右上部分的新行插入图标978-7-111-42535-9-Chapter07-91.jpg新增加一行,然后在其中写入目标库文件libeng.lib和libmx.lib所在目录,即MATLAB安装目录下的extern\lib\win32\microsoft\msvc70路径。本研究中,目标文件所在目录为“F:\backupofsoft\usefulsoft\Matlab6p5FULL\extern\lib\win32\mi-crosoft\msvc70”。设置好后单击“确定”按钮退出对话框保存设置。

3.设置链接库输入项

解决方案资源管理器里选择对应的项目,单击右键选择最下面的“属性”弹出属性对话框窗口(见图7-6)。在左侧的树形目录中依次选择“配置属性”“链接器”“输入”,最后在右边“附加依赖项”那一项加上“libeng.lib”和“libmx.lib”。完成后单击“确定”按钮保存设置。在这个增加的过程中,依赖项之间用空格隔开,不要删除原有的依赖项。

978-7-111-42535-9-Chapter07-92.jpg

图7-5 Visual Studio 2003中设置头文件的窗口

978-7-111-42535-9-Chapter07-93.jpg

图7-6 链接库输入项窗口

4.设置环境变量

在系统环境变量Path中增加目录“MATLAB安装目录\bin\win32”。本研究中增加的目录为“F:\backupofsoft\usefulsoft\Matlab6p5FULL\bin\win32”。在Win7系统中具体可以这样做:在桌面上选择“计算机”图标,单击右键弹出菜单,在其中选择“属性”,然后在弹出的窗口中单击左侧的“高级系统设置”,在属性对话框里选择“高级”选项卡,然后选择“环境变量”,在新对话框里的“系统变量”中选中“Path”项,单击“编辑”按钮,在“变量值”中添加上述目录即可。

特别需要说明的是:

1)如果设置环境变量前打开了Visual Studio,那么需要重启Visual Studio。

2)有可能在按上述步骤设置后,使用时会有“找不到库文件”、“无法解析的外部符号_mxDestroyArray”等错误提示,引起这个问题的原因是:不同版本的目标文件所在目录会有区别,解决的办法是:通过查找来找到前文中提到的“engine.h”文件所在目录,同时库文件的包括目录同样可以通过查找来找到。但是它们都应该在extern下面的目录。

3)有些系统中,需要在系统变量Path中增加MATLAB安装目录下bin及bin下面的win32目录,否则将提示找不到libeng.lib。

进行上述设置后,运用C++编程就可以调用MATLAB的引擎了。在engine.h中,提供了需要用到的接口函数:

1)执行MATLAB语句的方法

978-7-111-42535-9-Chapter07-94.jpg(www.xing528.com)

当函数的返回值为0时,表示引擎成功处理了用户的指令。在使用此函数时,必须保证需要执行的语句没有错误。

2)开始一次使用MATLAB过程

978-7-111-42535-9-Chapter07-95.jpg

3)打开MATLAB进程

978-7-111-42535-9-Chapter07-96.jpg

在Windows平台上,输入参数只能为NULL。当此函数执行成功时,一个MATLAB进程作为后台服务启动,同时返回引擎的指针

4)关闭MATLAB服务

978-7-111-42535-9-Chapter07-97.jpg

此函数的输入参数为使用打开函数返回的引擎指针,其功能是关闭引擎后台服务进程,执行成功返回整数0。

5)从MATLAB会话中获得指定变量的值

978-7-111-42535-9-Chapter07-98.jpg

如果读取数据成功,则返回一个maArray数据类型的对象指针。

6)将一个变量写入到MATLAB会话中特定变量

978-7-111-42535-9-Chapter07-99.jpg

var_name是指MATLAB会话中的变量名,在使此函数前,需要在C++中创建一个数据类型为maArray的对象指针。如果写入数据成功,则返回值为0。

7)为MATLAB引擎输出设置一个缓冲区

978-7-111-42535-9-Chapter07-100.jpg

8)此外还有将数据存入MATLAB引擎的EngPutArray函数、从MATLAB引擎中取出数据的函数engGetArray等。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈