• 大小: 2KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-05-27
  • 语言: Matlab
  • 标签: matlab  

资源简介

利用步长加速法的原理,对特定非线性规划目标进行了寻优求解。

资源截图

代码片段和文件信息

%%步长加速法
clear
clc
xm1=[0 3]‘;
s=0.04;  %/精度
r=1.2;   %加速因子
a=0.5; %初始步长
sj=0.2;
e1=[1 0]‘;
e2=[0 1]‘;
syms x1
syms x2
f=(x1-2)^4+(x1-2*x2)^2;
%探测移动
    %e1方向搜索
y1=xm1;
y01=y1+a*e1;
fx1=subs(f{x1 x2}{y1(11)y1(21)});
fy01=subs(f{x1 x2}{y01(11)y01(21)});
if fy01<=fx1
    y2=y01;
else
    y02=y1-a*e1;
    fy02=subs(f{x1 x2}{y02(11)y02(21)});
    if fy02<=fx1
        y2=y02;
    else
        y2=y1;
    end
end
    %e2方向搜索
y03=y2+a*e1;
fy2=subs(f{x1 x2}{y2(11)y2(21)});
fy03=subs(f{x1 x2}{y03(11)y03(21)});
if fy03<=fy2
    y3=y03;
else
    y04=y2-a*e1;
    fy04=subs(f{x1 x2}{y04(11)y04(21)});
    if fy04<=fy2
        y3=y04;
    else
        y3=y2;
    end
end
%模式搜索
fy3=subs(f{x1 x2}{y3(11)y3(21)});
xm2=y3;
c=a*sj;
t=1; %迭代次数
while c>=s
    if fy3<=fx1
        y1=xm2+r*(xm2-y1);
    else
        a=sj*a;

评论

共有 条评论