Angenommen, ich habe ein Optimierungsproblem zu lösen mit R
, optimx
. Gibt es eine Möglichkeit, die Parameter und Zielfunktionswerte im Laufe der Zeit zu extrahieren?Gibt es eine Möglichkeit zum Extrahieren von Parametern und Zielfunktion für jede Iteration in R optimx
f<-function(x){
return(sum(abs(x)))
}
gr<-function(x){
return(sign(x))
}
opt=optimx::optimx(runif(2),f,gr,method="BFGS")
Das Ziel versucht, eine solche Handlung zu machen:
Ich denke, wir es manuell mit folgenden Code mit Gradientenverfahren tun können, aber, wie ich kann ich es tun in optimx
?
x=c(0.5,1.5)
alpha=0.1
max_iter=20
x_trace=matrix(rep(0,max_iter*2),ncol=2)
for (i in 1:max_iter){
x=x-alpha*gr(x)
x_trace[i,]=x
}
f_trace=apply(x_trace,1,f)
Interessante Handlung und wirklich hilfreich für mich. Ein Problem mit diesem Ansatz, wir wissen nicht, wie man "log" Variable zuweisen, weil die Anzahl der Iterationen von Toolbox nicht sicher ist, richtig? – hxd1011
Wir können eine angemessene Schätzung machen. Wenn die Schätzung zu klein war, versuchen Sie es mit einer größeren Schätzung. Die Anzahl der Iterationen ist auf 100 begrenzt, also sollte etwas wie n = 1000 selbst für die meisten problematischen Anpassungen ausreichen. – Roland