evrp可向顾客点送电量

问题遇到的现象和发生背景

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);