?? findgoodpoint_rand.m
字號:
function res=findgoodpoint_rand(x0,h,n)
a=6; %隨機方向數a*n
x1=x0;
E=rand(n,a*n)-0.5; %10n搜索方向
x=zeros(n,a*n); %存儲搜索點
y=zeros(1,a*n); %存儲對應搜索點的值
for i=1:a*n %10n個搜索方向,函數值
x(:,i)=x1+h*E(:,i);
y(i)=fm(x(:,i));
end
ybest=y(1); %最好點
ybetter=y(1); % 次好點
xbest=x(:,1);
xbetter=x(:,1);
for i=2:a*n %查找最好點、次好點,并記錄相應的函數值
if y(i)<ybetter
if y(i)<ybest
ybetter=ybest;
xbetter=xbest;
ybest=y(i);
xbest=x(:,i);
else
ybetter=y(i);
xbetter=x(:,i);
end
end
end
xtemp=xbest+xbetter; %根據最好點和次好點新產生的點
ytemp=fm(xtemp);
if ytemp<ybest
xbest=xtemp;
end
if fm(xbest)<fm(x0)
res=xbest;
else
res=x0;
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -