应用改进SA算法实现MATLAB-HFSS交互仿真与天线优化

应用改进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曲线图

以上只是简单的展示了最后的仿真结果,其中仿真细节如:敏感度分析,数据增强、文件读取等都需要一一考虑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473181.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业如何选择一个开源「好」项目?

开源 三句半 oss-roast 需求明确是关键 风险考量要周全 开源虽好不白捡 别忘合规&#xff01; 显然&#xff0c;开源已成为一股不可阻挡的洪流&#xff0c;企业拥抱开源&#xff0c;积极参与开源项目不仅是响应技术潮流的必然选择&#xff0c;更是实现自身技术创新、市场拓展等…

新火种AI|国产手机抢滩“AI+折叠屏”赛道,行业洗牌大战就此开启?

作者&#xff1a;小岩 编辑&#xff1a;彩云 从2023年到2024年&#xff0c;随着新一波人工智能浪潮的加速&#xff0c;消费电子产品也迎来了全新的话题——AI。更重要的是&#xff0c;这场战争看似没有硝烟&#xff0c;但各大厂商都已经暗自角力了许久&#xff0c;特别是手机…

PHP全新美化广告横幅在线制作源码

源码简介 可以做网站的引流不需要安装上传就可以使用&#xff0c;在第一版基础上做了二次开发更加好用 注意&#xff1a;主机和服务器均可架设搭建,如果使用宝塔架设点击访问的时候提示找不到文件路径的时候,记得点击网站目录把防跨站攻击先关闭,这样就可以正常访问了,这款是…

华为openEuler系统卸载jdk

华为openEuler系统卸载jdk 1.查看openEuler上已安装的 Java 版本&#xff1a; 在终端中运行以下命令&#xff0c;查看系统中已经安装的 Java 版本。 sudo alternatives --config java这将列出已安装的 Java 版本&#xff0c;你可以看到当前使用的是哪个版本 2.卸载 Java&am…

java static

1、static概念 &#xff08;1&#xff09;static 关键字是静态的意思&#xff0c;可以修饰成员方法&#xff0c;成员变量 &#xff08;2&#xff09;static 修饰的特点 ① 被类的所有对象共享&#xff0c;这也是我们判断是否使用静态关键字的条件。 ② 可以通过类名调用&…

ActiViz三维场景的基本要素——相机

文章目录 前言一、基本属性和方法二、相机操作三、高级功能四、 示例代码和应用五、总结前言 在ActiViz中,vtkCamera是一个非常重要的类,用于定义观察场景的视角和位置。作为三维可视化的核心组件之一,vtkCamera决定了用户在三维场景中所看到的图像内容和视角,因此它对于呈…

Linux之文件管理与重定向

文件的管理 最开始说到过, 一个进程是可以打开多个文件的并且可以对这些文件做出不同的操作, 也就是说加载到内存中的文件可能存在多个. 操作系统要不要管理这些打开的文件呢? 当我们在程序里面打开多个文件时, 操作系统肯定是得对这些文件进行管理的, 而管理的本质就是对数…

openKylin系统安装ssh服务结合内网穿透实现固定公网地址访问

文章目录 1. 安装SSH服务2. 本地SSH连接测试3. openKylin安装Cpolar4. 配置 SSH公网地址5. 公网远程SSH连接小结 6. 固定SSH公网地址7. SSH固定地址连接 openKylin是中国首个基于Linux 的桌面操作系统开发者平台&#xff0c;通过开放操作系统源代码的方式&#xff0c;打造具有自…

cnetos7将普通用户的权限提升为超级用户

将普通用户的权限提升为超级用户 现象&#xff1a;当我们初次使用sudo命令时&#xff0c;会遇到下面的问题 解决步骤&#xff1a; 显示你当前登录用户的用户名。 whoami将自己的用户切为超级用户&#xff0c;密码为你第一次使用Linux登录时的密码 su -使用vim编辑器打开配…

Dockerfile Docker Compose(实战总结)

