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

📄 bfgs_u2_alg.m

📁 Control optimisation. It is example of use BFGS algorithm to control satellite form Earth atmosphere
💻 M
字号:
% Algorytm BFGS
% Algorytm obszaru wiarygodnosci, metody newtona
% funkcja celu: Q:R^n -> R
% optymalizuje sterowania u2 w zadaniu
% dane wejsciowe:
%   main_tau - wektor tau (poziomy wektor)
%   main_h0 - krok metody rk4
%   main_x0 - punkt startowy Ziemi
%   main_u2 - poczatkowe rozwiazanie (pionowy wektor)
% dane wyjsciowe:
%   wynik_u2 - znalezione rozwiazanie optymalne dla sterowan u2
function [wynik_u2,q_wyniku_u2] = bfgs_u2_alg(main_x0,main_tau,main_h0,main_u2)
u2 = main_u2;

E0 = 1e-5;      % zadana dokladnosc optymalizacji
r = 1;          % parametr odnowy
nr_u2_iteracji = 0;

q_u2 = bfgs_f_celu2((main_tau'),main_x0,main_h0,(u2'));
while (nr_u2_iteracji<5)
%     display ('U2 iteracja nr');
    nr_u2_iteracji = nr_u2_iteracji + 1;
    % wyliczanie gradientu:
    grad_akt = bfgs_u2_f_celu_grad(u2,main_x0,main_h0,main_tau);
%     grad_akt = bfgs_u2_f_celu_gradSE(u2,main_x0,main_h0,main_tau);
    if (norm(grad_akt)<E0)
        break;
    end

    if r==1
        W = eye(length(u2));
    elseif r==0
        r = grad_akt-gs;
        s = u2 - u2s;
        W = W + (r*(r'))/((s')*r) - (W*s*(s')*W)/((s')*W*s);
    end
    d = (-1)*(W^(-1))*grad_akt;
    u2s = u2;
    gs = grad_akt;

%     display ('U2 po kierunku:');
    [u2_nowe,q_u2_nowe] = bfgs_u2_min_kier(u2,d,main_x0,main_h0,main_tau,q_u2);
    if q_u2_nowe<q_u2
        u2 = u2_nowe;
        q_u2 = q_u2_nowe;
        r = 0;
    else
        if r==1
            disp ('U2 nastapilo zapetlenie');
            break;
        else
            r = 1;
            continue;
        end
    end
end
wynik_u2 = u2;
q_wyniku_u2 = q_u2;
end % koniec funkcji

⌨️ 快捷键说明

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