我仍然是R的新手,并坚持优化问题。我这里有一个相当普遍的问题。我正在尝试最小化一个函数,比如
function(a,b){2*a^2+b},
使用GenSA功能有两个未知数。每当我尝试运行它时,它会告诉我它无法找到b。现在我想知道是否有可能使用2个未知数的GenSA或者是否更适合不同的功能?如果有人有想法会很棒!
我正在使用的代码用于GenSa函数顺便说一下这样的东西(也用矢量试了但是也没用):
> library(GenSA)
>
> minim<-function(a,b){2*a^2+b}
>
> dimension <- 30
> global.min <- 0
> tol <- 1e-15
>
> lower <- rep(0, dimension)
>
> upper <- rep(30, dimension)
>
>
> out <- GenSA(lower = lower, upper = upper, fn = minim,
> control=list(threshold.stop=global.min+tol,verbose=TRUE))
>
> out[c("value","par","counts")]
答案 0 :(得分:1)
这是二维问题,而不是三维问题。显然不是很令人兴奋,因为算法很容易找到最优解。当然,对于大多数问题并非如此。
> minim<-function(a){2*a[1]^2+a[2]}
> dimension<-2
> global.min <- 0
> tol <- 1e-15
> lower <- rep(0, dimension)
> upper <- rep(30, dimension)
> out <- GenSA(lower = lower, upper = upper, fn = minim,
+ control=list(threshold.stop=global.min+tol,verbose=TRUE))
Initializing par with random data inside bounds
It: 1, obj value: 0
> out[c("value","par","counts")]
$value
[1] 0
$par
[1] 0 0
$counts
[1] 32
>