第一章:优化函数基础——认识Merit Function Editor

各位同学,咱们今天聊聊优化函数。说白了,这就是Zemax里最核心的“指挥棒”。你设计再好的初始结构,没有一套合理的优化函数,结果往往差强人意。我刚开始学Zemax那会儿,就吃过这个亏——结构看着挺顺眼,一优化就跑偏了。后来才明白,问题出在优化函数上。

1.1 什么是Merit Function Editor?

Merit Function Editor,中文叫“评价函数编辑器”。它长什么样?你打开Zemax,点菜单栏的“Optimize” -> “Merit Function Editor”,就能看到。嗯,这里要注意,它其实就是一个表格,里面一行一行地写着各种“操作数”。

每个操作数代表一个光学指标。比如像差、焦距、厚度、曲率半径等等。你告诉Zemax:“我希望这个指标达到某个值”,然后Zemax就按照你的要求去调整镜片参数。

我个人习惯,每次新建一个优化函数,都会先清空默认内容。为什么?因为默认的优化函数往往不够精细,它只考虑了基本的像差。你想想看,实际项目中,我们需要控制的东西多着呢。

1.2 操作数(Operand)是什么?

操作数,就是Zemax里用来描述光学性能的“小工具”。每个操作数都有一个特定的功能。比如:

  • SPHA:球差操作数。控制球面像差的大小。
  • COMA:彗差操作数。控制彗形像差。
  • ASTI:像散操作数。控制像散。
  • EFFL:有效焦距操作数。控制系统的焦距。
  • CTGT:中心厚度大于某个值。控制镜片厚度。

我在项目中遇到过,有人把SPHA和COMA的权重设得一样,结果优化出来的系统球差很小,但彗差却很大。为什么?因为不同像差对系统的影响权重不一样。你想想看,一个广角镜头,彗差的影响就比球差大得多。所以,操作数的选择要结合具体设计目标。

1.3 目标值(Target)与权重(Weight)

目标值,就是你希望这个操作数达到的理想数值。权重,则是这个操作数在整体优化中的“重要性”。

举个例子:你希望系统焦距是100mm,那EFFL的目标值就设为100。但如果你同时希望球差很小,那SPHA的目标值就设为0。问题来了——哪个更重要?

权重就是干这个的。权重越大,Zemax越优先满足这个操作数。我一般这样设置:

  • 关键指标(如焦距、F数):权重设为1.0
  • 重要像差(如球差、彗差):权重设为0.5~0.8
  • 次要指标(如边缘厚度):权重设为0.1~0.3

我曾经犯过一个错误:把所有操作数的权重都设为1。结果优化出来的系统,焦距是准了,但像差大得离谱。后来才意识到,权重不是随便给的,它反映了你的设计优先级。

核心公式:评价函数值 = Σ(权重 × (当前值 - 目标值)²)

说白了,Zemax就是通过最小化这个总和,来找到最优解。

1.4 操作数类型详解

操作数分很多种。我按用途把它们分成几类:

类别 常用操作数 用途
像差类 SPHA, COMA, ASTI, FCUR, DIST 控制各种像差
焦距类 EFFL, EFLX, EFLY 控制焦距
厚度类 CTGT, CTLT, ETGT, ETLT 控制镜片厚度
位置类 POSI, TTHI 控制镜片位置
综合类 RSCE, OPDX, OPDY 控制波前差

嗯,这里要注意,不是所有操作数都能同时用。比如你用了EFFL控制焦距,就别再用EFLX和EFLY了,否则会冲突。我一般只用一个焦距操作数,省得Zemax打架。

1.5 实战:构建第一个优化函数

咱们来动手试试。假设你要优化一个单透镜,要求焦距100mm,球差尽量小。

步骤很简单:

  1. 打开Merit Function Editor
  2. 清空默认内容(点右键 -> Clear)
  3. 添加操作数:
操作数1: EFFL, 目标值=100, 权重=1.0
操作数2: SPHA, 目标值=0, 权重=0.5
操作数3: CTGT, 目标值=2, 权重=0.2  (保证镜片中心厚度不小于2mm)

然后点“Optimize”按钮,Zemax就会自动调整曲率半径和厚度,让评价函数值最小。

我刚开始做这个练习时,发现优化后的球差还是很大。后来检查才发现,SPHA操作数的权重设得太低了。把权重从0.5调到0.8,球差立马降下来了。你看,权重就是这么关键。

小技巧:优化时,先设大权重让关键指标达标,再慢慢调整次要指标。别一上来就追求完美,那会让Zemax陷入局部最优。

1.6 避坑指南

我总结几个常见坑,你注意避开:

  • 权重失衡:所有操作数权重一样,导致优化方向混乱。我曾经吃过这个亏,优化了三天没结果。
  • 目标值不合理:比如要求球差为0,但物理上不可能。Zemax会拼命调整,结果系统变得很怪异。
  • 操作数冲突:同时控制焦距和像面位置,结果两者互相矛盾。我建议先控制焦距,再微调像面。
  • 忽略边界条件:比如镜片厚度不能为负,但你没加CTGT操作数。Zemax可能会算出负厚度,那加工出来就是个笑话。

警告:优化函数不是越多越好。操作数太多,Zemax会陷入“维度灾难”,计算量暴增,结果反而不好。我一般控制在10~20个操作数以内。

1.7 小结

好了,这一章咱们把优化函数的基础捋了一遍。记住三个关键词:操作数、目标值、权重。操作数告诉Zemax“看什么”,目标值告诉它“要什么”,权重告诉它“多重要”。三者缺一不可。

下一章,咱们会深入讲怎么用操作数组合出复杂的优化策略。比如怎么同时控制多个视场的像差,怎么处理非球面。嗯,那才是真正的高级技巧。

你先把今天的内容消化一下,动手建一个简单的优化函数试试。有问题随时问我。


公众号:蓝海资料掘金营,微信deep3321