dfp.m

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

M
48
字号
%变尺度法,多变量寻优
%允许迭代的最大次数M,变量数N,

x0=[-3;-1;-3;-1];
n=4;        %变量数
I=eye(n);
H1=I;       %初始近似矩阵
x1=x0;      %代表k次迭代点
M=5000;
e=0.0001;
df1=dfm(x1);

tic

for i=1:M
    df1=dfm(x1);
    
    if norm(df1)<e
        break;
    end
    
    s=-H1*df1;        %搜索方向
    a=fpart618(x1,s);     %采用618法进行单变量寻优
    x2=x1+a*s;            %代表k+1次迭代点
    g=dfm(x2)-dfm(x1);    %导数差向量
    xc=x2-x1;             %点间距,向量
    
    x1g=xc'*g;            
    xg1=xc*g';
    A=(xc*xc')/x1g;
    B=H1*g;
    H2=H1+A-B*B'/(g'*B);    %H矩阵一定时对称的
    %H2=(I-xg1/x1g)*H1*(I-xg1/x1g)+xg1/x1g
    
    x1=x2;
    H1=H2;
    %df1=dfm(x1);
end

i
x1
fm(x1)
toc
    
    
    
    
    

⌨️ 快捷键说明

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