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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Preference简单介绍

Android Preference简单介绍 文章目录 Android Preference简单介绍一、前言二、Preference 简单介绍二、PreferenceScreen和SwitchPreference 简单示例2、相关demo代码示例&#xff08;1&#xff09;SettingsActivity.Java&#xff08;2&#xff09;layout\settings_activity.x…

Qt学习笔记(一)——Qt初识

本文仅是 学习时记录的笔记&#xff0c;供自己复习时使用。 1.创建好文件(QWidget窗口) main.cpp中&#xff1a; 注&#xff1a;Widget类继承父类QWidget. widget.h中&#xff1a; Widget.cpp中&#xff1a; 打开Forms文件夹中的widget.ui文件&#xff1a; 打开左边编辑&am…

【吊打面试官系列】Redis篇 - 为什么 redis 需要把所有数据放到内存中?

大家好&#xff0c;我是锋哥。今天分享关于 为什么 redis 需要把所有数据放到内存中 面试题&#xff0c;希望对大家有帮助&#xff1b; Redis 为了达到最快的读写速度将数据都读到内存中&#xff0c;并通过异步的方式将数 据写入磁盘。所以 redis 具有快速和数据持久化的特征。…

飞腾+FPGA+AI电力行业智能数据采集与分析网闸解决方案

行业痛点: 安全物联网闸在监控平台中的具体作用&#xff1a;35KV变电站是煤矿的动力核心&#xff0c;采矿人员上下井、煤炭提升输送、矿井通风等核心设备均依靠变电站提供电源。监控中心及时掌握变电站的运行状态对煤矿的安全生产非常重要。如若外部通过监控网络来控制变电站会…

Python爬虫入门:HTTP与URL基础解析及简单示例实践

在数字化时代&#xff0c;数据已成为一种宝贵的资源。Python作为一种强大的编程语言&#xff0c;在数据采集和处理方面表现出色。爬虫技术&#xff0c;即网络爬虫&#xff0c;是Python中用于数据采集的重要工具。本文作为Python爬虫基础教程的第一篇&#xff0c;将深入讲解URL和…

流畅的 Python 第二版(GPT 重译)(六)

第三部分&#xff1a;类和协议 第十一章&#xff1a;一个 Python 风格的对象 使库或框架成为 Pythonic 是为了让 Python 程序员尽可能轻松和自然地学会如何执行任务。 Python 和 JavaScript 框架的创造者 Martijn Faassen。 由于 Python 数据模型&#xff0c;您定义的类型可以…

CSS3新属性(学习笔记)

一、. 圆角 border-radius:; 可以取1-4个值&#xff08;规则同margin&#xff09; 可以取px和% 一般用像素&#xff0c;画圆的时候用百分比&#xff1a;border-radius:50%; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

【鸿蒙HarmonyOS开发笔记】通知模块之发布进度条类型通知

概述 进度条通知也是常见的通知类型&#xff0c;主要应用于文件下载、事务处理进度显示。HarmonyOS提供了进度条模板&#xff0c;发布通知应用设置好进度条模板的属性值&#xff0c;如模板名、模板数据&#xff0c;通过通知子系统发送到通知栏显示。 目前系统模板仅支持进度条…

Svg Flow Editor 原生svg流程图编辑器(三)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;一&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;二&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;三&#xff09; 实现对齐辅助线 在 logicFlow 中&#xff0c;辅助线的实现是通…

【网页实战项目设计】基于SSM的高校二手交易平台 (大学跳蚤市场)(源码+LW文档)

基于SSM的高校二手交易平台 &#xff08;大学跳蚤市场&#xff09; 项目截图 系统功能界面图 用户注册、用户登录界面图 个人中心界面图 商品信息界面图 商品上架管理界面图 订单信息管理界面图 开发环境与技术框架 开发语言&#xff1a;Java 框架&#…

SV-7035VP播放模块通用型播放终端SV-7035VP-SIP 网络通用型播放功放模块

SV-7035VP播放模块通用型播放终端SV-7035VP-SIP 网络通用型播放功放模块 产品介绍 SV-7035VP模块是一款SIP播放模块&#xff0c;具有10/100M以太网接口&#xff0c;其接收网络的音频数据&#xff0c;提供立体声的音频输出。 本SIP播放模块带有一个继电器端子和一个NET接口&a…

RabbitMQ-同步和异步区别快速入门

文章目录 1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比&#xff1a; 2.快速入门2.1.安装RabbitMQ2.2.RabbitMQ消息模型2.3.入门案例2.3.1.publisher实现 1.1.同步和异步通讯 服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&am…

Simulink如何自动保存模型,解决崩溃问题

文章目录 Simulink如何自动保存模型,解决崩溃问题自动保存模型脚本脚本使用方法专题目录 Simulink如何自动保存模型,解决崩溃问题 自动保存模型脚本 在使用sumilink建模中,暂无自动保存模型的相关设置,使用中常常会遇到软件卡死奔溃现象 当出现如上提示,如果花费了半天建…

在抖音电商迎上新趋势,他们找到春季服饰生意新增量

冬去春来&#xff0c;万物焕新。每年春天换季的时候&#xff0c;都是大家买新衣服的高峰期。 对于服饰商家来说&#xff0c;季节性的平台活动&#xff0c;能够带来较大的消费需求扩容空间&#xff0c;也是推动生意增长的好时机。在3月9日-3月14日举办的「抖音商城服饰焕新周」…

FreeCAD傻瓜教程之创建参数化几何图形-螺旋体、平面、球体、椭球体、圆柱体、圆锥体、棱柱、椭圆

目的&#xff1a;学会用FreeCAD绘制参数化的几何图形。 一、使用的工作台和工具 1.1选择Part 工作台 1.2单击创建图元...工具 也就是上图黄色工具区域的倒数第2个 1.3 打开几何图元 下方的下拉列表 二、绘制螺旋体、弹簧、螺丝杆 2.1 选择几何图元列表中的 “螺旋体” 设…

Mysql主从之keepalive+MySQL高可用

一、Keepalived概述 keepalived 是集群管理中保证集群高可用的一个服务软件&#xff0c;用来防止单点故障。 keepalived 是以VRRP 协议为实现基础的&#xff0c;VRRP 全称VirtualRouter Redundancy Protocol&#xff0c;即虚拟路由冗余协议。虚拟路由冗余协议&#xff0c;可以…

武汉星起航领航中国跨境电商,助推全球贸易新篇章

在全球经济一体化的浪潮中&#xff0c;跨境电商以其独特的优势成为推动国际贸易增长的重要引擎。作为中国跨境电商行业的领军者&#xff0c;武汉星起航电子商务有限公司以其卓越的能力和经验&#xff0c;正积极推动中国跨境电商走向世界&#xff0c;书写全球贸易的新篇章。 自…

leetcode 18.四数之和 java

题目 思路 整体在三数之和的基础上进行修改。&#xff08;所有需要修改的地方&#xff0c;我在代码里加了//改 的注释&#xff09; 大的一个思路就是&#xff0c;在三数之和的外面再套一层循环。相当于固定前两个数。然后这道题目标值变成一个参数了&#xff0c;不是三数之和…

termux安装

termux安装Python和postgres 安装python 安装pg数据库

语音神经科学—05. Human cortical encoding of pitch in tonal and non-tonal languages

Human cortical encoding of pitch in tonal and non-tonal languages&#xff08;在音调语音和非音调语言中人类大脑皮层的音高编码&#xff09; 专业术语 tonal language 音调语言 pitch 音高 lexical tone 词汇音调 anatomical properties 解刨学特性 temporal lobe 颞叶 s…