📄 randsearch.m
字号:
%HJ模式搜索的改进版
%主要改进在于对好点的搜索,模式移动不变
%改进,即使记录变化的量
%采用随机产生点来,搜索‘好点’
x0=[-3;-1;-3;-1]; %初始点
n=4; %参数个数n
%E=eye(n); %搜索方向
x=zeros(n,2*n); %搜索点
y=zeros(1,2*n); %d对应搜索点的值
h=1; %初始步长
l=1; %作为点间距离
yc=1; %初始值,
as=1.618; %步长放大因子
af=0.618;
a=1;
m=0;
x1=x0;
e=0.00000001; %截至精度
M=200; %最大迭代次数
%best=0
%better=0
tic
for k=1:M
d=rand(n,1)-0.5; %随机产生1个点
x1=x0+a*d;
y1=fm(x1);
y0=fm(x0);
if y1<y0
y=x0+a*(x1-x0);
yy=fm(y);
if yy<y0
a=a*as;
l=norm(y-x0);
yc=abs(yy-y0);
x0=y;
end
else
m=m+1;
if m>3*n
a=a*af;
m=0;
end
end
if (l<e|yc<e)
break;
end
end
tic
ybest
xbest
k
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -