Ich verwende simuliertes Annealing, wie in Rs Paket GenSa
implementiert (Funktion GenSA
), um nach Werten von Eingangsvariablen zu suchen, die zu "guten Werten" (verglichen mit einigen Basiswerten) von a führen hochdimensionale Funktion. Mir ist aufgefallen, dass die maximale Anzahl der Aufrufe der Zielfunktion keine Auswirkung auf die Laufzeit hat. Mache ich etwas falsch oder ist das ein Fehler?Simuliertes Annealing in R: GENSA Laufzeit
Hier ist eine Modifikation des Beispiels in GenSA
Hilfedatei gegeben.
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))
Auch wenn die max.call
angegeben 10.000 zu sein, GenSA
ruft die Zielfunktion mehr als 46.000 mal (beachten Sie, dass das Ziel in einer lokalen Umgebung um genannt wird die Anzahl der Anrufe zu verfolgen). Das gleiche Problem tritt auf, wenn versucht wird, über max.time
die maximale Laufzeit anzugeben.