18620856065
索 取 报 价
资   讯   中   心

CST带约束的参数扫描与优化:A+B+C=1

来源: | 作者:thinks | 发布时间 :2026-09-20 | 2 次浏览: | 🔊 点击朗读正文 ❚❚ | 分享到:

作者 | Ma Bin

 

经常有用户在问,如果模型中有三个参数A、B、C需要优化或者扫参,但是这三个参数有一些变化的约束条件,比如在优化或者扫参的时候要满足:

 

1)0<A<1;0<B<1;0<C<1

2)A+B+C=1

 

这种时候,应该怎么进行参数优化或者参数扫描设置?因为在CST中扫参器和优化器都不能理解A+B+C=1这种约束关系,只能设置参数的变化范围。我们怎么实现A、B、C三个参数在规定的范围内变化的时候还能满足A+B+C=1这样的约束条件?这篇文章我们来分别说一说可行的方式。

 

如果读者有更好的方法,欢迎在评论区留言交流。

 

一、参数扫描

对于参数扫描,枚举所有的有效组合,通常是最合适的。因为参数扫描的目的是看结果的走势变化,我们希望的是A、B、C遍历得比较平均即可。

 

一种离散样本的生成代码如下,可以修改m的值以控制样本的采样密度。把A、B、C的样本值画在三维坐标中,可以发现其实它们都在A+B+C=1这个平面上,并且是以1/m为间隔均匀分布。

 

CST参数扫描 

 

有了A、B、C的样本值,下一步就是把它传入CST,并且计算每个组合下的仿真结果。这里列举出两个方法:

 

1)利用.txt文件导入Parameter Sweep

可以把样本值按照固定格式写进.txt文件中,这一步随便用个AI模型,很容易。然后在Parameter Sweep对话框中,通过Import导入写好的.txt文件,不同的参数组合会被当作一个Sequence写入。最后点击Start就可以正常扫参了,CST会依次计算这些明确的参数组合。注意:其中的每个参数组合都满足约束。

 

利用.txt文件导入Parameter Sweep 

 

2)用Python或者VBA,修改Parameter list中的参数值

这个方法需要写一点代码,具体可以参考之前的文章。

 

思路就是把CST看作一个“计算器”,通过代码控制,每次传入一组参数,通过“计算器”计算,输出一些关心的结果,然后再传入下一组参数,循环往复。

 

二、参数优化

对于参数优化,可能枚举就不合适了,因为很难枚举到类似A=0.12345这样的值。但这个值或许就是目标的“最优解”。优化需要在连续的空间中搜索最优解,但是CST的参数优化器同样无法设置参数与参数之间的约束,我们还是要从数学上想办法。

一种简单的方式是做变量替换,引入两个连续变化的变量:p、q,并且满足0<p<1和0<q<1。替换如下:

 

做变量替换,引入两个连续变化的变量:p、q,并且满足0<p<1和0<q<1 

 

这样A、B、C一定落在0到1之间,并且始终满足A+B+C=1。这种映射方式简单可靠,但缺点是p、q均匀变化并不代表A、B、C在三角形上均匀分布。

 

如果注重采样均匀性可以用u、v做面积均匀映射,如下,其中u、v满足0<u<1和0<v<1。

 

用u、v做面积均匀映射 

 

把这两种映射关系做个对比,就能理解均匀性的区别了。使用同一组均匀随机数和相同样本数(2600个),只改变从二维变量到A、B、C的映射方式。

 

左边是p、q仿射映射,样本点会明显向A=1附近聚集;

 

右边是u、v面积均匀映射,点在整个三角形内的密度更均匀。

 

右边是u、v面积均匀映射,点在整个三角形内的密度更均匀 

 

好了,到这一步我们已经可以用p、q或者u、v的变化来映射A、B、C的变化了,而且变化是连续的,也就是说A、B、C可以“无死角”变化。

 

下面就是在CST中去实现这种映射关系,然后用优化算法进行优化。同样列举出两个方法:

 

1)不用CST自带的优化算法

CST软件自带了Trust Region Framework、Genetic Algorithm等7种优化算法,但如果用户想使用其他优化算法,就可以考虑这种方法。它同样需要写代码,也是把CST当作一个“计算器”使用,与上文“参数扫描”中的方法二类似。区别就是外部代码需要增加优化算法逻辑块,负责给出下一组需要传入CST的参数组合。

 

这种方法最灵活,能够处理任意约束、多目标和复杂后处理等情况。

 

2)使用CST自带的优化算法

如果需要使用CST软件自带的优化算法,就需要把上面的参数映射关系写到Parameter list中,通过控制p、q或者u、v来控制A、B、C。

 

我们以一个吸波材料的优化来做个示例。如下是一个三层介质的吸波材料,厚度分别是d1、d2、d3。通过u、v来控制A、B、C,然后乘以总厚度D_total得到三层介质材料的厚度。

我们的目标是在保证材料总厚度4.5mm不变的情况下,优化三层材料的厚度,使整个吸波材料在6.8-7.2GHz内的反射小于-20dB。


整个吸波材料在6.8-7.2GHz内的反射小于-20dB 

 

F-solver配合Floquet端口来计算S11。

 

用F-solver配合Floquet端口来计算S11 

 

优化器设置如下,u、v的取值在0.01-0.99范围内。目标设置为S11在6.8-7.2GHz内小于-20dB。然后开始优化。

 

目标设置为S11在6.8-7.2GHz内小于-20dB。然后开始优化 

 

优化结果如下。

 

优化结果 


优化结果 

 

查看优化后的模型以及对应的Parameter List,可以看到整个优化过程中始终保持A+B+C=1,且满足其他约束条件:0<A<1;0<B<1;0<C<1。

 

整个优化过程中始终保持A+B+C=1 

 

 主 营 产 品
cst
Abaqus
Powerflow
Xflow
simpack
CATIA
最 新 内 容
热 门 文 章
知 识 科 普
方 案 解 析
  • 汽车交通
  • 风能电源
  • 船舶机械
  • 生物医疗
  • 土木建筑
  • 新能源
  • 高科技