3. 评价函数构建:操作数选择、权重分配、约束条件设置

评价函数,说白了就是优化器的“指挥棒”。你告诉它往哪走,它就往哪跑。但指挥棒要是挥错了方向,那镜头可就跑到沟里去了。

我刚开始做镜头设计那会儿,总觉得评价函数随便设几个像差操作数就行。结果呢?优化出来的镜头像差倒是挺小,可镜片厚得像砖头,边缘薄得能透光。嗯,从那以后我才明白——评价函数不是简单的像差堆砌,而是一门平衡的艺术。

3.1 操作数选择:抓大放小

Zemax 里操作数有几百个,你不可能全用上。我的经验是:只选与系统性能直接相关的操作数。

举个例子,一个手机镜头,你关心什么?

  • MTF(调制传递函数)—— 清晰度的硬指标
  • 畸变 —— 拍出来人脸别变形
  • 相对照度 —— 边缘别太暗
  • 色差 —— 紫边别太明显

这些才是核心。至于什么场曲、球差、彗差,它们最终都会反映在 MTF 上。你直接控 MTF 就行,没必要绕弯子。

我的习惯:先列一个“必须满足”的操作数清单,再列一个“尽量优化”的清单。前者用硬约束,后者用权重控制。

常用的操作数分组如下:

类别 常用操作数 用途
像差控制 SPHA, COMA, ASTI, FCUR, DIST 控制单色像差
MTF 控制 MTFA, MTFT, MTFS 直接优化传递函数
色差控制 AXCL, LACL, PACL 控制轴向/垂轴色差
边界约束 CTGT, CTLT, ETGT, ETLT 控制镜片厚度/边缘
系统参数 EFFL, TOTR, WFNO 控制焦距、总长、F数

你看,真正需要你手动调的,其实就这几类。别把评价函数搞成“操作数大杂烩”,那样优化器反而不知道该听谁的。

3.2 权重分配:谁轻谁重

权重这东西,说白了就是“优先级”。权重越大,优化器越优先满足它。

但这里有个坑——权重不是越大越好。我曾经把一个镜头的 MTF 权重设到 100,其他像差权重都是 1。结果呢?MTF 确实上去了,但畸变跑到了 5%,边缘照度掉到了 30%。这镜头谁敢用?

避坑指南:权重差异不要超过两个数量级。比如 MTF 权重设 10,畸变权重设 1,这样优化器会优先保证 MTF,但也不会完全放弃畸变。

我一般这样分配权重:

  1. 硬约束(必须满足的,比如焦距、总长)—— 权重 100,甚至用操作数的目标值直接锁定
  2. 核心性能(MTF、畸变、相对照度)—— 权重 10~50
  3. 次要像差(球差、彗差、场曲)—— 权重 1~5
  4. 边界条件(镜片厚度、空气间隔)—— 权重 10~20,防止镜片“飞掉”

你想想看,如果所有操作数权重都一样,优化器就会“平均用力”。结果往往是每个像差都优化了一点,但哪个都没做到位。所以,权重分配的本质是告诉优化器:什么最重要。

3.3 约束条件设置:别让镜头“飞了”

约束条件,就是给优化器画个圈。圈里随便跑,圈外不行。

我记得有一次优化一个投影镜头,没设镜片边缘厚度约束。优化到一半,发现镜片边缘厚度变成了 0.01 mm——这加工厂根本做不出来。从那以后,我每次优化前都会先设好边界约束。

常用的约束条件:

  • 镜片中心厚度:CTGT(大于)和 CTLT(小于),一般设 0.5~8 mm
  • 镜片边缘厚度:ETGT 和 ETLT,一般设 0.3~5 mm
  • 空气间隔:一般设 0.1~10 mm,防止镜片“撞车”
  • 总长:TOTR,控制镜头长度
  • 焦距:EFFL,锁定系统焦距
关键点:约束条件要“软硬结合”。硬约束用操作数的目标值锁定,软约束用权重控制。比如焦距必须 50 mm,那就用 EFFL 目标值 50,权重 100。镜片厚度尽量在 1~5 mm 之间,那就用 CTGT 和 CTLT 设边界,权重 10。

还有一个容易被忽略的——渐晕。很多镜头为了控制像差,会故意加渐晕。但渐晕太大会影响相对照度。我一般会在评价函数里加一个 RELI(相对照度)操作数,目标值 0.5 以上,权重 5~10。这样优化器就不会为了 MTF 把渐晕搞得太狠。

3.4 评价函数构建流程

说了这么多,咱们来捋一捋实际操作的步骤。我一般按这个流程来:

  1. 确定系统指标:焦距、F数、视场角、总长、波长范围
  2. 列出核心性能要求:MTF 目标、畸变上限、相对照度下限
  3. 设置边界约束:镜片厚度、空气间隔、总长
  4. 选择操作数:从核心性能出发,选 10~20 个关键操作数
  5. 分配权重:硬约束 100,核心性能 10~50,次要像差 1~5
  6. 试跑一次:看评价函数值的变化趋势,调整权重
  7. 检查结果:看 MTF、畸变、照度是否达标,镜片是否可加工
  8. 迭代优化:根据结果调整操作数或权重,再跑

这个流程看起来简单,但每一步都有坑。比如第 6 步,我见过有人一上来就把权重设得死死的,结果优化器直接卡死。我的建议是:先松后紧。第一轮优化用宽松的权重,让优化器找到一个大致的解空间。第二轮再收紧权重,精细调整。

下面这张图是我自己总结的评价函数构建逻辑,你可以参考一下:

评价函数构建流程 评价函数构建逻辑图 系统指标确定 核心性能要求 边界约束设置 操作数选择 权重分配 迭代优化 不满足则返回调整 核心原则 • 先松后紧 • 软硬结合 • 权重差异 ≤ 两个数量级

3.5 常见问题与调试技巧

评价函数构建好了,跑优化的时候还是会遇到各种问题。我挑几个常见的说说:

问题1:优化器不收敛
原因往往是操作数之间互相矛盾。比如你既要求 MTF 高,又要求畸变极小,还要求总长很短。这三个目标在物理上就是冲突的。我的建议是:先放松两个,优化一个。等一个达标了,再逐步收紧其他约束。
问题2:镜片形状怪异
比如镜片边缘厚度为负,或者镜片曲率半径小到离谱。这通常是边界约束没设好。检查一下 CTGT、ETGT 这些操作数有没有加,权重够不够。我一般会在优化前先跑一次“边界检查”,确保所有镜片都在合理范围内。
问题3:评价函数值降不下去
这有两种可能:一是系统已经接近物理极限,二是操作数选得不对。怎么判断?看每个操作数的贡献值。如果某个操作数的贡献值特别大,说明它是最难满足的。要么放松它的目标,要么调整权重。如果所有操作数的贡献值都差不多,那说明系统确实到极限了,该考虑换结构了。

嗯,评价函数这东西,说难不难,说简单也不简单。关键是多试、多调、多总结。我做了这么多年镜头,每次优化新系统,评价函数都要调个三五轮才能找到感觉。别指望一次搞定,那不太现实。