MATLAB蚁群算法解决旅行商问题

MATLAB蚁群算法解决旅行商问题

问题

一个商品推销员要去以下城市推销商品,该推销员从A城市出发,需要经过所有城市后,回到出发地。应如何选择行进路线,以使总的行程最短。

城市 经度 纬度
A 66.8300000000000 25.3600000000000
B 61.9500000000000 26.3400000000000
C 40 44.3900000000000
D 24.3900000000000 14.6300000000000
E 17.0700000000000 22.9300000000000
F 22.9300000000000 76.1000000000000
G 51.7100000000000 94.1400000000000
H 87.3200000000000 65.3600000000000
I 68.7800000000000 52.1900000000000
J 84.8800000000000 36.0900000000000
K 50 30
L 40 20
M 25 26

蚁群算法概述

遗传算法

每只蚂蚁带着等量的信息素出发,并均匀地将信息素撒在路线上。所以,对比两条不同的路径,信息素的量相同,而长度不同,则短的路径有更浓的信息素。同样,蚂蚁也会倾向选择信息素更浓的路径。但同时保留例外情况,蚂蚁只是大概率选择信息素更浓的路径,小概率选择其他路径。信息素随着后面来的蚂蚁会被累加,也随着时间增加而挥发、减少。
MATLAB代码:

%% ants for tsp
 
% changed by:   MingchongLi
% date:         2022/2/14
 
%% preset
 
clear;clc;
t0=clock;
 
% 坐标:
Coord = [
   66.8300   25.3600
   61.9500   26.3400
   40.0000   44.3900
   24.3900   14.6300
   17.0700   22.9300
   22.9300   76.1000
   51.7100   94.1400
   87.3200   65.3600
   68.7800   52.1900
   84.8800   36.0900
   50.0000   30.0000
   40.0000   20.0000
   25.0000   26.0000];
N = size(Coord,1);
 
for i = 1 : N
    scatter(Coord(i,1),Coord(i,2),'b');
    hold on
    text(Coord(i,1)+1,Coord(i,2)+1,num2str(i))
end
 
%% 计算各个城市之间的距离
 
D = zeros(N,N);
for i = 1:N
    for j = 1:N
        if i ~= j
            D(i,j) = sqrt(sum((Coord(i,:) - Coord(j,:)).^2));
        
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Li.MC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值