在本課中,我們將探索一個功能強大但很少使用的SYNOPSYS功能:它可以進行參數(shù)研究,顯示兩個變量對第三個變量的影響。在這種情況下,我們希望了解鏡頭優(yōu)化運行的結(jié)果如何取決于初始結(jié)構(gòu)。在一個理想的設(shè)計中,每一個起點都將達到最佳可能的結(jié)果,但現(xiàn)實并不如此。對于任何給定的問題,通常存在許多局部最小值,并且我們期望的最好的優(yōu)化算法應(yīng)該可以得到最好的結(jié)果。
(資料圖)
因此,人們會期望兩個幾乎完全相同的初始結(jié)構(gòu)將達到相同的局部最小值,即使它不是全局的。當(dāng)前算法在此優(yōu)化上的表現(xiàn)如何?TU Delft的Florian Bociort博士發(fā)現(xiàn)了一些非常有趣的結(jié)果。他做了一個很簡單的例子,如下圖所示。
為了使工作變得非常簡單,他只在主波長的三個視場點校正了光線,忽略了邊緣誤差。然后,他以曲率半徑2和曲率半徑3的起始值為變量做柵格,并繪制一個圖,其中網(wǎng)格上每個像素的顏色編碼評價函數(shù)的最終值。他發(fā)現(xiàn)有幾個局部最小值,即使對于如此簡單的問題也不足為奇 – 但完全出乎意料的是,在許多地方,評價函數(shù)以非?;靵y的方式變化。因此,附近的起點經(jīng)常會到達截然不同的終點。(他在Code-V上做了這個分析。)這是他在http://homepage.tudelft.nl/q1d90/FBweb/fractals.html上的文章中的一個圖解。
(我們將這張照片放在了一邊,以便它與下面的SYNOPSYS分析一致。)
注意邊界附近的結(jié)果是非常復(fù)雜和混亂的。黑色區(qū)域表示光線失效的起點,因此無法進行分析。
我們認為SYNOPSYS中的PSD算法比上面的方法更可靠和穩(wěn)定,因此我們在3參數(shù)評估功能PA3上設(shè)置了運行。這是輸入:
開始雙膠合鏡頭:
RLE ID FLORIAN STARTING DOUBLET WA1 .5876000 WT1 1.00000 APS 1 UNITS MM OBB 0.000000 3.00000 16.66670 0.00000 0.00000 0.00000 16.66670 0 AIR 1 CV 0.0146498673770 TH 10.34600000 1 N1 1.61800000 1 GID ‘GLASS ‘ 2 RAD -174.6512432672814 TH 1.00000000 AIR 2 AIR 3 RAD -80.2251653581521 TH 2.35100000 3 N1 1.71700000 3 GID ‘GLASS ‘ 4 RAD -111.8857786363961 TH 92.41206276 AIR 4 AIR 4 CV -0.00893769 4 UMC -0.16667000 4 TH 92.41206276 4 YMT 0.00000000 5 CV 0.0000000000000 TH 0.00000000 AIR 5 AIR END STORE 5 ! 這是對PA3程序的輸入 ON 78 ! 使用更精細的網(wǎng)格(118×118點) PA3 LOOP COLOR ! 初始化PA3,設(shè)置輸出顏色框 RZ1 -.025 .04 ! 設(shè)置變量Z1的范圍 RZ2 -.045 .075 !設(shè)置Z2的范圍 RZ3 0 5.5 ! 在此評價函數(shù)值范圍內(nèi)顯示結(jié)果 NOSMOOTH ! 按步輸出; 結(jié)果不會很平滑 XLAB “2 CV -.025 .04” ! 定義X軸的標(biāo)簽,即變量Z1 YLAB “3 CV -.045 .075” ! Z2 Y軸,Z2的標(biāo)簽 ZLAB “MERIT” ! Z軸的標(biāo)簽,最終的評價函數(shù) LOOP ! 告訴PA3循環(huán)上面的數(shù)據(jù)柵格 GET 5 ! 每次都得到初始結(jié)構(gòu)的始鏡頭 2 CV = Z1 ! Z1將曲率2設(shè)置為變量Z1的值 3 CV = Z2 ! CV 3到Z2,使用人工智能解析器 PANT ! 初始化變量列表 VLIST RAD 2 3 ! 兩個不同的半徑 END ! 變量列表的結(jié)尾 AANT ! 初始化評價函數(shù)定義 GSR .5 10 3 P 0 ! 在軸上修正一個光扇圖,三條光光線 GNR .5 1 3 P .75 ! 校正完整的光線網(wǎng)格,原色,0.75視場點 GNR .5 1 3 P 1 ! 全區(qū)域相同 END ! 評價函數(shù)定義結(jié)束 DAMP 10000 ! 初始阻尼(見下文) SNAP 50 ! 觀察發(fā)生狀況,但不要太頻繁,以保持高效 SYNOPSYS 100 ! 優(yōu)化到收斂 Z3 = MERIT ! 告訴PA3循環(huán)到下一個案例。
為什么需要高阻尼?(默認值為1.0或0.01,具體取決于模式切換。)SYNOPSYS中的第一次迭代是用DLS(阻尼 – 最小二乘法)循環(huán)法,我們希望避免在該算法的第一次傳遞時產(chǎn)生的任何混亂; 高阻尼將確保鏡頭在該過程中變化很小。更強大的PSD算法追跡從傳遞到傳遞的一階導(dǎo)數(shù)的變化,并推導(dǎo)出關(guān)于高階導(dǎo)數(shù)的信息。這是PSD方法背后的技巧,但它只能在第二遍開始。
該研究的結(jié)果如下所示。左側(cè)和底部附近的紫色區(qū)域顯示該程序在不同的初始點上達到相同的最小值 – 而在Florian的研究中,這些區(qū)域達到了不同的最小值。在相交的邊界沒有明顯的混亂,正如我們所期望的那樣,PSD方法就是這種情況,盡管在中央綠色區(qū)域出現(xiàn)了散亂的極點。我們將后者歸因于第一遍中DLS方法所做的非零更改。實際上,如果我們用不同的初始阻尼再次運行,那些隨機點出現(xiàn)在不同的地方。
頂部和底部的黑色區(qū)域顯示了起點產(chǎn)生光線失效的位置,與他們在Florian研究中所做的相同。我們很好奇如果我們激活僅在SYNOPSYS?中發(fā)現(xiàn)的自動光線故障校正功能會發(fā)生什么。我們將SYNOPSYS命令更改為
SYNOPSYS 100 0 FIX
并重新運行優(yōu)化
現(xiàn)在我們看到該程序已經(jīng)糾正了之前發(fā)生過的每一個故障。Florian無法優(yōu)化的初始鏡頭現(xiàn)在都能產(chǎn)生可觀的解決方案?,F(xiàn)在,在以前全黑的區(qū)域的邊界處有一些非常輕微的混亂,我們將其歸因于更改了光線失效校正程序?qū)υ撈瘘c的影響。這些變化有時會使鏡頭更接近另一個相交的區(qū)域。
這項非常簡單的研究只涉及兩個變量的優(yōu)化。如果我們將CV 1添加到變量列表會發(fā)生什么?
試試看吧!(邊界有些偏移,散亂的斑點不再出現(xiàn)。)
關(guān)鍵詞: