遗传算法解决旅行商(TSP)问题

遗传算法解决旅行商问题

作为NP难的经典问题,旅行商问题有多种算法可以解决。
我学习的过程中,首先看到了模拟退火算法解决旅行商问题的过程,模拟退火算法可以保证100%的找到全局最小值。
在我研究遗传算法的过程中,我突然想试一下怎样用遗传算法中选择、交叉的变异的思路来解决这个问题。

以52城的题目为例

在这里插入图片描述

使用遗传算法进行解题

首先考虑如何初始化种群,我选择用randperm(52)直接生成一个1到52的随机序列,作为我的一个个体。种群的规模为200.
然后考虑遗传算法的适应值怎么确定,这里取每一个个体的总路径的倒数作为适应度。
我用下面这段程序求目标函数和适应度,并用模拟退火方法求出的最优解代入,以确定代码是正确的。

clc;
clear all;
w=[565 575;25 185;345 750;945 685;845 655;880 660;25 230;
   525 1000;580 1175;650 1130;1605 620;1220 580;1465 200;
   1530 5;845 680;725 370;145 665;415 635;510 875;560 365;
   300 465;520 585;480 415;835 625;975 580;1215 245;1320 315;                   %坐标输入
   1250 400;660 180;410 250;420 555;575 665;1150 1160;700 580;
   685 595;685 610;770 610;795 645;720 635;760 650;475 960;95 260;
   875 920;700 500;555 815;830 485;1170 65;830 610;605 625;595 360;
   1340 725;1740 245];
a=w(:,1);                                       %x坐标
b=w(:,2);                                       %y坐标
ctamount=size(w,1);
d=zeros(ctamount,ctamount);
for i=1:ctamount
    for j=1:ctamount
        d(i,j)=sqrt((a(i)-a(j)).^2+(b(i)-b(j)).^2);                %求出两城之间的距离矩阵
    end
end
a=[17 21 42 7 2 30 23 20 50 29 16 46 44 3
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值