HFSS学习笔记之变量和Optimetrics-----------锋锋的快乐小窝
- HFSS能够提供正常的电磁分析之外,还能提供优化设计、参数扫描分析、灵敏度分析和统计分析等
- Optimetrics是集成在HFSS中的设计优化模块,该模块通过自动分析设计参数的变化对求解结果的影响
1、变量
- 在HFSS中,物体模型尺寸和物体的材料属性等设计参数等都可以使用变量表示
(1)变量类型
- HFSS 定义了两种类型的变量:工程变量 (Project Variables)和 设计变量(Local Variables)
- 工程变量和设计变量的定义和使用方法相同,如果设计中某一个设计参数需要使用变量来表示,用户既可以使用工程变量也可以使用设计变量
- 但是二者的作用区间不同,在 HFSS 中一个工程(Project)可以包含多个设计文件 (Design),工程变量的作用区间为当前工程下的所有设计,而设计变量的作用区间仅为该变量所在的设计
- 例如,假如当前工程 OptimTee 下有两个设计文件 Tee 和 TeeModel,如图 1 所示;工程 OptimTee 下定义了一个工程变量 Var_1,设计 Tee 下定义了一个设计变量 Var_2,设计 TeeModel 下定义了一个设计变量 Var_3,
- 那么工程变量 Var_1在Tee 和 TeeModel下都能使用,设计变量 Var_2只能在 Tee 下使用,设计变量 Var_3只能在 TeeModel 下使用
- 区分工程变量和设计变量:工程变量名称前都会有前缀$
- 在定义工程变量时需要手动在变量名称前添加前缀$
- 如果在定义时没有添加,HFSS也会自动在工程变量前添加前缀$
(2)变量定义
- 完整的变量定义都包含两个部分:变量名和变量值
- 变量名都是以字母开头,可以由字母、数字和下划线“_”组成
- 注 : 有些字母或数字的组合在 H F S S 中已经默认为常数或数学函数 \color{red}{注:有些字母或数字的组合在HFSS中已经默认为常数或数学函数} 注:有些字母或数字的组合在HFSS中已经默认为常数或数学函数
- pi 默认为圆周率,sin 默认为正弦三角函数
- 直角坐标系坐标轴名称 x / y / z x/y/z x/y/z
- 圆柱坐标系的坐标轴名称 φ θ r \varphi~ \theta ~r φ θ r
- 球坐标系 R h o Rho Rho
常数名称 | 常数值 | 单位 | 含义描述 |
---|---|---|---|
pi | 3.141592653589 3.141592653589 3.141592653589 | 圆周率 | |
Boltz | 1.3806503 × 1 0 − 23 1.3806503 \times 10^{-23} 1.3806503×10−23 | J/K | 玻尔兹曼常数 |
c0 | 299792458 299792458 299792458 | m/s | 真空中的光速 |
elecq | 8.854187817 × 1 0 − 12 8.854187817 \times 10^{-12} 8.854187817×10−12 | C | 电子电荷 |
eta | 376.730313416 376.730313416 376.730313416 | Ω \Omega Ω | 真空特征阻抗 |
E0 | 3.85 × 1 0 − 12 3.85 \times 10^{-12} 3.85×10−12 | F/m | 真空介电常数 |
U0 | 1.256637061 × 1 0 − 66 1.256637061 \times 10^{-66} 1.256637061×10−66 | H/m | 真空磁导率 |
g0 | 9.80665 9.80665 9.80665 | m / s 2 m/s^2 m/s2 | 重力加速度 |
sabs0 | − 273.15 -273.15 −273.15 | ℃ | 绝对零度 |
mathE | 2.718281828 2.718281828 2.718281828 | 自然对数基底 | |
planck | 6.6260775 × 1 0 − 34 6.6260775 \times 10^{-34} 6.6260775×10−34 | 普朗克常数 |
- 变量值可以是数值、数学表达式或者数学函数,也可以是数组、矩阵或者行列式
- 对于数值,HFSS可以使用科学计数法,如0.002也可以是2e-3
- 对于数学函数,HFSS有一些默认的数学函数
- 对于数学表达式,在使用时需要注意运算符的优先级
函数名称 | 函数描述 | 用法 |
---|---|---|
abs | 取绝对值 | abs(x) |
even | 偶数返回1,奇数返回0 | even(x) |
odd | 偶数返回0,奇数返回1 | odd(x) |
sgn | 正负数字符号位 | sgn(x) |
int | 取数字的整数部分 | int(x) |
nint | 四舍五入取整 | nint(x) |
rem | 取数字的小数部分 | rem(x) |
min \ max | 取两个数的最大、最小值 | min(x,y) \ max(x,y) |
mod | 取模 | mod(x) |
sqrt | 平方根 | sqrt(x) |
exp | 求幂( e x e^x ex) | exp(x) |
pow | 求幂 ( x y x^y xy) | pow(x,y) |
ln | 自然对数 | ln(x) |
log10 | 以10为基底的对数 | log10(x) |
sin \ cos \ tan | 三角函数正弦、余弦、正切 | sin(x) \ cos(x) \ tan(x) |
asin \ acos | 反三角正弦,反三角余弦 | asin(x) \ acos(x) |
atan | 反三角正切( -90 ~ 90) | atan(x) |
atan2 | 反三角正切( -180 ~ 180) | atan2(x) |
sinh \ cosh \ tanh | 正弦、余弦、正切双曲函数 | sinh(x) \ cosh(x) \ tanh(x) |
asinh | 反正弦、反余弦双曲函数 | asinh(x) |
运算符 | 名称 | 优先级 |
---|---|---|
() | 括号 | 1 |
! | 取反 | 2 |
^ | 求幂 | 3 |
- | 负号 | 4 |
* \ / | 乘号、除号 | 5 |
+ \ - | 加号、减号 | 6 |
== 或 !== 或 > 或 < 或>= 或<= | 等于、不等于、大于、小于、大于等于、小于等于 | 7 |
&& | 逻辑与 | 8 |
- 每个变量在定义时候都必须赋予初值,如果赋予变量的初始值已经指定单位,在使用的时候就不需要重新指定单位,否则在使用时就要指定变量单位
- 值为复数的变量不能使用于参数扫描、优化设计、调谐分析和灵敏度分析
(3)添加、删除和使用变量
Ⅰ、定义和删除工程变量
- 菜单栏【Project】👉【Project Variable】
- 工程树下右键工程👉【Project Variable】
- 在图 2 所示工程对话框
- Project Variable:此界面是用与添加和编辑工程变量
- Intrinsic Variable:此界面列出HFSS系统预定义的常用变量
- Constants:此界面列出了HFSS系统预定义的常数
- 在图 2 所示工程对话框中:
- Value:工程变量
- Optimization:优化设计
- Tuning:调谐分析
- Sensitivity:灵敏度分析
- Statistics:统计分析
- 如图 3 所示,选中 Optimization 的单选框,若 选中Include 复选框,则表示在优化设计时,变量”$kuaile“启用
- 在图 2 中选中 Add 按钮,如图 4 所示:
- Name:变量名称
- Value:变量初始值,初始值可以是数值也可以是表达式
Ⅱ、定义和删除设计变量、
- 点击如图 5 所示,【HFSS】👉【Design Proparties】
- 或者在设计名称右键单击,然后点击【Design Proparties】打开如图 6 所示的设计属性对话框
Ⅲ、变量使用
- 工程变量使用前需要添加 $
- 注意变量定义时使用的单位
2、Optimetrics模块
- Optimetrics 是集成在 HFSS 中设计优化模块,该模块会通过自动分析参数的变化对求解结果的影响,实现参数扫描分析(Parametric)、优化设计(Optimization)、调谐分析(Turning)、灵敏度分析(Sensitivity)以及统计分析(Statistical)
- 参数扫描分析(Parametric):用来分析器件的性能随着指定变量的变化而变化的关系,在优化设计前一般需要使用参数扫描分析来确定被优化变量的合理变化区间
- 优化设计(Optimization):HFSS结合 Optimetrics 模块根据特定优化算法在所有可能的设计变化中寻找出一个满足设计要求的值的过程,通过优化设计,软件可以自动分析找出满足设计要求的最佳变量值
- 调谐分析(Turning):改变变量值的同时实时显示求解结果
- 灵敏度分析(Sensitivity):分析设计参数的微小变化对求解结果的影响程度
- 统计分析(Statistical):利用统计学的观点来研究设计参数的容差对求解结果的影响,常用蒙特卡罗(Monte—Carlo)法
3、参数扫描分析
- 参数扫描分析用来分析器件的性能随着指定变量的变化而变化的关系,在优化设计前一般需要使用参数扫描分析来确定被优化变量的合理变化区间
(1)
- 使用参数扫描功能需要定义一个或多个扫描变量
- 如图 8 所示,【HFSS】👉【Optimetrics Analysis】👉【Add Parametrics】
- 或者如图 9 所示,工程树下【Optimetrics】节点,单击右键,【Add】👉【Parametrics】
- 打开如图 10 所示的 Setup Sweep Analysis 属性对话框
(2)
- 单击如图 10 所示对话框里的 【Add】 ,打开如图11所示的 Add/Edit Sweep 属性对话框,在对话框中:
- Variable:当前设计中的所有变量,可以单击下拉按钮选择需要分析的变量作为扫描变量
- 在 Variable 下的功能框里设置扫描变量的变化范围
- 设置好变量后点击【Add】进行添加
- 一次性可以添加一个或多个变量所谓扫描变量
(3)设置完成后,在【Optimetrics】节点下会出现一个名为 【ParameticSetup1】 的参数扫描设置
4、优化设置
- HFSS结合 Optimetrics 模块在一定的约束条件下根据特定优化算法对设计的某些参数进行调整,从而所有可能的设计变化中寻找出一个满足设计要求的值的过程,通过优化设计,软件可以自动分析找出满足设计要求的最佳变量值
- 在优化设计时,首先要明确设计要求和设计目标,然后用户根据设计创建初始结构模型(Nominal Design)、定义优化变量并构造目标函数,最后指定优化算法进行优化
(1)初始设计
- 初始设计或者初始结构模型在 HFSS 中称为 Nominal Design
- 用户一般根据理论知识和实际经验给出初始设计,创建初始结构模型
- 初始设计应该尽量接近真实值,否则会导致优化时间过长有时甚至得不到全局最优解
(2)定义优化变量
- 在进行优化设计时,首先需要添加优化变量
- 如果添加的优化变量是工程变量,需要打开图 2 所示的工程属性对话框
- 如果添加的优化变量是设计变量,需要打开图 12 所示的设计属性对话框
- 然后单击选中该变量编辑对话框中的 Optimization 单选按钮,此时对话框中会列出当前设计所定义的全部工程变量或者设计变量,选中变量对应的 Include 项复选框,即把该变量添加为优化变量
- 同时在 Nominal Value、Min和 Max 项下的文本框分别输入优化变量的初始值、最小值和最大值
- 在优化设计前,一般先进行参数扫描分析,确定优化变量的初始值和合理的变化区间(即此处的最大值和最小值)
(3)构造目标函数
- 在优化设计中,为了评价设计结果的好坏以及判断设计是否已经达到要求的目标,必须定义一个判据,软件根据这个判据来决定是否需要继续进行最优搜索,这个判据就称为目标函数
- 目标函数需要用户根据具体的设计目标进行构造
- .添加了优化变量后,从主菜单栏选择【HFSS】👉【Optimetrics Analysis】👉【Add Optimization】命令
- 或者右键单击工程树下的【Optimetrics】,从弹出菜单中选择【Add】👉【Optimization】命令,打开 Setup Optimization 对话框,目标函数可以在该对话框中定义
Ⅰ、加权函数和规范类型
- 在有些设计中,为了达到设计要求,需要设置多个目标函数
- 另外,目标函数所包含的性能指标有时也是互相矛盾或互相制约的,一般很难保证全部指标都达到最优
- 在这两种情况下,可以给每个目标函数分配一个加权值,加权值越大,表示该目标函数越重要:借助于选用适当的加权函数,可以保证在优化分析时重要指标的设计要求得到优先满足
- 加权函数值可以在图 14 所示 Setup Optimization 对话框 Weight 项对应的文本框中输
- 入图 14所示对话框中,选中右下角的 Show Advanced Options 复选框,则会在对话框右上角显示 Cost Function Norm 项该项用于设置目标函数误差计算的规范类型,在其下拉列表中有3种规范类型可供选择,分别为 L1、L2和 Maximum
- 这 3 种规范类型定义了 3 种计算目标函数误差的方法
- 对于有多个目标函数的问题,误差函数值是所有目标函数误差值的加权和
- Cost Function Norm项: L1、L2和 Maximum
- 对于 L1 规范类型误差函数定义为 e = ∑ N 1 ∣ w i e i ∣ e=\sum_{N}^{1} \left | w_ie_i \right | e=N∑1∣wiei∣
- 对于 L2 规范类型误差函数定义为 e = ∑ N 1 w i e i 2 e=\sum_{N}^{1} w_i{e_i}^2 e=N∑1wiei2
- 对于 Maximum 规范类型误差函数定义为
m
a
x
1
N
(
w
i
e
i
)
\overset{N}{\underset{1}{max} } (w_ie_i)
1maxN(wiei)
- 式中 w i w_i wi和$e_i $分别代表着第 i 个目标函数的加权值和误差值
- Condition:定义目标函数时,可以选择目标函数与目标值的关系,等于、大于等于以及小于等于
- =、>=、<=
- 假设分别用
s
i
s_i
si 和
g
i
g_i
gi 表示第 i 个目标函数的仿真计算值和真实值,对于上述三种情况,第 i 个目标函数误差值
e
i
e_i
ei 定义:
- 目标函数选择小于等于目标值时,即 Condition 项选择 ”<=“ e i = { s i − g i s i > g i 0 其他 e_i = \left\{\begin{matrix} s_i - g_i & s_i>g_i \\ 0 & 其他\end{matrix}\right. ei={si−gi0si>gi其他
- 目标函数选择等于目标值时,即 Condition 项选择 ”=“ ∣ s i − g i ∣ \left | s_i - g_i \right | ∣si−gi∣
- 目标函数选择大于等于目标值时,即 Condition 项选择 ”>=“ e i = { g i − s i s i < g i 0 其他 e_i = \left\{\begin{matrix} g_i - s _i & s_i < g_i \\ 0 & 其他\end{matrix}\right. ei={gi−si0si<gi其他
- 运行优化设计后,当加权后总的误差函数值小于等于设定的优化阈值,优化完成
- Cost Function Norm项: L1、L2和 Maximum
Ⅱ、优化阈值
- 优化阙值是优化过程终止的判别标准,当目标函数的值小于或等于优化阈值时,优化分析完成
- 图 15 所示对话框的左下角 Acceptable 处可以设置优化值
- 优化值可以是一个复数
Ⅲ、目标函数的噪声
- 使用有限元法分析电磁问题时,网格剖分的变化会给目标函数引入各种噪声
- 在使用拟牛顿优化算法和模式搜索优化算法时,需要提供噪声的估算值,以评估求解过程中网格的变化对目标函数的影响
- 例如,构造一个目标函数
c
c
c,
c
=
10000
×
∣
S
11
∣
2
c=10000 \times {\left | S_{11} \right |}^2
c=10000×∣S11∣2
- ∣ S 11 ∣ \left | S_{11} \right | ∣S11∣ :反射系数的幅度,其最小值接近为 0 ,即 ∣ S 11 ∣ m i n ≈ 0 {\left | S_{11} \right |}_{min} ≈ 0 ∣S11∣min≈0
- 假设求解过程中,
∣
S
11
∣
\left | S_{11} \right |
∣S11∣的误差
e
S
11
≈
0.01
e_{S_{11}} ≈ 0.01
eS11≈0.01
- 则目标函数的变化值 c p e r t u b e d = 10000 × ( ∣ S 11 ∣ m i n + e S 11 ) 2 c_{pertubed}~=~10000 \times ({\left | S_{11} \right |}_{min}+e_{S_{11}})^2 cpertubed = 10000×(∣S11∣min+eS11)2
- 在最小值附近,目标函数误差 e c = c p e r t u b e d − c m i n = 10000 × ( 0 + 0.01 ) 2 − 0 = 1.0 e_c = c_{pertubed} - c_{min} = 10000 \times (0+0.01)^2 - 0 = 1.0 ec=cpertubed−cmin=10000×(0+0.01)2−0=1.0
- 因此目标函数的噪声为 1.0 ,即在如图 15 所示的 Noise 处设置
(4)优化算法
- 在 HFSS中,Optimetrics 模块共支持 5 种优化算法,分别:
- 非线性顺序编程算法(Sequential Nonlinear Programming,SNLP)
- 混合整数非线性顺序编程算法(SequentialMixed-Integer Nonlinear Programming,SMINLP)
- 拟牛顿法(Quasi—Newton)
- 模式搜索法(Pattern Search)
- 遗传算法(Genetic Algorithm)
- 在图 16 所示的Setup Optimization 对话框中,单击对话框左上方Optimizer 处的下拉列表
Ⅰ、拟牛顿法
- 牛顿法的基本思想是在极小点附近通过对目标函数 f ( x ) f(x) f(x) 作二阶泰勒 (Taylor) 展开,进而找到 f(x) 的极小点的估计值
- 一维情况下,泰勒展开函数
φ
(
x
)
\varphi(x)
φ(x)为
φ
(
x
)
=
f
(
x
k
)
+
f
′
(
x
k
)
(
x
−
x
k
)
+
f
′
′
(
x
k
)
(
x
−
x
k
)
2
\varphi(x) = f(x_k) + f^{'}(x_k)(x-x_k)+f^{''}(x_k)(x-x_k)^2
φ(x)=f(xk)+f′(xk)(x−xk)+f′′(xk)(x−xk)2
- 则其导数 φ ′ ( x ) = f ′ ( x k ) + f ′ ′ ( x k ) ( x − x k ) \varphi^{'}(x) = f^{'}(x_k) + f^{''}(x_k)(x-x_k) φ′(x)=f′(xk)+f′′(xk)(x−xk)
- 因此 x k + 1 = x k − f ′ ( x k ) f ′ ′ ( x k ) x_{k+1}=x_{k} - \frac{f^{'}(x_k)}{f{^{''}(x_k)}} xk+1=xk−f′′(xk)f′(xk)
- 将x_{k+1}作为 f ( x ) f(x) f(x)极小点的一个进一步估算值,重复进行上述过程,可以产生一系列的极小点集合{ x k x_k xk}
- 在一定条件下,这个极小值点序列{ x k x_k xk}收敛于 f ( x ) f(x) f(x)的极值点
- 将上式拓展到
N
N
N维空间,对于
N
N
N维函数
f
(
x
)
f(x)
f(x):
f
(
x
)
≈
φ
(
x
)
=
f
(
x
k
)
+
∇
f
(
x
k
)
(
x
−
x
k
)
+
1
2
(
x
−
x
k
)
T
∇
2
f
(
x
k
)
(
x
−
x
k
)
f(x) ≈ \varphi(x) = f(x_k) + \nabla f(x_k)(x-x_k) + \frac{1}{2}(x-x_k)^{T} \nabla^{2} f(x_k)(x-x_k)
f(x)≈φ(x)=f(xk)+∇f(xk)(x−xk)+21(x−xk)T∇2f(xk)(x−xk)
- 式中, ∇ f ( x k ) \nabla f(x_k) ∇f(xk) 和 ∇ 2 f ( x k ) \nabla^{2} f(x_k) ∇2f(xk) 分别是目标函数的一阶和二阶导数,表现为 N N N 维向量和 N × N N \times N N×N 矩阵,后者又称为目标函数 f ( x k ) f(x_k) f(xk) 在 x x x 处的汉森 (Hesse) 矩阵
- 假设 ∇ 2 f ( x k ) \nabla^{2} f(x_k) ∇2f(xk) 可逆,则可得迭代公式: x k + 1 = x k − [ ∇ 2 f ( x k ) ] − 1 ∇ f ( x k ) x_{k+1}=x_{k} - [\nabla^{2} f(x_k)]^{-1}{\nabla f(x_k)} xk+1=xk−[∇2f(xk)]−1∇f(xk)
- 这是原始的牛顿法迭代公式
- 牛顿法在计算过程中需要计算目标函数的二阶偏导数和 Henss 矩阵,难度较大
- 更为复杂的是目标函数的 Hesse 矩阵无法保持正定,从而令牛顿法失效
- 为了解决这两个问题,提出了拟牛顿法
- 拟牛顿法的基本思想是不用二阶偏导数构造出可以近似 Hesse 矩阵的逆的正定对称阵
- 设第 k k k 次迭代之后得到点 x k + 1 x_{k+1} xk+1,将目标函数 f ( x ) f(x) f(x) 在 x x x 处展开成 T a y l o r Taylor Taylor 级数,取二阶近似,得 f ( x ) ≈ f ( x k + 1 ) + ∇ f ( x k + 1 ) ( x − x k + 1 ) + 1 2 ( x − x k + 1 ) T ∇ 2 f ( x k + 1 ) ( x − x k + 1 ) f(x) ≈ f(x_{k+1}) + \nabla f(x_{k+1})(x-x_{k+1}) + \frac{1}{2}(x-x_{k+1})^{T} \nabla^{2} f(x_{k+1})(x-x_{k+1}) f(x)≈f(xk+1)+∇f(xk+1)(x−xk+1)+21(x−xk+1)T∇2f(xk+1)(x−xk+1)
- 则 ∇ f ( x ) ≈ ∇ f ( x k + 1 ) + ∇ 2 f ( x k + 1 ) ( x − x k + 1 ) \nabla f(x) ≈ \nabla f(x_{k+1})+\nabla^{2} f(x_{k+1})(x-x_{k+1}) ∇f(x)≈∇f(xk+1)+∇2f(xk+1)(x−xk+1)
- 令
x
=
x
k
x = x_k
x=xk 得:
∇
f
(
x
k
+
1
)
−
∇
f
(
x
k
)
≈
∇
2
f
(
x
k
+
1
)
(
x
k
−
x
k
+
1
)
\nabla f(x_{k+1}) - \nabla f(x_k) ≈ \nabla^{2} f(x_{k+1})(x_k-x_{k+1})
∇f(xk+1)−∇f(xk)≈∇2f(xk+1)(xk−xk+1)
- 记 s k = ( x k + 1 − x k ) s_k = (x_{k+1}-x_k) sk=(xk+1−xk), y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) y_k = \nabla f(x_{k+1}) - \nabla f(x_k) yk=∇f(xk+1)−∇f(xk)
- 同时设Hesse矩阵 ∇ 2 f ( x k + 1 ) \nabla^{2} f(x_{k+1}) ∇2f(xk+1) 可逆,则 s k ≈ [ ∇ 2 f ( x k + 1 ) ] − 1 y k s_k ≈ [\nabla^{2} f(x_{k+1})]^{-1}{y_{k}} sk≈[∇2f(xk+1)]−1yk
- 因此拟牛顿法只需要计算目标函数的一阶导数,就可以 s k ≈ [ ∇ 2 f ( x k + 1 ) ] − 1 y k s_k ≈ [\nabla^{2} f(x_{k+1})]^{-1}{y_{k}} sk≈[∇2f(xk+1)]−1yk用计算 Hesse 矩阵的逆
- 记 H k + 1 = [ ∇ 2 f ( x k + 1 ) ] − 1 H_{k+1}= {[\nabla^{2} f(x_{k+1})]}^{-1} Hk+1=[∇2f(xk+1)]−1
- 则 拟牛顿条件 \color{red}{拟牛顿条件} 拟牛顿条件: s k ≈ H k + 1 y k s_k ≈ H_{k+1}{y_{k}} sk≈Hk+1yk
- 用 DFP 公式构造
H
k
+
1
H_{k+1}
Hk+1,则
H
k
+
1
=
H
k
+
s
k
s
k
T
s
k
T
y
k
−
H
k
y
k
y
k
T
H
k
y
k
T
H
k
y
k
H_{k+1} = H_{k} + \frac{s_{k}{s^{T}_{k}}}{{s^{T}_{k}}y_{k}}-\frac{H_{k}y_{k}{y^{T}_{k}H_{k}}}{{y^{T}_{k}H_{k}}y_{k}}
Hk+1=Hk+skTykskskT−ykTHkykHkykykTHk
- 这样产生的 H k + 1 H_{k+1} Hk+1 对于二次凸函数而言可以保证正定,且满足拟牛顿条件
- 拟牛顿法只有在目标函数的噪声很小的情况下使用是足够准确的,如果目标函数的噪声在工程是十分显著的,需要使用模式搜索优化算法来得到最优结果
Ⅱ、模式搜索法
- 模式搜索法是求解最优化问题的一种直接搜索算法,它不需要使用目标函数与约束函数的导数信息而只需要用到函数值信息,是求解不可导或求导代价较大的最优化问题的一种有效的算法
- 该算法是由 Hooke和Jeeves 于1961 年提出的,算法的基本思想从几何意义上讲是寻找具有较小函数值的“山谷”,力图使迭代产生的序列沿“山谷”走向逼近极小点
- 模式搜索法由两种搜索移动方式组成,一是探测移动,二是模式移动,两种搜索移动方式交替进行
- 探测移动的目的是寻找目标函数的下降方向,模式移动是沿着下降方向的一种加速运动,目的是以较快的速度、较少的搜索次数逼近目标函数在下降方向的极小点
- 模式搜索方法对目标函数的噪声不敏感
Ⅲ、非线性顺序编程算法
- 与拟牛顿法相似,非线性顺序编程算法 (SNLP)适合解决目标函数的噪声较小的问题,而且SNLP算法中引入了噪声滤波,可以适当地降低噪声的影响
- SNLP算法采用RSM(Response SurfaceModeling)技术,可以更准确地估计出目标函数值,相对于拟牛顿法,具有更快的收敛速度
- SNLP算法允许使用非线性约束,这比拟牛顿法和模式搜索法具有更广的使用范围
- 对于多数HFSS优化设计问题,推荐用户选择使用SNLP算法
Ⅳ、混合整数非线性顺序编程算法
- 混合整数非线性顺序编程算法 (SMINLP)能够优化具有连续变量和整数变量的问题
- 该算法和非线性顺序编程算法相似
- 不同点是 SMINLP 算法需要标记出整数变量
Ⅴ、遗传算法
- 遗传算法是20 世纪 50 年代初由一些生物学家尝试用计算机模拟生物系统演化时提出的
- 遗传算法是模拟生物通过基因的遗传和变异有效地达到一种稳定的优化状态的繁殖和选择过程,而建立的一种简单、有效的搜索算法
- 遗传算法运用随机而非确定性的规则对一族而非一个点进行全局而非局部地搜索,仅利用目标函数而不要求其导数信息或其他附加限制
- 遗传算法虽然在特定问题上也许不是效率最高的,但其效率远高于传统随机算法,是一种普遍适用于各种问题的有效算法
- 遗传算法的主要思路是:用基因代表问题的参数,用染色体(在计算机里为字符串)代表问题的解,从而得到一个由具有不同染色体的个体组成的群体
- 这个群体在特定的问题环境里生存竞争适者有最好的机会生存和产生后代
- 后代随机化地继承了父代的最好特征,并在生存环境的控制支配下继续这一过程
- 群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,此时即得到问题的最优解
5、调谐分析
- HFSS 中的调谐分析功能是指用户在手动改变变量值的同时能实时显示分析结果
- 例如,在执行完成一个优化分析并且得到了变量的最优值之后,可以在该最优值附近手动改变变量的值,观察变量在最优值附近扰动对设计性能的影响。
- 针对某一变量调谐分析结束后,设计结果将随之更新
- 如果选择了 Save Fields 项,则当前设计的场解也会随之更新
6、灵敏度分析
- 使用 HFSS 进行电磁分析的过程中,不同设计参数的变化对电磁特性的影响程度是不尽相同的。对于相同的变化量,有些参数对电磁特性的影响较大,有些则影响较小
- 为了衡量各个设计参数变化对电磁特性的影响,通常引用灵敏度的概念,用它来定量表示设计参数变化对电磁性能的影响程度
- 灵敏度定义为电磁特性/求解结果的变化与电路参数变化的比值使用 HFSS 进行电磁分析时S参数是很常用的一个分析结果
- 这里,以 S S S参数为例来说明灵敏度的定义,则第 k 、 j k、j k、j两端口之间的传输参数 S j k ( k , j = 1 , 2 , 3 , … , n ) S_{jk}(k,j=1,2,3,…,n) Sjk(k,j=1,2,3,…,n)对设计参数 x i x_i xi的灵敏度可以定义为: C x i S j k = ∂ S j k ∂ x i C_{x_i}^{S_{jk}}=\frac{\partial{S_{jk}}}{\partial{x_{i}}} CxiSjk=∂xi∂Sjk
- 设计参数的灵敏度分析对电路调试和优化设计有着重要的意义
- 灵敏度计算可以在优化设计中确定电路的关键参数,大量的计算实践表明,有些最优化方法当变量增加时收敛速度变慢,有的甚至发散,这使优化设计毫无结果
- 如果在优化设计前进行灵敏度分析,找出那些对电路特性有较大影响(即灵敏度较高)的关键性设计参数,并将它们作为优化变量,则不仅能大大减少计算工作量,提高优化设计效率,而且能使原来不收敛的优化过程得到良好的结果
- 另外,在电路大批量生产时,灵敏度分析在规定元件参数和降低生产成本等方面起着极其重要的作用
- 为了保证电路所有特性不超过规定的容差,对灵敏度高的元件参数要选择小的容差,而对灵敏度低的元件,则可以放宽容差
- 这样既保障了电路性能,又避免了因盲目减小元件容差而导致的加工困难和产品成本的增加
7、统计分析
- 实际使用的元件或者制造工艺一般都有一定的误差
- 由有误差元件构成的电路模型或者由这些制造工艺生产出的期间模型也具有随机特性,根据这些模型所求出的电路/电磁特性当然也时一些随机量
- 统计分析就是利用统计学的观点来研究设计参数容差对求解结果的影响,常用的方法是蒙特卡罗(Monte-Carlo) 法(随机概率、统计分析也俗称为赌徒数学)。
- 这种方法是利用计算机产生各种不同分布的伪随机数,来模拟产生各设计参数的随机值,并对由此形成的电路器件模型进行分析,计算出表征电路/器件各种特性参数的随机量,然后对这些随机量进行统计分类或计算,画出统计图
- 蒙特卡罗法的具体分析步骤如下。
- (1) 用计算机产生伪随机数,并用它们模拟产生电路/器件各设计参数的随机值序列,然后将这些序列进行随机组合,形成电路/器件的统计分析模型,在给定设计参数标称值和容差的情况下用伪随机数模拟产生设计参数的随机值可按下式计算
P
=
Δ
P
×
R
N
+
P
m
i
n
P = \Delta P \times RN + P_{min}
P=ΔP×RN+Pmin
- Δ P \Delta P ΔP :元件参数最大值与最小值之差
- P m i n P_{min} Pmin:设计参数的最小值
- RN:是一个值在0~1之间的伪随机数
- 按上述方法可以产生各个参数的随机值序列,将这些序列进行随机组合便可形成电路/器件的统计分析模型
- (2) 调用分析程序对电路进行分析,计算出电路/器件的各种特性参数,如输入驻波比、S参数等
- 为了获得足够的统计分析精度,这种分析需要进行很多次,即对电路的每一个统计分析模型都要进行一次分析
- 若电路有n个元件参数,一般可取分析次数 M = ( 100 M=(100 M=(100 ~ 200 ) n 200)n 200)n
- (3) 对分析结果进行统计分类,画出直方图。
- (1) 用计算机产生伪随机数,并用它们模拟产生电路/器件各设计参数的随机值序列,然后将这些序列进行随机组合,形成电路/器件的统计分析模型,在给定设计参数标称值和容差的情况下用伪随机数模拟产生设计参数的随机值可按下式计算
P
=
Δ
P
×
R
N
+
P
m
i
n
P = \Delta P \times RN + P_{min}
P=ΔP×RN+Pmin