【配送路径规划】基于matlab遗传算法卡车和两架无人机配送路径规划【含Matlab源码 2394期】

本文主要是介绍【配送路径规划】基于matlab遗传算法卡车和两架无人机配送路径规划【含Matlab源码 2394期】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、问题描述与模型建立

1 问题描述与模型分析
某地区有已知取送货需求的n个客户点,采用卡车携带小型无人机联合配送的方式从配送中心O(也作O’)出发为客户进行配送,配送模式见图1,在完成所有客户服务后返回仓库O’,使得总配送时间最短。由于某些客户需求无法由无人机完成(例如超过无人机有效载重的包裹,客户位置超过无人机飞行最大距离的包裹等)。因此,这样的客户仅能由卡车进行服务,其余客户均能由无人机安排配送。

图1所示为该配送模式的路径示意图,以往研究中,卡车与无人机均需承担配送任务,卡车在某一客户点处发射无人机后停止其配送服务,在该处等待无人机并进行回收。但在实际生活中,存在卡车无法长时间停车和交通堵塞情况,必须尽快前往下一个客户点,不能在发射地点等待无人机返回。因此,建立模型时考虑在无人机的服务过程中,使卡车继续进行配送任务,并在其后续节点将无人机进行回收。
在这里插入图片描述
图1 配送模式
在这里插入图片描述
为便于该问题中模型的建立及不失问题的一般性,对模型做出如下假设:1)无人机单次发射只服务一个客户;2)客户节点需求不可分割;3)无人机仅能从客户点所在位置处或配送中心位置处发射,且必须在沿途的后续客户点或配送中心处汇合;4)当无人机和卡车在某一客户点汇合时,较早到达的一个等待另一个[9];5)不考虑其他影响最大飞行速度的因素,且无人机都以最大飞行速度进行配送。

2 参数定义
在这里插入图片描述
3 模型构建
卡车与无人机联合配送的车辆路径优化模型是使总配送时间最短为目标函数以及多个约束条件组成。在确定目标时考虑无人机与卡车的速度及其各自的服务时间,各个节点处车辆与无人机的载重等因素,实现真正可行的目标解。

⛄二、部分源代码

function [varargout ] = d2tsp_ga(varargin)

% Initialize default configuration
defaultConfig.nCities = 30; %number stops
defaultConfig.capacity = 3; %drone capacity (1,2,3)
defaultConfig.range = 10; %(10, 15, 20)
defaultConfig.speed = 2; %drone speed factor of truck =1
defaultConfig.energy = 5e4; %(drone 5e4, 1e5, 2e5)
defaultConfig.energyP = 5e4; %(drone 5e4, 1e5, 1.3e4)
defaultConfig.energyT = 8.08e6; %(truck 8.08e6, 6.0e6)
defaultConfig.energyTP = 4.04e4; %(truck , 4.04e4, 1.2e5)
defaultConfig.cost = .04; % $0.04, $0.08, $0.20
defaultConfig.costT = .70; % $0.70, $0.40
defaultConfig.xy = 10*rand(defaultConfig.nCities,2);
defaultConfig.dmat = []; %dist matrix
defaultConfig.popSize = 200; %population size
defaultConfig.numIter = 2.5e2; %1.25e3; %iterations
defaultConfig.showProg = true; %show progress of route
defaultConfig.showResult = true; %show results on completion
defaultConfig.showWaitbar = false; %show wait bar

% output (inputs) nCities, cacity, range, speed, cost-d, cost-t, energy-d, energy-t, energyP-d, energyP-t, cost, costT
% output (results) minTime, minEnergy, minEnergyP, minCost, % If user inputs given
if ~narginuserConfig = struct();
elseif isstruct(varargin{1})userConfig = varargin{1};
elsetryuserConfig = struct(varargin{:});catcherror('Error input structure');end
end% Override default configuration with user inputs
configStruct = get_config(defaultConfig,userConfig);
nCities     = configStruct.nCities;
xy          = configStruct.xy;
dmat        = configStruct.dmat;
cap         = configStruct.capacity;
range       = configStruct.range;
speed       = configStruct.speed;
energy      = configStruct.energy;
energyP     = configStruct.energyP;%(parc-km energy:drone 5e4, 1e5, 1.3e4) 
energyT     = configStruct.energyT;%(truck 8.08e6, 6.0e6)
energyTP    = configStruct.energyTP;%(truck , 4.04e4, 1.2e5) 
cost        = configStruct.cost;
costT       = configStruct.costT;
popSize     = configStruct.popSize;
numIter     = configStruct.numIter;
showProg    = configStruct.showProg;
showResult  = configStruct.showResult;
showWaitbar = configStruct.showWaitbar;
if isempty(dmat)nPoints = size(xy,1);a = meshgrid(1:nPoints);dmat = reshape(sqrt(sum((xy(a,:)-xy(a',:)).^2,2)),nPoints,nPoints);
end% Verify Inputs
[N,dims] = size(xy);
[nr,nc] = size(dmat);
if N ~= nr || N ~= ncerror('Invalid XY or DMAT inputs!')
end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]刘艳秋,段聪.基于卡车与无人机联合配送的车辆路径优化[J].邵阳学院学报(自然科学版). 2022,19(02)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

这篇关于【配送路径规划】基于matlab遗传算法卡车和两架无人机配送路径规划【含Matlab源码 2394期】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/397946

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

浅谈MySQL的容量规划

《浅谈MySQL的容量规划》进行MySQL的容量规划是确保数据库能够在当前和未来的负载下顺利运行的重要步骤,容量规划包括评估当前资源使用情况、预测未来增长、调整配置和硬件资源等,感兴趣的可以了解一下... 目录一、评估当前资源使用情况1.1 磁盘空间使用1.2 内存使用1.3 CPU使用1.4 网络带宽二、

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3