1、外卖配送中与普通路径优化的区别

(1)外卖配送中必须先取订单在进行配送,所以染色体是有序排列的
(2)两点间的距离并不代表十几的距离
(3)在进行交叉与变异时也只能运用特殊的方法
(4)如有载货限制顾客-1,商家+1进行计算

原始数据


(1)第一列0为原点,1-5为商家 6-10为顾客
(2)二三列为坐标
(3)四五列为时间窗的开始与结束

产生种群

5 2 3 4 10 1 8 9 7 6
如上,在产生种群时,商家1的订单对应客户6,以此类推,所以1必须在6的前面,2、3、4、5都是如此。

选择

选择采用锦标赛,适应度为距离的倒数

交叉与变异

采用保续的交叉法如下

变异

结果

gs为超过顾客最晚时间窗的订单个数,
w1为软时间窗违反的总时间

优化过程


优化结果,其中超过客户最晚时间窗的用三角在图中标了出来。
主程序如下

clear
clc
close all
tic
%% 读取数据
load('shuju');
bl=0;
%% 提取数据信息
E=shuju(1,4);                                                    %初始点时间窗开始时间
L=shuju(1,5);                                                    %初始点心时间窗结束时间
zuobiao=shuju(:,2:3);                                       %所有点的坐标x和y
zuobiao=[zuobiao(:,1),-zuobiao(:,2)];
customer=zuobiao(2:end,:);                                       %顾客坐标
cusnum=size(customer,1);                                         %顾客数
v_num=1;                                                        %车辆数
a=shuju(2:end,4);                                                %顾客时间窗开始时间[a[i],b[i]]
b=shuju(2:end,5);                                                %顾客时间窗结束时间[a[i],b[i]]dist=Distanse(zuobiao); %根据坐标的欧式距离矩阵% dist=load('matlab.mat');%D导入距离矩阵
% dist=struct2cell(dist);
% dist=cell2mat(dist);
%% 遗传算法参数设置
alpha=100000;                                                       %违反的容量约束的惩罚函数系数
belta=0.4;%违反时间窗约束的惩罚函数系数
belta2=1;
chesu=100;%车速NIND=1000;                                                       %种群大小
MAXGEN=50;                                                     %迭代次数
Pc=0.9;                                                         %交叉概率
Pm=0.05;                                                        %变异概率
GGAP=0.9;                                                       %代沟(Generation gap)
N=cusnum;
%% 初始化种群
Chrom=init(cusnum,NIND);                             %构造初始解%% 输出随机解的路线和总距离
disp('初始种群中的一个随机值:')[VC,TD,violate_cus]=decode(Chrom(1,:),cusnum,a,b,L,dist,chesu,bl);
% disp(['总距离:',num2str(TD)]);
disp(['车辆行驶总距离:',num2str(TD)]);
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
%% 优化
gen=1;
figure;
hold on;box on
xlim([0,MAXGEN])
title('优化过程')
xlabel('代数')
ylabel('最优值')
[ObjV,bsv,gs,w1,w2]=calObj(Chrom,cusnum,a,b,L,dist,alpha,belta,belta2,chesu,bl);             %计算种群目标函数值
preObjV=min(ObjV);
%%
while gen<=MAXGEN%% 计算适应度[ObjV,bsv,gs,w1,w2]=calObj(Chrom,cusnum,a,b,L,dist,alpha,belta,belta2,chesu,bl);           %计算种群目标函数值line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001)%画图 最优函数preObjV=min(ObjV);FitnV=Fitness(ObjV);%% 选择 SelCh=Select(Chrom,FitnV,GGAP);%% OX交叉操作SelCh=Recombin(SelCh,Pc);%% 变异SelCh=Mutate(SelCh,Pm);%% 重插入子代的新种群Chrom=Reins(Chrom,SelCh,ObjV);%% 打印当前最优解[ObjV,bsv,gs,w1,w2]=calObj(Chrom,cusnum,a,b,L,dist,alpha,belta,belta2,chesu,bl);           %计算种群目标函数值[minObjV,minInd]=min(ObjV);disp(['第',num2str(gen),'代最优解:'])    [bestVC,bestTD,best_viocus]=decode(Chrom(minInd(1),:),cusnum,a,b,L,dist,chesu,bl);disp(['车辆行驶总距离:',num2str(bestTD)]);fprintf('\n')%% 更新迭代次数gen=gen+1 ;
end
%% 画出最优解的路线图
[ObjV,bsv,gs,w1,w2]=calObj(Chrom,cusnum,a,b,L,dist,alpha,belta,belta2,chesu,bl);              %计算种群目标函数值
[minObjV,minInd]=min(ObjV);
%% 输出最优解的路线和总距离
disp('最优解:')
bestChrom=Chrom(minInd(1),:);
[bestVC,bestTD,best_viocus]=decode(bestChrom,cusnum,a,b,L,dist,chesu,bl);
disp(['车辆行驶总距离:',num2str(bestTD)]);
disp('-------------------------------------------------------------')
% %% 画出最终路线图
% ee=[];
% ccc=0;
% for i=1:cusnum
%     if i==1
%         ccc=(ccc+dist(1,bestVC(1)+1)/chesu);
%     ee(i,1)=ccc;
%
%     else
%         ccc=ccc+dist((bestVC(i-1)+1),bestVC(i)+1)/chesu;
%         ee(i,1)=ccc;
% end
% end
% eee=cumsum(ee);
draw_Best(bestVC,zuobiao,b,bsv);
gs
w1
w2

