如何优化非序列光学系统

本文提出了一种优化非序列光学系统的方法。推荐的方法是使用像素插值(Pixel Interpolation)、探测器数据合集(光照时刻数据)和正交下降优化器。例如,优化一个自由曲面反射镜,使LED的亮度从23 Cd到大于250 Cd只需几步。

作者 Akash Arora

附件下载

Article Attachments

简介

OpticStudio的优化功能允许用户通过将系统参数设为变量,在评价函数编辑器中定义性能标准来改进设计。这个过程会对设计产生巨大的影响,所以选择合适的变量和标准非常重要。序列模式和非序列模式中可用的标准类型有所不同。本文为非序列系统的优化提供了一种建议方式。

例如,通过优化自由曲面反射镜,最大限度地将LED的亮度从23 Cd提高到大于250 Cd,只需几分钟。

阻尼最小二乘法与正交下降法对比

OpticStudio中有两种局部优化算法:阻尼最小二乘法(DLS)正交下降法(OD)。DLS运用数值微分计算,在一个较小的评价函数设计的解空间里确定优化方向。这种梯度方法是为光学系统设计专门开发的,被推荐用于所有成像和经典光学优化问题。然而,在纯非序列系统优化中,由于采用像素探测器进行探测,DLS的优化效果较差。并且评价函数本身是不连续的,这也可能导致梯度搜寻方法失败。

下面是当评价函数只有一个变量时,对非序列系统的评价函数进行查看。

可以看出,很长一段区间内评价函数根本没有变化,发生的变化是突然且不连续的。这使得通过梯度搜寻方法进行优化变得困难。

正交下降优化利用变量的正交化和解空间的离散采样来降低评价函数值。OD算法不计算评价函数的数值微分。对于评价函数存在原本噪声的系统而言,例如非序列系统,OD通常比DLS算法要好。它在照度最大化、亮度增强和均匀性优化等优化问题中非常有用。

像素插值和非相干强度数据(NSDD)

除了使用的特定算法外,OpticStudio中还有几个能够显著提升非序列系统优化效率的功能。

如上所述,由于探测器的像素特性,非序列的解空间往往是不连续的。如果一条给定光线中的能量只分配给一个像素,那么当系统更改导致光线在该像素内的任何位置移动时,就没有数量上的差异。因此,当一条光线跨越边界进入一个新的像素时就需要对不连续的评价函数求微分,优化非常困难。

这可以通过观察入射到探测器上的一条光线来说明。下面的通用绘图显示了探测器上的辐照度质心如何随着光线位置的变化而变化。

Universal_plot

避免由像素探测器引起的量化效应的一种方法是使用像素插值。不是将100%的光线能量分配给单个被击中的像素,而是根据光线在像素内的截距位置将一部分能量分配给相邻像素。因此,当系统变化导致光线在像素上移动时,评价函数会发生明显的变化。可以在探测器的物体属性(Object Properties)>类型(Type)中启用像素插值。

Non-sequential_component_editor

如果我们在启用了像素插值的探测器上扫描一条光线,会发现辐照度质心,以及大多数标准值的变化都会是连续的,并且可以很容易地使用DLS。

Universal_plot_2

可以利用优化操作数NSDD计算评价函数中所述的辐照度质心。NSDD代表非序列非相干强度数据,是读取非相干探测器数据最有效的操作数。NSDC等效于相干计算。NSDD操作数的语法如下:

NSDD  Surf  Det#  Pix#  Data  #Ignored

  • Surf 定义非序列组的面序号(在纯非序列模式中为1);
  • Det# 定义所需的探测器的编号(也可以用于清除一个或所有探测器数据);
  • Pix# 定义要返回的指定像素上的数值,Data定义是否返回入射通量、辐照度或强度数据;
  • #Ignored 定义要忽略的边缘像素数量。

这些参数允许优化许多标准值:最小光斑大小(最小均方根空间宽度)、最大能量(总光通量)、空间均匀性(所有像素的标准差)、准直度(最小均方根角宽度)等等。有关NSDD功能的详细描述,请参见OpticStudio帮助文件部分:优化选项卡(The Optimize Tab)(序列模式界面)>自动优化组(Automatic Optimization Group)>评价函数编辑器(Merit Function Editor)(自动优化组)>按类别优化操作数(Optimization Operands by Category)>非序列光线追迹和探测器操作数(Non-Sequential Ray Tracing and Detector Operands)

系统设置

发光二极管(LEDs)是应用广泛的重要光源。在汽车照明和显示照明等领域,经常需要通过添加辅助光学元件来改变LED光源的发光强度,从而提高LED的亮度。

