资源简介

本文件共包含5个.m文件,完成了阿里巴巴最后一公里极速配送EC订单配送的任务,经测评程序可知,时间控制在20万左右。并且包含了官方提供的数据

资源截图

代码片段和文件信息

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%下面程序是对O2O商户的货物进行规划安排
%要求1 每个快递员必须得从网店出发
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% 根据路线长度,配送点服务时间,初始化快递员的状态
  %当第二列的字母以A或者S开头时,第三列、第四列均为0,第五列为正;
  %若以B字开头,第三列,第四列时间根据实际情况输入,第五列为负;
  %S1S2S3S4S5S6分别为123456变量
 fid=fopen(‘out_solution1.xls‘‘a+‘);
 m=0;
 Flag=0;
 for i=1:length(DepartRoute)
      m=m+1;
      S3=0;
      S4=0;
      S1=Courier_id{1}{m};
      for j=1:length(DepartRoute{i})
        Flag=Flag+DTotalTime{i}(j);
        if Flag>720
           Flag=DTotalTime{i}(j);
           m=m+1;
           S3=0;
           S4=0;
%         elseif j==length(DepartRoute{i})
               % m=m+1;
%                 S3=0;
%                  S4=0;
        end
        

        
       S1=Courier_id{1}{m};
        
%          if j==length(DepartRoute{i})
%           Flag=0;
%           m=m+1;
%           S1=Courier_id{1}{m};
%           end
               
          for k=1:length(DepartRoute{i}{j})
              %%每个快递员选择不同的路线,保证路线总时间不会超过720
              S2=Site_id1{i};
              S5=Demand{i}(DepartRoute{i}{j}(k));
              S6=Order_id4{OrderId{i}(DepartRoute{i}{j}(k))};
              if S5>0 
                  %以a+方式创建文件out_solution.csv
                  fprintf(fid‘%s\t%s\t%d\t%d\t%d\t%s\n‘S1S2S3S4S5S6);
              end
          end  %%初始化完成
          
          %%电商配送开始
           for k=2:length(DepartRoute{i}{j})
             % S1=Courier_id{1}{m};S2=Site_id1{i};
              S2=Spot_id4{OrderId{i}(DepartRoute{i}{j}(k))};
              S6=Order_id4{OrderId{i}(DepartRoute{i}{j}(k))};
              %计算两点之间的距离
              %第一个配送点与网点之间的距离
              %SDistance=Distance(Lat{i}(k-1)Lng{i}(k-1)Lat{i}(DepartRoute{i}{j}(k))Lng{i}(DepartRoute{i}{j}(k)));%Distance(lat1lng1lat2lng2)
              SDistance=D{i}(DepartRoute{i}{j}(k-1)DepartRoute{i}{j}(k));
              S3=round(S4)+round(SDistance/(Speed));
              S4= S3+ round(ServeTime{i}(DepartRoute{i}{j}(k))); 
              S5=Demand{i}(DepartRoute{i}{j}(k))*(-1);
              if S5<0
             fprintf(fid‘%s\t%s\t%d\t%d\t%d\t%s\n‘S1S2S3S4S5S6);
              end
           end  %%电商配送完成
      end
      Flag=0;
  end
%%配送员从D0001到D0415完成了电商的配送任务,耗时234066分钟(增加迭代次数后变为233489分钟)
%%计算总时间
for i=1:length(DTotalTime)
AllTime(i)=sum(DTotalTime{i});
end
TT=sum(AllTime);
%%O2O商户配送
%fid=fopen(‘out_solution3.xls‘‘a+‘);
% 现在需要将O2O的订单按照时间先后顺序插入到表格中来
%% 首先配送特殊的12个商户(不可能在规定时间送达),标号用SpecialPot保存
%% 其次,配送每个网点只对应于一个商户的情况,安排1个快递员进行配送



  
% for i=1:length(DepartRoute{1})
%      T(i)=sum(Demand{1}(DepartRoute{1}{i}));
%  end

%   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3805  2016-08-15 11:21  EC\1.csv

     文件     246541  2016-08-15 11:21  EC\2.csv

     文件      14575  2016-08-15 11:21  EC\3.csv

     文件     182926  2016-08-15 11:21  EC\4.csv

     文件     106115  2016-08-15 11:21  EC\5.csv

     文件       6010  2016-08-15 11:21  EC\6.csv

     文件       3074  2016-08-15 11:21  EC\Arrange.m

     文件        228  2016-08-15 11:21  EC\Distance.m

     文件       3358  2016-08-15 11:21  EC\Result.m

     文件       7452  2016-08-15 11:21  EC\VRPPSO.m

     目录          0  2016-08-15 11:21  EC

----------- ---------  ---------- -----  ----

               574084                    11


评论

共有 条评论