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中二元函数如何优化”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

发布于 2021-12-28 22:20:49
收藏
分享
海报
0 条评论
44
上一篇:如何下载Fabric-Sampl与二进制包 下一篇:如何实现Fabric区块链基于Prometheus和StatsD的运维监控
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码