算法"/>
[optimization]Dogleg Method狗腿算法
实现信赖域框架下的狗腿算法,matlab代码:
function [x_opt, y] = dogLeg()% init
x = [10 * rand(1), 10 * rand(1)]';
nIter = 100;
delta = 2;
x_iter = zeros(nIter, 2);
h = zeros(nIter, 1);
y = zeros(nIter, 1);
% iteration
for i = 1 : nIterif sum(abs(g(x))) < 0.0001breakend% unconstrained minpU = -g(x)' * g(x) * g(x) / (g(x)' * B(x) * g(x));% full steppB = -B(x)^-1 * g(x);if pB' * pB > delta * deltat = sqrt( ( delta * delta - pU' * pU ) / ((pB - pU)' * (pB - pU)) ) + 1;if t < 1 pk = t * pU;elsepk = pU + (t - 1) * (pB - pU);endelse % pB' * pB <= deltapk = pB;end% update trust region% reduction ratio r = ( f(x) - f(x + pk) ) / ( m(x,zeros(2,1)) - m(x,pk) );if r &l
更多推荐
[optimization]Dogleg Method狗腿算法
发布评论