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 优化基础:知识体系总览 TFCalc 优化 单纯形法 梯度法 全局优化 评价函数 (MF) 物理约束 权重 Wi 设置 目标光谱定义 厚度上下限 总厚度 / 层数 核心逻辑:先定约束 → 设目标 → 选算法 → 调权重 → 迭代优化

这张图把优化拆成了三个层次:算法层决定怎么搜,评价函数层决定搜得好不好,约束层保证搜出来的结果能用。三者缺一不可。

一个小技巧:在 TFCalc 里,你可以把优化过程保存为日志文件。跑完以后打开看看,如果评价函数在最后几十步几乎没变化,说明已经收敛了,没必要继续跑。我一般设个「最大迭代次数」的 70% 就手动停了,省时间。