Dockerfile & Docker Compose&#xff08;实战总结&#xff09; Dockerfile Dockerfile 是用来构建Docker镜像文件&#xff0c;是由一条条构建镜像所需的指令构成的脚步。 步骤&#xff1a; 编写Dockerfile 文件docker build 构建镜像docker run 运行镜像docker push 发…

Hive SQL必刷练习题:日期交叉问题(两种思路)

思路一&#xff1a; ​ 首先想到的是借助炸裂函数&#xff0c;一行变成多行&#xff0c;就可以进行去重操作&#xff0c;然后再统计日期。 用到炸裂函数&#xff0c;就首先需要可以拿到起始和终止日期差大小的数组&#xff0c;然后再炸裂​ 那这个指定长度数组怎么获取呢&…

如何利用生成式AI准备面试?

面试准备的重要性 面试是求职过程中至关重要的一环&#xff0c;它是你与梦想职位之间的桥梁。充分的准备不仅能够增加你获得工作的机会&#xff0c;还能提高你在面试中的自信心。为什么要重视面试准备&#xff1f;因为通过它&#xff0c;你能更好地展示自己的专业能力、个人魅…

Linux chapter1 常用命令 cp

note 1 : netstat、curl、ip、nmap、dig 这些都是常用的网络诊断工具&#xff0c;它们的全称如下&#xff1a; netstat&#xff1a;Network Statistics&#xff0c;网络统计&#xff0c;用于显示网络连接&#xff0c;路由表&#xff0c;网络接口统计等网络信息。curl&#xf…

第七节:使用SMB发布Web前端程序

一、概述 一直以来&#xff0c;多数人都使用Apache、IIS、Tomcat等开源或商业Web服务器来运行Web程序&#xff0c;各种参数太多&#xff0c;与我们简单易用逻辑相左。所以在架构设计的时候&#xff0c;我们也在考虑&#xff0c;我们公司的Web程序是否能运行在SMB中&#xff0c;…

维度建模理论之维度表

维度表概述 维度表是维度建模的基础和灵魂。前文提到&#xff0c;事实表紧紧围绕业务过程进行设计&#xff0c;而维度表则围绕业务过程所处的环境进行设计。维度表主要包含一个主键和各种维度字段&#xff0c;维度字段称为维度属性。 维度表设计步骤 1&#xff09;确定维度&…

接口冒烟测试方法

接口冒烟测试方法 今年遇到了几个问题&#xff0c;与接口的功能和性能相关&#xff0c;恰巧最近公司也在组织以冒烟测试为主题的活动&#xff0c;于是乎突发奇想&#xff0c;寻思着能否将接口测试与冒烟测试结合起来&#xff0c;发掘一些新的接口测试思路与方法。 平时对接口…

canoe 以太网配置

canoe vn5620 以太网配置 首先电脑连接上VN5620&#xff0c;配置了License才能进行端口设置 从开始菜单中打开Vector Hardware Configuration 进入到配置页面&#xff0c;会出现VN5620&#xff0c;选择进行右击&#xff0c;点击第一个选项Ethernet device configuration ca…

TCP协议 及 重要机制

目录 1.TCP 协议报文格式 1.1.端口号 1.2 首部长度 和 选项 1.3 保留位 1.4 检验和 1.5 32位序号和确认序号 2. TCP的重要机制 2.1 确认应答 2.2 超时重传 2.3 连接管理 2.3.1 三次握手 2.3.2 四次挥手 2.4 滑动窗口 2.5 流量控制 2.6 拥塞控制 2.7 延时应答 2…

el-transfer 穿梭框

用到了jquery&#xff0c;所以需要下载jquery包&#xff0c;"jquery": "^3.6.0" <template><div>选中的{{result}}---数据<el-transfer v-model"result" :data"transferData" filter-placeholder"冷冻盒编号&qu…

全网最详细介绍如何实现图片存储阿里OSS实现资源持久化存储

什么是阿里云OSS 阿里云OSS&#xff08;Object Storage Service&#xff0c;对象存储服务&#xff09;是阿里云提供的一种存储服务&#xff0c;它支持任意类型的数据存储&#xff0c;如图片、视频、日志文件等。OSS以对象&#xff08;Object&#xff09;的形式组织数据&#x…