今天看到的解释Zemax中两种优化算法的总结,个人觉得不错。
优化使通过改变系统参数值,使评价函数减小,提高系统性能的过程。
在zemax中目前有两种优化算法:Damped Least Square(DLS)和Orthogonal Descent(OD)。
DLS使用数值微商计算来确定更小的评价函数的方向,这种渐变的连续改变评价函数的方式被广泛应用于所有的成像系统的优化当中。
然而在纯非序列优化中,DLS很少起作用,这是因为非序列中的评价数据都是用Detector测试的,detector是由一系列pixel组成的,每个pixel上的值是不连续的,此时DLS的连续渐变评价方法就失效了。OD优化使用变量正交化与pixel离散采样来降低评价函数值。
对于OD算法,zemax给定了几个功能提高对NS(non-sequential) 系统的优化。NS解空间由于detector的pixel量子化而趋于非连续,如果给定光能量分配到仅仅一个pixel内,那么当系统改变引起光线在该pixel内漂移时不会引起量的改变。而一旦此光线穿越pixel边界进入下一个pixel时,便会导致评价函数突然变动成为不连续微商,使得优化变得异常困难。
解决这一问题的方法是pixel插值,它不使光线能量的100%指派给单一pixel,而是根据光线的位置插入pixel把部分能量分配到临近pixel内。这时系统发生改变时,评价函数由于光线穿越pixel移动而发生明显改变。通过 Use Pixel Interpolation来实现插值后,发现这时候使用DLS就方便多了。优化过程中可以使用NSDD和NSDC操作数来计算非相干和相干数据。
问题来了,对于NS系统通过pixel interpolation可以使用DLS优化,那么对于成像系统能不能用OD算法优化呢?答案是肯定的。但一把对于成像系统,OD算法还是有限制的。比如我们拿到一个初始结构,发现像差较大,这个时候就可以用OD。用OD优化到一定程度之后,发现评价函数下降非常慢了,这个时候就有必要改用DLS算法优化了。
DLS算法优化是很难掌握的技巧。DLS优化的实质,就是求解多元方程组,由于方程的数量和变量的数量并不是一致的。一般情况下方程数量比变量多,因此优化就是求解不定方程,使解的均方根最小最稳定。要求最合理的解,就需要对光学系统有很深入的了解,建立的方程(评价函数)之间最好没有冲突,也就是说各个方程约束之间存在线性关系。很多时候不收敛,优化速度慢,就是因为建立的方程之间存在冲突。对于光学系统来说,到底建立怎样的方程组才算是最速下降的最优方案,这个很难,但是我们可以用以下经验来寻求优化:
1、拿到一个初始结构之后,首先用一阶光学和结构要求作为评价函数,进行优化
2、优化进行到一定程度之后,基本光学性能和结构要求都满足了,也就意味着方程组的解已经被限定在一定范围内了。这时候可以降低某些方程的权重,甚至去掉它们,以像质优化和主要矛盾做考虑。
也就是说,光学系统的优化并不是说优化操作数摆越多越好。深入了解系统特性,在优化过程中随时调整评价函数(调整方程之间的线性关系),以加快收敛速度,提高工作效率。
不过据说新版zemax加入了Genetic Algorithm(GA)算法,使得其全局优化的性能更加强悍,期待有人分享。