APP下载

基于ANSYS和MATLAB的优化设计

2016-10-13李成阳何剑平

船电技术 2016年5期
关键词:调用命令适应度

李成阳,何剑平,郑 军



基于ANSYS和MATLAB的优化设计

李成阳,何剑平,郑 军

(武汉船用电力推进装置研究所,武汉430064)

针对ANSYS在优化设计上存在的不足,本文提出了一种通过MATLAB和ANSYS共同进行有限元分析和优化设计的方法。ANSYS执行有限元分析,MATLAB调用ANSYS的结果,通过优化算法工具箱完成优化设计。以高温超导电机为例,介绍了两个软件实现联合优化的过程。

ANSYS MATLAB 有限元分析 谐波优化

0 引言

ANSYS是世界上主流的有限元分析软件,被广泛的应用在结构力学、电磁场、温度场等多个领域中。ANSYS不仅具有强大的前后处理功能,还可以通过ANSYS参数化设计语言(ANSYS Parametric Design Language, APDL)来实现有限元分析的二次开发工作。但是ANSYS在完成设计变量的优化方面有以下不足[1]:1)ANSYS优化设计模块优化功能有限,设计变量超过20个之后有可能会收敛到局部最优解,并且只能添加数值形式的约束条件。2)使用ANSYS的优化模块需要购买额外授权,价格不菲。3)APDL中包含的命令更多的偏向于建模和有限元分析,在数值计算和矩阵操作方面较为不足。APDL通过ANSYS的命令行窗口进行编译,缺少功能强大的调试工具。4)APDL的大多数语法来自于早期的科学计算语言FORTRAN-77,和目前主流的C语言区别较大,同时命令中包含的参数多,比较难以记忆,学习成本高。

MATLAB是功能强大的科学计算软件,具有丰富的矩阵操作命令和数值计算函数,可以方便和快速的使用优化算法实现对象设计参数的优化。因此本文设想把ANSYS和MATLAB两种软件结合起来,共同完成设计参数的优化设计。

1 MATLAB和ANSYS的联合优化

1.1优化算法

MATLAB除了可以通过m语言任意编写优化算法之外,还可以通过一套被称为工具箱(Toolbox)的扩展应用子程序调用一些常用的优化算法。在MATLAB自带的优化工具箱中全局搜索能力较为优秀的算法包括多起点搜索、模式搜索、遗传算法以及模拟退火等。

这里以优化工具箱中的遗传算法为例介绍算法的调用过程。首先创建一个名为optimization的m文件,通过MATLAB自带的ga函数就可以完成对工具箱中遗传算法的调用[2]。

[x,fval]=ga(fitnessfuction,nvars,A,b,Aeq,…beq,lb,ub,constraintfunction]

函数中是最优解输出矩阵。是目标函数的最优适应值。是变量个数。是输入变量受到的线性约束的相关参数,约束表达式为和。是输入参数上限和下限,即。

ConstraintFunction是输入变量受到的非线性约束函数句柄。若要建立一个这样一个非约束性的条件,那么只需要将约束条件转换为的形式,然后创建一个约束函数example的m文件:

function [c,ceq]=example(x,y)

c=[x+y-10];

ceq=[]; %ceq是等式约束%

然后在optimization文件中用以下命令调用非线性约束函数的句柄。

ConstraintFunctioin=@example;

FitnessFunction是适应度函数句柄。和一般的优化计算不同的是,本文中的适应度函数没有解析表达式,适应度的具体数值需要通过MATLAB调用ANSYS进行有限元计算得到。首先新建一个名为fitness的m文件,假定适应度函数的名称为fitness,然后在fitness文件中通过下面的语句定义适应度函数。

function y=fitness(x);%x为设计参数矩阵,y为输出变量。

%此部分为MATLAB调用ANSYS进行有限元分析的计算程序%

y=fitness_value;

fitness_value是有限元分析结束后导入到MATLAB中的结果矩阵。最后需要在optimization文件中使用以下命令调用适应度计算函数

fitnessfunction=@instance;

