| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Matlab【路径规划】—— 无人机药品配送路线最优化 -> 正文阅读 |
|
[数据结构与算法]Matlab【路径规划】—— 无人机药品配送路线最优化 |
问题描述某市引进一架专业大型无人机用于紧急状态下的药品投递。已知该市设有25处可用于在紧急状态接纳病人的医疗机构。其地理位置坐标(单位为公理)如下图所示。具体数据及可容纳病人数量见附件1。现要求通过数学建模,提供药品紧急配送策略,具体问题如下: 已知该市唯一的药品仓库兼设在地理位置x,y坐标分别为(82,55)的医疗机构内部,请制订无人机的飞行路线,使尽可能多的病人尽早得到救治。 上图为医疗机构及病人数量分布 题目假设:建模过程不考虑其他运载工具,也不考虑无人机的续航能力、巡航时间及承载容量限制。 具体思路由题目给出的条件和附件数据(见文末),根据demo1计算出各节点之间的直线距离(假设直升机最短路线就是走直线);并根据demo2进行一个简单的数学建模,实现无人机配送的路径规划——通过调整目标函数中的权重系数 demo1:求解所有节点间的距离
数据准备:
求解出的距离矩阵dist_A——第1列为起点标号,第2、3列为起点x,y坐标,第4列为起点标号,第5、6列为起点x,y坐标,第7列为各节点之间的距离值(单位为公理): L o b j ? t r k ( i ) = 1 o b j ? w e i g h t ? x 2 ( i ) + m a x ( d i s t A ( 25 ? ( i ? 1 ) + 1 : 25 ? ( i ? 1 ) + 25 , 7 ) ) ? d i s t A ( 25 ? ( i ? 1 ) + j , 7 ) \mathcal{L}_{obj-trk{(i)}}=\frac{1}{obj_{-}weight}·x_2(i)+max(distA_{(25*(i-1)+1:25*(i-1)+25,7)})-distA_{(25*(i-1)+j,7)} Lobj?trk(i)?=obj??weight1??x2?(i)+max(distA(25?(i?1)+1:25?(i?1)+25,7)?)?distA(25?(i?1)+j,7)? 优先将决策参数 L o b j ? t r k \mathcal{L}_{obj-trk} Lobj?trk?值较大的所对应的节点标号作为下一个预测配送点; 权重系数 o b j ? w e i g h t obj_{-}weight obj??weight值越大,则说明最短距离对路径规划的影响越大,反之病人数量的影响越大; 迭代计算过程中若遇到自身节点,则将 L o b j ? t r k \mathcal{L}_{obj-trk} Lobj?trk?置为0——表示一轮计算中(如节点1对应节点1-25为第一轮,节点2对应节点1-25为第二轮…),无人机不重复配送同一站点;实际上,程序中还需加以条件判断是否在前往上一轮已经配送过的站点,并限制重复配送(见demo2),否则会出现两个站点间“反复横跳”的奇葩现象; 依据
L
o
b
j
?
t
r
k
\mathcal{L}_{obj-trk}
Lobj?trk?每一轮预测出一个配送目标站点,下一轮中再将配送过的站点排除,以此类推,得出配送站点的规划顺序,其大致过程如下图所示: demo2:直升机配送路线规划算法
权重系数 o b j ? w e i g h t = 30 obj_{-}weight=30 obj??weight=30时,计算出的决策参数 L o b j ? t r k \mathcal{L}_{obj-trk} Lobj?trk?: 同样是25个数为一轮(以dist_A中的节点对应关系共计25*25=625个元素),每一轮中自身节点对应的参数值都为0,其余为按目标函数的算法计算;权重系数 o b j ? w e i g h t = 30 obj_{-}weight=30 obj??weight=30时,规划出的路线 o b j ? i n d e x obj_{-}index obj??index: 按照不同权重系数规划出的路线:
demo3:寻找最优解的优化算法由于累计救治病人数量的初值和终值保持不变,故可通过拉格朗日中值定理确定一个导数 f ′ ( ξ ) f'(\xi) f′(ξ),我们希望 ξ \xi ξ出现得越早越好(越早说明优先救治病人数量越多),再结合优先选择总飞行距离最短的,组合成一个新的最优参数向量best_index,并返回其最小值best_weight(best_index值越小越符合最优解所需的权重):
分以下两种情况求得最优解:
支撑材料&工程附件附件脚本可直接运行: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:32:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |