建立m文件

function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)

%%-------------------------------------------------------------------------

%% 主要符号说明

%% C n个城市的坐标,n×2的矩阵

%% NC_max 最大迭代次数

%% m 蚂蚁个数

%% Alpha 表征信息素重要程度的参数

%% Beta 表征启发式因子重要程度的参数

%% Rho 信息素蒸发系数

%% Q 信息素增加强度系数

%% R_best 各代最佳路线

%% L_best 各代最佳路线的长度

%%=========================================================================

%%第一步:变量初始化

n=size(C,1);%n表示问题的规模(城市个数)

D=zeros(n,n);%D表示完全图的赋权邻接矩阵

for i=1:n

for j=1:n

if i~=j

D(i,j)=((C(i,1)-C(j,1))^2 (C(i,2)-C(j,2))^2)^0。

5;

else

D(i,j)=eps; %i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示

end

D(j,i)=D(i,j); %对称矩阵

end

end

Eta=1。

/D; %Eta为启发因子,这里设为距离的倒数

Tau=ones(n,n); %Tau为信息素矩阵

Tabu=zeros(m,n); %存储并记录路径的生成

NC=1; %迭代计数器,记录迭代次数

R_best=zeros(NC_max,n); %各代最佳路线

L_best=inf。

*ones(NC_max,1); %各代最佳路线的长度

L_ave=zeros(NC_max,1); %各代路线的平均长度

while NC=rand); %若计算的概率大于原来的就选择这条路线

to_visit=J(Select(1));

Tabu(i,j)=to_visit;

end

end

if NC>=2

Tabu(1,:)=R_best(NC-1,:);

end

%%第四步:记录本次迭代最佳路线

L=zeros(m,1); %开始距离为0,m*1的列向量

for i=1:m

R=Tabu(i,:);

for j=1:(n-1)

L(i)=L(i) D(R(j),R(j 1)); %原距离加上第j个城市到第j 1个城市的距离

end

L(i)=L(i) D(R(1),R(n)); %一轮下来后走过的距离

end

L_best(NC)=min(L); %最佳距离取最小

pos=find(L==L_best(NC));

R_best(NC,:)=Tabu(pos(1),:); %此轮迭代后的最佳路线

L_ave(NC)=mean(L); %此轮迭代后的平均距离

NC=NC 1 %迭代继续

%%第五步:更新信息素

Delta_Tau=zeros(n,n); %开始时信息素为n*n的0矩阵

for i=1:m

for j=1:(n-1)

Delta_Tau(Tabu(i,j),Tabu(i,j 1))=Delta_Tau(Tabu(i,j),Tabu(i,j 1)) Q/L(i);

%此次循环在路径(i,j)上的信息素增量

end

Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1)) Q/L(i);

%此次循环在整个路径上的信息素增量

end

Tau=(1-Rho)。

*Tau Delta_Tau; %考虑信息素挥发,更新后的信息素

%%第六步:禁忌表清零

Tabu=zeros(m,n); %%直到最大迭代次数

end

%%第七步:输出结果

Pos=find(L_best==min(L_best)); %找到最佳路径(非0为真)

Shortest_Route=R_best(Pos(1),:) %最大迭代次数后最佳路径

Shortest_Length=L_best(Pos(1)) %最大迭代次数后最短距离

subplot(1,2,1) %绘制第一个子图形

DrawRoute(C,Shortest_Route) %画路线图的子函数

subplot(1,2,2) %绘制第二个子图形

plot(L_best)

hold on %保持图形

plot(L_ave,'r')

title('平均距离和最短距离') %标题

function DrawRoute(C,R)

%%=========================================================================

%% DrawRoute。

m

%% 画路线图的子函数

%%-------------------------------------------------------------------------

%% C Coordinate 节点坐标,由一个N×2的矩阵存储

%% R Route 路线

%%=========================================================================

N=length(R);

scatter(C(:,1),C(:,2));

hold on

plot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)],'g')

hold on

for ii=2:N

plot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)],'g')

hold on

end

title('旅行商问题优化结果 ')

建m文件

function DrawRoute(C,R)

%%=========================================================================

%% DrawRoute。

m

%% 画路线图的子函数

%%-------------------------------------------------------------------------

%% C Coordinate 节点坐标,由一个N×2的矩阵存储

%% R Route 路线

%%=========================================================================

N=length(R);

scatter(C(:,1),C(:,2));%画散点图

hold on

plot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)],'g')

hold on

for ii=2:N

plot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)],'g')

hold on

end

title('TSP问题优化结果 ')

命令窗口运行

C=[1304 2312

3639 1315

4177 2244

3712 1399

3488 1535

3326 1556

3238 1229

4196 1004

4312 790

4386 570

3007 1970

2562 1756

2788 1491

2381 1676

1332 695

3715 1678

3918 2179

4061 2370

3780 2212

3676 2578

4029 2838

4263 2931

3429 1908

3507 2367

3394 2643

3439 3201

2935 3240

3140 3550

2545 2357

2778 2826

2370 2975

];

