应用气象学报  2011, 22 (5): 584-589   PDF    
Nelder-Mead单纯形算法改进及在气象上的应用
张正秋     
中国气象科学研究院,北京 100081
摘要: Nelder-Mead Simplex (NMS) 算法是一种查找多元函数局地最小值的无微分算法,在现代科学计算中得到广泛应用,该文提出了一种对NMS算法的改进方法。改进后,大大简化了其计算过程,提高了该算法的收敛速度。利用改进后的算法对陆面过程参数进行了拟合计算,结果表明:改进的NMS算法对非线性公式具有非常高的拟合精度,可将其应用于气象学上非线性问题计算或非线性方程组求解。
关键词: NMS算法    改进    无微分    气象学    非线性应用    
Improvement on the Nelder-Mead Simplex Algorithm and Its Application to Meteorology
Zhang Zhengqiu     
Chinese Academy of Meteorological Sciences, Beijing 100081
Abstract: Owing to computers providing great advantage in iterative calculation, the non-derivative algorithms have great potential applications to scientific research. Nelder-Mead Simplex (NMS) algorithm is a technique for minimizing an objective function in a multiple-dimensional space without differentiation, proposed by Nelder and Mead (1965). As a simple non-derivative technique, NMS algorithm is widely introduced in many computational books and used in numerical computations, and Matlab implements this algorithm for instance. Unfortunately, the method has some disadvantages such as slow converging and low precision, which need to be improved. Meteorological problems, usually nonlinear, are very complicated to solve, which require nonlinear fittings, solving the relationships between different meteorological variables, determining parameters in empirical formulas, solving the system of nonlinear equations and so forth. Conventionally, nonlinear problems are usually transformed into linear ones to solve, but this is not always practical. Fortunately the non-derivative algorithm could do this work, and an introduction to the application of the NMS algorithm to meteorological computations could be beneficial for meteorological community. An improvement on the NMS algorithm is proposed. To avoid the problems existing in the original NM simplex algorithm, a constraint is introduced to obtain next iterative point rather than finding the points of reflection, expansion, contraction and shrink, similar to that in the Powell's Method or in the Steepest Gradient algorithm. However, the searching direction is still along the downhill direction, i.e., the direction along the segment line between the vertex with the greatest functional value and the gravity center point. By introduction of the constraint, the multi-variable function will be transformed into a function with one variable, i.e., the constraint, which can be solved by the algorithms to calculate the minimum of a function with one variable, such as the Golden Section Search, Fibonacci Search and so forth. This approach will still keep the calculation without differentiation. After the improvement, the computation is greatly simplified, and its convergence will be accelerated. Some possible applications of the NMS algorithm to meteorology are also introduced, and it's also described how to implement the algorithm in fitting parameters in empirical formulas and solving the system of nonlinear equations. To testify this improvement, fitting experiments to some parameters in land surface process are made using the modified algorithm. Relationships between zero plane displacement and leaf area index (ILA) and between aerodynamic resistance and ILA at ground surface are calculated using the Least Square Method and the NMS algorithm to determine parameters. Experimental results show that the proposed algorithm have very high precision when fitting nonlinear formulas, therefore it can be used in computations for solving nonlinear issues or the system of nonlinear equations.
Key words: NMS algorithm     improvement     non-derivative     meteorology     nonlinear application    
引言

在现代科学计算中,求非线性方程或极值问题是非常复杂的工作,传统的求解非线性问题通常是先将其转换成线性问题,然后解析求解,或者采用迭代计算,如Newton-Raphson算法、最陡梯度算法[1-2],但在计算中需要进行微分计算,或者说,需要计算函数的导数,然而,实际中有很多非线性方程无法进行微分计算,因此无法采用传统的微分算法求解。幸运的是,采用无微分算法可以克服这种困难。

目前,有很多无需进行微分就可以对非线性方程或极值求解的算法,如Nelder-Mead Simplex算法 (或称为NMS算法),Taxi Cab算法,Powell算法等[3-4]。这些算法的共同点是,通过迭代计算求解,很容易在计算机上实现,为解非线性问题提供了极大方便。这需要考虑两个问题:一是计算速度,二是计算精度。如果这两个方面都达到最优,则计算方案最佳。但很多无微分算法都存在某方面的缺陷,仍然需要做进一步改进。

