📄 hock23.m
字号:
%随机试验搜索
%即使记录变化的量
%全局最优求解
%当初始搜索收敛到某个极值点x后,以极值点为中心,
%以原初始点和新点的范数||x1-x0||为广义半径,
%在其广义半径之外随机产生一个点,重新搜索。
%重复有限次后,结束。比较,给出最优结果。
x0=[-3;-1;-3;-1]; %初始点
n=4; %参数个数n
%x0=[-1.2;1.0];
%n=2;
h=1; %初始步长
a=1.618; %步长压缩因子
e=0.001; %截至精度,以搜索步长来判断
M=2000; %最大迭代次数
xold=x0; %保存最初的搜索点
Y=zeros(1,n);
X=zeros(n,n);
%E=100*(rand(n,n)-0.5); %在半径为50的广义球内,随机产生n个初始搜索点,x0无效
tic
%for k=1:M
i=0;
for k=1:n %最外面循环,用于判断极值点是否未全局极值
%x0=E(:,k)
while(1)
if (h<e)
break;
end
i=i+1;
x1=findgoodpoint_rand(x0,h,n);
if x1==x0 %not find
h=h/a;
else %find
while(1)
xp=x1+(x1-x0); %模式移动
%fm(xp)
if fm(xp)<fm(x1) % move succeed
x0=x1; %change point
x1=xp;
else
x0=x1;
break;
end
end
end
end
Y(k)=fm(x0); %保存搜索结果
X(:,k)=x0;
s=norm(x0-xold);
x0=2*s*(rand(n,1)-0.5);
h=1; %重新搜索,初始化x0 and h
end
[y,i]=find_column(Y,n);
%h
X(:,i)
y
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -