zhuangwei的个人博客分享 http://blog.sciencenet.cn/u/zhuangwei

博文

【code分享】 USE R: 参数的全局优化算法

已有 6241 次阅读 2019-5-23 20:04 |个人分类:科研工具|系统分类:科研笔记

Shuffled Complex Evolution (SCE-UA) Method

       SCE-UA, 是一种全局优化算法, 它结合了随机搜索算法、单纯形法、聚类分析及生物竞争演化等多种方法的优势,能有效解决目标函数反映面存在的粗糙、不敏感区及不凸起等问题,并可避免局部最小点的干扰。该方法能够同时优化模型中的多个参数, 是参数优化的有效方法(Duan et al. 1992; 李得勤等, 2013)。 

       SCE-UA 的优化的具体流程详见 Duan et al.,1992)。

       Matlab上有SCE-UA的包,它是一个 efficient and robuse global optimization method, 我用R来运行了SCE-UA的包,发现它确实是比贝叶斯全局优化方法快。

       这里分享的是R里面的rtop包中的SCE-UA使用方法。https://cran.r-project.org/web/packages/rtop/rtop.pdf  中有一个示例 (有修改)。


rtop_sce_ua.R


library(rtop)

Loading required package: sp

Warning messages:

1: package ‘rtop’ was built under R version 3.5.3 

2: package ‘sp’ was built under R version 3.5.2 


# 定义模型函数,这个函数中有一个自变量x。

# 这里的模型函数,可以根据需要,设置成所需要的模型,如蒸散模型、光合模型等等。

# 有三个需要优化的参数: pars[1]  pars[2]   pars[3]

fun = function(x, pars) pars[2]*sin(x*pars[1])+pars[3] 


# 我们自己创造一批观测数据,x是自变量,y是与自变量有关系的观测值。

set.seed(1) 

# generate example data from a function with three parameters 

# with some random noise 

x = rnorm(50, sd = 0.3) 

y = fun(x, pars = c(5, 2, 3)) + rnorm(length(x), sd = 0.3)   # 观测值序列

plot(x,y) 

image.png

# 建立目标函数:使得模拟值与观测值的差的平方和最小。yvals是模拟值,yobs是观测值。

# Objective function, summing up squared differences 

OFUN = function(pars, x, yobs) 

      { yvals = fun(x, pars) sum((yvals-yobs)^2) } 


# 这是进行全局优化的关键,设置参数的范围

sceuares = sceua(OFUN, pars = c(0.1,0.1,0.1),   # 预设的参数优化值

                                        lower = c(-10,0,-10),   # 参数的最低阈值

                                        upper = c(10,10,10),   # 参数的最高阈值

                                        x = x,                           # 自变量

                                        yobs   = y)                   # y的观测值

51 best 62.7 function convergence 200 parameter convergence 6136.001 

82 best 22.6 function convergence 200 parameter convergence 3210.309 

114 best 7.54 function convergence 200 parameter convergence 1697.043 

142 best 6.68 function convergence 200 parameter convergence 957.5426 

170 best 5.36 function convergence 200 parameter convergence 547.8432 

196 best 5.02 function convergence 170 parameter convergence 269.749 

229 best 4.84 function convergence 129 parameter convergence 131.5328 

259 best 4.84 function convergence 43.5 parameter convergence 95.69027 

286 best 4.83 function convergence 32.2 parameter convergence 53.01822 

315 best 4.82 function convergence 10.5 parameter convergence 28.57973 

346 best 4.82 function convergence 4.1 parameter convergence 13.77194 

379 best 4.82 function convergence 0.462 parameter convergence 8.272859 

409 best 4.82 function convergence 0.462 parameter convergence 4.907872 

440 best 4.82 function convergence 0.191 parameter convergence 2.577018 

474 best 4.82 function convergence 0.0499 parameter convergence 1.342339 

499 best 4.82 function convergence 0.00807 parameter convergence 0.8455227 


# 三个参数的优化值:

sceuares$par  

sceuares$par

[1] 5.034405 2.031729 2.991844

# pars[1]=5.034405;  pars[2]= 2.031729 ; pars[3]=2.991844

# 这是我们想要的结果



sceuares                                                          

> sceuares

$`par`

[1] 5.034405 2.031729 2.991844


$value

[1] 4.822434


$convergence

$convergence$`funConvergence`

[1] 0.00807


$convergence$parConvergence

[1] 0.8455227


$counts

[1] 499


$iterations

[1] 16


$timeout

[1] FALSE



xx = seq(min(x), max(x), 0.1) 

lines(xx, fun(xx, pars = sceuares$par))     # 采用优化的参数值模拟的y

image.png

上图中,散点是观测值。曲线是优化参数拟合的模拟值。


       我们可以根据自己的需要定义模型函数、设置参数范围。


参考文献:

https://www.mathworks.com/matlabcentral/fileexchange/7671-shuffled-complex-evolution-sce-ua-method

Duan QY, Sorooshian S, Gupta VK. 1992. Effective and efficient global optimization for conceptual rainfall-runoff models . Water Resourse Research, 28 (4): 1015–1031

李得勤,张述文,段云霞,崔锦. SCE-UA 算法优化土壤湿度方程中参数的性能研究. 大气科学, 201305: 971-982



https://blog.sciencenet.cn/blog-526092-1180758.html

上一篇:ggplot画图时间坐标轴显示英文格式的方法
下一篇:气孔导度单位换算 更正
收藏 IP: 113.69.136.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-20 08:54

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部