A题 农村公交与异构无人机协同配送优化

news2024/11/23 20:29:34

1.1问题背景

农村地区的独特地理和社会结构带来了配送上的特殊挑战。复杂的地形,如山地和河流等自然障碍,使得道路建设困难重重,导致道路网络稀疏,而分散的配送点进一步增加了物流的复杂性。这些因素叠加,使得传统配送方式面临效率低下和成本高昂的双重困境,严重制约了农村物流的发展。随着农村经济的持续增长和配送需求的日益上升,这一问题变得尤为突出。

为有效应对农村地区的配送需求,提出了一种创新的配送模式——农村公交与异构无人机的协同配送。这一模式巧妙地结合了农村公交广泛的覆盖范围和经济成本优势,以及无人机的空中灵活性,旨在提升配送效率并降低成本。在实际配送流程中,公交车负责将无人机和货物运输至各个公交站点,这些站点充当无人机的起降平台和货物的转运枢纽。随后,无人机从这些站点起飞,利用其空中优势,迅速而准确地完成最终的配送任务。此外,异构无人机的引入,能够根据不同配送需求进行灵活的任务分配,进一步优化配送流程,满足农村地区多样化的物流需求。

无人机可在公交站点等待公交车,并在必要时停留5分钟更换电池和装货。费用由固定使用费和基于飞行里程的变动费组成。每个需求点的任务是不可分割的,一辆公交车最多携带两架无人机。任务结束后,无人机需返回起始站。忽略客户点的时间窗和道路拥堵,公交车以35公里/小时的速度行驶。

1.2问题重述

基于上述问题背景,本文需研究完成以下问题:

问题一:开发一个优化模型,目标是最小化使用单一类型(A类)无人机与农村公交车协同配送的总费用。该模型应确定无人机的最优飞行路径和时刻表,以实现成本效益最大化。模型需考虑无人机的固定使用费用和与飞行里程相关的变动费用,同时确保无人机在完成配送任务后返回起始站点。

问题二:扩展问题一的模型,以允许使用三种不同类型的无人机进行协同配送。重新构建优化模型,以实现在多类型无人机条件下的最小总费用配送方案。模型应考虑每种无人机的特性,包括固定费用和变动费用,并确定最优的无人机分配和飞行路径。

问题三:在问题二的基础上增加复杂性,考虑每个需求点不仅需要配送货物,还有取货需求。取货任务将为配送公司带来额外收入(每公斤0.5元)。构建一个综合优化模型,该模型不仅要考虑配送成本,还要考虑取货带来的收入。目标是确定最佳配送和取货方案,以最大化整体利润。模型应包括无人机的飞行路径规划、时刻表安排以及取货和配送的最优组合。

模型假设

  1. 假设所有类型无人机的性能参数,包括最大载重、飞行速度、飞行距离和固定费用,均符合给定的标准且在任务执行期间保持不变。
  2. 假设所有公交站点均具备无人机起降和维护的条件,包括空间、电源和必要的操作人员。
  3. 假设需求点的位置在整个配送期间是固定不变的,且所有需求点均可由无人机服务。
  4. 假设需求点没有特定的时间窗限制,无人机可以在任何时间进行配送和取货。
  5. 假设公交车上的货物天然是该站点附近的需求点所需要的。
  6. 假设公交车严格按照预定的时刻表运行,且不受交通状况或其他外部因素的影响。
  7. 假设公交车在每个站点都会停靠5分钟用于货物装卸以及无人机电池更换。
  8. 假设两个方向的公交车都可以为无人机补货。
  9. 假设白河是配送中心,无人机从这里出发,最终要回到白河。

问题一解题思路

        方案是首先部署第一趟公交车,搭载两架A型无人机前往站点i2,并在该站点完成两项配送任务。随后,第二趟公交车再次携带两架A型无人机,途中在首个站点进行货物的快速装卸,继而驶往i3站点释放无人机,以此类推。第三趟公交车第三趟公交车不需要携带新的无人机,只需要将i2站点完成任务的无人机携带至下一个站点即可。在每一轮配送过程中,需要精心安排公交车的行程,确保无人机能够在完成各自任务后,由后续的公交车接力运送至下一站点。至关重要的是,算法设计要充分考虑公交车的运营时刻表,确保所有无人机在日终时能够被安全运回始发点。

        当无人机到达对应公交站后,在离开该公交站去往下一个公交站之前这一段时间为无人机送货时间,每个站点的两台无人机同时工作。通过往返的公交车补充货物。理论上两台无人机最多可以完成8个目标点的送货任务。本文通过动态规划以及贪心算法合理安排每个目标点的优先级。确保无人机送货时间不会与公交车到站时间发生冲突。

        通过此策略,不仅确保了货物配送的时效性,同时也最大化了成本效益。该方法的实施,展现了贪心算法在物流配送优化问题中的应用潜力,为解决类似的实际问题提供了一种高效且经济的解决方案。此外,该策略还考虑了整数规划模型中的决策变量,确保了解决方案的可行性和实用性,进一步增强了模型的优化效果。

