bfs.m

来自「多变量寻优的源码」· M 代码 · 共 49 行

M
49
字号
%BFS法
%允许迭代的最大次数M,变量数N,

%x0=[-3;-1;-3;-1];
x0=[-100;10;-10;20];
I=eye(4);
H1=I;
x1=x0;
M=2000;
e=0.0001;
df1=1;
M=2000;

tic

for i=1:M
    df1=dfm(x1);
    
    if norm(df1)<e
        break;
    end
    
    s=-H1*dfm(x1);
    a=fpart618(x1,s);
    x2=x1+a*s;
    g=dfm(x2)-dfm(x1);
    
    x3=x2-x1;
    x1g=x3'*g;
    xg1=x3*g';
    A=(x3*x3')/x1g;
    B=xg1/x1g;
    H2=(I-B)*H1*(I-B)'+A;  %H矩阵一定时对称的
    %H2=(I-xg1/x1g)*H1*(I-xg1/x1g)+xg1/x1g   error
    %H2=(I-xg1/x1g)*H1*(I-xg1/x1g)+(x3*x3')/x1g   right
    x1=x2;
    H1=H2;
end

i
x1
fm(x1)
toc

    
    
    
    
    

⌨️ 快捷键说明

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