Electromagn etic Analysis and Applications 电磁分析与应用, 2012, 1, 13-17 http://dx.doi.org/10.12677/eaa.2012.11003 Published Online October 2012 (http://www.hanspub.org/journal/eaa.html) Optimum Electromagnetism Design Based on Co-Simulation of MATLAB and COMSOL Zhongkui Feng1,2, Y in g Xu1, Xian Li2, Kun Chang2, Geli Hu2, Y inming Dai2, Qiuliang Wang2 1University of Chinese Academy of Sciences, Beijing 2Institute of Electrical Engineering, Chinese Academy of Sciences, Beijing Email: zhongkui1110@163.com Received: Sep. 13th, 2012; revised: Sep. 21st, 2012; accepted: Sep. 24th, 2012 Abstract: The genetic algorithm (GA) is a type of intelligent optimization algorithm that learns from biological genet- ics and natural selection mechanism. There are varieties of mature genetic operators integrated in the genetic algorithm toolbox of the MATLAB, and we can complete variety of optimization problems easily through the toolbox. COMSOL Multiphysics is a large-scale numerical simulation software. Efficient computing performance and outstanding multi- field direct coupling capabilities ensure highly accurate numerical simulation of arbitrary multi-physics fields. In order to make the genetic algorithm apply to optimum electromagnetism design, we studied the method of calling COMSOL in MATLAB, and completed the data transfer between MATLAB and COMSOL. Then we successfully used this opti- mum design method on a Helmholtz coil, and thus verified the feasibility of this method. Keywords: Genetic Algorithm; Co-Simulation; Optimum Design; COMSOL; MATLAB 基于 MATLAB 与COMSOL 联合仿真的电磁优化设计 冯忠奎 1,2,许 莹1,李 献2,昌 锟2,胡格莉 2,戴银明 2,王秋良 2 1中国科学院大学,北京 2中国科学院电工研究所,北京 Email: zhongkui1110@163.com 收稿日期:2012 年9月13 日;修回日期:2012年9月21日;录用日期:2012 年9月24 日 摘 要:遗传算法(Genetic Algorithm 简称 GA) 是借鉴生物遗传学和自然选择机理的一种智能的优化算法。 MATLAB 中的遗传算法工具箱集成了当前比较成熟的各种遗传操作算子,借助它可以方便地完成各种问题的优 化。COMSOL Multiphysics是一款大型的高级数值仿真软件,以高效的计算性能和杰出的多场直接耦合能力实 现了任意多物理场的高度精确的数值仿真。为使遗传算法更高效的应用于电磁优化设计,我们研究了在 MATLAB 中调用 COMSOL 联合仿真的方法,实现了MATLAB 与COMSOL 的数据传递。我们将该电磁优化设 计方法成功的用于一亥姆霍兹线圈,由此表明了此方法的可行性。 关键词:遗传算法;联合仿真;优化设计;COMSOL;MATLAB 1. 引言 COMSOL Multiphysics是一款大型的高级数值仿 真软件。广泛应用于各个领域的科学研究以及工程计 算,被称为“第一款真正的任意多物理场直接耦合分 析软件”。在模拟科学和工程领域的各种物理过程中, COMSOL 以高效的计算性能和杰出的多场双向直接 耦合分析能力实现了高度精确的数值仿真。COMSOL 是以有限元法为基础,通过求解偏微分方程(单场)或 Copyright © 2012 Hanspub 13 基于 MATLAB 与COMSOL 联合仿真的电磁优化设计 偏微分方程组(多场)来实现真实物理现象的仿真。目 前已经在声学、生物科学、化学反应、电磁学、流体 动力学、燃料电池、地球科学、热传导、光学等领域 得到了广泛的应用。虽然在仿真计算方面的用途很 广,但是 COMSOL 本身的优化能力较弱,限制了其 在工程优化设计中的应用。众所周知,MATLAB 擅长 做优化设计,本文的主要工作就是研究如何使用 MATLAB(R2011a) 里的优化算法调用 COMSOL(4.2) 做优化设计[1],这里以遗传算法为例。 遗传算法是近些年广泛应用的一种智能的优化 算法,它具有较强的全局搜索能力,并且可以与其他 常规优化算法相结合,进而高效、准确地解决大多数 的工程优化问题。MATLAB 中的遗传算法工具箱集成 了当前比较成熟的各种遗传算子,借助它可以方便地 完成各种问题的优化求解。本文通过在 MATLAB 中 将COMSOL 作为子程序调用的方法来研究遗传算法 在电磁优化设计中的应用。 2. 遗传算法及 MATLAB 遗传算法工具箱 2.1. 遗传算法基本思想 遗传算法是借鉴生物遗传学和自然选择机理的 一类优化搜索算法。它不同于传统的数学模型,主要 适用于非线性等复杂问题的解决。 遗传算法类似于生物进化,是通过搜索基因上的 染色体来求解,它和需要解的问题本身没有任何关 联,只是评价算法所产生的每个染色体,并通过适应 值来对染色体进行筛选,选择适应性好的染色体,以 便继续繁殖[2,3]。在遗传算法中,染色体的形成是通过 所求解问题的编码随机获取,得到初始种群。对每个 个体用适应度函数进行评价,对适应值低的个体淘 汰,适应值高的个体参加遗传操作,从而形成下一代 新种群,再对新种群进行进化,这样反复操作,最后 可得到最优解。该方法最大的特点是全局搜索能力 强,并且不需要编程人员对问题的优化过程有太深的 了解,只要选定了种群,指定了种群所处的环境,该 方法就会自动的、智能地向最优解进化。遗传算法中 最基本的操作是遗传操作,包括选择、交叉和变异。 自然界中环境按照适者生存的原则来选择优良个体, 使其优良基因能够传递到下一代,遗传算法中的选择 操作即是模拟这一过程。首先计算种群中每个个体的 适应度(Fitness),然后按照适者生存的原则进行选择 操作。交叉操作是模拟生物进化中的有性繁殖过程, 种群个体之间通过基因重组生成新的个体。生命体在 进化过程中某些基因常常会发生变异,好的变异会被 环境选择并遗传到下一代,而不好的变异则会被环境 淘汰,因此这种基因变异对种群的进化有巨大的推动 作用。遗传算法中应用这种变异来产生新的个体,使 种群中的基因更加丰富,有利于算法的收敛。 2.2. MATLAB遗传算法工具箱 MATLAB 是矩阵实验室的简称,它具有丰富的矩 阵操作命令。使用 MATLAB 来实现遗传算法是非常 方便的[4-6],即将种群的数据存入矩阵中,然后就可以 对整个种群而不是单个个体进行操作,从而大大提高 了计算效率。更重要的是,MATLAB 本身还带有遗传 算法工具箱,它集成了当前较成熟的各种遗传操作算 子和各种改进型遗传算法,使遗传算法优化变的更加 简单、高效。其主程序ga.m的常用调用格式如下: x=ga(@ fitnessfcn, nvars, options) [x, fval]=ga(@ fitnessfcn, nvars, options) [x, fval, reason]=ga(@ fitnessfcn, nvars, options) [x, fval, output]=ga(@ fitnessfcn, nvars, options) [x, fval, reason, output, population[=ga(@ fitnessfcn, nvars, options) 其中各参数说明如下: x为程序最终计算得到的最小值; fval 为最小值点 x处的适应度函数值; reason 为算法终止的原因; output 为算法输出的结构体,包含程序计算中的 各种相关信息; population 为程序终止时的种群; fitnessfcn 为适应度函数; nvars为设计变量个数; options 为遗传算法的各种控制选项。 此外,也可使用工具箱的交互式图形用户界面 (GUI)来执行遗传操作,其特点是简洁、直观。 3. MATLAB调用 COMSOL MATLAB 遗传算法工具箱需要输入适应度函数 [7,8]。对于单一物理场问题,其适应度函数很好编写, 但对于求解多场直接耦合问题,仅使用 MATLAB 语 Copyright © 2012 Hanspub 14 基于 MATLAB 与COMSOL 联合仿真的电磁优化设计 言编写程序来实现往往是很复杂有时甚至是不可能 的,而 COMSOL求解多场问题等同于求解方程组, 用户只需选择或者自定义不同专业的偏微分方程进 行任意组合便可轻松实现多物理场的直接耦合分析。 3.1. MATLAB与COMSOL数据传递 若要实现MATLAB 对COMSOL的调用,首先要 能实现 MATLAB 与COMSOL 的数据传递,而二者都 有很强的文件操作功能,这使数据传递的实现成为可 能。MATLAB 在调用 COMSOL 时的数据流向如图1。 首先,MATLAB 打开、写入并关闭文本文件(txt) 的步骤如下: Fid=fopen('d:\foma\parameters.txt', 'wt'); %打开文 本文件 fprintf(fid,'%12.6f%12.6f\n', aa); %写入文本文件 fclose(fid); %关闭文本文件 其中,fid 为所打开文件句柄,'wt'表示以写入方式打 开文本文件;'%12.6 f%12.6f \n'表示把设计变量 aa成两 列的形式写入parameters.txt文件。 其次,把 n个设计变量分别写入 n个子函数 para_1.m, para_2.mpara_n.m 中。其中 para_n.m 在形 式上如下: function r_n=para_n [r]=textread('d:\foma\parameters.txt'); r_n=r(n); %每次只取一个变量 end 最后在 COMSOL 生成的 M-file 中,添加以下命 令把每个设计变量的值分别读入变量r_n 中。同时, 用变量 r_n 代替在 COMSOL GUI建模时相应变量的 常数。 model.param.set('r_n', para_n); COMSOL求解结束后的目标函数值可以先写入 MATLAB 遗传算法生成 设计变量数据 COMSOL 利用读入的数 据建模分析得 到目标函数和 状态变量 n个输出设 计变量 输入设计变量 传送目标函数值 n paramenters .txt para_n.m 输入设计变量 para_1.m 输入设计变量 para_2.m 1 2 Figure 1. Data transfer between MATLAB and COMSOL 图1. MATLAB与COMSOL 的数据传递 一个文本文件中,命令如下: model.result.export('data1').set('filename', 'D:\foma\out1906.txt'); model.result.export('data1').run; 然后在 MATLAB 里使用 importdata 命令把文本 文件里的目标函数值读入变量Object 中,命令如下: Object=importdata('out1906.txt'); 本文中采用更为直接的方法,把目标函数值直接 传送到 MATLAB 里,命令如下: B=mphinterp(results,'mf.normB','coord',xyz); results 中存有COMSOL 计算之后的结果数据, 'mf.normB'表示取磁场感应强度 B的值,'coord'表示在 直角坐标系下,xyz表示目标区域的坐标值。 3.2. MATLAB调用COMSOL 在COMSOL中通过 GUI 方式建立的求解模型直 接保存为***.mph 之后,可以另存为直接在MATLAB 中可以调用的 M-file文件 model.m,M-file 的运行要 借助 COMSOL 的计算核心,是在不打开 COMSOL 程 序界面的情况下后台运行计算,并输出结果,这使得 在MATLAB 程序中调用 COMSOL 成为可能。 MATLAB 调用 COMSOL 的语句: results=model; 4. 联合仿真电磁优化算例 亥姆霍兹线圈是用两个半径和匝数完全相同的 线圈,将其同轴排列并令间距r_1 等于半径,串接而 成的线圈,线圈的截面是正方形[9],如图 2所示。 通以同方向电流,两个载流线圈的总磁场在轴的 中点附近的较大范围内是均匀的[10],故在生产和科研 中有较大的实用价值。对于一对固定线圈边长 L和截 面电流密度的线圈,为了在以轴的中点为圆心的区域 Z R L I r r_1 r_2 Figure 2. Helmholtz coi l 图2. 亥姆霍兹线圈 Copyright © 2012 Hanspub 15 基于 MATLAB 与COMSOL 联合仿真的电磁优化设计 内获得尽可能大的均匀区,即在固定半径的球形区域 内获得尽可能均匀的磁场,通过遗传算法在小范围 (±0.01 m)内调节 r_1 和r_2 来实现[11,12]。线圈的尺寸 如表 1所示。 磁场的均匀程度是以不均匀度(Parts Per Million, 简称 PPM)衡量的,不均匀度越小磁场越均匀,PPM 的计算公式如下[13]: 6 min min 10 BB BB max Bmin B max max PPM 2 (1) 和分别是球形区域内磁场的最大值和 最小值。 本文中优化算法的主函数如下。其中,控制选项 中的 PopulationSize 表示遗传样本容量,这里设为20, 值越大越容易取得全局最优解;Generations 表示遗传 操作的代数,这里设为 20,值越大越容易取得全局最 优解。 x0=[0.2;0.4]; % r_1 和 r_2 的初始值 lb=x0−0.01; % r_1 和 r_2 的下限 ub=x0+0.01; % r_1 和 r_2 的上限 options = gaoptimset('Plo tFcns', {@gaplotbestf, @gaplotstopping},'Popu lationSize',20,'Generations',20); % 控制选项 [x,fval,exitflag]=ga(@myFun,2,[],[],[],[],lb,ub,[], options)%遗传算法调用格式 myFun 是子函数,子函数 model.m 是在 COMSOL 中对亥姆霍兹线圈进行建模求解后另存为的 M文件, model.m 会自动调用 COMSOL 读取 parameters.txt 中 参数进行三维建模求解,并把结果返回到 results 中。 ga 会根据 myFun 返回的 PPM 值自动的调整 r_1 和r_2 的值,直到PPM 的值达到最小值 1373.4(图3),优化 结束,此时 r_1 和r_2 分别等于 0.1965 m 和0.3941 m。 遗传算法收敛过程如图 3所示,整个优化过程耗时 18.2 小时,从图中可知,未优化之前 PPM 约等于 10,000,优 化 之 后PPM 约为原来的七分之一,即磁场 Table 1. Helmholtz coil parameters 表1. 亥姆霍兹线圈参数 线圈边长(L) 0.05 m 截面电流密度(I) 100,000 A/m2 线圈距离(r_1) 0.2 m 线圈直径(r_2) 0.4 m 球形区域半径(r) 0.02 m 的均匀度提高七倍,在生产和科研中的意义重大。 function f=myFun(x) format long; aa=[0 0 ]; aa(1)=x(1); % 优化过程中 r_1 的值 aa(2)=x(2); % 优化过程中 r_2 的值 fid=fopen('d:\foma\parameters.txt','wt'); fprintf(fid,'%12.6f%12.6f\n',aa); fclose(fid); results=model; % 调用子函数 model.m x0=[0:0.01:0.02]; y0=[0:0.01:0.02]; z0=[0:0.01:0.02]; [x1,y1,z1]=meshgrid(x0,y0,z0); Xyz=[x1(:),y1(:),z1(:)]'; B=mphinterp(results,'mf.normB','coord',xyz); % 读 出球形区域内磁场值 Bmax=max(B); Bmin=min(B); 0 2 4 6 810 12 14 16 18 20 0 2000 4000 6000 8000 10000 12000 遗传的代数 PPM 最好的适应值 平均适应值 Figure 3. Convergence of PPM 图3. PPM收敛过程 Figure 4. BMOD map c o ntour in the spherical region 图4. 球形区域 BMOD 的分布图 Copyright © 2012 Hanspub 16 基于 MATLAB 与COMSOL 联合仿真的电磁优化设计 Copyright © 2012 Hanspub 17 PPM=2*(Bmax-Bmin)/(Bmax+Bmin)*1.0e6; % 目 标函数值:磁场不均匀度 F=PPM; % 把 PPM 值返回到 ga end 球形区域磁感应强度 B的分布如图 4所示。 5. 结论 MATLAB 遗传算法工具箱具有很强的优化功能, 且其操作简单、直观,COMSOL 又是通用大型任意多 物理场直接耦合分析软件。文充分利用了二者的优 势,实现了 MATLAB 与COMSOL 的数据传递和调用, 对一典型亥姆霍兹线圈进行了优化设计,验证了该方 法的可行性。但从分析有效性来看,基于 MATLAB 与COMSOL 的联合仿真的确取得了良好的优化结果。 然而,从分析时间来看,整个优化过程耗时较长,这 是由于我们建立的求解模型是三维的,对于一些轴对 称的模型可以采用二维模型,另外 MATLAB 与 COMSOL 数据传递是间接的。 参考文献 (References) [1] L. Fang, S. Y. Liu. Hydrogeologic parameters inverse analysis based on pumping test by Comsol Multiphysics and Matlab. Computer Design and Applications (ICCDA) 2010, Nanjing, 25- 27 June 2010, 160-163. [2] 甄文祥, 王文田. 遗传算法及其应用[J]. 计算机应用研究, 1994, 5: 9-10. [3] 马国田. 遗传算法及其在电磁工程中的应用[D]. 西安电子科 技大学, 1998. [4] 陈秋莲, 王成栋. 基于 Matlab 遗传算法工具箱的优化计算实 现[J]. 现代电子技术, 2007, 2: 124-126. [5] 于玲, 贾春强. Matlab遗传算法工具箱函数及应用实例[J]. 机 械工程师, 2004, 11: 27-28. [6] 王娟. 遗传算法的 Matlab 实现及应用[J]. 信息与电脑(理论 版), 2012, 6: 103-104. [7] 尹泽明, 丁春利. 精通 Matlab 6[M]. 北京: 清华大学出版社, 2002. [8] 陈永春. Matlab M 语言高级编程[M]. 北京: 清华大学出版社, 2004. [9] 谭曦, 刘军, 殷建玲. 正方形亥姆霍兹线圈的磁场均匀性[J]. 光学仪器, 2012, 34(1): 52-67. [10] 周娜, 郭颖, 郭成. 广义亥姆霍兹线圈中轴线上磁场的计算 与分析[J]. 陕西理工学院学报(自然科学版), 2011, 27(2). [11] 刘继亮, 李德胜, 林恩怀等. 方形亥姆霍兹线圈结构优化设 计[A]. 2011中国仪器仪表学术、产业大会(论文集2)[C], 2010. [12] 顾心 如. 方形赫姆霍兹线圈最佳间距的求解[J]. 物探与化探, 2000, 5: 387-396. [13] Y. L. Zhang, W. Y. Huang, L. S. Zeng and D. X. Xie. Optimal design of a novel magnet structure for an open type supercon- ducting MRI device. 2011 International Conference on Electrical Machines and Systems (ICEMS), Shenyang, 20-23 August 2011, 1-4. |