作业帮 > 综合 > 作业

matlab运行程序时不报错,只显示出ans=程序名,这是为什么,以下是详细代码,用pso算法求解tsp问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 11:22:35
matlab运行程序时不报错,只显示出ans=程序名,这是为什么,以下是详细代码,用pso算法求解tsp问题
clear
clc
tic;
global N D
data1=load('vrpnc1.txt');
n=size(data1,1)-1; %depot+customer
a=data1(2:(n+1),1);
b=data1(2:(n+1),2);
C=[a b]; %城市坐标矩阵
D=zeros(n,n);
for i=1:n
for j=1:n
if =j
D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
end
D(j,i)=D(i,j);
end
end
s_size=1000; %种群数目
N=n-1;% 粒子的向量数,顾客数customer
c1=2;
c2=2;
Wmin=0.01;
Wmax=0.9;
w=0.4;
tmax=150;% 迭代次数
xr=zeros(s_size,N);
for i=1:s_size
xr(i,:)=randperm(N);
end
for i=1:s_size
for j=1:N-1
v_cost=v_cost+D(xr(i,j),xr(i,j+1));
j=j+1;
end
best_p(i)=v_cost(i);
best_pv=xr(i,:);
end
k=trace(max(v_cost));
best_g=v_cost(k);
best_gv=xr(k,:);
v_cost1=zeros(s_size,N);
xv=zeros(s_size,N);
for t=1:tmax
for i=1:s_size
w=Wmax-tt*(Wmax-Wmin)/tmax;
xv_temp=w*xv(i,:)+c1*rand()*(best_p(i,:)-xr(i,:))+c2*rand()*(best_g-xr(i,:))
xr(i,:)=xr(i,:)+xv_temp;
xv(i,:)=xv_temp;
for j=1:N-1
v_cost1(i)=v_cost1(i)+D(xr(i,j),xr(i,j+1));
j=j+1;
end
if v_cost1(i)
1、v_cost按你写的程序只是一个数不是一个数组
2、最后一行多加了)和,
因为不能运行,所以只看了这么多