基于遗传算法有时间窗、载重约束外卖配送路径优化
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
如需帮忙
完成代码下载链接
基于遗传算法有时间窗、载重约束外卖配送路径优化相关推荐
- 物流管理论文实现:基于遗传算法的带时间窗和载重约束的车辆路径优化
车辆路径问题 车辆路径问题(Vehicle Routing Problem-VRP)是为一些车辆(确定或不确定数量)确定访问一些客户的路径,每一客户被而且只被访问一次,且每条路径上的客户需求量之和 ...
- 【路径规划】基于遗传算法求解多车多类型车辆的车辆路径优化问题附matlab代码
1 内容介绍 多车辆多路线的交通路线优化涉及到排序问题,是一个N-P难题,高效精确的算法存在的可能性不大.提出了基于遗传算法的求解方法,给出了实例来证明如何利用遗传算法解决多车辆多路线的优化问题.结果 ...
- 【VRP问题】基于遗传算法求解容量和距离约束的车辆路径规划问题CDVRP附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- matlab求解外卖配送路径优化
模型限制条件 1.先取后送 2.多骑手 3.载重限制 如需帮助请私聊 tic clear clc %% 用importdata这个函数来读取文件 data=importdata('data3.mat' ...
- 计算机毕业设计ssm基于客户时间窗变化的物流配送管理系统设计ro75j系统+程序+源码+lw+远程部署
计算机毕业设计ssm基于客户时间窗变化的物流配送管理系统设计ro75j系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于客户时间窗变化的物流配送管理系统设计ro75j系统+程序+源码+lw+远 ...
- matlab遗传算法配送路径,基于Matlab物流配送路径优化问题遗传算法的实现
维普资讯 http://doc.docsou.com 第2 9卷总第 1 1 3期 物流商坛 物流配送路径优化问题遗传算法的实现 The Re lz to f Ge tc Al o ih o a ia ...
- matlab物流配送最优路径,基于Matlab物流配送路径优化问题遗传算法的实现
第 29 卷总第 131 期 ·物流商坛· 收稿日期: 2005-12-22 作者简介: 弓晋丽(1983- ), 女, 山西文水人, 长安大学汽车学院硕士研究生, 研究方向: 物流系统, 道路运输与 ...
- 【TWVRP】基于matlab遗传算法求解带时间窗且车辆速度车辆路径规划问题【含Matlab源码 2094期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 遗传算法配送路径优化java_基于遗传算法的配送中心路径优化问题分析
1. 引言 VRP问题指车辆路线优化问题,一般而言,有一个或多个供应点,多个需求点有不同的货物需求,分析如何组织货车在这些需求点中进行配送从而达到总里程最小.配送时间最短.总成本最低等目标.VRP问题 ...
最新文章
- 怎么这一个c语言的dll文件,如何在C中获取DLL文件的版本信息
- Spring MVC的表单控制器——SimpleFormController .
- 2016经典微小说:《轮回》
- System V IPC之消息队列
- flowable 动态多实例
- c语言程序设计语言描述,C语言程序设计题目描述(详).txt
- 高光谱数据集_基于飞桨实现高光谱反演:通过遥感数据获取土壤某物质含量
- JavaScript学习总结(1)——JavaScript基础
- python创建实例属性_Python学习笔记__6.5章 实例属性和类属性
- c语言算法课件,《C语言常见算法》PPT课件.ppt
- c 调用openoffice word转pdf_Word 批量转 PDF
- solidity 中的时间_智能合约语言 Solidity 教程系列7 - 以太单位及时间单位
- 1.Android学习之Android项目结构
- 分布式机器学习第3章 分布式机器学习框架
- el表达式中三元表达式
- 从MPU6050了解姿态解算
- 统计推断——假设检验——方差分析
- Python机器学习05——判别分析
- 2021面试第二弹来袭
- (二)购物商城数据库设计-商品表设计