Я использую имитацию отжига, реализованную в пакете 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))
Несмотря на то, что max.call
указано равным 10 000, GenSA
вызывает целевую функцию более 46 000 раз (обратите внимание, что цель вызывается в локальной среде, чтобы отслеживать количество вызовов). Та же проблема возникает при попытке указать максимальное время работы через max.time
.