假設我有一個優化問題來解決使用R
,optimx
。有什麼辦法可以隨時間提取參數和目標函數值嗎?是否有任何方法來提取R optimx中的每次迭代的參數和目標函數
f<-function(x){
return(sum(abs(x)))
}
gr<-function(x){
return(sign(x))
}
opt=optimx::optimx(runif(2),f,gr,method="BFGS")
的目標是努力讓這樣的情節:
我認爲我們可以手動梯度下降與下面的代碼做到這一點,但我我該怎麼辦它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)
有趣的情節,真的對我很有幫助。這種方法存在一個問題,我們不知道如何分配'log'變量,因爲工具箱使用的迭代次數不確定嗎? – hxd1011
我們可以做出合理的估計。如果估計值太小,請重試更大的估計值。迭代次數限制爲100次,因此即使對於大多數有問題的擬合,n = 1000也應該足夠。 – Roland