Nelder-Mead单纯算法作为一种简单的无微分极值算法,在数值计算中得到了广泛应用,如在Matlab中使用了这种算法[5],但这种算法存在一定不足,如收敛速度慢,计算精度不高,也需要进行改进。

在气象科学研究中,需要进行各种计算,如通过非线性曲线拟合寻找各个气象要素变量之间的关系[6-7];根据观测资料建立经验公式,并确定其中的参数[8-9];解非线性方程组[10]等,这些计算非常复杂,很多问题是非线性的,很难使用传统的计算方法求解。传统上,很多气象物理方程的求解,需要对方程进行微分计算,这限制了一些问题的求解,而现代无微分算法则可以克服这方面的不足。为此,本文基于对NMS算法的改进,作为一个此类算法的应用实例,为气象科学计算提出一种新的思路。

1 对NMS算法的改进方法 1.1 NMS算法

Nelder-Mead单纯形算法是Nelder等[11]提出的一种犹如下山一样查找一个函数的局部最小值点的方法,其中函数变量可以是多元的。关于NMS算法的详细介绍可参见文献[4, 11]。

在几何上,单纯形或者N-单纯形是和三角形类似的N维几何体。精确地说,单纯形是某个N维以上的欧几里空间中的N+1个仿射无关的点的集合的凸包。例如,0-单纯形就是点,1-单纯形就是线段,2-单纯形就是三角形,3-单纯形就是四面体,…,如此类推,N-单纯形就是N+1面体。

NMS算法是使用单纯形的思想,对于N维空间可以构成N+1顶点的多面体。亦即对于拥有N个变量的函数,可以构成N+1个点。

在计算开始时,先计算出每个点的函数值,查找出最大值的点 (G) 和最小值的点 (S),再计算除G点外的其他点的中点 (M,一般取平均),在GM连线方向上,计算G的反射点、扩展点、压缩点。若没有找到这些点,则在GS的线段上计算一个收缩点若在这些点中,存在一个最佳点,则使用这个点作为一个新的有效点,替代G点,重现构成一个新的N+1多面体。如此进行,直到找到函数的最小值点。

从NMS算法的计算过程可知,NMS算法计算较繁琐,需要进行各种判别,计算精度不高,收敛较慢。在计算这些点时,因为线段长度固定,很容易陷于局部收敛,出现计算早熟,这很像遗传算法中出现的早熟现象。

目前,有很多人提出了对NMS算法的改进方案[12-14],但没有从根本上解决NMS算法的收敛问题。

1.2 改进算法

为了避免原有NMS算法中存在的问题,可以将此算法中的反射点、扩展点、压缩点以及收缩点的计算转化成使用适应参数计算最佳点的方法,这与最陡梯度算法和Powell算法中计算下一个迭代点的方法相同,但此时查找最小值点的方向为NMS算法的下山方向,即最大值的点G与中点M的连线方向 (图 1)。

图 1. 改进的NMS下山方向设置示意图 Fig 1. Searching direction setting for the improved NMS

这种设置方向类似于梯度方向,但梯度算法中需要分别对每个变量计算偏导数。

对于一个拥有N个变量的函数,可以构成一个有N+1个顶点的单纯形,其中点坐标可以表示为

(1)

式 (1) 中, i为顶点索引号,k为函数中变量的索引号,m为中点索引号,g为最大函数值所在点的索引号。从最大函数值的坐标点G至中点M的方向向量可以表示为

(2)

式 (2) 中, fM为中点M的函数值,fG为顶点G的函数值。

计算下山方向向量后, 设置一个适应参数α,结合G和向量Ek,可以是用线性插值方法计算出下一个迭代点, 用它来替代原来NMS算法中的反射点、扩展点、压缩点或收缩点。

(3)

将式 (3) 代入到极值函数中,则可以得到一个以α为自变量的函数f (α)。计算此函数取极值时的α,然后,再一次将α代入式 (3),则可以得到迭代点坐标。重复此计算,直到查找到极值点为止。判别极值终止的一般方法是,先计算这N+1个顶点的函数值的均方差,然后与一个事先给定的误差值进行比较,若小于此误差值,则迭代终止,否则继续进行迭代。

可以使用单元函数极值的无微分算法来计算α。这种算法有很多,如黄金分割搜寻法、斐波那契搜寻法等,因此,改进后的NMS算法仍然为一种无微分算法。

