变量选择策略:哪些参数该设为变量?哪些该锁定?

做光学优化,说白了就是跟变量打交道。我刚入行那会儿,总觉得变量越多越好,恨不得把曲率半径、厚度、非球面系数全放开。结果呢?优化跑了一整夜,早上来一看——光线乱飞,像质一塌糊涂。后来我才明白,变量选得好,优化跑得快;变量选得烂,三天三夜也白干。

这一章,我就跟你聊聊变量选择的门道。哪些参数该动?哪些该锁死?变量数量怎么控制?咱们一个一个说清楚。

变量的分类:哪些参数可以动?

光学系统里的参数,大致分三类。我习惯用一张表来区分:

参数类型 典型参数 变量优先级 我的建议
结构参数 曲率半径、厚度、间隔 高 优先设为变量
材料参数 折射率、阿贝数 中 后期再放开
面型参数 非球面系数、衍射阶数 低 按需启用
系统参数 焦距、F数、视场角 锁定 作为约束条件

你看,结构参数是主力。曲率半径和厚度,直接影响光线走向,必须优先放开。材料参数呢?我一般先锁定,等结构定型了再微调。面型参数更得小心——非球面系数一放开,优化器容易钻牛角尖。

变量选择的黄金法则:少即是多

我见过太多人犯这个错:一上来就把所有参数都设成变量。结果优化器像无头苍蝇,到处乱撞。为什么?变量太多,自由度太大,评价函数根本找不到方向。

我个人习惯的做法是:

  1. 先锁定,再逐步放开。初始阶段只放开曲率半径和空气间隔。
  2. 每轮优化只加 2-3 个新变量。跑一轮,看效果,再加。
  3. 敏感度低的参数坚决锁死。比如边缘厚度、小曲率面,动了也没用。
我的小技巧:在 Zemax 或 Code V 里,先跑一次「局部优化」,看看哪些参数变化大。变化大的,才是真变量;变化小的,锁死它。

变量数量的控制:多少才算合适?

这个问题没有标准答案。但我有个经验公式:变量数 ≈ 镜片数 × 2 + 2。比如 5 片镜片,变量控制在 12 个左右。超过这个数,优化效率会断崖式下降。

为什么会这样?你想想看,评价函数里每个变量都要计算偏导数。变量一多,计算量呈指数增长。更麻烦的是,变量之间会互相干扰。你调曲率,我改厚度,最后谁都没落好。

我遇到过最夸张的一次,一个同事把 30 个变量全放开,跑了 48 小时。结果呢?像质还不如初始结构。后来我帮他锁了 15 个,只留关键变量,2 小时就搞定了。

哪些参数该锁定?避坑指南

我曾经吃过不少亏,总结出几个「打死也别动」的参数:

  • 系统焦距:一放开,整个系统比例全乱。
  • 后工作距:动了它,机械接口全得重做。
  • 边缘厚度:太薄了加工不了,太厚了装不下。
  • 对称结构的对应面:比如双高斯的前后对称面,锁一个动一个。
注意:非球面系数不要一次性全放开。我建议先放开 4 阶项,等收敛了再加 6 阶、8 阶。否则优化器会拿高阶项去「硬凑」像质,结果面型变得奇形怪状。

变量选择的实战流程

下面这张图,是我自己总结的变量选择流程。每次做新项目,我都按这个来:

变量选择实战流程 初始结构导入 锁定系统参数(焦距/F数) 放开曲率半径 + 空气间隔 评估像质 → 是否收敛? 逐步放开非球面/材料参数 每轮只加 2-3 个变量,跑 50 次迭代后评估,不收敛就回退 敏感度低的参数坚决锁死,别让优化器「瞎忙活」

变量与约束的平衡

变量不是越多越好,但也不是越少越好。关键是找到平衡点。我常用的方法是:

  • 先跑一次「全局搜索」,看看哪些参数对像质影响大。
  • 把敏感度高的参数设为变量,敏感度低的锁死。
  • 用操作数控制边界。比如厚度不能小于 1mm,曲率不能太陡。

核心原则:变量是工具,不是目的。你的目标是「用最少的变量,达到最好的像质」。多一个变量,就多一分风险。

一个真实案例

去年我做一款 4K 投影镜头,初始结构有 8 片镜片。一开始我放了 18 个变量,跑了 3 天,像质卡在 0.15λ 下不来。后来我仔细分析敏感度,发现 6 个变量几乎没动过。锁掉它们,只留 12 个变量。结果呢?半天就跑到 0.08λ。

嗯,这件事让我彻底记住了:变量不是越多越好,而是越精越好。

总结一下

变量选择,说白了就是「舍得」二字。舍得锁掉没用的参数,舍得花时间分析敏感度。别贪多,别心急。一步一步来,优化效率自然就上去了。

下一轮优化前,不妨先问问自己:这 10 个变量里,有几个是真正需要的?