ZEMAX | 使用 ZPL 宏進行優(yōu)化:ZPLM 操作數

本文介紹了如何通過使用 ZPLM 優(yōu)化操作數在評價函數編輯器 (Merit Function Editor )中使用 ZPL 宏定義復雜的優(yōu)化目標。本文介紹了如何使用 ZPLM 約束系統(tǒng)的質心,以確保其能正確地平衡。(聯系我們獲取文章附件)


簡介


OpticStudio 中有將近400個操作數,幾乎可以將任何感興趣的值作為目標,包括SINE,PROD,SQRT 等數學操作數,可以定義詳盡的評價函數。有時所需的值需要進行復雜的計算,但是無法在評價函數編輯器中執(zhí)行。在這種情況下,可以使用優(yōu)化操作數 ZPLM 執(zhí)行宏來確定操作數的值。運行宏,并使用 OPTRETURN 關鍵字將值返回給評價函數。


ZPLM 操作數


ZPLM 操作數包含六個參數: Mac#, Data, Hx, Hy, Px, Py

· Mac# 是 OpticStudio 應該執(zhí)行的宏的編號。應將與 ZPLM 操作數一起使用的宏另存為 ZPLnn.zpl,其中,00 ≤ nn ≤ 99。

例如,ZPLM 調用宏 ZPL03.zpl 時,Mac# 應該為3。

· Data 是由宏計算出來的數據值。單個宏中最多可以計算51個數據值 (0 ≤ Data ≤ 50)。為了提高效率,僅當 Data = 0 時才執(zhí)行宏;否則,將使用來自先前宏調用的數據(即 Data = 0,至少需要調用一次)。

· Hx, Hy, Px, 和 Py 是可以傳遞給宏以用于計算的值,它們不一定必須是歸一化的視場/光瞳坐標:


下面的示例將說明與 ZPLM 優(yōu)化操作數一起使用的宏的定義。


ZPLM 示例:質心約束


在某些光學系統(tǒng)(瞄準鏡,雙筒望遠鏡,安裝在三腳架上的照相機等)中,質心是要考慮的重要的機械因素。假設我們正在設計瞄準鏡,其中一個約束條件是使系統(tǒng)平衡。這意味著,質心(CM)應該位于前組元件和后組元件之間的中間位置。 加載示例文件:\Zemax\Samples\Sequential\Afocal\Afocal Riflescope.zmx


出于本示例的目的,將做出一些簡化示例的假設:

· 所有透鏡均旋轉對稱

· 所有材料為均勻介質

· 每個透鏡的質心都位于頂點的中間(嚴格來說,這僅適用于曲率相等且符號相反的透鏡)

表面1是全局坐標參考(GCRS)

要限制質心的位置需要有以下參數:

· 每個元件的全局位置

· 每個元件的質量

· 系統(tǒng)總長(前透鏡至后透鏡)

因此,將使用以下 ZPL 函數和關鍵字:

· GLCZ() 函數返回表面的全局 z 坐標

· OPEV() 函數使用 TMAS 優(yōu)化操作數提取元件的質量

· GETSYSTEMDATA 關鍵字返回總光路長度(表面1到像面)

· OPTRETURN 關鍵字將數據返回到宏


ZPLM 宏代碼


文章附件中“質心”宏,如下所示:(聯系我們獲取文章附件)



將宏另存為:ZPL01.ZPL,以便可以使用 Mac#= 1調用它。


評價函數中的 ZPLM


在評價函數中,添加 Mac#= 1,Data= 0 的 ZPLM 操作數,這將運行宏并返回系統(tǒng)的質心。



此處僅返回一個值,要返回其他值,只需在宏中添加額外的 OPTRETURN 行:

OPTRETURN data_number, value

在此示例中,不進行優(yōu)化,但是,操作過程與其他操作數相同(即設置所需的目標值和非零權重)。請注意,宏返回的值的單位可以是任意的,因此需要考慮ZPLM操作數的權重,以準確地表達此目標值相對于評價函數中列出的其他目標值的重要性。特別是,此宏需要非常小的權重才能使ZPLM與其他針對系統(tǒng)性能的操作數保持平衡。

如前所述,ZPLM 可以使用最多四個值(Hx,Hy,Px,Py)將數據傳遞到宏??梢允褂?PVHX(), PVHY(), PVPX(), PVPY() 數值函數在宏中訪問傳遞的值。在此示例中,可以將鏡筒質心的位置和質量傳遞給宏,以說明鏡筒和透鏡組合的質心。

· Hx = 鏡筒質心到系統(tǒng)中心的距離

· Hy = 鏡筒質量 按照下圖修改宏,并將修改后的宏另存為ZPL02.zpl。



在評價函數中,將 Mac#設置為2,輸入鏡筒質心位置(Hx)和質量(Hy)的值,并注意報告的數據值的變化:



切記:僅當 Data = 0 時才執(zhí)行宏,以提高評價函數的評估速度。