m=31;Alpha=1;Beta=5;Rho=0。

1;NC_max=200;Q=100;

[R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)。

全部

matlab 旅行商遗传算法,急求蚁群混合遗传算法在matlab上的实现以解决TSP旅行商的问? 爱问知识人...相关推荐

  1. 【路径规划】基于matlab蚁群优化遗传算法机器人栅格地图最短路径规划【含Matlab源码 1581期】

    ⛄一.简介 路径规划是实现移动机器人自主导航的关键技术,是指在有障碍物的环境中,按照一定的评价标准(如距离.时间.能耗等),寻找到一条从起始点到目标点的无碰撞路径,这里选取最短距离路径规划的评价标准, ...

  2. 【机器人栅格地图】基于蚁群优化遗传算法求解机器人栅格地图最短路径规划问题附Matlab源码

    1 简介 通过栅格法建立栅格地图作为机器人路径规划的工作环境,采用蚁群算法结合遗传算法作为机器人路径搜索的规则.将所有机器人放置于初始位置,经过NC次无碰撞迭代运动找到最优路径,到达目标位置.为防止机 ...

  3. 基于蚁群结合遗传算法的路径规划问题附Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  4. 蚁群算法和简要matlab来源

    1 蚁群算法原理 从1991由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于群体的模拟进化算法--蚁群优化.极大关注,蚁群算法的特 ...

  5. 蚁群算法简介及matlab源代码

    1 蚁群算法原理 自1991年由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于种群的模拟进化算法--蚁群优化.该算法的出现引起了学 ...

  6. 蚁群算法优化神经网络matlab源程序,粒子群优化神经网络的程序大集合

    粒子群程序集合 866867259psobp psobp.m pso(粒子群算法)优化神经网络 粒子群算法(PSO)应用于神经网络优化[matlab] PSOt A Particle Swarm Op ...

  7. 蚁群算法汇总含matlab代码_数学建模(十四)

    蚁群算法模拟自然界蚂蚁群体的觅食行为,常用于旅行商问题(TSP),二维.三维路径规划问题. 将蚁群算法用于优化问题的思路:用蚂蚁的行走路径表示待优化问题的可行解,整个蚂蚁群体群体的所有路径构成待优化问 ...

  8. matlab教程蚁群算法,蚁群算法怎样用MATLAB仿真

    蚁群算法采用matlab开发的仿真平台:算法实现,路径显示,人机交互控制等 希望对你有帮助! 是可以运行的 %    the procedure of ant colony algorithm for ...

  9. 蚁群算法matlab vrp问题车辆限重,蚁群算法MATLAB解VRP问题

    Excel  exp12_3_2.xls内容: ANT_VRP函数: function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ANT ...

最新文章

  1. Java异常信息处理类
  2. Objective-c 实用代码
  3. 前端每周清单半年盘点之 WebAssembly 篇
  4. perl 爬ku6视频
  5. Slave: received end packet from server, apparent master shutdown:
  6. display:flex弹性布局
  7. JavaScript prompt函数
  8. html播放m3u8格式转换,m3u8格式如何播放
  9. python webdriver脚本例子_python-webdriver 开始第一个脚本
  10. linux qt 多点触摸,Qt 4.6 添加 Multi-touch(多点触摸)支持
  11. rpc error: code = Unavailable desc = connection error: desc = “transport: Error while dialing readin
  12. 用pycharm连接云端服务器
  13. 常用的但是容易忘记的css样式..........持续更新,主要自用
  14. 关于子类重写父类方法的问题
  15. centos7安装pip
  16. 鸡兔同笼问题的python解法
  17. 跑了这么久,物流机器人怎么还没跑进千家万户?
  18. 英语语法汇总(9.时态)
  19. 目睹鸿蒙开创四大至高位面,第二十三章 鸿蒙四大至高规则
  20. Flutter使用ClipPath画一个聊天气泡

热门文章

  1. scala中的隐式转换、隐式参数和隐式类
  2. 【搜索引擎Jediael开发笔记3】使用HtmlParser提取网页中的链接
  3. 剑指offer 跳台阶
  4. 数据湖之iceberg系列(五)-Spark实时处理数据
  5. Bigo 实时计算平台建设实践
  6. ubuntu16.04 安装docker-ce,解决libltdl7版本过低的问题
  7. 使用JestClient操作ElasticSearch
  8. spark学习:java版JavaRDD与JavaPairRDD的互相转换
  9. 当我们在谈论HTTP缓存时我们在谈论什么
  10. [译]GC专家系列4-Apache的MaxClients设置及其对Tomcat Full GC的影响