Jeb*_*bus 7 optimization r simulated-annealing
我正在使用模拟退火,如在R的包GenSa(函数GenSA)中实现的那样,来搜索输入变量的值,这些值导致高维函数的"良好值"(与某些基线相比).我注意到设置目标函数的最大调用次数对运行时间没有影响.我做错了什么或这是一个错误?
以下是GenSA帮助文件中给出的示例的修改.
library(GenSA)
Rastrigin <- local({
index <- 0
function(x){
index <<- index + 1
if(index%%1000 == 0){
cat(index, " ")
}
sum(x^2 - 10*cos(2*pi*x)) + 10*length(x)
}
})
set.seed(1234)
dimension <- 1000
lower <- rep(-5.12, dimension)
upper <- rep(5.12, dimension)
out <- GenSA(lower = lower, upper = upper, fn = Rastrigin, control = list(max.call = 10^4))
Run Code Online (Sandbox Code Playgroud)
即使max.call指定为10,000,也要GenSA调用目标函数超过46,000次(请注意,在本地环境中调用目标以跟踪调用次数).尝试指定最大运行时间时,同样的问题也会出现max.time.
这是软件包维护者的答案:
max.call和max.time是软限制,不包括在达到这些限制之前执行的本地搜索。该算法不会在结束之前停止本地搜索策略循环,这可能会超出您设置的限制,但会在最后一次搜索之后停止。我们以这种方式设计了算法,以确保算法不会在搜索谷值的中间停止。这种在任何地方停止的选项将在软件包的下一个版本中实现。
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |