蜂群 matlab,人工蜂群算法
clear all
close all
clc
%%%%%%%%%%初始化参数%%%%%%%%%
NP=20;
FoodNumber=NP/2;
Limit=100;
maxCycle=2500;
%%%%%定义全局变量%%%%%%%%%
global NC; %总的城市数
global d; %各城市之间的距离
NC=14;
x(1)=16.47;x(2)=16.47;x(3)=20.09;x(4)=22.39;x(5)=25.23;x(6)=22.00;x(7)=20.47;
x(8)=17.20;x(9)=16.30;x(10)=14.05;x(11)=16.53;x(12)=21.52;x(13)=19.41;x(14)=20.09;
y(1)=96.10;y(2)=94.44;y(3)=92.54;y(4)=93.37;y(5)=97.24;y(6)=96.05;y(7)=97.02;y(8)=96.29;
y(9)=97.38;y(10)=98.12;y(11)=97.38;y(12)=95.59;y(13)=97.13;y(14)=94.55;
%计算各城市之间的距离
for m=1:14
for n=1:14
d(m,n)=sqrt((x(m)-x(n))^2+(y(m)-y(n))^2);
end
end
%画初始路径图
figure(1);
for m=1:NC
scatter(x(m),y(m),50,'r')
hold on
end
plot([x(1),x(2),x(3),x(4),x(5),x(6),x(7),x(8),x(9),x(10),x(11),x(12),x(13),x(14),x(1)],...
[y(1),y(2),y(3),y(4),y(5),y(6),y(7),y(8),y(9),y(10),y(11),y(12),y(13),y(14),y(1)]);
%title('初始路径');
xlable('城市x坐标');
ylable('城市y坐标');
runtime=10; %通过修改runtime的值,改变程序的运行次数,用以算法的健壮性
GlobalMins=zeros(1,runtime);
for r=1:runtime
%初始化蜂群
for i=1:FoodNumber
Foods(i,:)=initial();
end
%计算适应度函数值
for i=1:FoodNumber
route=Foods(i,:);
Fitness(i)=calculateFitness(route);
end
%初始化搜索次数,用于Limit比较
trial=zeros(1,FoodNumber);
%找出适应度函数值得最小值
BestInd=find(Fitness==min(Fitness));
BestInd=BestInd(end); %避免有两个相同位置,只取其一
GlobalMin=Fitness(BestInd);
GlobalParams=Foods(BestInd,:);
%迭代开始
iter=1;
j=1; %用以初始化结果
while ((iter<=maxCycle))
%%%采蜜蜂模式%%
%随机交换3个城市的顺序,改变此时的路线
route_next=Foods(i,:);
l=round(2+12*rand());
m=round(2+12*rand());
n=round(2+12*rand());
temp=route_next(1);
route_next(l)=route_next(m);
route_next(m)=route_next(n);
route_next(n)=temp;
%计算新蜜源的适应度函数值
FitnessSol=calculateFitness(route_next);
%使用贪婪原则,寻找最优蜜源
if (FitnessSol
Foods(i,:)=route_next;
Fitness(i)=FitnessSol;
trial(i)=0;
else
trial(i)=trial(i)+1; %超过设定的limit次,则该蜂成为侦查蜂
end
end
%%%%根据适应度值计算采蜜蜂被跟随的概率%%%%%%
pro=(0.9*Fitness./max(Fitness))+0.1;
%%%观察蜂%%%%%%%
i=1; %要跟随的采蜜蜂
t=0; %标记观察蜂
while (t
if(rand
t=t+1;
%随机交换3个城市的顺序,改变此时的路线
route_next=Foods(i,:);
l=round(2+12*rand());
m=round(2+12*rand());
n=round(2+12*rand());
temp=route_next(1);
route_next(l)=route_next(m);
route_next(m)=route_next(n);
route_next(n)=temp;
%计算新蜜源的适应度函数值
FitnessSol=calculateFitness(route_next);
%使用贪婪原则,寻找最优蜜源
if (FitnessSol
Foods(i,:)=route_next;
Fitness(i)=FitnessSol;
trial(i)=0;
else
trial(i)=trial(i)+1; %超过设定的limit次,则该蜂成为侦查蜂
end
end
i=i+1; %要跟随的下一个采蜜蜂
if (i==(FoodNumber)+1)
i=1;
end
end
%记录此时更好的解
ind=find(Fitness==min(Fitness));
ind=ind(end);
if (Fitness(ind)
GlobalMin=Fitness(ind);
GlobalParams=Foods(ind,:);
end
%%%侦查蜂模式%%%
ind=find(trial==max(trial));
ind=ind(end);
if (trial(ind)>Limit) %若搜索次数超过极限值,则进行随机搜索产生新的解
Bas(ind)=0;
for m=1:1:NC
route_new(m)=m;
end
route_new(NC+1)=1;
FitnessSol=calculateFitness(route_new);
Foods(ind,:)=route_new;
Fitness(ind)=FitnessSol;
end
%%%%%%建立一个次数和最优解的矩阵,以便于画图%%%%%
Cishu(j)=iter; %迭代次数行向量
Zuiyou(j)=GlobalMin; %每次迭代得到的最优解
j=j+1;
iter=iter+1;
end
while(iter<=maxCycle)
GlobalMins(r)=GlobalMin; %程序运行完一次,记录这次的最优路径的长度
disp(['第',num2str(r),'次运行得到的最优路径是:',num2str(GlobalParams),'此条路径的长度是:',num2str(GlobalMins(r))]);
end
%%图曲线图%%
figure(2);
plot(Cishu,Zuiyou,'b');
%title('优化曲线');
xlable('迭代次数');
ylable('路径长度');
figure(3);
for m=1:NC
scatter(x(m),y(m),50,'r')
hold on
end
plot([x(GlobalParams(1)),x(GlobalParams(2)),x(GlobalParams(3)),x(GlobalParams(4)),x(GlobalParams(5)),x(GlobalParams(6)),
x(GlobalParams(7)),x(GlobalParams(8)),x(GlobalParams(9)),x(GlobalParams(10)),x(GlobalParams(11)),x(GlobalParams(12)),
x(GlobalParams(13)),x(GlobalParams(14)),x(GlobalParams(1)),y(GlobalParams(1)),y(GlobalParams(2)),y(GlobalParams(3)),
y(GlobalParams(4)),y(GlobalParams(5)),y(GlobalParams(6)),y(GlobalParams(7)),y(GlobalParams(8)),y(GlobalParams(9)),
y(GlobalParams(10)),y(GlobalParams(11)),y(GlobalParams(12)),y(GlobalParams(13)),y(GlobalParams(14)),y(GlobalParams(1))]);
%titlt('优化路径');
xlable('城市x坐标');
ylable('城市y坐标');
蜂群 matlab,人工蜂群算法相关推荐
- MATLAB人工蜂群算法求解超市物流配送选址问题代码实例
MATLAB人工蜂群算法求解超市物流配送选址问题代码实例 MATLAB人工蜂群算法求解超市物流配送选址问题代码实例 人工蜂群算法编程问题实例: 在范围为(0,0)到(100,100)的矩形区域内,散布 ...
- MATLAB人工蜂群算法求解数据拟合和多参数优化问题代码实例
MATLAB人工蜂群算法求解数据拟合和多参数优化问题代码实例 MATLAB人工蜂群算法求解数据拟合和多参数优化问题代码实例 1.基本概念 人工蜂群算法是模仿蜜蜂行为提出的一种优化方法,是集群智能思想的 ...
- 【AFSA TSP】基于matlab人工鱼群算法求解旅行商问题【含Matlab源码 422期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab人工鱼群算法求解旅行商问题[含Matlab源码 422期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...
- 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】
⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...
- 【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】
一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...
- 【优化覆盖】基于matlab人工蜂群算法求解无线网络传感覆盖优化问题【含Matlab源码 1097期】
⛄一.人工蜂群算法求解无线网络传感覆盖优化问题简介 1 WSN覆盖模型 1.1 问题描述 在WSN中, 要实现较高的无线网络传感器节点覆盖率从而减少监测盲点的出现, 就必须加大无线网络传感器节点的分布 ...
- 【ABC三维路径规划】基于matlab人工蜂群算法无人机三维路径规划【含Matlab源码 021期】
⛄一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水 ...
- 【BP数据预测】基于matlab人工鱼群算法优化BP神经网络数据预测【含Matlab源码 523期】
一.人工鱼群算法简介 1 觅食行为 指鱼循着食物多的方向游动的一种行为,人工鱼X i X_iXi在其视野内随机选择一个状态X j X_jXj,分别计算它们的目标函数值进行比较,如果发现Y j ...
- 改进交叉算子的自适应人工蜂群黏菌算法-附代码
改进交叉算子的自适应人工蜂群黏菌算法 文章目录 改进交叉算子的自适应人工蜂群黏菌算法 1.黏菌算法 2.改进黏菌算法 2.1 自适应可调节反馈因子 2.2 算数交叉算子 2.3 改进的人工蜂群搜索策略 ...
最新文章
- java bufferedimage颜色_使用BufferedImage进行渐变色操作
- python如何爬虫-如何使用python爬虫爬取要登陆的网站
- Python入门100题 | 第019题
- Linux SPI总线设备驱动模型详解
- 在主窗体中打开一个新子窗体,如果已有子窗体,则激活它,而不打开新的。...
- 其他一些单元测试技巧
- JDBC 提示:WARN: Establishing SSL connection without server's identity verification is not recommended.
- 帮助文档的制作(控制台、eclipse两种方式)
- Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】...
- Android——多线程之Handler
- qq令牌64位密钥提取_qq令牌绑定工具无需密码2020
- word如何自动生成目录
- 习题:一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
- 《论语》全译——公冶长篇第五
- Echarts去除x轴,y轴网格线,网格区域(背景)
- 中国矿业大学2020岁末赛校赛wp
- 理解微分方程和线性代数的联系
- 基于安卓的 gps定位系统的跑步健身助手
- Java 基础学习(6)
- yum报错failure: repodata/repomd.xml from Centos: [Errno 256] No more mirrors to try. importing repomd.
热门文章
- 注册小程序需要营业执照吗?
- 前端速成:双月Java之旅(week5)_day1
- 严重:init datasource errorcom.mysql.jdbc.exceptions.jdb4.CommunicationsException:Communications link失败
- 《Effective C++》读书笔记 条款40:明智而审慎地使用多重继承
- tig--颠覆 Git 命令使用体验的神器
- 小米首页二级菜单栏实现原理
- 【云原生 | Envoy 系列】--Envoy Http Ingress,Egress,front Proxy静态配置
- 含身故赔付的重疾险对程序员群体有什么好处呢?
- 腾讯安全全面出击:双十一不该成为黑产的狂欢
- matlab p文件转码 matlab pcode文件 将matlab中的p文件转为m文件工具