matlab中二元函数如何优化-亚博电竞手机版

matlab中二元函数如何优化

这篇文章给大家分享的是有关matlab中二元函数如何优化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

clc
clear
close all
tic
figure(1);
fun_plot;
hold on
%% 参数设置
fishnum=100; %生成100只人工鱼
maxgen=50; %最多迭代次数
try_number=100;%最多试探次数
visual=1; %感知距离
delta=0.618; %拥挤度因子
step=0.1; %步长
%% 初始化鱼群
lb_ub=[-10,10,2;];
x=af_init(fishnum,lb_ub);
lbub=[];
for i=1:size(lb_ub,1)
lbub=[lbub;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];
end
gen=1;
besty=-1*ones(1,maxgen); %每步中最优的函数值
bestx=-1*ones(2,maxgen); %每步中最优的自变量
besty=-100; %最优函数值
y=af_foodconsistence(x);
while gen<=maxgen
for i=1:fishnum
%% 聚群行为 [xi1,yi1]=af_swarm(x,i,visual,step,delta,try_number,lbub,y);
%% 追尾行为 [xi2,yi2]=af_follow(x,i,visual,step,delta,try_number,lbub,y);
if yi1>yi2
x(:,i)=xi1;
y(1,i)=yi1;
else
x(:,i)=xi2;
y(1,i)=yi2;
end
end
[ymax,index]=max(y);
figure(1);
plot3(x(1,index),x(2,index),y(index),'.','color',[gen/maxgen,0,0])
if ymax>besty
besty=ymax;
bestx=x(:,index);
besty(gen)=ymax;
[bestx(:,gen)]=x(:,index);
else
besty(gen)=besty(gen-1);
[bestx(:,gen)]=bestx(:,gen-1);
end
gen=gen 1;
end
plot3(bestx(1),bestx(2),af_foodconsistence([bestx(1);bestx(2)]),'ro','markersize',10)
xlabel('x')
ylabel('y')
title('鱼群算法迭代过程中最优坐标移动')
%% 优化过程图
figure
plot(1:maxgen,besty)
xlabel('迭代次数')
ylabel('优化值')
title('鱼群算法迭代过程')
disp(['最优解x:',num2str(bestx','%1.5f')])
disp(['最优解y:',num2str(besty,'%1.5f')])
toc

感谢各位的阅读!关于“matlab中二元函数如何优化”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图