SYNOPSYS 光学设计软件课程二十三:参数优化研究+光线追迹失败校正
U8_{MY-9} 在本课中,我们将探索一个功能强大但很少使用的SYNOPSYS功能:它可以进行参数研究,显示两个变量对第三个变量的影响。在这种情况下,我们希望了解镜头优化运行的结果如何取决于初始结构。 在一个理想的设计中,每一个起点都将达到最佳可能的结果,但现实并不如此。 对于任何给定的问题,通常存在许多局部最小值,并且我们期望的最好的优化算法应该可以得到最好的结果。 J/1kJ@5 因此,人们会期望两个几乎完全相同的初始结构将达到相同的局部最小值,即使它不是全局的。 当前算法在此优化上的表现如何? TU Delft的Florian Bociort博士发现了一些非常有趣的结果。 他做了一个很简单的例子,如下图所示。 qt8Y3:=8l 为了使工作变得非常简单,他只在主波长的三个视场点校正了光线,忽略了边缘误差。 然后,他以曲率半径2和曲率半径3的起始值为变量做栅格,并绘制一个图,其中网格上每个像素的颜色编码评价函数的最终值。 他发现有几个局部最小值,即使对于如此简单的问题也不足为奇 - 但完全出乎意料的是,在许多地方,评价函数以非常混乱的方式变化。 因此,附近的起点经常会到达截然不同的终点。 (他在Code-V上做了这个分析。)这是他在http://homepage.tudelft.nl/q1d90/FBweb/fractals.html 上的文章中的一个图解。 i<uU_g'M (我们将这张照片放在了一边,以便它与下面的SYNOPSYS分析一致。) @6
he!wW 注意边界附近的结果是非常复杂和混乱的。 黑色区域表示光线失效的起点,因此无法进行分析。 <A3%182 我们认为SYNOPSYS中的PSD算法比上面的方法更可靠和稳定,因此我们在3参数评估功能PA3上设置了运行。 这是输入: 'Ru(`"
1| 开始双胶合镜头: Wf~^,]9N RLE 8}QM~&&. ID FLORIAN STARTING DOUBLET !3b& S4 WA1 .5876000 66=[6U9 * WT1 1.00000 x9lA';}) APS 1 1/dL-"*0 UNITS MM )nm+_U OBB 0.000000 3.00000 16.66670 0.00000 0.00000 0.00000 16.66670 0 AIR H%_^Gy8f 1 CV 0.0146498673770 TH 10.34600000 g~U(w 1 N1 1.61800000 osp~)icun 1 GID 'GLASS ' H<Snp) 2 RAD -174.6512432672814 TH 1.00000000 AIR ff--y8h 2 AIR Ev fvU:z 3 RAD -80.2251653581521 TH 2.35100000 N/a4Gl( 3 N1 1.71700000 O& Y;/$w 3 GID 'GLASS ' +k`L8@a3& 4 RAD -111.8857786363961 TH 92.41206276 AIR d4y#n=HnnV 4 AIR axQ>~vWN/ 4 CV -0.00893769 2?,Jn&i5 4 UMC -0.16667000 t3L>@NWG 4 TH 92.41206276 i/>k_mG$d 4 YMT 0.00000000 P\"kr?jZP 5 CV 0.0000000000000 TH 0.00000000 AIR 4D65VgVDM 5 AIR Ib(C`4% END O8;/oL4 U STORE 5 M9"Bx/ NaR} 0 And this is the input for the PA3 program): \Ec<ch[)c ON 78 ! use finer grid (118x118 points) 使用更精细的网格(118x118点) A 3 V PA3 LOOP COLOR ! initialize PA3, request color boxes for output初始化PA3,设置输出颜色框 k1Y\g'1
RZ1 -.025 .04 ! set the range of variable Z1设置变量Z1的范围 P1F-Wy1 RZ2 -.045 .075 ! set the range of Z2设置Z2的范围 M5bE5C RZ3 0 5.5 ! display results over this range of merit function values .; MS78BR 在此评价函数值范围内显示结果 yfl?\X{ NOSMOOTH ! there will be steps in the output; do not smooth BM :x`JY 按步输出; 结果不会很平滑 \8CCa(H XLAB "2 CV -.025 .04" ! define the label for the X-axis, which is variable Z1 6wlLE5 定义X轴的标签,即变量Z1 #*(}%!rD* YLAB "3 CV -.045 .075" ! label for Y-axis, Z2 Y轴,Z2的标签 @pH2"k|
@ ZLAB "MERIT" ! label for Z-axis, the final merit function Z轴的标签,最终的评价函数 7L~*%j LOOP 8xy8/UBIk0 ! tell PA3 to loop over the above raster of data告诉PA3循环上面的数据栅格 tZ]gVgZg GET 5 ! get the starting lens each time每次都得到初始结构的始镜头 XYU5. 2 CV = Z1 ! set curvature 2 to the value of variable Z1将曲率2设置为变量Z1的值 .n\JY;" 3 CV = Z2 ! and CV 3 to Z2, using the artificial-intelligence parser D]~K-[V?l CV 3到Z2,使用人工智能解析器 :zL)O PANT ! initialize the variable list初始化变量列表 Y3 $jNuV VLIST RAD 2 3 ! and vary two radii 两个不同的半径 QE]'Dc% END 45~x
#Q ! end of the variable list 变量列表的结尾 #A)V AANT ! initialize the merit function definition初始化评价函数定义 juEPUsE GSR .5 10 3 P 0 ! correct a sagittal fan, three rays, on axis 在轴上修正一个光扇图,三条光光线 4\z@Evm GNR .5 1 3 P .75 ! correct a full grid of rays, primary color, 0.75 field point R ]Ev=V'U 校正完整的光线网格,原色,0.75视场点 a>j}@8[J GNR .5 1 3 P 1 ! same, at full field. 全区域相同 .`D'eS6b END ! end of merit function definition 评价函数定义结束 ;Gr
{ hBU)gP75 DAMP 10000 ! initial damping (see below) 初始阻尼(见下文) Nj9A-*0g6N SNAP 50 ! watch what happens, but not too often, in order to keep it fast sH6;__e 观察发生状况,但不要太频繁,以保持高效 66val"^W SYNOPSYS 100 ! optimize until it converges 优化到收敛 ~[CFs'`(2 Z3 = MERIT ! assign the current merit function value to variable Z3 PA3 告诉PA3循环到下一个案例。 w$
8r<?^3 ! tell PA3 to cycle to the next case. 告诉PA3循环到下一个案例。 7.
F'1oEf SaPE 1^} 为什么需要高阻尼? (默认值为1.0或0.01,具体取决于模式切换。)SYNOPSYS中的第一次迭代是用DLS(阻尼 - 最小二乘法)循环法,我们希望避免在该算法的第一次传递时产生的任何混乱; 高阻尼将确保镜头在该过程中变化很小。 更强大的PSD算法追迹从传递到传递的一阶导数的变化,并推导出关于高阶导数的信息。 这是PSD方法背后的技巧,但它只能在第二遍开始。 joY7Vk!< |