利用遗传算法 求解TSP问题 matlab 源代码

本文详细介绍了如何使用遗传算法解决旅行商问题(TSP),并提供了相应的MATLAB源代码,帮助读者理解和应用遗传算法进行路径优化。
摘要由CSDN通过智能技术生成
function main()
clear;
clc;
%城市坐标
a=importdata('data.txt',',');
a=a/1000;
x=a(:,1)';x(end+1)=a(1,1);
y=a(:,2)';y(end+1)=a(1,2);
n=0:50;
x=cos(2*pi*n/50);
y=sin(2*pi*n/50);
%初始方式数目
%城市数目
n=length(x)-1;
kinsize=500;
%编码长度
lm=n-1;
%初始方式
kin = initkin(kinsize,lm);
%编码
code=encode(kin);
%交叉概率
pc = 0.6;
%变异概率
pm = 0.8;
   for i = 1:20000
       %计算周长
       [adx,ady]=get_add(x,y,code);
       len=cal_length(adx,ady);
       [ax(i),ad]=min(len);       
       if mod(i,400) == 0
        figure;
        plot(x,y,'ro');
        decode(code(ad,:));
        hold on;
        plot(adx(ad,:),ady(ad,:));
        title(['迭代次数为n=' num2str(i)]);      
       end
       mincode=code(ad,:);
       %适应度值(函数值)
       a=-1;
       objvalue = exp(a*len);
       %选择操作
       ncode=selection(code,objvalue);
       %交叉操作
       ncode &
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值