如需帮忙

完成代码下载链接

基于遗传算法有时间窗、载重约束外卖配送路径优化相关推荐

  1. 物流管理论文实现:基于遗传算法的带时间窗和载重约束的车辆路径优化

    车辆路径问题 ​ 车辆路径问题(Vehicle Routing Problem-VRP)是为一些车辆(确定或不确定数量)确定访问一些客户的路径,每一客户被而且只被访问一次,且每条路径上的客户需求量之和 ...

  2. 【路径规划】基于遗传算法求解多车多类型车辆的车辆路径优化问题附matlab代码

    1 内容介绍 多车辆多路线的交通路线优化涉及到排序问题,是一个N-P难题,高效精确的算法存在的可能性不大.提出了基于遗传算法的求解方法,给出了实例来证明如何利用遗传算法解决多车辆多路线的优化问题.结果 ...

  3. 【VRP问题】基于遗传算法求解容量和距离约束的车辆路径规划问题CDVRP附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  4. matlab求解外卖配送路径优化

    模型限制条件 1.先取后送 2.多骑手 3.载重限制 如需帮助请私聊 tic clear clc %% 用importdata这个函数来读取文件 data=importdata('data3.mat' ...

  5. 计算机毕业设计ssm基于客户时间窗变化的物流配送管理系统设计ro75j系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于客户时间窗变化的物流配送管理系统设计ro75j系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于客户时间窗变化的物流配送管理系统设计ro75j系统+程序+源码+lw+远 ...

  6. matlab遗传算法配送路径,基于Matlab物流配送路径优化问题遗传算法的实现

    维普资讯 http://doc.docsou.com 第2 9卷总第 1 1 3期 物流商坛 物流配送路径优化问题遗传算法的实现 The Re lz to f Ge tc Al o ih o a ia ...

  7. matlab物流配送最优路径,基于Matlab物流配送路径优化问题遗传算法的实现

    第 29 卷总第 131 期 ·物流商坛· 收稿日期: 2005-12-22 作者简介: 弓晋丽(1983- ), 女, 山西文水人, 长安大学汽车学院硕士研究生, 研究方向: 物流系统, 道路运输与 ...

  8. 【TWVRP】基于matlab遗传算法求解带时间窗且车辆速度车辆路径规划问题【含Matlab源码 2094期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  9. 遗传算法配送路径优化java_基于遗传算法的配送中心路径优化问题分析

    1. 引言 VRP问题指车辆路线优化问题,一般而言,有一个或多个供应点,多个需求点有不同的货物需求,分析如何组织货车在这些需求点中进行配送从而达到总里程最小.配送时间最短.总成本最低等目标.VRP问题 ...

最新文章

  1. 怎么这一个c语言的dll文件,如何在C中获取DLL文件的版本信息
  2. Spring MVC的表单控制器——SimpleFormController .
  3. 2016经典微小说:《轮回》
  4. System V IPC之消息队列
  5. flowable 动态多实例
  6. c语言程序设计语言描述,C语言程序设计题目描述(详).txt
  7. 高光谱数据集_基于飞桨实现高光谱反演:通过遥感数据获取土壤某物质含量
  8. JavaScript学习总结(1)——JavaScript基础
  9. python创建实例属性_Python学习笔记__6.5章 实例属性和类属性
  10. c语言算法课件,《C语言常见算法》PPT课件.ppt
  11. c 调用openoffice word转pdf_Word 批量转 PDF
  12. solidity 中的时间_智能合约语言 Solidity 教程系列7 - 以太单位及时间单位
  13. 1.Android学习之Android项目结构
  14. 分布式机器学习第3章 分布式机器学习框架
  15. el表达式中三元表达式
  16. 从MPU6050了解姿态解算
  17. 统计推断——假设检验——方差分析
  18. Python机器学习05——判别分析
  19. 2021面试第二弹来袭
  20. (二)购物商城数据库设计-商品表设计

热门文章

  1. 根据图片的URL生成PDF保存到服务器上(后台C#实现)
  2. Windows窗口相关的一些概念解释
  3. 浅尝辄止_数学建模(笔记_斯皮尔曼相关系数)
  4. 串口助手调试NB模块(BC35G/BC95)
  5. torchtext安装教程
  6. vfp 字体设置问题
  7. LS-Prepost 小球打靶
  8. canvas黑客帝国数字雨背景 html+css+js
  9. 基于simulink的信道化接收机建模与仿真
  10. 51单片机的智能饮水机控制系统【proteus仿真+程序+原理图】