第三章 评价函数与优化:默认评价函数、操作数详解、局部与全局优化
各位同学,今天咱们聊聊光学设计里最核心的环节——优化。说白了,优化就是让镜头从「能看」变成「好用」的过程。我刚开始学Zemax时,总觉得优化是个黑盒子,点一下按钮就完事了。后来踩了不少坑才明白,评价函数才是整个优化的灵魂。
3.1 默认评价函数——你的起点
打开Zemax,在优化菜单里找到「评价函数编辑器」。第一次用的人往往会懵——满屏的英文缩写,什么SPHA、COMA、AXCL……别慌,咱们先从默认评价函数说起。
我个人习惯是,新建一个设计后,第一件事就是生成默认评价函数。怎么操作?很简单:
优化 → 评价函数 → 生成默认评价函数
在弹出的对话框里,选择「RMS」或「PTV」模式
这里有个关键选择:RMS vs PTV。RMS(均方根)评价的是整体像质,PTV(峰谷值)关注的是最差的那个点。我做过一个投影镜头项目,客户要求全视场均匀性好,这时候用RMS就比PTV合适。反过来,如果是激光聚焦系统,要求所有光线都落在极小范围内,那PTV更靠谱。
核心要点:默认评价函数是快速起步的工具,但千万别指望它一步到位。它只是给你一个「差不多」的起点。
3.2 操作数详解——你的工具箱
默认评价函数就像预制菜,能填饱肚子但不够精致。真正的大厨,得自己配调料。这些「调料」就是操作数。
操作数是什么?说白了,就是告诉Zemax「我要优化什么」。比如:
- SPHA:球差操作数。我有个做安防镜头的朋友,死活优化不好中心视场,后来发现是球差没压住。
- COMA:彗差操作数。离轴系统里这玩意儿特别烦人。
- AXCL:轴向色差。做双胶合透镜时必用。
- DIMX:畸变控制。广角镜头里这个很重要。
举个例子,你想控制某个面的球差在0.01以内,可以这样写:
操作数类型: SPHA
面序号: 3
目标值: 0.01
权重: 1.0
嗯,这里要注意:权重是个大学问。权重设太大,系统会拼命满足这个操作数,其他像质可能崩掉。我见过有人把某个操作数权重设成100,结果优化出来的镜头像面是弯的……
我的经验:权重从1开始,慢慢调。如果某个像差死活下不去,先别急着加权重,检查一下是不是结构本身有问题。
3.3 局部优化 vs 全局优化——什么时候用哪个?
这个问题我经常被问到。先看一张图,帮你理清思路:
从图上能看出来,局部优化和全局优化不是二选一的关系,而是先后关系。
3.4 局部优化——精细打磨
局部优化,Zemax里默认用的是「阻尼最小二乘法」。名字听着唬人,其实原理很简单:它在你当前结构附近找更好的解。就像爬山,你站在半山腰,它帮你找附近更高的地方。
什么时候用局部优化?当你已经有了一个不错的初始结构时。比如你从专利库找了个镜头,结构基本合理,只是像质差一点。这时候用局部优化,几分钟就能收敛。
我曾经踩过的坑:有一次我拿一个初始结构直接跑局部优化,跑了两个小时都不收敛。后来发现,初始结构里有个面的曲率半径设成了负数(应该正),局部优化根本跳不出这个错误区域。所以,跑局部优化前,一定先检查结构是否合理。
3.5 全局优化——破局利器
全局优化就厉害了。它用的是「锤形算法」或「遗传算法」,说白了就是满山遍野地找,不局限于当前区域。Zemax里叫「Global Optimization」或「Hammer Optimization」。
我个人的经验是:全局优化不是用来「优化」的,而是用来「探索」的。它帮你找到几个可能的好结构,然后你再拿这些结构去做局部优化。
操作步骤:
- 打开优化菜单,选择「全局优化」
- 设置变量(曲率、厚度、玻璃等)
- 跑个几百代,看看结果
- 把最好的几个结构保存下来
- 分别做局部优化
避坑指南:全局优化很吃计算资源。我见过有人设了20个变量,跑了三天三夜。其实没必要,先固定大部分参数,只优化3-5个关键变量,找到方向后再放开其他变量。
3.6 实战技巧——评价函数组合
最后分享一个我常用的评价函数组合模板。做成像镜头时,我一般这样配:
| 操作数 | 目标值 | 权重 | 说明 |
|---|---|---|---|
| RMS(默认) | 0 | 1 | 控制整体像质 |
| DIMX | 1% | 0.5 | 控制畸变 |
| AXCL | 0.01 | 0.3 | 控制轴向色差 |
| LONA | 0.005 | 0.2 | 控制球差 |
| CTGT | 2mm | 1 | 保证中心厚度 |
| ETGT | 1.5mm | 1 | 保证边缘厚度 |
这个模板不是万能的,但能覆盖大部分成像镜头的需求。你想想看,如果连中心厚度和边缘厚度都不控制,优化出来的镜头可能薄得像纸片,根本没法加工。
好了,关于评价函数和优化,今天就聊到这儿。记住一句话:优化不是玄学,是科学。理解每个操作数的含义,合理设置权重,你也能做出漂亮的光学设计。
本章小结:
- 默认评价函数是起点,不是终点
- 操作数是你的工具箱,权重设置要谨慎
- 局部优化用于精细打磨,全局优化用于探索新结构
- 先全局探索,再局部收敛——这是最有效的流程