问题一飞行路径
8fd53e78e4f44d8ca697d4efb49c5aa1.png

问题一 时间表

86eab63db2814a47bf0e1148cf771ce8.jpeg

核心调度代码

schedules = [];
station_pra = [1 1 1; 2 2 3; 3 3 1; 4 4 3;
               5 1 1; 6 2 3; 7 3 1; 8 4 3];
allcost = 8 * 80;%2天时间 每天四个无人机 2 * 4 * 80
for j = 1:size(station_pra, 1)
    station = station_pra(j,1);
    trip = station_pra(j,2);
    fly = station_pra(j,3);

    station = station + 1;
    item = bus_station_item(station,:);
    item(find(item==0)) = [];
    station_time = sort([A_to_B(trip).time(station), A_to_B(trip + 1).time(station), B_to_A(trip).time(10 - station), B_to_A(trip + 1).time(10 - station)]);
    item_time = [time_matrix_min(item(1,:))];
    for i = 1:size(item, 2)
        schedule.fly = rem(i, 2) + fly;
        schedule.station = station;
        schedule.item = item(i);
        schedule.start_time = station_time(int16(i/2));
        schedule.end_time = station_time(int16(i/2)) + item_time(i);
        schedule.cost = 0.8 * distance_matrix_min(item(i));
        schedules = [schedules, schedule];
        allcost = allcost + schedule.cost;
    end
end
allcost

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux top命令介绍以及使用

文章目录 介绍 top 命令1. top 的基本功能2. 如何启动 top3. top 的输出解释系统概况任务和 CPU 使用情况内存和交换空间进程信息 4. 常用操作 总结查看逻辑CPU的个数查看系统运行时间 介绍 top 命令 top 是一个在类 Unix 系统中广泛使用的命令行工具,用于实时显示…

建模导论的最后一个视频笔记

建模的目的:解决贴合题意的问题,用合适的方法解决问题前提:理解题意,知道题目在说什么,前提的前提:了解题目的背景,知道题目这类问题的常见概念,了解这方面的知识如果是数据题&#…

常见的网络安全服务大全(汇总详解)

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330&scene21#wechat_redirect 《网安面试指南》…

若楠带你初识OpenCV(4) -- 图像边缘检测

文章目录 OpenCV图像边缘检测sobel 算子1. x方向上的边缘2. 保存负值3. 取绝对值4. y方向上的边缘5. 加权运算不要双方向同时卷积读取猪猪侠查看效果 Scharr 算子Laplacian 算子 canny边缘检测优点理论步骤四部分1. 图像降噪2. 梯度计算3. 非极大值抑制4. 双阈值边界跟踪 示例应…

【QT | 开发环境搭建】windows系统(Win10)安装 QT 5.12.12 开发环境

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 本文未经允许…

WebStorm用Debug模式调试Vue项目

问题说明 开发前端代码时,一直很苦恼调试前端代码的麻烦。 简单的内容可以通过console.log()在控制台打印变量值,来验证预期结果。 涉及到稍复杂的逻辑,就需要在代码中侵入增加debugger,或者在浏览器中找到js文件,再手…

Linux 之 mysql-5.7.44 下载/安装(离线)

下载 官网 MySQL :: Download MySQL Community Server (Archived Versions) 安装 1.解压并放到指定目录(/home/mysql) tar -zxvf mysql-5.7.44-el7-x86_64.tar.gz 移动到指定安装位置(我的:/home 下) mv mysql-5.…

实操在聆思CSK6大模型开发板的英文评测SDK中自定义添加单词、短语、句子资源

引言 英文评测示例通过对用户语音输入的英文单词进行精准识别,提供 单词、短语、句子 三种类型,用户在选择好类型后,可根据屏幕上的提示进行语音输入,评测算法将对输入的英文语音进行精准识别,并对单词的发音、错读、漏…

Codeforces Round 970 (Div. 3)(ABCDEF)

