【配送路径规划】基于matlab遗传算法求解带时间窗的电动汽车配送路径规划(目标函数:最小成本;约束条件:续驶里程、额定载重量、数量、起始点)【含Matlab源码 4138期】

💥💥💥💥💞💞💞💞💞💞欢迎来到麒麟科研社博客之家💞💞💞💞💞💞💥💥💥💥
在这里插入图片描述
✅博主简介:985研究生,热爱科研的Matlab仿真开发者,完整代码 论文复现 程序定制 期刊写作 科研合作 扫描文章底部QQ二维码。
🍎个人主页:麒麟科研社
🏆代码获取方式:扫描文章底部QQ二维码

⛳️座右铭:行百里者,半于九十。
更多Matlab路径规划仿真内容点击👇
Matlab路径规划(麒麟科研社版)

⛳️关注微信公众号Matlab王者助手或Matlab海神之光,更多资源等你来!!

⛄一、免疫算法求解带时间窗的电动汽车配送路径规划问题

1 模型假设
外卖配送的实际运行是一个复杂的过程, 受诸多因素影响, 为了建立调度模型, 本文做如下假设。

(1) 外卖配送更多的是服务特殊群体, 所以本文认为外卖配送是一种预约型配送, 即在进行调度安排前, 己经获取了所有顾客的地理信息。

(2) 在实际运行中, 顾客的出行分布具有很强的时空特征, 但本文更注重方法论的介绍。所以, 假设服务区域内的顾客地理位置分布在时间和空间上都服从均匀分布。

(3) 外卖配送车辆的调度与路网条件息息相关, 为了简化模型以及便于说明设计思路, 忽略路网对调度的影响。Quadrifogli等己经证明“对角”路径能够反映车辆真实的运行情况。本文假设车辆按“对角”路径运行, 即车辆只能沿水平或垂直方向运行。

(4) 可配送车辆常用于低密度区域, 顾客购买总量小, 所以为了简化模型不考虑车辆的容量约束。

2 模型建立
外卖配送的车辆调度是在确定总的配送计划之后, 根据顾客的位置信息, 解决“每个车次服务哪些顾客, 怎么配送”的问题。外卖配送从运营者和顾客角度出发建立双层规划模型, 运营者希望在投入下能够服务更多的顾客, 顾客则希望送达的时间越短越好。

假如有一个取餐地点以及送餐地点n, 配送车辆每经过一段距离的配送成本c, 取餐地点和送餐地点距离dij, 能够参与配送的车辆数量为m, 把表示取餐地点的这个点当作0点, 送餐地点当作1, 2, …, n, 定义变量xijk, Sik为:
在这里插入图片描述

3 遗传算法设计
遗传算法是一种解决最优化问题, 得出最优解的方法。该算法是一种高度并行、随即和自适应优化算法, 是J.Holland教授提出的。

遗传算法是随机优化算法, 从一个种群随机开始搜索。该算法模仿了生物进化论过程当中基因 (染色体) 的生存过程, 此过程中的染色体充当了种群当中的个体, 因此每个个体都可以作为是问题的一个解。个体在衍生的过程中不断的复制、交叉和变异, 产生新的个体。通过设定的“适应值”来衡量个体, 并通过“适应值”对新产生的个体进行筛选, 在保持种群数量恒定的同时, 选出最好的个体, 得出问题的最优解。

3.1 算法步骤
遗传算法的流程图如图1所示。

3.2 带有时间窗的外卖车辆调度问题的遗传算法的设计
3.2.1 初始种群的建立

本问题主要为VRPTW问题, 采用自然数进行编码。用0表示餐馆, 用1、2、…、N表示待服务的人员位置。假设餐馆有C台车, 则在配送过程中最多有C条服务路径, 每一台车都始发于餐馆, 最后也终于餐馆。为了能够使染色体中的每一个位置都可以表达一条路径, 因此增加虚拟餐馆数量, 增加个数为C-1个, 虚拟餐馆就可以用N+1、N+2、…、N+C-1表示。则从1、2、…、C+N-1互不重复的自然数的排列就可以构成一个染色体, 并且对应了一种配送方案。

假设, 现在有12位顾客需要外卖配送, 则染色体就可以表示成X={0, 1, 3, 2, 5, 13, 4, 6, 8, 7, 14, 9, 11, 10, 12, 15}中, 13, 14, 15为虚拟餐馆, 配送的车辆为3, 配送路径有三条:0-1-3-2-5-0;0-4-6-8-7-0;0-9-11-10-12-0。

3.2.2 适应值筛选
为达到染色体进化过程中染色体的更新换代, 必须对每个染色体进行评价。对此次配送服务主要有两个约束:

(1) 时间窗约束;

(2) 车辆行驶路程能力。

构建出评价函数如下:
在这里插入图片描述
3.2.3 交叉、变异操作
基于每次的配送过程中配送任务和虚拟餐馆共同排列进行编码, 所形成的染色体中的相邻元素间都是互不相同的自然数。在遗传算法中的单点和多点交叉, 会造成相关配送任务的遗漏。因此

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值