Używam symulowanego wyżarzania, zaimplementowanego w pakiecie R. GenSa
(funkcja GenSA
), w celu wyszukania wartości zmiennych wejściowych, które dają "dobre wartości" (w porównaniu do pewnej wartości wyjściowej) wysoce wymiarowa funkcja. Zauważyłem, że ustawienie maksymalnej liczby połączeń funkcji celu nie ma wpływu na czas działania. Czy robię coś złego, czy jest to błąd?Symulowane wyżarzanie w R: czas działania GenSA
Oto modyfikacja przykładu podana w pliku pomocy 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))
Choć max.call
określony jest 10000, GenSA
wywołuje funkcję celu ponad 46.000 razy (Zauważ, że celem jest nazywany w środowisku lokalnym, aby śledzić liczbę połączeń). Ten sam problem wzrasta, gdy próbuje się określić maksymalny czas działania przez max.time
.