📄 hock22.m
字号:
%随机试验搜索
%即使记录变化的量
%全局最优求解
%利用在固定半径的广义球内随机产生n个点
%做为初始搜索值,进行搜索,保存其结果。
%n次搜索后,从最终的n个结果当中选取最好的结果。
x0=[-3;-1;-3;-1]; %初始点
n=4; %参数个数n
%x0=[-1.2;1.0];
%n=2;
h=1; %初始步长
a=1.618; %步长压缩因子
e=0.00001; %截至精度,以搜索步长来判断
M=2000; %最大迭代次数
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;
x0=100*(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 + -