1. TFCalc 优化基础回顾:优化算法概述
做膜系设计的朋友都知道,TFCalc 的核心能力就是「优化」。说白了,优化就是让计算机帮我们调整每一层的厚度,让最终的光谱曲线尽可能贴近你的目标。但很多新手一上来就点「Optimize」,结果要么跑飞了,要么卡在局部最优里出不来。
我个人习惯,在动手优化之前,先搞清楚 TFCalc 到底在背后干了什么。这节我们先回顾三个核心问题:用什么算法跑?怎么算「好坏」?目标怎么定?
1.1 三大优化算法:选对路子才能跑得快
TFCalc 提供了好几种优化算法,但常用的就三种。我刚开始用的时候也犯过迷糊,后来踩过坑才明白各自的门道。
| 算法 | 核心思路 | 适用场景 | 我踩过的坑 |
|---|---|---|---|
| 单纯形法 | 通过构建一个「单纯形」(可以理解为多维空间里的一个多面体),不断反射、扩张、收缩来逼近最优解 | 变量少(<10层)、初始值靠谱的局部精调 | 变量一多就容易「原地打转」,收敛极慢 |
| 梯度法 | 计算评价函数对每个变量的偏导数,沿梯度下降方向搜索 | 变量中等、函数曲面比较平滑的问题 | 遇到陡峭的「山谷」容易震荡,甚至发散 |
| 全局优化 | 在变量空间内随机采样,结合模拟退火或遗传算法策略,跳出局部陷阱 | 层数多、初始值不确定、需要探索全局最优 | 计算量巨大,跑一次够喝杯咖啡的 |
我的建议:先用全局优化跑一轮,找到大概的「好区域」,再用单纯形法精调。别一上来就全局优化跑到底,浪费时间。
1.2 评价函数:优化的「裁判」
评价函数(Merit Function)就是 TFCalc 用来判断「当前设计好不好」的数学表达式。数值越小,说明实际曲线越接近目标。
TFCalc 默认的评价函数形式是:
MF = [ Σ (Wi × |Ti - Ttarget|^P) / Σ Wi ]^(1/P)
其中:
- Wi:权重,你说了算
- Ti:当前设计在某波长下的透过率/反射率
- Ttarget:你期望的目标值
- P:指数,默认是2(最小二乘)
嗯,这里要注意:权重 Wi 的设置是门艺术。我见过有人把所有波长权重都设成1,结果优化出来的曲线在关键波段反而最差。为什么?因为非关键波段的偏差「稀释」了关键波段的惩罚力度。
权重设置原则:
- 关键波段(如通带边缘、截止带)权重设 5~10
- 非关键波段权重设 0.1~0.5
- 绝对不允许有偏差的波长点,权重可以设到 100
1.3 目标光谱与物理约束:别让优化「放飞自我」
定义目标光谱时,很多人只给一个「目标曲线」,然后就不管了。结果 TFCalc 为了拟合曲线,给你算出个 5000nm 厚的膜层——工艺上根本镀不出来。
所以,物理约束必须提前设好。我在项目中吃过这个亏:有一次优化一个 20 层的增透膜,跑了一整夜,结果第二天一看,最薄层只有 2nm,最厚层 800nm。工艺同事直接把我拉黑了。
TFCalc 里需要定义的约束包括:
| 约束类型 | 推荐范围 | 说明 |
|---|---|---|
| 单层厚度下限 | 10~30 nm | 太薄了镀膜机控制不住,均匀性也差 |
| 单层厚度上限 | 300~500 nm | 太厚了应力大,容易开裂 |
| 总物理厚度 | 根据工艺定,一般 < 5 μm | 总厚度影响镀膜时间和成本 |
| 层数上限 | 根据镀膜机腔室定 | 层数越多,界面缺陷风险越高 |
我曾经踩过的坑:有一次做红外滤光片,忘了设厚度下限,优化结果里出现了一层 3nm 的 SiO₂。实际镀膜时,这层根本形不成连续膜,直接导致整个批次报废。从那以后,我每次新建优化任务,第一件事就是锁死厚度边界。
1.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以把它当作后续学习的「导航图」:
这张图把优化拆成了三个层次:算法层决定怎么搜,评价函数层决定搜得好不好,约束层保证搜出来的结果能用。三者缺一不可。
一个小技巧:在 TFCalc 里,你可以把优化过程保存为日志文件。跑完以后打开看看,如果评价函数在最后几十步几乎没变化,说明已经收敛了,没必要继续跑。我一般设个「最大迭代次数」的 70% 就手动停了,省时间。