【发布时间】:2017-01-06 01:41:45
【问题描述】:
我正在尝试最小化一个在概念上类似于此的函数:
minim<-function(a,b,state){
if(state=="TRUE"){out<-2*a^2+b}else{out<-2*a^3-b}
return(out) }
我正在这样调用 GenSA(我希望只优化 a 和 b 而不是优化 state):
upper_limits<-c(10,10)
lower_limits<-c(-10,-10)
params<-c(1,1)
minim<-function(a,b,state){
if(state=="TRUE"){out<-2*a^2+b}else{out<-2*a^3-b}
return(out)
}
minim_state_TRUE_fit<-GenSA(par=params,function(params) minim(params[1],params[2]),
lower=lower_limits, upper=upper_limits,
control=list(max.time=100),state="TRUE")
我得到的错误是:
Error in fn(par, ...) : unused argument (state = "TRUE")
GenSA 应该能够接受将传递给被调用函数的附加参数。由于某种原因,state="TRUE" 似乎没有传递给minim。我编码不正确吗?我找不到GenSA 使用的示例,其中使用附加参数来检查我的 R 语法。
【问题讨论】:
-
请注意,如果调用构造正确,则将状态设置为“TRUE”意味着它应该未通过
stat=="True"的测试 -
啊,好点子。我已在示例代码中修复了该错误。
标签: r function optimization parameter-passing