1.2 MATLAB和ANSYS的数据传递

MATLAB和ANSYS都具有很强的文件读写能力,通过下述操作可以实现相互之间的数据传递。

首先分别创建名为data.txt和result.txt的文本文档作为数据存储的中介。

1)设计参数写入data.txt

MATLAB需要以下语句将输入变量矩阵的写入到data.txt的文件中[3]。

fid = fopen (‘data.txt’ ’w+’);

fprintf ( fid,%f, x);

fclos (fid);

语句中的fid是data.txt文件的句柄,当文件打开成功时,fid的返回值为0,反之则为1。’w+’表示文件是以读写的形式打开,%f表示写入的数据格式为浮点型。

2)data.txt文件中的数据写入到ANSYS

首先利用记事本创建一个后缀名为.mac的APDL的宏文件,然后在该文件中通过*VREAD命令将存储在data.txt文件中的设计变量矩阵读入到design变量当中[4]。

*DIM,design,array,n,m

*VREAD,design(1),d:data,txt,,IJK,n,m

(format)

其中IJK是矩阵读取的顺序说明,一般使用JIK格式,将矩阵元素按行写入。n,m在JIK格式下分别表示design数组的列数和行数。Format为数据读取格式,可以参照FORTRAN-77的相关命令。比如3F7.3表示每行读取3个元素,每个矩阵元素占用7个字符宽度,小数点后保留3位有效数字。

3)ANSYS将有限元计算结果写入到result.txt

ANSYS在完成有限元计算之后,需要通过以下语句,将分析的结果fitness矩阵写入到result.txt文档中。

*CFOPEN, result, txt

*VWRITE, fitness

(format)

*CFCLOS

4)MATLAB完成计算结果的读取

在完成了对于ANSYS有限元分析程序的调用之后,MATLAB需要读取result.txt文件中的数据并存入适应度fitness_value中。相关的语句如下。

fid = fopen ( ‘result.txt’, ’w+’ );

fitness_value = fscanf ( fid, %f, format );

fclos ( fid );

在MATLAB成功读取适应度之后,遗传算法函数会自动根据适应度挑选下一代种群,并开始新的一轮循环计算,直到结果收敛为止。

1.3 MATLAB调用ANSYS

ANSYS提供了一种特殊Batch(批处理)模式,透过批处理模式,ANSYS能够在不打开程序窗口界面的情况下执行APDL。MATLAB可以通过system命令调用ANSYS批处理模式完成适应度的计算。

cd:(‘d:Ansys Incv145ansysinwinx64’)

system(‘ansys145.exe–b-pane3fl–iC:ansys_analysis.mac-oC:output.txt’)

由于ANSYS的文件路径中存在空格,因此需要首先使用cd命令表示将MATLAB的默认启动目录修改为ANSYS的安装位置,以避免MATLAB无法搜索到ANSYS。-b表示ANSYS运行在批处理模式;-p ane3fl是ANSYS多物理场分析模块Multiphysics的产品代码。C:ansys_analysis.mac是MATLAB需要调用的APDL宏文件所在的路径;-o C:output.txt是命令自动创建的运行结果输出文件,内容包含了调用过程中出现的错误提示和ANSYS的运行日志。

1.4 ANSYS的自动优化的步骤

在ANSYS利用APDL命令流进行自动优化的过程中包含了自动建模,自适应网格划分以及模型的自动求解等步骤。在自动优化的过程中,模型和参数占用的内存将不断增大,因此在每次优化循环开始前需要通过FINISH和/CLEAR命令将内存中所有的模型和参数加以清除。

但是清除后重新建立模型时不能使用常用的RESUME命令,一旦使用,系统所有参数将恢复为第一次创建有限元模型过程中输入的参数,遗传算法函数新产生的设计参数值将失去控制作用。

为了实现设计参数在循环中自动更新,首先需要创建一个后缀名为.txt的文本文档,在ANSYS完成建模前中使用PARSAV命令把除设计参数之外的其他参数保存在该文档中。在ANSYS读取了遗传算法产生的新设计参数之后,再通过PARRES命令将已保存参数从文本文档中恢复。

