第三章 评价函数详解:操作数与目标值、权重的设定策略
各位好,我是老张。今天咱们聊聊评价函数——说白了,这就是光学设计的“指挥棒”。你设计得好不好,全看它怎么“打分”。
我刚开始做光学设计那会儿,总觉得评价函数就是个黑盒子。默认一跑,结果出来就完事。后来被一个项目坑惨了——镜头做出来,MTF看着不错,但实际装调就是不行。为什么?因为评价函数里没加公差敏感度的约束。从那以后,我对评价函数的态度就变了:它不是你随便点个“优化”就能糊弄过去的工具,而是你得亲手调教它。
核心观点:评价函数 = 你告诉软件“什么才是好镜头”的语言。你定义得越清楚,结果越靠谱。
3.1 操作数(Operand)——评价函数的“基本单词”
操作数是什么?说白了,就是你能测量的每一个光学指标。比如焦距、像差、畸变、MTF……每个指标对应一个操作数。
Zemax里操作数有几百个,但常用的其实就那二三十个。我个人习惯把它们分成三类:
- 像质类:MTF(MTFA、MTFT、MTFS)、波像差(WAVF)、点列图(RSCE、GEO)
- 结构类:焦距(EFFL)、后焦(BACK)、镜片厚度(CTGT、CTLT)
- 边界类:边缘厚度(MNEG、MXCG)、光线高度(RAHY、RAHX)
举个例子。有一次我做投影镜头,客户要求畸变小于1%。我就在评价函数里加了DIMX操作数,目标值设成0.5,权重给到10。结果优化完一看,畸变0.8%,完美达标。但如果你不加这个操作数,软件根本不知道你在乎畸变——它只会闷头优化MTF。
小技巧:操作数不是越多越好。我见过有人往评价函数里塞了200个操作数,结果优化半天不收敛。其实关键指标就那么几个,抓住核心就行。
3.2 目标值(Target)与权重(Weight)——怎么“打分”才合理
目标值就是你希望达到的数值。权重呢?就是你觉得这个指标有多重要。
这里有个坑:很多人把权重设成1、5、10这种整数,觉得越大越好。其实不是。权重是相对值——你想想看,如果你把MTF的权重设成100,畸变设成1,那软件会拼命优化MTF,畸变可能就放飞了。
我一般这样设权重:
| 指标类型 | 典型目标值 | 推荐权重 | 说明 |
|---|---|---|---|
| MTF(中心视场) | 0.5@30lp/mm | 10 | 核心像质指标 |
| MTF(边缘视场) | 0.3@30lp/mm | 5 | 边缘可以放宽 |
| 畸变 | <1% | 3 | 一般要求,不用太狠 |
| 焦距 | 50mm | 1 | 结构参数,容易满足 |
| 镜片厚度 | >2mm | 2 | 工艺约束,必须保证 |
你看,权重不是拍脑袋定的。它反映的是你的设计优先级。我曾经做过一个手机镜头项目,客户对厚度极其敏感,我就把镜片厚度的权重提到了20,结果优化出来的镜片薄得像纸片——嗯,加工厂直接打电话骂我。所以权重也要考虑工艺可行性。
避坑指南:我曾经把畸变权重设成0.1,想着“差不多就行”。结果优化完畸变5%,客户直接拒收。后来我学乖了:关键指标权重至少给到3,别偷懒。
3.3 默认评价函数——什么时候用,什么时候别用
Zemax的默认评价函数(Default Merit Function)是个好东西。你点一下“Wavefront”或“RMS Spot Radius”,它自动给你生成一堆操作数。新手最爱用这个,因为省事。
但我要说:默认评价函数只适合做“粗优化”。什么意思?就是你刚开始设计,结构还没定下来,用它跑几轮看看趋势。但到了精细优化阶段,你还用默认的,那就等着翻车吧。
为什么?因为默认评价函数不会考虑你的特殊要求。比如:
- 它不会自动加公差敏感度约束
- 它不会管镜片是否可加工(边缘厚度、中心厚度)
- 它不会区分哪个视场更重要
我记得有一次,我用默认评价函数优化一个变焦镜头。跑了三天三夜,结果一看,镜片中心厚度0.3mm——这怎么加工?从那以后,我都是先用默认评价函数跑个大概,然后手动加一堆约束操作数。
3.4 自定义评价函数——真正体现功力的地方
自定义评价函数,说白了就是你自己写“打分规则”。这步做好了,你的设计水平能上一个台阶。
我一般这样构建自定义评价函数:
- 先复制默认评价函数,作为基础
- 删除不相关的操作数(比如你不在乎色差,就把AXCL、LACL删掉)
- 添加约束操作数:镜片厚度、空气间隔、总长、后焦
- 添加特殊指标:比如相对照度(RELI)、鬼像分析(GHOST)
- 调整权重:按设计优先级重新分配
举个例子。我做红外镜头时,客户要求冷反射(Narcissus)小于0.5°C。默认评价函数里根本没有这个指标。我就手动加了NARC操作数,目标值0.5,权重给到15。优化完一测,冷反射0.3°C,客户很满意。
下面是我常用的一个自定义评价函数模板:
! 自定义评价函数模板(红外镜头示例)
! 像质部分
MTFT 0.5 10 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0
MTFS 0.5 10 0.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0
WAVF 0.25 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
! 结构约束
EFFL 50 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
BACK 15 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
CTGT 2 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
MNEG 2 3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
! 特殊指标
NARC 0.5 15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
RELI 0.8 5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
你看,每个操作数后面跟着目标值和权重。这个模板我用了好几年,每次新项目就在这个基础上改改,效率很高。
个人经验:自定义评价函数不是一次写好的。我通常先跑一轮,看看哪些指标超了,哪些指标太松,然后回来调权重。迭代个三五轮,评价函数才算“定型”。
3.5 评价函数的“动态调整”策略
这里分享一个我自己的心得:评价函数不是一成不变的。不同优化阶段,你得用不同的策略。
- 初始阶段:用默认评价函数,权重全设1,先让结构收敛
- 中期阶段:加约束操作数,权重调到3-5,重点优化像质
- 后期阶段:加特殊指标(公差、鬼像、冷反射),权重给到10以上,做精细打磨
为什么要动态调整?因为一开始你加了太多约束,优化器会卡住。就像教小孩走路——你不能一开始就让他跑马拉松,得先学会站,再学会走,最后才跑。
我曾经犯过一个错误:在初始阶段就把所有约束全加上,结果优化器直接罢工,评价函数值死活降不下来。后来我把约束一个一个加,每加一个就跑几轮,效果反而更好。
3.6 本章知识体系
下面这张图是我自己画的评价函数知识框架,你看一眼就能明白整体逻辑:
这张图把评价函数的三个核心要素串起来了。你从中间开始看,左边是操作数,中间是目标值和权重,右边是默认和自定义的选择。底部是核心原则——先粗后细,动态调整,权重反映优先级。我每次做新项目,都会对着这张图过一遍,确保没漏掉什么。
最后说一句:评价函数这东西,光看书没用。你得亲手调,亲手试。我建议你找个现成的镜头文件,把评价函数全删了,自己一个一个加操作数。跑几轮,看看效果。踩过坑,才能真正理解。