这种引用适应参数计算下一个迭代点的方法,与Powell算法中的相同,但搜索极值点的方向不相同。本改进算法的搜索方向是准梯度方向,而Powell算法的搜索方向是先依次沿着已知的N个共轭方向搜索,得一个最佳点,然后沿着本轮迭代的初始点与该最佳点连线方向进行搜索,求得这一阶段的最佳点。再用最后的搜索方向取代前N个方向之一,开始下一阶段的迭代。由此可见,与Powell算法相比,本改进算法搜索过程较简便。

2 NMS算法在气象科学研究中的应用

NMS算法作为一种无微分算法,可以应用于气象上的非线性问题的计算。在传统的数值计算中,通常是将非线性方程转化为线性方程,然后进行求解。然而,实际问题中的非线性方程式是多样的,不易求解,此时可以采用无微分极值算法来完成此项工作。

2.1 使用NMS算法进行非线性曲线拟合

曲线拟合是气象上经常要做的工作。例如,对气象观测资料的时间或空间变化曲线进行拟合,得到一个经验公式[8],用于数值模式中。通常这些曲线不能使用线性公式拟合,否则所得到的经验公式不能准确地描述实际物理量变化。同样,如果采用有限的、可以转换成线性公式或非线性公式,如指数公式等,也可能达不到实际要求。因此,可以根据需要设定拟合公式模型,然后确定其中的系数。

使用NMS算法进行非线性曲线拟合的具体方法:① 根据实际观测资料的变化规律,给定一个经验拟合公式模型 (可以根据需要给定),例如, z=f(a, b, c, x, y),其中f是一个具体的表达式。② 设计最小二乘法计算式:

(4)

式 (4) 中, xi, yizi分别为观测数据,N为观测资料的组数。③ 使用NMS算法计算函数式 (4) 最小值,确定其中的系数,即可以得到所需要经验拟合公式。

可以看出,使用类似于NMS算法的无微分算法进行非线性曲线拟合,不需要像传统拟合方法那样,求解线性方程组。不仅设定拟合公式有一定的自由性,而且算法非常简单。另外,也可以使用Matlab进行曲线拟合计算。

2.2 使用NMS算法求解非线性方程组

无论是线性还是非线性方程组,其中不包括微分方程组,都可以使用无微分求极值的算法进行求解。例如,对于气象学上的非线性动力、化学方程组[10, 15],可以使用NMS算法,或其他求解无微分极值的方法计算。

对于下面的一个方程组:

(5)

δ1=f12(…),δ2=f22(…),δ3=f32(…),δ4=f42(…),并构造以下函数:

(6)

δ1=δ2=δ3=δ4=0时,以上函数达到最小值零,此时的解也是式 (5) 的解。也就是说,求解方程组 (5) 可以转换成计算函数式 (6) 的极值。这样,就可以使用NMS算法求解非线性方程组。

在现有的气象数值模式中,涉及到很多方程组求解计算。基于以上方法,可以直接使用无微分极值算法,求解气象动力学方程组。例如,用NMS算法代替牛顿迭代法。

3 使用改进的NMS算法进行曲线拟合的数值试验

为了获得气象物理量变化的经验公式,需要对气象观测资料进行曲线拟合,在数值模式计算中,也需要进行曲线拟合。在数值计算中,如果某个计算公式非常复杂,需要花费大量计算时间,此时可以对它的计算结果进行拟合,以提高计算效率。当然,也可以使用查表的形式来提高计算效率,如概率统计中的t-函数表。

3.1 改进的NMS算法单纯形的初始化

单纯形初始化对优化计算结果有一定影响,有很多关于如何确定这种初始值的研究[16]。合理地给出初始值,可以提高函数收敛速度,并避免计算结果局地收敛的发生。

在使用改进的NMS算法或原NMS算法计算时,有两种类型的初始值需要设定,一是变量的初值,二是单纯形顶点的初值。对于变量的初值,也是迭代求解的初值。这种初值一般是猜想值,根据实际情况,应合理地给出估计值,然后根据这个初值进行迭代求解。

对于单纯形顶点,由于顶点不能重合,因此初始值不能相同。一般是将初始单纯形的顶点在空间上看成是均匀分布的,即各个顶点之间的距离是相等的。

如何构建在空间上具有均匀分布顶点的多面体,对于N个变量,假定所对应的单纯形N+1个顶点的单位向量为