我们将从实际LED光源的测量数据开始。有关如何建立LED模型的更多细节,请参阅本文。现在,我们所需要知道的是,径向光源(Source Radial)被用来输入测量到的功率,作为角度的函数。测量到的单色光源总输出功率为27 lm,峰值波长为627 nm。如果不熟悉如何输入此数据,请参阅文章"如何创建一个简单的非序列系统 " 。光源采用Sobol采样 ,用最少的光线获得最佳信噪比。

系统资源管理器(System Explorer)下,我们将系统单位(Units)设置如下:

System_explorer

LED的光通量是以流明为单位来测量的,所以我们选择该单位进行模拟。因此光照度单位为lm/m2或Lux。发光强度(“亮度”)是用lm/sr(流明/立体角)或 Cd(坎德拉)来计量的。亮度用lm/m2/sr或Cd/m2来计量,有时也称为nit(尼特)。系统初始设置如下:

3D_layout

 LED光源将光线射向一面平面镜,然后照亮探测器表面。这个文件可以从本文顶部的示例文件链接处下载。可以看到探测器上的空间分布和角度分布如下图:

Detector_viewer

从图中可以看出,由于LED发出的光线在反射镜上有轻微的溢出,所以空间分布和角度分布略有不对称。这是为了给设计增加一点复杂性而有意为之。

       从发光强度图中可以看出,41 Cd左右的峰值亮度发生在极角为27°左右时。近似垂直于探测器表面的光线只有23 Cd的发光强度(将在下面讨论如何得到这个数字)。这样的轮廓对于车前灯照明系统或投影机照明系统来说并不好。一般情况下,我们希望低角度时的光亮度尽可能高,这样光源就可以投射到远处。

       现在,我们将优化反射镜的形状,使轴上的亮度最高。为此,我们必须执行以下步骤:

      1  定义一个可表达我们想要达到的目标的评价函数。

      2  定义反射镜表面将如何变化。

      3  运行优化。

评价函数

根据设计是否能很好地满足其指定的工作性能,使用评价函数来定义光学设计的“质量”。在这种情况下,我们想要在零度角下得到最大的光亮度(发光强度),这可以通过操作数NSDD和NSTR很容易地实现。在本设计中,探测器为物体 3,我们想要得到在0°下的发光强度。探测器查看器(Detector Viewer)如下所示。

Detector_viewer_2

 这张图显示了光线从x和y轴的-90°到+90°入射到探测器上光线的角度范围。没有光线的角度超过35°,因为LED没有超过这个角度发射。峰值强度出现在27°左右。我们感兴趣的是接近0°的光功率。针对这样的分布有两个标准:RMS角宽度和质心发光强度。设置RMS角宽度是要获得准直光线(即具有相同入射角的光线),质心目标是使入射角为零。下面的评价函数可看到这个角度下的发光强度。

Merit_function_editor

