全局搜索算法(Global Synthesis)的原理与参数设置
全局搜索算法,Code V 里叫 Global Synthesis。说白了,它就是在整个设计空间里「撒网」,帮你找到那些可能被你忽略的好结构。我刚开始用这个功能时,总觉得它就是个自动跑参数的工具,后来才发现——嗯,它的核心价值在于「跳出局部陷阱」。
Global Synthesis 的核心逻辑
这个算法的思路其实很直白:
- 第一步:随机采样——在变量允许范围内,生成大量初始结构
- 第二步:局部收敛——对每个初始结构做一轮局部优化
- 第三步:筛选排序——按评价函数值排序,保留最优的几个
- 第四步:聚类分析——把结构相似的解归为一类,避免重复
我习惯把 Global Synthesis 比作「先广撒网,再重点捕捞」。它不会像局部优化那样,一上来就盯着一个方向猛钻。
关键认知:Global Synthesis 不是「一次跑完就完事」的工具。它更像一个探索器,帮你发现哪些结构方向值得深入。
关键参数详解
Global Synthesis 的参数设置,直接决定了搜索效果。我踩过不少坑,这里把最关键的几个参数说清楚。
| 参数名称 | 默认值 | 推荐范围 | 作用说明 |
|---|---|---|---|
| Cycles | 5 | 3~10 | 全局搜索的轮次。每轮会生成一批新结构,并淘汰差的 |
| Population | 50 | 30~100 | 每轮保留的结构数量。越大搜索越广,但耗时也越长 |
| Mutation Rate | 0.2 | 0.1~0.4 | 变异率。控制新结构偏离父代的程度 |
| Crossover Rate | 0.8 | 0.6~0.9 | 交叉率。控制两个父代结构混合的程度 |
| Convergence Threshold | 0.01 | 0.001~0.05 | 收敛判据。评价函数变化小于此值时停止 |
我的习惯:刚开始探索时,我会把 Cycles 设到 8、Population 设到 80,让搜索充分展开。等找到几个有潜力的方向后,再缩小范围做精细搜索。
参数设置的实战经验
参数怎么调?我直接说几个我在项目中遇到的真实情况。
1. Cycles 太少,搜索不充分
有一次我做投影物镜设计,Cycles 只设了 3。结果跑出来的结构全是类似的——都是三片式变种。后来我把 Cycles 提到 6,才发现了另一种完全不同的四片式结构,性能反而更好。
2. Population 太大,浪费时间
Population 不是越大越好。我试过设到 150,结果跑了整整一个晚上,最后发现最优解在第 40 个结构附近就出现了。后面的 110 个基本是重复劳动。现在我做常规镜头,Population 一般控制在 50~60。
3. Mutation Rate 要配合变量范围
这个参数很微妙。变量范围大时,Mutation Rate 可以设高一点(0.3~0.4),让搜索跳得更远。变量范围小时,Mutation Rate 设 0.1~0.2 就够了,否则容易跳出好区域。
⚠️ 避坑提醒:我曾经把 Mutation Rate 设到 0.5,结果每次跑出来的结构都乱七八糟,连基本的成像条件都满足不了。后来才意识到——变异率太高,相当于每次都在随机瞎猜,算法根本没法收敛。
实际操作步骤
在 Code V 里跑 Global Synthesis,我一般按这个流程来:
- 定义变量——把曲率半径、厚度、玻璃等设为变量。注意变量数量不要太多,我一般控制在 15~20 个以内
- 设置约束——边界约束、焦距约束、总长约束等。约束太松,搜索空间太大;约束太紧,可能错过好结构
- 选择评价函数——默认是 RMS 波前差。如果关注 MTF,可以自定义评价函数
- 设置 Global Synthesis 参数——按上面的推荐范围来
- 开始搜索——点 Run,然后去喝杯咖啡。搜索时间取决于变量数量和 Population 大小
- 分析结果——查看候选结构列表,重点关注不同类别的结构
一个实用技巧:跑完 Global Synthesis 后,别急着选最优的那个。我习惯把排名前 5 的不同类别结构都保存下来,然后分别做一轮局部优化。有时候排名第 3 的结构,经过局部优化后反而能超过第 1 名。
常见问题与对策
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 所有候选结构几乎一样 | Population 太小,或 Cycles 太少 | 增大 Population 到 80+,Cycles 到 8+ |
| 评价函数一直不下降 | 约束太紧,或变量范围太小 | 适当放宽约束,扩大变量范围 |
| 搜索时间过长 | 变量太多,或 Population 太大 | 减少变量数量,或降低 Population |
| 结果结构不满足基本条件 | 缺少关键约束 | 添加焦距、总长、后焦等硬约束 |
嗯,Global Synthesis 说到底就是个「探索工具」。它不能直接给你最终设计,但能帮你找到那些你自己想不到的结构方向。我每次开始一个新项目,都会先跑一轮 Global Synthesis,看看设计空间里到底藏着哪些可能性。