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%。这镜头谁敢用?
我一般这样分配权重:
- 硬约束(必须满足的,比如焦距、总长)—— 权重 100,甚至用操作数的目标值直接锁定
- 核心性能(MTF、畸变、相对照度)—— 权重 10~50
- 次要像差(球差、彗差、场曲)—— 权重 1~5
- 边界条件(镜片厚度、空气间隔)—— 权重 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,锁定系统焦距
还有一个容易被忽略的——渐晕。很多镜头为了控制像差,会故意加渐晕。但渐晕太大会影响相对照度。我一般会在评价函数里加一个 RELI(相对照度)操作数,目标值 0.5 以上,权重 5~10。这样优化器就不会为了 MTF 把渐晕搞得太狠。
3.4 评价函数构建流程
说了这么多,咱们来捋一捋实际操作的步骤。我一般按这个流程来:
- 确定系统指标:焦距、F数、视场角、总长、波长范围
- 列出核心性能要求:MTF 目标、畸变上限、相对照度下限
- 设置边界约束:镜片厚度、空气间隔、总长
- 选择操作数:从核心性能出发,选 10~20 个关键操作数
- 分配权重:硬约束 100,核心性能 10~50,次要像差 1~5
- 试跑一次:看评价函数值的变化趋势,调整权重
- 检查结果:看 MTF、畸变、照度是否达标,镜片是否可加工
- 迭代优化:根据结果调整操作数或权重,再跑
这个流程看起来简单,但每一步都有坑。比如第 6 步,我见过有人一上来就把权重设得死死的,结果优化器直接卡死。我的建议是:先松后紧。第一轮优化用宽松的权重,让优化器找到一个大致的解空间。第二轮再收紧权重,精细调整。
下面这张图是我自己总结的评价函数构建逻辑,你可以参考一下:
3.5 常见问题与调试技巧
评价函数构建好了,跑优化的时候还是会遇到各种问题。我挑几个常见的说说:
原因往往是操作数之间互相矛盾。比如你既要求 MTF 高,又要求畸变极小,还要求总长很短。这三个目标在物理上就是冲突的。我的建议是:先放松两个,优化一个。等一个达标了,再逐步收紧其他约束。
比如镜片边缘厚度为负,或者镜片曲率半径小到离谱。这通常是边界约束没设好。检查一下 CTGT、ETGT 这些操作数有没有加,权重够不够。我一般会在优化前先跑一次“边界检查”,确保所有镜片都在合理范围内。
这有两种可能:一是系统已经接近物理极限,二是操作数选得不对。怎么判断?看每个操作数的贡献值。如果某个操作数的贡献值特别大,说明它是最难满足的。要么放松它的目标,要么调整权重。如果所有操作数的贡献值都差不多,那说明系统确实到极限了,该考虑换结构了。
嗯,评价函数这东西,说难不难,说简单也不简单。关键是多试、多调、多总结。我做了这么多年镜头,每次优化新系统,评价函数都要调个三五轮才能找到感觉。别指望一次搞定,那不太现实。