应用改进SA算法实现MATLAB-HFSS交互仿真与天线优化
- 第一章SA算法及其简单应用
- 1.1 SA算法简介
- 1.2 SA算法原理
- 1.2.1 SA算法原理
- 1.3 Metropolis准则及退火过程中的参数控制
- 1.3.1 Metropolis准则
- 1.3.2退火过程中的参数控制
- 1.4 SA算法简单应用
- 第二章 改进SA算法
- 2.1 改进方向
- 2.2 改进与未改进SA算法对比
- 第三章 MATLAB与HFSS交互仿真建模
- 3.1 应用背景
- 3.2 交互仿真
- 3.2.1 交互流程简介
- 3.2.2 交互仿真应用
- 第四章 应用改进SA算法优化天线参数
- 4.1 天线基本理论
- 4.2 SA算法优化流程
第一章SA算法及其简单应用
1.1 SA算法简介
模拟退火算法(SA)来源于固体退火原理,是一种基于概率的算法。将固体加温至充分高的温度,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,分子和原子越不稳定。而徐徐冷却时粒子渐趋有序,能量减少,原子越稳定。在冷却(降温)过程中,固体在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解的地方能概率性地跳出并最终趋于全局最优。模拟退火算法是赋予了搜索过程一种时变和最终趋于零的概率突跳性,从而可有效避免陷入局部极小并最终趋于全局最优的串行结构的优化算法。
1.2 SA算法原理
1.2.1 SA算法原理
模拟退火算法包含两个部分即Metropolis算法和退火过程,,分别对应内循环和外循环。外循环就是退火过程,将固体达到较高的温度(初始温度T(0)),然后按照降温系数alpha使温度按照一定的比例下降,当达到终止温度Tf时,冷却结束,即退火过程结束。
Metropolis算法是内循环,即在每次温度下,迭代L次,寻找在该温度下能量的最小值(即最优解)。下图1.1中所示即为在一次温度下,跌代L次,固体能量发生的变化。在该温度下,整个迭代过程中温度不发生变化,能量发生变化,当前一个状态x(n)的能量大于后一个状态x(n+1)的能量时,状态x(n)的解没有状态x(n+1)的解好,所以接受状态x(n+1)。如果下一状态的能量比前一个状态的能量高时,需要设置一个接受概率P,即如果下一状态的能量比前一个状态的能量高,则接受下一状态的概率为P。
图1.1 温度变化导致的能量变化图
图1.2为模拟退火算法的基本流程
图1.2 模拟退火算法流程图
(1) 初始化:初始温度T(充分大),初始解状态S(是算法迭代的起点),每个T值的迭代次数L
(2) 对k=1, …, L做第(3)至第6步:
(3) 产生新解S′
(4) 计算增量ΔT=C(S′)-C(S),其中C(S)为目标函数,C(S)相当于能量
(5) 若ΔT<0则接受S′作为新的当前解,否则以概率exp(-ΔT/T)接受S′作为新的当前解.
(6) 如果满足终止条件则输出当前解作为最优解,结束程序。
(7) T逐渐减少,且T->0,然后转第2步。
1.3 Metropolis准则及退火过程中的参数控制
1.3.1 Metropolis准则
1953年Metropolis提出重要性采样方法,即以概率来接受新状态,而不是使用完全确定的规则,称为Metropolis准则,计算量较低。
假设开始状态在A,多次迭代之后更新到B的局部最优解,这时发现更新到B时,能量比A要低,则说明接近最优解了,因此百分百转移,状态到达B后,发现下一步能量上升了,如果是梯度下降则是不允许继续向前的,而这里会以一定的概率跳出这个坑,这各概率和当前的状态、能量等都有关系。所以说这个概率的设计是很重要的,下面从数学方面进行解释。
假设前一个状态为x(n),系统根据某一指标(梯度下降,上节的能量),状态变为x(n+1),相应的,系统的能量由E(n)变为E(n+1),定义系统由x(n)变为x(n+1)的接受概率P为:
通过上述分析可以得到接受状态的三条原则:
(1)在固定温度下,接受使目标函数下降的候选解的概率要大于使目标函数上升的候选解概率;
(2)随着温度的下降,接受使目标函数上升的解的概率要逐渐减小;
(3)当温度趋于零时,只能接受目标函数下降的解。
1.3.2退火过程中的参数控制
退火过程中的参数控制一般遵循以下三个原则
(1)初始的温度T(0)应选的足够高,使的所有转移状态都被接受。初始温度越高,获得高质量的解的概率越大,耗费的时间越长。
(2)退火速率,即温度下降,最简单的下降方式是指数式下降,使用这种方式可以对每一温度,有足够的转移尝试,但指数式下降的收敛速度比较慢。
(3)如果温度下降到终止温度或者达到用户设定的阈值,则退火完成。
1.4 SA算法简单应用
通过在MATLAB里将SA算法的算法流程用程序化语言实现,以下使用两个简单的数学问题来验证SA算法。
题目一:求解函数y = 11sin(x) + 7cos(5*x)在[-3,3]内的最大值
图1.3为MATLAB运行SA算法求函数极值得到的曲线图
图1.3 函数曲线图及应用结果
最佳的位置是:1.2751;此时最优值是:17.492;时间已过 5.697241 秒。
图1.4 是其迭代过程,可以看出SA算法能够以较少的迭代过程完成函数问题的最优求解。
图 1.4 SA迭代过程图
问题2:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。
图1.5是MATLAB仿真出的路径选择图
图1.5 SA路径选择图
最佳的方案是:[33 38 37 35 32 30 29 21 14 10 1 2 4 3 5 6 7 8 9 12 11 19 18 17 16 13 15 20 23 26 25 22 24 28 27 31 36 34];此时最优值是:6.6594e+03
图1.6是其迭代过程
图1.6 迭代过程图
第二章 改进SA算法
2.1 改进方向
(1) 有记忆的模拟退火算法
由于模拟退火算法兼顾了全局搜索能力和局部搜索能力,具有跳出局部最 优陷阱的能力,使用Metropolis准则来接受较差的解也能增强全局搜索的能力。 而对于多极值问题,随着温度的衰减,接受恶化解的概率越来越低直至趋近于零,此时算法有可能已经经过了全局最优值并困于某个局部极值中难以跳出,导致最后得到的寻优结果不是搜索过程中的全局最优值,故需要增加一个记忆器,用来记录算法搜索过的最优值以及最优位置,并与最后搜索到的结果比较来确保最终结果是算法搜索过程中的最优值。
引入有记忆的模拟退火算法可以用来记录全搜索过程中的最优值,能够保 证搜索结果的最优性,充分发挥模拟退火算法跳出局部最优陷阱的作用。在搜索过程前期算法能够进行大范围的全局搜索,故可以考虑在算法的搜索过程后期在最优值附近进行精细化的局部搜索,可以将记忆法与返回搜索相结合,以此来加强算法的局部搜索能力。一开始算法通过 Metropolis准则接受较差解进行大范围的全局搜索,若搜索过程中的最优值在一定次数内没有改变,则判定算法可能陷入了某个局部极值或者进行了较多的无意义搜索,此时返回历史最优位置,通过控制搜索步长,在最优位置附近进行小范围的局部搜索,以此来加强算法在最优值附近的局部搜索能力,若设置返回搜索的次数过大,则返回搜索的效果比较小,设置过小则容易使正在爬坡的粒子返回原位置,所以应该根据具体问题设置。
(2) 回火退火法
在传统的模拟退火算法中,温度呈单调下降的趋势,对于不同的搜索问题, 随着温度越来越低,Metropolis 准则在算法后期甚至中期几乎失效,故难以从 局部最优的陷阱中跳出,因此可以考虑在某个时候适当提高温度,提高 Metropolis 准则的接受概率,加强算法的全局搜索能力。回火退火法虽然能够 帮助算法跳出局部极值,但是也会降低算法的搜索效率,故次数不宜过多,应该根据具体问题设置合适的回火次数,一般以3-5次为准。
(3)非常快速模拟退火法
由于传统的模拟退火算法在搜索过程中可能出现搜索效率低、盲目搜索和 收敛速度慢等问题,可以使用非常快速模拟退火法来弥补传统模拟退火算法的 不足。Ingber 在 1989 年提出了非常快速模拟退火法(VFSA),VFSA 是目前比较 常用的模拟退火算法,其通过似 Cauchy 分布对当前解进行扰动,新解的产生公式如下所示:
式中的mi是当前解的第i个变量,m′i是新解的第i个变量,T是当前温度,u表示[0,1]均匀分布的随机数,Bi和Ai分别是第i个变量的上限和下限,sgn(u-0.5)表示搜索方向。
VFSA 的温度衰减函数如下所示:
式中的T0是初始温度,K是迭代次数,C是常数,N是待反演参数的个数。
综上,改进的模拟退火算法的整体流程如下:
(1)设置初始温度T0、温度衰减系数α、马尔科夫链长度Lk和总迭代次数K,在设定范围内随机生成一个初始解x0并计算其适应度值f(x0),并将最优解bestx与最优值Gbest设置为初始解x0和适应度值f(x0)。
(2)在x0附近进行似Cauchy分布扰动,生成一个新解x1,并进行越界处理,计算其适应度值f(x1)。
(3)若f(x1)小于f(x0),则接受新解x1,替换x0;若f(x1)大于f(x0),则不立即舍弃,并计算f(x1)与f(x0)的差值Δf,并通过Metropolis准则计算接受新解x1的概率,与一个在[0,1]均匀分布的随机数比较,若概率大于随机数,则接受新解x1,替换x0,反之则舍弃。
(4)判断算法是否达到该温度内循环终止条件,若不满足,则算法返回(2)继续循环。
(5)若满足内循环终止条件,则通过快速退火降低温度T,判断是否需要回火升温,否则返回步骤(2)继续循环,若最优值未更新达到次数,则进行返回搜索。
(6)若算法达到终止条件,输出全局最优值Gbest。
2.2 改进与未改进SA算法对比
针对问题2:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。图2.1是未改进路径图,图2.2是改进后路径图,图2.3是迭代曲线对比。
路径图二者并没有区别,但迭代次数有区别。
图2.3 迭代次数对比
第三章 MATLAB与HFSS交互仿真建模
3.1 应用背景
HFSS-MATLAB-API是一个工具库,该库是MATLAB通过使用HFSS script接口控制HFSS的执行的。这个工具库提供了一系列的MATLAB函数。这些函数可以通过生成需要的HFSS script来创建3D模型。一旦通过这种方式生成一个script,就可以在HFSS中执行它并产生相应的3D模型,按设置计算相应问题和将结果数据输出。可以说,任何在HFSS软件中可以建立的三维模型,都能够使用这一函数库来实现。
大多数设计者使用HFSS自带的3D建模功能,足以解决简单的模型创建,对象优化。但是遇到一些比较复杂的设计对象的时,人工建模费时费力。例如设计周期阵列结构或者其他复杂的滤波器等。如果已经对MATLAB软件有了足够多的了解,并且有使用HFSS设计滤波结构的经验,就可以进一步接触该脚本。
3.2 交互仿真
3.2.1 交互流程简介
安装好MATLAB和HFSS软件后,需要下载HFSS-MATLAB-API库,该库包含了HFSS仿真软件中的大多数建模操作,并各自封装成了函数,将此库复制到MATLAB安装位置,以方便调用。以下是交互仿真中的几个基本操作:
打开HFSS,点击上方Tools->Record Script to File,HFSS开始记录所有操作,并将操作过程转换为代码。
导出操作脚本,可以选择为VBScript脚本或者py脚本,前者是联合MATLAB,后者是联合python。
在MATLAB中使用脚本语言调用HFSS建模,这一部分包括启动HFSS、HFSS建模、HFSS仿真、结果保存分析等操作,操作完成后会生成对应的VBS脚本,通过在HFSS中打开就会还原MATLAB语言的所有操作。
3.2.2 交互仿真应用
以偶极子天线为例,在MATLAB中编写VBS脚本进行建模操作,并导出其S参数性能曲线,计算-10dB以下带宽范围,利用循环仿真改变其中心频点的频率,并在终端输出相应的仿真结果。图3.1是MATLAB交互仿真程序的流程图:
图3.1 MATLAB交互仿真流程图
运行结果如下图3.2,图3.3是MATLAB终端仿真过程演示。
图3.2 交互仿真运行结果图
图3.3 MATLAB终端仿真过程演示图
下图3.4为MATLAB与HFSS联合仿真建立的偶极子天线的模型图,模型的主要参数设置如下:
% 天线参数
中心频率fC = 150e6;波长Wv = 3e8/fC ;天线长度L = Wv/2;天线间隙gapL = 5e-2;天线半径aRad = 2e-2
% 仿真参数
fLow = 100e6;fHigh = 200e6;nPoints = 201;
% 空气盒参数
AirX = Wv/2 + L; AirY = Wv/2;AirZ = Wv/2;
图3.4 MATLAB与HFSS交互仿真模型图
如果不使用联合仿真进行建模,使用HFSS进行电磁场仿真的一般步骤如下:
图3.5是《HFSS天线设计》一书中的天线设计流程概述:
图3.5 HFSS人工建模仿真流程图
设置求解类型并建模设置边界条件和激励方式设置求解类型和求解设置检查后仿真分析是否进行优化分析满足预期结果后结束。
第四章 应用改进SA算法优化天线参数
4.1 天线基本理论
图4.1是天线认知基本图像
图4.1 天线认知基本图像
天线是一种电磁系统的组成部分,它的主要功能是将导线中的电能转换为电磁波并发射到空间中,或者相反地,从空间中接收电磁波并转换为导线中的电能。简而言之,天线可以发射和接收无线电波。
以下是一些关于天线的基本概念:
辐射元件:天线的物理部分,如导线、金属板或者其他导电材料,能够直接与空间中的电磁场互动。
谐振频率:天线在特定的频率下性能最佳,这个频率称为谐振频率。对于简单的偶极天线,这通常是其物理长度的半波长。
增益:天线增益描述了天线在特定方向上相对于某个基准天线的辐射效率。
指向性和方向图:天线的指向性描述了天线发射或接收能力的方向依赖性,通常通过方向图表示,即在不同方向上天线增益的可视化。
带宽:天线的带宽是指天线能够有效工作的频率范围,通常定义为输入阻抗匹配和辐射特性在技术规格范围内的频率区间。
极化:天线的极化描述了天线辐射电磁波的电场矢量的取向。常见的极化方式有线极化(水平或垂直)和圆极化(左旋或右旋)。
阻抗匹配:为了最大限度地从天线传输功率,天线的输入阻抗应该与其馈线的特征阻抗匹配。
VSWR(电压驻波比):VSWR是衡量天线输入阻抗匹配程度的一个指标。理想情况下,VSWR为1,表明没有反射波,所有能量都被辐射或接收。
4.2 SA算法优化流程
图4.2是利用MATLAB建立的天线模型图:
略
图4.2 天线模型图
优化流程如下描述:
(1) 仿真获得少量数据集
(2) 设定预测仿真性能S数据曲线
(3) 联合仿真调用HFSS
(4) 根据SA算法求解最优参数组合
(5) 达到期望曲线停止迭代
图4.3为原始模型S曲线,图4.4为应用SA算法优化后的S曲线,可以看出优化后的S曲线相比未优化S曲线明显扩充了-10dB以下带宽。
略
图4.3 原始模型S曲线图
略
图4.4 优化后的S曲线图
以上只是简单的展示了最后的仿真结果,其中仿真细节如:敏感度分析,数据增强、文件读取等都需要一一考虑。