DoglegMethod——“狗腿”算法(下)

好吧,樓主經過努力的調試找BUG,終於可以給大家寫這個下篇了,爲了驗證Dogleg算法對於一般的函數也管用,樓主把優化的函數換成了


y = (x1-1)*(x1-2)*(x1-3)*(x1-4) + (x2-1)*(x2-2)*(x2-3)*(x2-4);


然後,很神奇,不論我怎麼調試,結果都是很差很差,而且算法定的方向是原理最小值點的,這讓我非常的困惑。


經過不斷地調試和思考以及查看

………………

………………

………………

終於……


特麼的我發現原來是我梯度函數的+號寫成了*號!


由此告誡諸位,如果結果跟預想差太多……應該就是……代碼細節寫錯了= =!~!


Dogleg算法的收斂速度還是極好的,對於這個函數從[1000,1000]這個量級的點開始搜索只需要迭代20步左右!就可以找到極小值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章