在本课中,我们将探索一个功能强大但很少使用的SYNOPSYS功能:它可以进行
参数研究,显示两个变量对第三个变量的影响。在这种情况下,我们希望了解
镜头优化运行的结果如何取决于初始
结构。在一个理想的设计中,每一个起点都将达到最佳可能的结果,但现实并不如此。对于任何给定的问题,通常存在许多局部最小值,并且我们期望的最好的优化算法应该可以得到最好的结果。
U9hS<}<Ki 因此,人们会期望两个几乎完全相同的初始结构将达到相同的局部最小值,即使它不是全局的。当前算法在此优化上的表现如何?TU Delft的Florian Bociort博士发现了一些非常有趣的结果。他做了一个很简单的例子,如下图所示。
\}0-^(9zd 为了使工作变得非常简单,他只在主
波长的三个
视场点校正了
光线,忽略了边缘误差。然后,他以曲率半径2和曲率半径3的起始值为变量做栅格,并绘制一个图,其中网格上每个像素的颜色编码评价函数的最终值。他发现有几个局部最小值,即使对于如此简单的问题也不足为奇 - 但完全出乎意料的是,在许多地方,评价函数以非常混乱的方式变化。因此,附近的起点经常会到达截然不同的终点。(他在Code-V上做了这个分析。)这是他在
http://homepage.tudelft.nl/q1d90/FBweb/fractals.html上的文章中的一个图解。
@OpNHQat9 (我们将这张照片放在了一边,以便它与下面的SYNOPSYS分析一致。)
IH*s8tPc 注意边界附近的结果是非常复杂和混乱的。黑色区域表示光线失效的起点,因此无法进行分析。
Cfu=u *u 我们认为SYNOPSYS中的PSD算法比上面的方法更可靠和稳定,因此我们在3参数评估功能PA3上设置了运行。这是输入:
zCaT tb|@ 开始双胶合镜头:
RW'nUL?_\ 为什么需要高阻尼?(默认值为1.0或0.01,具体取决于模式切换。)SYNOPSYS中的第一次迭代是用DLS(阻尼 - 最小二乘法)循环法,我们希望避免在该算法的第一次传递时产生的任何混乱; 高阻尼将确保镜头在该过程中变化很小。更强大的PSD算法追迹从传递到传递的一阶导数的变化,并推导出关于高阶导数的信息。这是PSD方法背后的技巧,但它只能在第二遍开始。 WYcA8X/
该研究的结果如下所示。左侧和底部附近的紫色区域显示该程序在不同的初始点上达到相同的最小值 - 而在Florian的研究中,这些区域达到了不同的最小值。在相交的边界没有明显的混乱,正如我们所期望的那样,PSD方法就是这种情况,尽管在中央绿色区域出现了散乱的极点。我们将后者归因于第一遍中DLS方法所做的非零更改。实际上,如果我们用不同的初始阻尼再次运行,那些随机点出现在不同的地方。 9LC&6Q5O& 顶部和底部的黑色区域显示了起点产生光线失效的位置,与他们在Florian研究中所做的相同。我们很好奇如果我们激活仅在SYNOPSYS™中发现的自动光线故障校正功能会发生什么。我们将SYNOPSYS命令更改为
<.K4JlbT SYNOPSYS 100 0 FIX
5s{j=.O 并重新运行优化
-V.d?A4" 现在我们看到该程序已经纠正了之前发生过的每一个故障。Florian无法优化的初始镜头现在都能产生可观的解决方案。现在,在以前全黑的区域的边界处有一些非常轻微的混乱,我们将其归因于更改了光线失效校正程序对该起点的影响。这些变化有时会使镜头更接近另一个相交的区域。
,F6=b/eZ 这项非常简单的研究只涉及两个变量的优化。如果我们将CV 1添加到变量列表会发生什么?
!^c@shLN4 试试看吧!(边界有些偏移,散乱的斑点不再出现。)