Codeforces Round 970 (Div. 3) A:Sakurakos Exams 签到 题意:给定1,2的数量,判断是否能用加减符号使得这些1,2计算出0 void solve() {cin>>n>>m;if(n%2)cout<<"NO\n";else{if(m%20||n)cout<<"YES\n";else cout<<"…

作为前端,感受一下MemFire Cloud带来的魅力

作为一名前端开发者&#xff0c;你是否曾为后台开发的繁琐和复杂而头疼&#xff1f;是否想过只需要专注于前端界面&#xff0c;而所有的后端工作都能一键搞定&#xff1f;如果你有这些想法&#xff0c;那么MemFire Cloud 无疑会成为你开发路上的新神器。 什么是MemFire Cloud…

SpringBoot学习(8)RabbitMQ详解

RabbitMQ 即一个消息队列&#xff0c;主要是用来实现应用程序的异步和解耦&#xff0c;同时也能起到消息缓冲&#xff0c;消息分发的作用。 消息中间件最主要的作用是解耦&#xff0c;中间件最标准的用法是生产者生产消息传送到队列&#xff0c;消费者从队列中拿取消息并处理&…

搞定JavaScript异步原理,深入学习Promise

JS异步及Promise基础 一、从浏览器运行机制说起 来破案啦&#xff0c;常说的“多线程的浏览器、单线程的Javascript”到底是什么意思&#xff1f;单线程的Javascript是否真的需要抽身去计时、去发http请求&#xff1f;第一部分我们重新从浏览器运行机制开始认识一下JavaScript…

828华为云征文 | Flexus X实例与华为云EulerOS的Tomcat安装指南

文章目录 前言安全组设置操作步骤软件安装配置软件验证Tomcat安装是否成功 总结 前言 Tomcat是一个由Apache软件基金会开发并维护的免费、开源的Web应用服务器。它主要用于处理Java Servlet、JavaServer Pages&#xff08;JSP&#xff09;和JavaServer Pages Standard Tag Lib…

新增一个数组传递给后端

实现的效果&#xff1a; 页面 <div style"margin-bottom: 10px" v-if"totalPrice"><p style"font-weight: bolder;margin-bottom: 10px">支付计划<el-button type"text" size"small" click"addPayInf…

53 mysql pid 文件的创建

前言 接上一篇文章 mysql 启动过程中常见的相关报错信息 在 mysql 中文我们在 “service mysql start”, “service mysql stop” 经常会碰到 mysql.pid 相关的错误信息 比如 “The server quit without updating PID file” 我们这里来看一下 mysql 中 mysql.pid 文件的…

软件工程知识点总结(2):需求分析(一)——用例建模

1 软件项目开发流程&#xff1a; 需求分析→概要设计→详细设计→编码实施→测试→产品提 交→维护 2 系统必须做什么&#xff1f; 获取用户需求&#xff0c;从用户角度考虑&#xff0c;用户需要系统必须完成哪些工作&#xff0c;也就是对目 标系统提出完整、准确、清晰、具体…

算法day22|组合总和 (含剪枝)、40.组合总和II、131.分割回文串

算法day22|组合总和 &#xff08;含剪枝&#xff09;、40.组合总和II、131.分割回文串 39. 组合总和 &#xff08;含剪枝&#xff09;40.组合总和II131.分割回文串 39. 组合总和 &#xff08;含剪枝&#xff09; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 ta…

使用Node-API实现跨语言交互开发流程

一、前言 使用Node-API实现跨语言交互&#xff0c;首先需要按照Node-API的机制实现模块的注册和加载等相关动作。 ArkTS/JS侧&#xff1a;实现C方法的调用。代码比较简单&#xff0c;import一个对应的so库后&#xff0c;即可调用C方法。 Native侧&#xff1a;.cpp文件&#xf…

【C语言】十六进制、二进制、字节、位、指针、数组

【C语言】十六进制、二进制、字节、位 文章目录 [TOC](文章目录) 前言一、十六进制、二进制、字节、位二、变量、指针、指针变量三、数组与指针四、指针自加运算五、二维数组与指针六、指向指针的指针七、指针变量作为函数形参八、函数指针九、函数指针数组十、参考文献总结 前…

JVM面试(六)垃圾收集器

目录 概述STW收集器的并发和并行 Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器Garbage First&#xff08;G1&#xff09;收集器 概述 上一章我们分析了垃圾收集算法&#xff0c;那这一章我们来认识一下这些垃圾收集器是如何运…