matlab取送货路径优化

Posted 张叔zhangshu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab取送货路径优化相关的知识,希望对你有一定的参考价值。

问题描述

假设快递集散中心负责n个配送点的快递配送任务以及包装回收,每个配送点都配备了快递柜以及快递包装回收容器,配送点工作人员在负责快递柜的投放工作以及寄件服务的同时还负责废旧包装的打包工作。快递运输车辆从快递集散中心出发向配送点配发快件并收取配送点需邮寄的快件和打包好的快递包装,快递运输车辆在完成配送任务后返回快递集散中心并卸载需邮寄的快件和打包好的快递包装,快递集散中心负责将卸载的快件向上一级配送中心邮寄并把回收的快递包装整合交给废旧包装回收公司。

体积25 立方米
百公里油耗60元/9.5L/6.65kg
燃油二氧化碳排放系数3.1705 kg-co2/kg
碳税10元/吨
车辆平均行驶速度40km/h
包装回收载货空间0.1立方米
快递存放载货空间3.4立方米
单位快递容积0.027立方米
单位快递包装容积0.0008立方米
固定成本18.6元/辆*天

符号说明


模型假设

假设1:快递包装为标准规格包装;
假设2:不考虑不同路面及交通延误对配送方案的影响;
假设3:配送车辆均为标准规格的快递配送车;
假设4:不考虑各配送点的时间窗约束;
假设5:各配送点均自行负责回收的快递包装打包工作,因此配送方案不考虑回收的快递包装打包产生的人工费用,
模型建立

假设某一快递配送中心为27个配送点配送和收取快递同时收取废旧包装[13],各配送点及配送中心的位置和货物信息如下表所示;运送的快件多为4号标准规格的包装,即360×300×250MM规格包装,因此本文将所有快件都视为此规格的快件,回收的包装材料也打包为同等规格的包装,具体参数如下表所示。

客户横坐标纵坐标配送量/件取件量/件回收量/件
01111000
14610160130148
21629260270214
318710012589
41343400333389
51339120112105
61930160185152
7136120157111
8277200226187
9324350433326
10205650467614
113835180118163
125012240130227
133730420222396
142048420400374
152131180109152
161415120235112
171140400406388
184227270238259
195049200124187
2021238010669
21823220150205
22275240160215
234117360305317
241431280229265
251150280151269
261811150109148
273142500640492
车型百公里燃油消耗容量平均使用年限购置税
轻型卡车60元25立方米854270元



tic
clear
clc
%% 用importdata这个函数来读取文件 
load('data1');
cap=25;
%% 提取数据信息
vertexs=data(:,2:3);                %所有点的坐标x和y
customer=vertexs(2:end,:);          %顾客坐标
cusnum=size(customer,1);            %顾客数
v_num=16;                           %初始车辆使用数目
demands=data(2:end,4);              %需求量
qujian=data(2:end,5);%取件量
huishou=data(2:end,5);%回收量
h=pdist(vertexs);
dist=squareform(h);                 %距离矩阵
%% 遗传算法参数设置
alpha=1000;                                                       %违反的容量约束的惩罚函数系数
NIND=200;                                                        %种群大小
MAXGEN=1000;                                                     %迭代次数
Pc=0.9;                                                         %交叉概率
Pm=0.05;                                                        %变异概率
GGAP=0.9;                                                       %代沟(Generation gap)
N=cusnum+v_num-1;                                               %染色体长度=顾客数目+车辆最多使用数目-1
%% 种群初始化
Chrom=InitPop(NIND,N);
%% 输出随机解的路线和总距离
disp('初始种群中的一个随机值:')
[currVC,NV,TD]=decode(Chrom(1,:),cusnum,cap,demands,dist);       %对初始解解码
currCost=costFuction(currVC,dist,demands,cap,alpha,NV,qujian,huishou);        %求初始配送方案的成本=车辆行驶总成本+alpha*违反的容量约束之和
disp(['车辆使用数目:',num2str(NV),',车辆行驶总距离:',num2str(TD)]);
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
%% 优化
BestCost=zeros(MAXGEN,1);       %记录每一代全局最优解的总成本
gen=1;
while gen<=MAXGEN
    %% 计算适应度
    ObjV=calObj(Chrom,cusnum,cap,demands,dist,alpha,qujian,huishou);                           %计算种群目标函数值
    FitnV=Fitness(ObjV);
    %% 选择
    SelCh=Select(Chrom,FitnV,GGAP);
    %% OX交叉操作
    SelCh=Recombin(SelCh,Pc);
    %% 变异
    SelCh=Mutate(SelCh,Pm);
    %% 局部搜索操作
%     SelCh=LocalSearch(SelCh,cusnum,cap,demands,dist,alpha,qujian,huishou);
    %% 重插入子代的新种群
    Chrom=Reins(Chrom,SelCh,ObjV);
%     %% 删除种群中重复个体,并补齐删除的个体
%     Chrom=deal_Repeat(Chrom);
    %% 打印当前最优解
    ObjV=calObj(Chrom,cusnum,cap,demands,dist,alpha,qujian,huishou);                           %计算种群目标函数值
    [minObjV,minInd]=min(ObjV);
    BestCost(gen)=minObjV;
    disp(['第',num2str(gen),'代最优解:'])
    [bestVC,bestNV,bestTD]=decode(Chrom(minInd(1),:),cusnum,cap,demands,dist);
    disp(['车辆使用数目:',num2str(bestNV),',车辆行驶总距离:',num2str(bestTD)]);
    fprintf('\\n')
    %% 更新迭代次数
    gen=gen+1 ;
end
%% 打印外层循环每次迭代的全局最优解的总成本变化趋势图
figure;
plot(BestCost,'LineWidth',1);
title('全局最优解的总成本变化趋势图')
xlabel('迭代次数');
ylabel('总成本');
%% 打印全局最优解路线图
draw_Best(bestVC,vertexs);
toc
VX:zhangshu2274

以上是关于matlab取送货路径优化的主要内容,如果未能解决你的问题,请参考以下文章

路径规划基于matlab遗传算法求解同时取送货车辆路径问题含Matlab源码 1072期

SDPTWVRP基于matlab头脑风暴算法求解带时间窗和同时取送货车辆路径问题含Matlab源码 1990期

SDPVRP基于matlab遗传算法求解同时取送货的车辆路径问题含Matlab源码 1487期

SDPVRP基于matlab遗传算法求解同时取送货的车辆路径问题含Matlab源码 1487期

VRP基于matlab禁忌搜索算法求解初始点和终点确定的取送货路径问题含Matlab源码 1224期

TWVRP基于matlab遗传和模拟退火算法求解带时间窗的取送货问题含Matlab源码 1139期