第一个NSDD操作数读取探测器物体0,该物体不存在;没有物体0可以存在。这是此操作数的一个特殊用法: 在OpticStudio中用于清除所有探测器。另外,可以通过定义一个负数(例如:Det# = -3,只清除探测器3)来清除单一探测器。这在定义了多个探测器的系统中非常有用。

接下来,操作数NSTR告诉OpticStudio去完成光线追迹。第二和第三个操作数NSDD读出探测器物体3,质心x和y (Pix# = -6, -7),数据项2,即功率/单位立体角。注意,我们的目标是质心发光强度(角度),而不是质心照度(空间)。第四个操作数NSDD读取所有像素数据的RMS角宽度。此外,最后一个操作数NSDD读取了中心像素(5101)的强度,以便进行比较;注意,没有分配权重,操作数就不会对评价函数有贡献。这个值大约是23 Cd。

最后一个NSDD操作数与一个OPGT操作数相结合,以保持探测器上的最小光通量。我们把这个设为25,因为这是探测器上的初始光通量。如果这个操作数不存在,那么完全移除反射镜就有可能使评价函数值为0!如果没有能量落在探测器上,质心强度和RMS半径为零,这就是我们的目标。这个“解”强调了定义良好的评价函数的重要性。在优化过程中,OpticStudio将尝试将评价函数变为零,而不管这在系统中的物理意义。

自由曲面反射镜

自由曲面通常被描述为多个低阶多项式,如样条曲线或贝塞尔曲线。它们通常用来描述涡轮叶片、车身和船壳等形状。

然而,在光学系统设计时,保留基本圆锥曲线部分的概念,并使该部分向自由曲面形式偏离,是非常有助于设计的。原因很快就会揭晓。我们将使用扩展多项式面(Extended Polynomial Surface)物体,这个表面可由以下形式的方程描述:

 

Equation

 

第一项是光学设计中所钟爱的标准圆锥非球面,用于设计球面、椭圆、抛物面、双曲面、反射面等等。第二项表示从该表面出发的一系列越来越高阶的多项式形变。多项式是x和y的幂级数,第一项是x,然后是y,接着是x*x, x*y, y*y等。有2个1阶项,3 个2阶项,4个3阶项,以此类推。最高阶为20,由此可创建最多230个多项式非球面系数。位置值x和y除以归一化半径得到的多项式系数是无量纲的。在本设计中,多项式的最大阶数限制在20项以内,因此最大的自由曲面偏差为x0y5和x5y0。在实际设计中这既不是必要的也不是建议的,只是在设计过程中可供选择而已。

现在,如果我们使用全局绘图,可以在扫描反射镜曲率半径时显示中心像素强度。

Universal_plot_3     Universal_plot_4

这张图说明了优化非序列系统的困难,以及定义良好的评价函数的必要性。如果我们看一下整体的评价函数值与曲率半径的关系,就能明白为什么质心和均方根半径是更好的优化目标。

Line_merit     Universal_plot_5

现在我们的评价函数正确地定义了设计标准,我们将使用局部和全局优化算法进行优化,对比DLS和OD的优化结果。

优化

OpticStudio包含两个“全局”优化例程,用于搜索更大的解空间区域。全局优化算法采用基因演算法优化、多起点计算和局部优化相结合的方法,能够有效地搜索到低评价函数区域的多维参数空间。锤形(Hammer)优化器也使用基因演算法和局部优化器,一旦全局搜索找到一个有希望的参数空间区域,就会对设计进行全面的优化。

评价函数的初始值为14.8,0°时的亮度为23Cd。

Detector_viewer_3

我们先使用DLS使用局部搜索例程(Optimize > Optimize!),并将其与使用OD算法的优化结果进行比较。最终的锤形优化将在这两种情况下执行。

我们的评价函数和起始系统已经定义好了,剩下的唯一步骤就是分配变量。我们有22个变量:曲率半径、圆锥系数和20个多项式系数。分配这些参数变量状态,并使用带有自动循环数的DLS算法启动局部优化器。

优化了一段时间后(约4.4分钟),OpticStudio找到了解。评价函数降到了大约6.69,中心像素亮度为238 Cd。此次优化说明使用像素插值和定义良好的评价函数,即使是DLS算法也可以在非序列解空间中有效地工作。

用一个新名称保存结果文件以便进行比较,然后再次打开起始文件。这一次,分配所有22个变量并使用OD算法进行优化。根据前面对两种局部优化算法的比较,我们可以期望这种优化能够更快地进行,并得到更好的解。在这种情况下,此优化比DLS运行时间稍长(约6.5分钟),但得到了更小的评价函数值(6.68)。

为了测试我们得到的是一个可信的最优解,而不是陷入一个较高的局部最小值,我们将运行锤形优化器来优化这两个系统。下表整理的结果表明,DLS优化得到了一定的改善,但中心像素亮度仍低于OD算法优化得到的像素亮度;进一步说明了这两个局部优化例程的强大功能。在这些测试中使用的机器拥有英特尔四核CPU (2.90 GHz)和16GB运行内存:

算法 评价函数值 轴上亮度(Cd) 优化时间
DLS 6.69 238 4.4 min
Hammer (DLS) 6.68 24 30 min
OD 6.68 254 6.5 min
Hammer (OD) 6.68 254 30 min


初始辐照度和辐射强度分布,以及使用DLS和OD算法优化的系统如下图所示。

起始系统:

Starting Point

DLS 优化:

DLS Optimization

OD 优化:

OD Optimization

结果表明,两种优化方法得到的解相似。但值得注意的是,虽然OD算法的优化时间比DLS稍长,但所获得的性能优于DLS优化和30分钟锤形优化。事实上,优化一个包含22个变量和几个不同照度目标的系统只需要几分钟!我们已经在短时间内从一个平面镜得到一个完全优化的解决方案,之后将需要我们进行公差分析和生成系统的图纸。对具有相同数量变量的序列系统均方根半径进行优化需要同样的时间。这个例子清楚地说明了OD算法在优化非序列系统时的效率。在本文顶部的示例文件链接中,您可以找到OD优化文件。

请记住,我们从未直接针对中心像素亮度进行优化,而是优化均方根半径和质心位置。我们总是可以对这个标准施加有限的权重,但是均方根半径很可能因此而增加。您会发现,如果您的目标是中心像素强度而不是照明二阶矩,那么系统性能会明显变差。

参考资料

1. Video Tutorial: Optimization – Illumination System Design

KA-01591

这篇文章有帮助吗?
24 人中有 23 人觉得有帮助

评论

0 条评论

文章评论已关闭。