Monday, March 31, 2008

常用软件介绍之二:PEST

PEST在这里不是指害虫,而是Parameter ESTimation的缩写。这是S.S. Papadopulos & Associates, Inc.公司做的一个非常强大的用于估计和拟合模型参数的软件(http://www.sspa.com/pest/index.shtml),几乎可以和任何计算机模型配合使用,独立运行,使用者不需要获取或修改原有模型软件的源代码。PEST可以完全控制需要估计参数的模型,并在任意多次运行该模型的同时调整所需要估计的参数直到模型预测结果与实测数据之差的加权平方和达到最小值。

大多数朋友应该都有过估计参数的经验,最简单的线性模型比如标准曲线的拟合以及吸附实验中吸附参数的拟合(Langmuir或Freundlich等吸附曲线都可以转化为线性形式)在Excel或者任何一个类似的有统计功能的表格软件中都可以实现,但是复杂一点的模型,往往就得通过修改源程序,加进去一段参数估计的代码(最常用的一般是Levenberg-Marquardt算法(http://mathworld.wolfram.com/Levenberg-MarquardtMethod.html),CXTFIT和Hydraus1D等软件中使用的都是该算法),将原来的程序作为子程序,并重新编译后才能使用。另外,很多参数估计的软件对于大型复杂的数值模型都表现不够好。

这些缺点,PEST声称都已经克服了(当然了,也不是绝对的,关键还在于使用者对相应的模型软件和工具的熟悉程度)。PEST是通过对原有模型的输入和输出文件来实现对模型的控制和参数估计。这些输入输出文件必须是文本格式的,这是最关键的,如果你不了解所使用的模型软件的输入输出,就无法使用PEST这一强大的工具;如果你的输出文件是其它格式的如某些空间数据的分层数据格式,似乎也无法直接使用PEST。

PEST在很多领域中都有广泛的应用,比如地表水、地下水、流域模型、地球物理、化学、航空、机械工程、生物和土壤科学等。很多商业软件中其实就是把 PEST作为一个模块加进去来进行参数估计和校准,比如VisualModflow中就专门有一个图形界面模块WinPEST(http://www.sspa.com/pest/vipest.shtml)。

PEST曾经是一个卖的很贵的软件,但是目前已经是免费发布了。说PEST是个参数估计的软件其实有点委屈它了,PEST还有很多功能,如 sensitivity analysis等等,感兴趣的朋友可以一一研究。如果觉得在单台PC上运行的太慢的话,PEST还有个并行运算的版本。

对于我来说,目前最重要的是可以把PEST和PHREEQC结合起来使用,估计一些化学反应或填充柱实验中的参数。感兴趣的朋友可以参考Geochemistry, Groundwater and Pollution(第二版)这本书中的 Figure 11.28 Optimize surface complexation constants from laboratory data using PHREEQC and PEST这个例子或者 Appelo, C.A.J., Van der Weiden, M.J.J., Tournassat, C. and Charlet, L., 2002. Surface complexation of ferrous iron and carbonate on ferrihydrite, and the mobilisation of arsenic. Environ. Sci. Technol. 36, 3096-3103这篇文章(http://www.xs4all.nl/~appt/pub/ap_est02.pdf)。

再次重申一遍,前提的前提,是必须对所使用的软件非常熟悉,并且对PEST的控制文件也非常熟悉。

No comments: