route是一维的顾客点路径数组,dist是距离矩阵,dd是顾客点需求的电量矩阵
function [A,c]=cdzwz(dist,route,dd)
fp=23;
dis=120;
n=length(route);
p_l=0;
DL=1;
c=[];
A=[];
for i=1:n
if i==1
p_l=p_l+dist(1,route(i)+1)+dd(1,route(i)+1);
DL=DL-(dist(1,route(i)+1)+dd(1,route(i)+1))/dis;
if DL<0
c=[c,i];
DL=1;
end
else
p_l=p_l+dist(route(i-1)+1,route(i)+1)+dd(route(i-1)+1,route(i)+1);
DL=DL-(dist(route(i-1)+1,route(i)+1)+dd(route(i-1)+1,route(i)+1))/dis;
if DL<0
[a,b]=min(dist(route(i-1)+1,end-fp+1:end));
DL=DL+(dist(route(i-1)+1,route(i)+1)+dd(route(i-1)+1,route(i)+1))/dis-a/dis;
if DL<0
c=[c,i-1];
DL=1;
[a,b]=min(dist(route(i-1)+1,end-fp+1:end));
A=[A,b+100];
DL=DL-dist(route(i-1)+1,b+101)/dis;
else
c=[c,i];
DL=1;
[a,b]=min(dist(route(i)+1,end-fp+1:end));
A=[A,b+100];
DL=DL-dist(route(i)+1,b+101)/dis;
end
end
end
end
p_l=p_l+dist(route(end)+1,1);
DL=DL-dist(route(end)+1,1)/dis;
if DL<0
c=[c,100];
DL=1;
[a,b]=min(dist(route(i)+1,end-fp+1:end));
A=[A,b+100];
DL=DL-dist(route(i)+1,b+101)/dis;
end
end
位置 2 处的索引超出数组边界(不能超出 1)。
出错 cdzwz (第 12 行)
p_l=p_l+dist(1,route(i)+1)+dd(1,route(i)+1);