(7)

式 (7) 中,a为待定常数。从式 (7) 可以看出,当j, k≠0时,;而当j≠0时,|vj-v0|=(1-2a+N·a2)1/2。也就是说,除了v0外,其余的点之间的距离都是相等的。如果令 (1-2a+N·a2)1/2=,则所有这些点之间的距离均相等。

通过解方程,可以得到

(8)

如果通过空间平移,将v0变成v0=(0, 0, …, 0),并对顶点单位标准化,则可以得到初始单纯形的N+1个顶点的标准单位向量:

(9)

式 (9) 中,

设由初始变量值构成的一个空间点为X0=(x1, x2, …, xN),每维空间上的步长都为s,则可以构成单纯形N+1个顶点的初始坐标,即

(10)
3.2 使用改进的NMS算法对陆面过程中的一些阻力系数的曲线拟合

对陆面过程中的一些参数,如零平面位移 (D0)、地面与冠层空隙空气之间的空气动力阻 (Rd) 等所表示的是植被类型、植被高度和叶面积指数 (ILA) 的函数,计算过程非常复杂[17-18]。在早期的SSiB陆面过程模式中,由于ILA取值不是连续的,D0Rd的值是通过一个查找表获得。如果ILA的值是连续变化的,D0Rd的值可以使用一个经验拟合公式来表示。

为了验证改进的NMS算法计算能力,这里先根据原始的、计算近地面参数D0Rd的函数,对于某种特定植被类型,通过改变不同的植被高度、叶面积指数,生成用于曲线拟合的数据,其中Bayesian函数的计算可以借用一些软件中 (如Microsoft Visual Fortran等) 提供的IMSL函数库。

图 2显示的是对于热带阔叶林关于地面零平面位移D0和空气阻力原始计算数据点及其拟合曲线。在本示例中,分别取植被高度Z2=4 m,Z2=20 m和Z2=35 m,并按线性等间隔取ILA的值,由原始的计算D0Rd计算公式,得到原始数据点,由图中的点表示。在进行曲线拟合之前,绘制原始数据点,通过原始数据的变化情况,合理地设计拟合D0Rd的数学模型,分别设置为

(11)
(12)
图 2. 阔叶林近地面参数曲线拟合结果 (a) 零平面位移D0, (b) 空气动力阻力Rd Fig 2. Simulations on the variations of ground parameters for the broad leaf tree (a) zero plane displacement D0, (b) aerodynamic resistance Rd

式 (11) 和 (12) 中, c1, …, c7b1, …, b7分别代表拟合D0Rd变化曲线的经验公式中的系数。利用式 (4) 和改进的NMS算法,可以确定这些系数 (具体数值略),从而可以得到D0Rd计算的经验公式。再通过拟合的经验公式,可以绘制如图 2中所示的拟合曲线,由图 2中的光滑曲线表示。

在实际应用中,拟合方程中参数一般是通过物理试验来确定的,所要做的是根据这些参数查找一个经验公式,确定经验公式的系数。系数的个数根据曲线拟合情况而定。所选系数个数的原则是拟合曲线与原始点越吻合越好。

从设计的计算D0Rd的数学模型可以看出,这两个公式的结构是非线性的,很难转化为线性的计算公式来求解线性方程组。而使用极值算法,如NMS算法和改进的NMS算法,可容易确定其中的系数。从图 2可以看出,D0Rd对植被高度和ILA变化的拟合曲线与原始的数据点变化十分接近,说明使用改进的NMS算法能够很好地对本示例中D0Rd的变化进行拟合。

本示例说明了如何使用改进的NMS算法对非线性变化曲线进行拟合计算。也可以采用类似计算步骤,使用其他的极值算法,如现代遗传算法、模拟退火算法和蚁群算法等,进行非线性变化曲线拟合。

4 小结

NMS算法是一种不需求解微分、可以查找多元函数最小值点坐标的技术,在数值计算中,得到了广泛应用,也可以在气象科学研究领域中得到应用。但它存在一些缺点,如收敛速度较慢、容易产生局地收敛等。为此,本文提出了一种对NMS算法改进的方法。在改进的计算方案中,最小值点的搜索方向仍然为原NMS算法的搜索方向,但通过引入适应参数α,来计算一个新顶点,用于替换单纯形多面体中具有最大函数值的顶点。这种计算方法与最陡梯度算法和Powell算法中确定下一迭代点的方法相同。

