评价函数编辑器:布局、操作、快捷键与基本设置

评价函数编辑器,说白了就是 Zemax 里最核心的「调优面板」。你设计一个镜头,最终能不能用,全看这里面的数字好不好看。我刚开始学的时候,打开这个窗口直接懵了——满屏的数字、按钮、下拉菜单,完全不知道从哪下手。

今天我们就把它拆开揉碎,一个一个讲清楚。

编辑器的布局:四个区域,各司其职

打开 Zemax,点菜单栏的 Editors → Merit Function Editor,或者直接按快捷键 F6。你会看到这样一个窗口:

评价函数编辑器布局 菜单栏:File | Edit | Tools | View | Help 工具栏:打开 | 保存 | 插入 | 删除 | 更新 | 优化 | 快捷键图标 操作数列表(核心区域) Type | Int1 | Int2 | Hx | Hy | Px | Py | Target | Weight | Value | % Contrib BLNK | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 EFFL | 1 | 1 | 0 | 0 | 0 | 0 | 100 | 1 | 99.8 | 12.3 SPHA | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0.02 | 0.5 COMA | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0.01 | 0.3 ASTI | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0.03 | 0.8 TOTR | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0.05 | 1.2 信息面板 当前操作数:SPHA 面编号:1 波长:1 当前值:0.02 目标值:0 权重:1 贡献率:0.5% 总评价函数:15.1 状态栏:操作数总数 12 | 变量 5 | 当前评价函数值 0.015 | 更新状态:已更新

整个编辑器分成四大块:

  1. 菜单栏:文件操作、编辑、工具、视图、帮助。说实话,日常用得不多,大部分功能都有快捷键。
  2. 工具栏:打开/保存评价函数、插入/删除操作数、更新评价函数、启动优化。这些按钮我天天点。
  3. 操作数列表:这是主战场。每一行就是一个操作数,Type 列写操作数名字(比如 SPHA、EFFL),后面跟着各种参数、目标值、权重、当前值、贡献率。
  4. 信息面板:显示当前选中操作数的详细信息。我一般用它快速查看某个操作数的具体设置。
我的习惯: 把信息面板固定在右侧,这样选中任何操作数,右边立刻显示详情,不用来回翻窗口。

操作数的结构:一行就是一个约束

每一行操作数,本质上就是一条「约束条件」。你告诉 Zemax:「我要控制某个指标,目标是多少,权重给多大。」

我们拿一行典型的操作数来拆解:

列名 含义 举例
Type 操作数类型,即你要控制什么 EFFL(有效焦距)
Int1 第一个整数参数,通常是面编号 1(从第1面开始)
Int2 第二个整数参数,通常是结束面编号 3(到第3面结束)
Hx, Hy 归一化视场坐标 0, 0(中心视场)
Px, Py 归一化光瞳坐标 0, 0(中心光瞳)
Target 目标值,你希望这个指标达到多少 100(mm)
Weight 权重,这个约束有多重要 1
Value 当前值,Zemax 算出来的实际值 99.8
% Contrib 贡献率,这个操作数占总评价函数的百分比 12.3%

关键理解: 评价函数值 = Σ( Weight × (Value - Target)² )。Zemax 优化就是不断调整变量,让这个总和最小化。

说白了,每个操作数就是一个「误差项」,权重越大,优化器越优先满足它。

常用快捷键:效率翻倍的关键

我刚开始用的时候,全靠鼠标点。后来老工程师看我一眼,说:「你这一下午的活,我半小时干完。」然后给我列了几个快捷键——

快捷键 功能 我的备注
F6 打开/关闭评价函数编辑器 最常用的,没有之一
Ctrl + Insert 在当前行上方插入一行 比右键菜单快三倍
Ctrl + Delete 删除当前行 注意没有确认提示,删了就没了
Ctrl + Shift + U 更新评价函数 改完参数必须按一下,不然值不刷新
Ctrl + E 打开优化对话框 从编辑器直接跳优化,流程很顺
Ctrl + C / Ctrl + V 复制/粘贴操作数行 批量建约束时救命用的
Shift + 方向键 多行选中 配合复制粘贴,效率翻倍

我曾经踩过的坑: 有一次我复制了一整段操作数,粘贴后没注意看,结果把视场坐标全搞乱了。优化了半天,评价函数死活下不去。后来发现 Hy 列全变成了 1,所有操作数都在算边缘视场。

所以复制粘贴后,一定记得检查 Hx、Hy、Px、Py 这几列。

基本设置:让编辑器更顺手

评价函数编辑器有几个设置项,我建议你一开始就调好:

  1. 显示小数位数:Tools → Options → Merit Function,把 Value 和 Target 的小数位数改成 6 位。默认 4 位有时候不够用,尤其是公差分析时。
  2. 自动更新:在工具栏上有个「Auto Update」按钮,点一下让它亮起来。这样你改完任何参数,评价函数自动重新计算。省得老按 Ctrl + Shift + U。
  3. 贡献率排序:点击 % Contrib 列头,可以按贡献率从大到小排序。这个功能我几乎每次优化都要用——一眼就能看出哪个像差是「罪魁祸首」。
  4. 显示/隐藏列:右键点击列头,可以勾选显示哪些列。我个人习惯把 Hx、Hy、Px、Py 都显示出来,因为经常需要检查视场和光瞳设置。

一个小技巧: 如果你觉得某一行操作数暂时不想用,但又不想删,可以把它的 Weight 改成 0。这样它不参与评价函数计算,但保留所有设置。需要时改回权重就行,不用重新建。

操作数的类型:三大类,覆盖所有需求

Zemax 的操作数有几百种,但别怕。我把它分成三大类,你记住这个框架,用的时候就知道去哪找了:

类别 典型操作数 用途
像差类 SPHA, COMA, ASTI, FCUR, DIST, CLA 直接控制各种像差的大小
基本参数类 EFFL, TOTR, CTGT, OPDX, OPDY 控制焦距、总长、中心厚度、光程差
边界约束类 MNCG, MXCG, MNCA, MXCA, MNEG, MXEG 控制镜片中心/边缘厚度、空气间隔的上下限

刚开始做设计,你只需要掌握前两类。边界约束类等你开始做「可加工性优化」时再深入学。

一个简单的操作流程

说了这么多,我们走一遍实际流程。假设你要控制一个镜头的有效焦距为 100mm:

  1. 按 F6 打开评价函数编辑器。
  2. 按 Ctrl + Insert 插入一行空操作数。
  3. 在 Type 列输入 EFFL,回车。
  4. Int1 填 1(起始面),Int2 填 3(结束面,假设镜头有 3 个面)。
  5. Target 填 100,Weight 填 1。
  6. 按 Ctrl + Shift + U 更新,看 Value 列是不是接近 100。
Type  Int1  Int2  Hx  Hy  Px  Py  Target  Weight  Value
EFFL  1     3     0   0   0   0   100     1       99.8

就这么简单。一个焦距约束就建好了。

核心要点回顾:

  • 评价函数编辑器 = 操作数列表 + 信息面板 + 工具栏
  • 每个操作数 = 一条约束,包含类型、参数、目标、权重
  • 快捷键 F6、Ctrl + Insert、Ctrl + Shift + U 必须记住
  • 贡献率排序是诊断问题的第一工具
  • 权重设为 0 可以临时禁用操作数,不用删