Ansys Zemax|如何自定義優(yōu)化操作數(shù)
雖然Zemax OpticStudio有300多個內(nèi)建優(yōu)化操作數(shù),但是還是會有一些特殊情況是這300多個操作數(shù)無法涵蓋的。這就要求使用者根據(jù)要求計算出某些特定的數(shù)值,將這些數(shù)值返回到某個操作數(shù),再對此操作數(shù)進行優(yōu)化。
Zemax OpticStudio支持用戶編程,計算出特定的數(shù)據(jù),再通過Merit Function Editor(MFE)中的操作數(shù)來定義該數(shù)據(jù)。這些數(shù)據(jù)可以是獨立于Zemax OpticStudio計算的,也可以是由Zemax OpticStudio計算的但是沒有具體的優(yōu)化操作數(shù)表達的。當然,不管是上述哪種情況,使用者都可以用以下兩種方法計算此數(shù)值:
1.使用ZPL宏語言
2.使用外部定義和匯編程序
ZPL宏具有容易編寫、執(zhí)行快速、以及和Zemax OpticStudio集成較好的特點。只要使用者具備一點點的編程經(jīng)驗就可以編程計算。
另外ZPLM優(yōu)化操作數(shù)可以用于從評價函數(shù)中調用ZPL宏,這樣使用者就可以直接使用宏計算出結果并返回到評價函數(shù)編輯器中從而實現(xiàn)優(yōu)化。
本文我們將介紹如何使用宏計算并通過操作數(shù)ZPLM將數(shù)值返回給評價函數(shù)。
附件下載
聯(lián)系工作人員獲取附件
使用操作數(shù)ZPLM返回宏計算的數(shù)值
如果您不熟悉如何創(chuàng)建、編輯、保存和執(zhí)行宏,推薦閱讀“編程語言 (ZPL) 簡介”,然后再繼續(xù)本練習。
現(xiàn)在,假設我們需要計算并優(yōu)化Working F/#。當然Zemax OpticStudio中操作數(shù)WFNO已經(jīng)可以解決此問題,本文只是舉一個例子。所以我們可以先假設操作數(shù)WFNO不存在,我們需要用宏計算該數(shù)值并返回到評價函數(shù)中進行優(yōu)化。Working F/#的定義如下:

其中n為像方空間的折射率, θ為實際邊緣光線(Real Marginal Ray)在像空間的角度。根據(jù)這些定義,我們需要用宏追跡一條實際光線并計算Working F/#:

注意OPTRETURN關鍵字的使用,此關鍵字記錄了全局陣列位置0處“X”的結果值。我們在MFE的ZPLM操作數(shù)“Dat#”列中填入的就是這個全局陣列的位置數(shù)。

上圖中“Mac#”對應著宏數(shù)。
注意每個被ZPLM操作數(shù)調用的宏必須命名為:“ZPLxx.ZPL”的格式,宏數(shù)可以是0到99的任何數(shù),因此ZPL17.ZPL是一個有效的文件名,可以通過在MFE中的“Mac#”填入17來調用執(zhí)行。
本例中,命名該宏為ZPL10.ZPL并保存在合適的文件夾中。在MFE中,插入ZPLM操作數(shù),分別在“Mac#”和“Dat#”中填入10和0。

更新該MFE,執(zhí)行宏并返回計算得到的數(shù)值。

計算返回的Working F/#是4.9782。在MFE中插入操作數(shù)WFNO驗證宏的正確性。由下圖可以看出,兩者計算得到的數(shù)值相同。

這種方法也可以用于單個宏調用并返回多個數(shù)值(如果想了解更多,請參考前文所說的使用者手冊),這些值可以用于優(yōu)化或者僅僅提供一個值給MFE做進一步分析。ZPLM可以提供驚人的速度以及彈性,使用者可以用該操作數(shù)計算并優(yōu)化一些特殊數(shù)值。
用戶自定義操作數(shù)是否會使評價函數(shù)計算緩慢?
也許您會好奇,在評價函數(shù)中使用自定義的操作數(shù)時,是否會使得評價函數(shù)計算緩慢?其實,這很大程度依賴于您宏計算的復雜程度,一般情況下宏計算是非??斓摹?/p>
作為演示,我們現(xiàn)在對Cooke Triplet執(zhí)行兩次優(yōu)化:一次使用ZPLM操作數(shù)加上宏,一次使用內(nèi)建操作數(shù)WFNO。
第一種情況,我們將ZPLM的目標值設置為5,權重設置為1。第二種情況,我們將WFNO的目標值設置為5,權重設置為1。按下圖設置評價函數(shù):

我們使用DLS優(yōu)化,可以看到執(zhí)行的時間大約4.4s:

點擊F3撤銷優(yōu)化,將ZPLM操作數(shù)權重設置為0,WFNO目標值設置為5,權重設置為1,再次優(yōu)化。

可以看出兩者計算的時間相差并不大。
因此,即使我們使用了自定義的宏,Zemax OpticStudio依舊可以高效的執(zhí)行計算。
總結
在使用Zemax OpticStudio的過程中,我們有時會遇到內(nèi)建的優(yōu)化操作數(shù)不能滿足我們要計算/返回的數(shù)值情況。這時我們需要利用ZPLM和宏結合或使用外部定義和匯編程序對這些數(shù)值進行計算和優(yōu)化。兩種方法,ZPLM和宏結合更為簡單,與Zemax OpticStudio集成的更好,需要更少的編程技巧。