找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6241|回复: 1
打印 上一主题 下一主题
收起左侧

自编matlab程序:起点与终点为同一个点的旅行商问题通用算法

[复制链接]
跳转到指定楼层
楼主
ID:250729 发表于 2017-11-18 14:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
%函数作用说明:起点与终点为同一个点的旅行商问题通用算法
function [mintsp1,path]=TSP1(distance,n,start)
%输入
%distance 任意两个地点的距离  n 地点数目  start  起点及终点
%输出
%min_tsp 最短路程  path 最短路线
%%
%%首先构造所有的可能路线矩阵luxian
p=n+1;
q=factorial(n-1);%阶乘
luxian=zeros(p,q);%路线矩阵luxian
line=[1:n];
line(start)=[];% 删去起点后的其余地点
%%%%%%%%找出所有的排列组合,即起点确定情况下的所有的路线
f=perms(line);         %所有的排列组合
f1=f';% 除起点之外的排列组合
%%%%%%将起点,终点位置增加到排列组合的第1行和最后1行,得到构造路线矩阵luxian
luxian=[start*ones(1,q);f1;start*ones(1,q)];
%%
%%%%%%%%计算每个组合下的路线
min_tsp=zeros(1,q);%最短距离初始化
for i=1:q            %选择路线
    for j=1:n
        i1=luxian(j,i);
        j1=luxian(j+1,i);
        min_tsp(1,i)=min_tsp(1,i)+distance(i1,j1);
    end
end
%%
%%%确定最短路线、最短路程
mintsp1=min(min_tsp);%所有路线中的最短路程
path=[];
for i=1:q
    if(min_tsp(i)==mintsp1)
        path=[path;luxian(i,:)];%所有路线中的最短路线
    end
end

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1054139 发表于 2022-11-26 22:07 | 只看该作者
你好,最后这个最短路线的运行出不来是怎么回事呀,跪求
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表