⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bfgs_min_kier.m

📁 Control optimisation. It is example of use BFGS algorithm to control satellite form Earth atmosphere
💻 M
字号:
% gradient funkcji celu
function [wynik,q_wyniku] = min_kier(x,d,main_x0,main_h0,main_u2,tu2,wskaz)
alfa = 0.5;        % wspolczynnik zwiekszania kroku
maxit = 20;      % maksymalna ilosc iteracji

x0 = x;
df = d;

% warunek na maksymalny krok:
ilosc_ograniczen = 0;
for i = 1:(length(x0)-1)
    if df(i)-df(i+1)>0
        ilosc_ograniczen = ilosc_ograniczen + 1;
        zbior_krokow(ilosc_ograniczen) = (x0(i+1)-x0(i))/(df(i)-df(i+1));
    end
end
if df(1)<0
    ilosc_ograniczen = ilosc_ograniczen + 1;
    zbior_krokow(ilosc_ograniczen) = -(x0(1)/df(1));
end
if ilosc_ograniczen>0
    max_krok = min(zbior_krokow);
    zn = min(1,0.95*max_krok);
else
    zn = 1;
end

if zn<(1e-8)
    wynik = x0;
    return
end

for i = 1:length(x0)
    xf(i) = x0(i)+zn*df(i);
end
[pom_u2,pom_tu2] = zmien_u2((xf'),main_u2,tu2);
qn = bfgs_f_celu2((xf'),main_x0,main_h0,pom_u2);

for nr=1:maxit
    xfs = xf;
    qs = qn;
    zn = alfa*zn;
    for i = 1:length(x0)
        xf(i) = x0(i)+zn*df(i);
    end
    [pom_u2,pom_tu2] = zmien_u2((xf'),pom_u2,tu2);
    qn = bfgs_f_celu2((xf'),main_x0,main_h0,pom_u2);
    if qn>=qs
        if qs<wskaz
%             disp ('wylaczenie dla nr rownego:');
%             nr=nr
            break;
        else
%             disp ('bez wylaczenia dla nr rownego:');
%             nr=nr
            ;
        end
    end
end

wynik = xfs';
q_wyniku = qs;

end % koniec funkcji

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -