有约束的R优化,全局最小值

时间:2019-11-20 03:51:35

标签: optimization constraints global solver minimum

我是R的初学者。我的目标是校准Thornthwaite算法以实现水平衡(水文学),特别是获得径流。我正在尝试复制R中Excel求解器的功能。我将RMSE(包括Thornthwaite算法)作为目标函数。

我必须校准三个参数。第一个必须在0-1之间,第二个必须在0-1之间,第三个必须在50-450之间。

我正在尝试使用optim()函数,问题是它正在寻找局部最小值,而我想要全局。

对于初始值(参数),我正在运行三个参数的随机组合(5000个组合),并使用这些组合寻找最小的RMSE。但是即使这样做,optim仍未找到全局最小值,甚至有时它给了我一个参数组合,这些参数引起的RMSE比“面值”更大,我也不知道为什么。

下面的代码是效果更好的代码,但是如果它与实际最小值不很接近(也不确定parscale是否正确),它仍然不能很好地工作。

optim(c(0.5,0.5,100),RMSE,lower=c(0,0,50),upper=c(1,1,450), method="L-BFGS-B",control=list(maxit=10000,parscale=c(1,1,10)))

欢迎任何帮助:)

0 个答案:

没有答案