matlab求最佳哈密顿圈遇到错误求最佳哈密顿圈遇到错误程序如下%用矩阵翻转方法来实现二边逐次修**过程,求最佳哈密尔顿圈(H圈)clcclearload('zd.mat');D=ZD;%floyd算法求得的每对地点之间最短路
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 07:50:31
![matlab求最佳哈密顿圈遇到错误求最佳哈密顿圈遇到错误程序如下%用矩阵翻转方法来实现二边逐次修**过程,求最佳哈密尔顿圈(H圈)clcclearload('zd.mat');D=ZD;%floyd算法求得的每对地点之间最短路](/uploads/image/z/8693831-47-1.jpg?t=matlab%E6%B1%82%E6%9C%80%E4%BD%B3%E5%93%88%E5%AF%86%E9%A1%BF%E5%9C%88%E9%81%87%E5%88%B0%E9%94%99%E8%AF%AF%E6%B1%82%E6%9C%80%E4%BD%B3%E5%93%88%E5%AF%86%E9%A1%BF%E5%9C%88%E9%81%87%E5%88%B0%E9%94%99%E8%AF%AF%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%B8%8B%25%E7%94%A8%E7%9F%A9%E9%98%B5%E7%BF%BB%E8%BD%AC%E6%96%B9%E6%B3%95%E6%9D%A5%E5%AE%9E%E7%8E%B0%E4%BA%8C%E8%BE%B9%E9%80%90%E6%AC%A1%E4%BF%AE%2A%2A%E8%BF%87%E7%A8%8B%2C%E6%B1%82%E6%9C%80%E4%BD%B3%E5%93%88%E5%AF%86%E5%B0%94%E9%A1%BF%E5%9C%88%EF%BC%88H%E5%9C%88%EF%BC%89clcclearload%28%27zd.mat%27%29%3BD%3DZD%3B%25floyd%E7%AE%97%E6%B3%95%E6%B1%82%E5%BE%97%E7%9A%84%E6%AF%8F%E5%AF%B9%E5%9C%B0%E7%82%B9%E4%B9%8B%E9%97%B4%E6%9C%80%E7%9F%AD%E8%B7%AF)
matlab求最佳哈密顿圈遇到错误求最佳哈密顿圈遇到错误程序如下%用矩阵翻转方法来实现二边逐次修**过程,求最佳哈密尔顿圈(H圈)clcclearload('zd.mat');D=ZD;%floyd算法求得的每对地点之间最短路
matlab求最佳哈密顿圈遇到错误
求最佳哈密顿圈遇到错误
程序如下
%用矩阵翻转方法来实现二边逐次修**过程,求最佳哈密尔顿圈(H圈)
clc
clear
load('zd.mat');
D=ZD;%floyd算法求得的每对地点之间最短路径矩阵
u=[13,14,16,17,18,21,23,24,26,27,31,32,34,36,38,39,40,42,43,45,49,];%21个送货点
a2=size(u);
for q=1:1000 %随机搜索1000个初始H圈
a1=[1:a2(2)];
b=a1(randperm(length(a1)));
x=b(1:a2(2));
for p=1:a2(2)
u1(p)=u(x(p)); %my u1为随机得到的21点的顺序
end
u2=[51];%定义点O/51为起始点
for i=1:21
u2(i+1)=u1(i); %my 加入起点
end
for i=1:22
for j=1:22
e(i,j)=D(u2(i),u2(j));
end
end
E=zeros(25,25); %列出该初始H圈加点序边框的距离矩阵
for i=1:23;
E(1,i)=i-1;
E(25,i)=i-1;
end
E(1,24)=1;E(25,24)=1;
for i=1:22
for j=1:22
E(i+1,j+1)=e(i,j);
end
end
for i=2:23
E(24,i)=e(1,i-1);
end
for i=2:23
E(i,24)=e(i-1,1);
end
[a,b,s]=h(E);%调用求最佳H圈的h函数.
[a,b,s]=h(b); %把得出的结果矩阵再次调用这个函数,即为近似最佳H圈.
for i=1:23
l(i)=u2(a(1,i+1));%列出送货员送货路线
end
L(q,:)=l;
S(q)=s;%送货员走的总路线长度矩阵
end
调用的函数文件如下
% 求最佳H圈M文件
function[a,b,s]=h(e)%e为按照初始H圈点的顺序组成的含点序边框的距离矩阵
n=size(e);%求出距离矩阵的维数.
for i=2:n-2;%有一个顺序的外框,所以循环从2开始到n - 2.
for j=i+1:n-2;
if e(i,j)+e(i+1,j+1) h at 18
a;
Error in ==> qzh at 44
[a,b,s]=h(b); %把得出的结果矩阵再次调用这个函数,即为近似最佳H圈.
数据文件ZD.mat没法上传,若需要我可以发给你.
matlab求最佳哈密顿圈遇到错误求最佳哈密顿圈遇到错误程序如下%用矩阵翻转方法来实现二边逐次修**过程,求最佳哈密尔顿圈(H圈)clcclearload('zd.mat');D=ZD;%floyd算法求得的每对地点之间最短路
计算机性能问题,有些计算机是可以实现1000个循环的,有些是200次左右