1.5 MATLAB和ANSYS联合优化的步骤

根据上述分析,MATLAB和ANSYS共同优化的过程如图1所示[6]。其中给定初始变量参数、判断优化算法是否收敛以及重新取变量赋值等操作在已经包含在优化函数中。

2 应用举例

2.1 研究对象和约束条件

本文以高温超导电机为优化对象,由于高温超导电机磁极对称,为了方便,建模时采用1/2磁极截面。励磁线圈由5个双饼型跑道线圈叠合制成,单根导线宽为5mm。表1列出了电机模型机结构的基本参数。

受到制造工艺和转子空间的限制,绕组的形状必须满足一定的约束条件。电机磁体是用多个不同半径的双饼型跑道线圈叠合而成。为了易于绕制和焊接,要求双饼型线圈的内径相同,相邻双饼线圈的外径相同[5]。

此外,励磁线圈必须保持在转子的内部空间中。利用APDL建立的电机模型如下图2所示。

2.2 优化目标

优化目标是在电机结构、励磁线圈通过的电流密度以及设定的约束条件等其他因素不变的情况下,通过改变电机磁体的结构参数,尽可能的降低气隙磁通的总谐波畸变率。

在ANSYS中,可以通过*MFOURI命令完成对气隙磁通的傅立叶分析。本文通过谐波畸变率(THD)评价电机气隙磁通的质量。在通过*GET命令获得磁场测量路径中各阶气隙磁通的数据后,总谐波畸变率可以通过下面的公式计算。

2.3 优化结果

当定转子气隙磁通的总谐波畸变率最小时,每层线圈的内径和外径如表3所示。

由于3次之后的谐波的幅值很小,相比基波,其影响可以忽略不计,因此在计算的时候只统计3次以下的谐波。

在优化前和优化后,根据公式分别对气隙磁通谐波畸变率进行计算,最终结果如表4所示。

3 结论

根据应用实例中的结果,MATLAB和ANSYS的联合优化有效的降低了定转子气隙磁通中谐波含量,使磁通波形更加趋近于正弦波,证明了MATLAB和ANSYS联合优化的可行性和有效性。

与常规参数优化中使用手工方法不断修改参数集合,根据计算结果进行寻优的方法相比,基于ANSYS和MATLAB的优化方法充分发挥了ANSYS和MATLAB两种软件的特长,具有自动建模,寻优精度高,不需要人工干预等优点。优化模块和建模模块分别通过两个不同软件实现,有利未来对模型和优化算法分别进行改进,并且优化程序可以独立移植到其他的项目中。

[1] MVK Chari. Finite-element solution of the Eddy-current problem in magnetic structures [J].IEEE Transactions on Power Apparatus & System, 1974.

[2] 龚纯,王正林. MATLAB最优化计算[M].子工业出版社.

[3] MATLAB user’s guide [M]. THWORKS Corporation.

[4] ANSYS Programmer’s Manual[M]. ANSYS Corporation.

[5] 何剑平. 高温超导同步电机及其磁场分析[D]. 华中科技大学,2006.

[6] Joosun Kang,Joon hon Lee. The optimal of shape of HTS motor to improve the critical current of field winding [J]. IEEE Transaction Superconductivity, 2003.


Application of ANSYS and MATLAB to Optimization Design

Li Chengyang, He Jianping, Zheng Jun

( Wuhan Institute of Marine Electric Propulsion, Wuhan 430064, China)

TM37

A

1003-4862(2016)05-0051-04

2016-01-09

李成阳(1991-),男,硕士研究生。研究方向:高温超导电机电磁场分析。

猜你喜欢

调用命令适应度
改进的自适应复制、交叉和突变遗传算法
只听主人的命令
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
移防命令下达后
一种基于改进适应度的多机器人协作策略
基于系统调用的恶意软件检测技术研究
基于空调导风板成型工艺的Kriging模型适应度研究
这是人民的命令
利用RFC技术实现SAP系统接口通信