改进的NMS算法与Powell算法有一定相似性,但它们搜索最小值点的方向不同。通过比较可以看出,改进的NMS算法搜索过程简单,因而搜索路径快捷。

无微分极值算法有很多种,NMS算法只是其中的一种。本文以NMS算法为例,简要介绍了在气象上如何使用无微分极值算法进行非线性曲线拟合,以及如何使用它来求解非线性方程组。本文还介绍了如何对单纯形计算进行初始化。

为了检验改进后NMS算法的计算能力,以及说明具体使用无微分极值算法进行曲线拟合,本文以陆面过程中的参数为例,对热带阔叶林地面零平面位移和空气阻力参数进行了经验曲线拟合,结果表明,改进的NMS算法具有较高的非线性曲线拟合能力。

参考文献
[1] Mordecai Avriel. Nonlinear Programming, Analysis and Methods. New Jersey: Prentice-Hall Inc, 1976.
[2] William H P, Saul A T, William T V, et al. Numerical Recipes 3rd Edition: The Art of Scientific Computing, Chapter 9. Cambridge: Cambridge University Press, 2007.
[3] Powell M J D. A method for minimizing a sum of squares of non-linear functions without calculating derivatives. Computer Journal, 1965, 7: 303–307. DOI:10.1093/comjnl/7.4.303
[4] Brent R P. Algorithms for Minimization Without Derivatives, Chapter 7. Dover, 2002.
[5] Mathews J H, Kurtis K F. Numerical Methods Using Matlab, 4th Edition. New Jersey: Prentice-Hall Inc, 2004.
[6] 钟爱华, 严华生, 李跃清, 等. 青藏高原积雪异常与大气环流异常间关系分析. 应用气象学报, 2010, 21, (1): 37–46. DOI:10.11898/1001-7313.20100105
[7] 郑栋, 张义军, 孟青, 等. 北京地区雷暴过程闪电与地面降水的相关关系. 应用气象学报, 2010, 21, (3): 287–297. DOI:10.11898/1001-7313.20100304
[8] 陈正洪, 王海军, 张小丽. 水文学中雨强公式参数求解的一种最优化方法. 应用气象学报, 2007, 18, (2): 237–241. DOI:10.11898/1001-7313.20070240
[9] 窦贤康, AmayeP. 机载雷达定量测雨中雨滴谱参数的优化. 应用气象学报, 1999, 10, (3): 293–298.
[10] 曾庆存. 数值天气预报的数学物理基础 (第一卷). 北京: 科学出版社, 1979.
[11] Nelder J A, Mead R. A simplex method for function minimization. Computer Journal, 1965, 7: 308–313. DOI:10.1093/comjnl/7.4.308
[12] Tomick J, Arnold S F, Barton R R. Sample Size Selection for Improved Nelder-Mead Performance. 1995 Winter Simulation Conference (WSC'95), 1995: 341–345.
[13] Russell R B, John S I Jr. Nelder-Mead Simplex Modifications for Simulation Optimization. Management Science, 1996, 42, (7): 954–973. DOI:10.1287/mnsc.42.7.954
[14] David G H, James R W. A revised simplex search procedure for stochastic simulation response surface optimization. Informs Journal on Computing, 2000, 12, (4): 272–283. DOI:10.1287/ijoc.12.4.272.11879
[15] 王体健, 李宗恺. 不同方案求解非线性化学动力方程组的比较. 应用气象学报, 1996, 7, (4): 466–472.
[16] Yarbro L A, Stanley N D. Selection and preprocessing of factors for simplex optimization. Analytica Chimica Acta, 1974, 73: 391–398. DOI:10.1016/S0003-2670(01)85476-3
[17] Xue Y, Sellers P J, Kinter J L Ⅲ, et al. A simplified biosphere model for global climate studies. J Climate, 1991, 4: 345–364. DOI:10.1175/1520-0442(1991)004<0345:ASBMFG>2.0.CO;2
[18] Sellers P J, Randall D A, Collatz G J, et al. A revised land surface parameterization (SiB2) for atmospheric GCMs. Part Ⅰ: Model formulation. J Climate, 1996, 9: 676–705. DOI:10.1175/1520-0442(1996)009<0676:ARLSPF>2.0.CO;2