您所在位置: 网站首页 / 萤火虫算法-matlab代码.doc / 文档详情
萤火虫算法-matlab代码.doc 立即下载
2024-12-12
约3.3千字
约4页
0
16KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

萤火虫算法-matlab代码.doc

萤火虫算法-matlab代码.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

%%算法说明:荧火虫算法

clc;%清屏
clearall;%清除变量
formatlong;%确定精度

%%各参数初始化开始
domx=[-5.12,5.12;-5.12,5.12];
%domx=[-2.048,2.048;-2.048,2.048];%解空间
rho=0.4;%荧光素挥发因子
gamma=0.6;%适应度提取比例
beta=0.08;%邻域变化率
nt=5;%邻域阀值(邻域荧火虫数)
s=0.03;%步长
lo=5;%荧光素浓度
rs=5.12;%感知半径
r0=5.12;
%rs=2.048;%感知半径
%r0=2.048;%决策半径
%各参数初始化结束
iter_max=200;%最大迭代次数
%%分配空间开始

m=size(domx,1);%函数空间维数
globaln;
n=50;%种群规模
address=zeros(n,m);%分配荧火虫地址空间
value=zeros(n,1);%分配适应度存放空间
li=zeros(n,1);%分配荧光素存放空间
rdi=zeros(n,1);%分配荧火虫决策半径存放空间
uu=zeros(1,iter_max);
%%荧火虫常量初始化开始

fori=1:m
address(:,i)=(domx(i,1)+(domx(i,2)-domx(i,1))*rand(n,1));%初始化地址
%address(i,:)=5*rands(n,1);%随机产生初萤火虫所在位置
end

f=fun(address);
x=-5.12:.1:5.12;
%x=-2.048:.05:2.048;
[x,y]=meshgrid(x);
figure(1);
plot3(address(:,1),address(:,2),f,'k*')
holdon;
gridon;
z=-(x.^2-10*cos(2*pi.*x)+10+y.^2-10*cos(2*pi.*y)+10);%Rastrigin'函数
%z=-(x.^2+y.^2);%目标函数J2
%z=-(20+x.^2-10*cos(2*pi.*x)+y.^2-10*cos(2*pi.*y));%目标函数J1
%z=-(-20*exp(-0.2*sqrt((x.^2+y.^2)/2))-exp((cos(2*pi*x)+cos(2*pi*y))/2)+20+exp(1));%%目标函数
%z=-(0.5+sin(sqrt(x.^2+y.^2).^2-0.5)./(1+0.001*(x.^2+y.^2)).^2);%目标函数J3
mesh(x,y,z)
xlabel('x轴');
ylabel('y轴');
zlabel('z轴');
title('萤火虫初始分布图');

li(:,1)=lo;%荧光素初始值
rdi(:,1)=r0;%决策半径初始值
t=1;%迭代累计量
%荧火虫常量初始化结束

%%迭代开始
while(t<=iter_max)

li=(1-rho)*li+gamma*fun(address);%.更新荧光素值li

%各荧火虫移动过程开始
fori=1:n
Ord_number=[];%存放荧火虫序号
forj=1:n
if(norm(address(j,:)-address(i,:))<rdi(i))&&(li(i,1)<li(j,1))%决策半径内找更优点
Ord_number(numel(Ord_number)+1)=j;
end
end

%计算Ord_number各元素被选择概率,确定j位置
if~isempty(Ord_number)%先判断Ord_number个数不为空
Ord_num_li=li(Ord_number,1);%选出Ord_number荧光素
Sum_Ord_li=sum(Ord_num_li);%Ord_number荧光素和
Mol=Ord_num_li-li(i,1);%分子(lj-li)
Den=Sum_Ord_li-li(i,1);%分母
Pij=Mol./Den;%计算各元素被选择概率
Pij=cumsum(Pij);%累计
Pij=Pij./Pij(end);%归一化
Pos=find(rand<Pij);%确定位置
j=Ord_number(Pos(1));%确定j的位置

%荧火虫i向位置j移动
address(i,:)=address(i,:)+s*(address(j,:)-address(i,:))/norm(address(j,:)-address(i,:));
address(i,:)=range1(address(i,:),domx);%限制范围
end
%更新决策半径
rdi(i)=rdi(i)+beta*(nt-length(Or
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

萤火虫算法-matlab代码

文档大小:16KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用