强化学习应用(五):基于Q-learning的无人机物流路径规划研究(提供Python代码)

news2024/9/27 6:25:15

一、Q-learning简介

Q-learning是一种强化学习算法,用于解决基于马尔可夫决策过程(MDP)的问题。它通过学习一个价值函数来指导智能体在环境中做出决策,以最大化累积奖励。

Q-learning算法的核心思想是通过不断更新一个称为Q值的表格来学习最优策略。Q值表示在给定状态下采取某个动作所能获得的预期累积奖励。算法的基本步骤如下:

1. 初始化Q值表格,将所有Q值初始化为0。

2. 在每个时间步骤t,智能体观察当前状态st,并根据当前Q值表格选择一个动作at。选择动作的方法可以是ε-greedy策略,即以ε的概率随机选择一个动作,以1-ε的概率选择当前Q值最大的动作。

3. 执行动作at,观察环境反馈的奖励rt+1和下一个状态st+1。

4. 根据Q-learning更新规则更新Q值表格中的Q值:

  Q(st, at) = Q(st, at) + α * (rt+1 + γ * max(Q(st+1, a)) - Q(st, at))

  其中,α是学习率,γ是折扣因子,用于平衡当前奖励和未来奖励的重要性。

5. 重复步骤2-4,直到达到停止条件(例如达到最大迭代次数或Q值收敛)。

Q-learning算法的目标是通过不断更新Q值表格,使得智能体能够在环境中找到最优策略,以最大化累积奖励。

二、无人机物流路径规划

无人机物流路径规划是指利用无人机进行货物运输时,通过算法和技术使其无人机将所有货物运送到指定位置,并返回起点,并得到最优飞行路径,以实现高效、安全和准确的货物运输。无人机物流路径规划可以简单抽象为旅行商问题(Traveling Salesman Problem, TSP)。TSP是一个经典的组合优化问题,它的目标是找到一条路径,使得旅行商从起点出发,经过所有城市恰好一次,最后回到起点,并且总路径长度最短。解决TSP问题的方法有很多,其中一种常用的方法是蚁群算法。除了蚁群算法,还有其他一些常用的解决TSP问题的方法,如遗传算法、动态规划和强化学习等。强化学习求解TSP问题思路新颖,具有一定优势。

三、Q-learning求解无人机物流路径规划

1、部分代码

可以自动生成地图也可导入自定义地图,只需要修改如下代码中chos的值即可。

import matplotlib.pyplot as plt
from Qlearning import Qlearning
#Chos: 1 随机初始化地图; 0 导入固定地图
chos=1
node_num=36 #当选择随机初始化地图时,自动随机生成node_num-1个城市
# 创建对象,初始化节点坐标,计算每两点距离
qlearn = Qlearning(alpha=0.5, gamma=0.01, epsilon=0.5, final_epsilon=0.05,chos=chos,node_num=node_num)
# 训练Q表、打印路线
iter_num=1000#训练次数
Curve,BestRoute,Qtable,Map=qlearn.Train_Qtable(iter_num=iter_num)
#Curve 训练曲线
#BestRoute 最优路径
#Qtable Qlearning求解得到的在最优路径下的Q表
#Map TSP的城市节点坐标


## 画图
plt.figure()
plt.ylabel("distance")
plt.xlabel("iter")
plt.plot(Curve, color='red')
plt.title("Q-Learning")
plt.savefig('curve.png')
plt.show()


2、部分结果

(1)以国际通用的TSP实例库TSPLIB中的测试集bayg29为例:



Qlearning算法得到的最短路线: [1, 28, 6, 12, 9, 26, 29, 3, 5, 21, 2, 20, 10, 4, 15, 18, 14, 22, 17, 11, 19, 25, 7, 23, 27, 8, 24, 16, 13, 1]

(2)随机生成27个城市

Qlearning算法得到的最短路线: [1, 18, 10, 21, 13, 26, 17, 2, 4, 7, 27, 25, 20, 3, 22, 5, 9, 8, 16, 15, 23, 12, 14, 6, 11, 19, 24, 1]

(3)随机生成17个城市

Qlearning算法得到的最短路线: [1, 2, 13, 8, 3, 11, 14, 10, 5, 6, 12, 17, 4, 16, 15, 9, 7, 1]

四、完整Python代码

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

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

相关文章

机器人模仿学习之动作分块ACT算法的代码剖析、部署训练

前言 本文最早是属于《斯坦福Mobile ALOHA背后的关键技术:动作分块ACT算法的原理解析》的第二、第三部分,涉及到动作分块ACT的代码剖析与部署训练 但因为想把ACT的代码逐行剖析的更细致些,加之为避免上一篇文章太过于长,故把动作…

使用Nginx作为反向代理服务器在Linux中的最佳实践

在Linux环境下,Nginx因其高效性能、稳定性以及丰富的功能集而广泛用于作为反向代理服务器。以下是在Linux中使用Nginx作为反向代理服务器的最佳实践: 1. 安装与配置 首先,确保你的Linux发行版已经安装了Nginx。大多数Linux发行版都提供了Ng…

【上分日记】第369场周赛(分类讨论 + 数学 + 前缀和)

文章目录 前言正文1.3000. 对角线最长的矩形的面积2.3001. 捕获黑皇后需要的最少移动次数3.3002. 移除后集合的最多元素数3.3003. 执行操作后的最大分割数量 总结尾序 前言 终于考完试了,考了四天,也耽搁了四天,这就赶紧来补这场周赛的题了&a…

java求链表中倒数第k个结点

下面我用两种方法求解: 第一种方法:通常我们做这种题就是求出链表的长度length,然后呢length-k的值就是我们要从链表头部走几步就可以了,代码解释: public class Solution {public class ListNode {int val;ListNode…

Star 8K+,使用.NET开发的开源NoSQL数据库

LiteDB 是一个轻量级、快速、易用的 .NET NoSQL 嵌入式数据库,完全用 C# 托管代码开发,并且是免费和开源的。它非常适合在移动应用(Xamarin iOS/Android)和小型的桌面/Web 应用中使用。 主要特点 简单易用的 API,类似…

信号量机制

1965年,由荷兰学者迪科斯彻Dijkstra提出(P、V分别代表荷兰语的Proberen (test)和Verhogen (increment))、是一种卓有成效的进程同步机制。 信号量-软件解决方案: 保证两个或多个代码…

Javascript jQuery简介

✨前言✨ 1.如果代码对您有帮助 欢迎点赞👍收藏⭐哟 后面如有问题可以私信评论哟🗒️ 2.博主后面将持续更新哟😘🎉本章目录🎉 🥝一.jQuery简介🥥二.JQeury常用API🍇1.jQeury选择…

c JPEG编码,此程序没有处现MCU中亮度分量的排序

#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <linux/videodev2.h> //v4l2 头文件 #include <strin…

UE5蓝图-脚部IK

引擎版本&#xff1a;UE5.2 脚部IK做不做的区别&#xff1a; 图1是没有做脚步IK&#xff0c;我们的角色一部分的脚像是浮在半空中&#xff0c;图2是做了脚步IK&#xff0c;我们的角色就是一部分在地上&#xff0c;一部分在物体上。从上面的两个图可以看出&#xff0c;制作脚步…

Leetcode 剑指 Offer II 061. 查找和最小的 K 对数字

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定两个以升序排列的整数数组 nums1 和 nums2 , 以及一个整数 k…

[oeasy]python0004_游乐场_和python一起玩耍_python解释器_数学运算

和python玩耍 &#x1f94a; Python 回忆 上次 了解shell环境中的命令 命令作用whoami显示当前用户名pwd显示当前文件夹ls列出当前文件夹下的内容python3仿佛进入大于号黑洞 这python3 怎么玩啊&#xff01;&#x1f620; 说好的python教程呢&#xff1f;&#x1f914; 运…

2023一带一路暨金砖国家技能发展与技术创新大赛“网络安全”赛项省选拔赛样题卷②

2023金砖国家职业技能竞赛"网络安全" 赛项省赛选拔赛样题 2023金砖国家职业技能竞赛 省赛选拔赛样题第一阶段&#xff1a;职业素养与理论技能项目1. 职业素养项目1. 职业素养项目2. 网络安全项目3. 安全运营 第二阶段&#xff1a;安全运营项目1. 操作系统安全配置与加…

哈希表的实现(1)----除留余数法实现

一&#xff0c;哈希表的介绍 哈希表是一种通过哈希思想实现的一种数据结构。哈希表这种数据结构的特点便是可以通过一个值快速的定位这个值所在的位置实现插入&#xff0c;删除&#xff0c;查找。在这篇博客里面&#xff0c;我们便来实现一个通过除留余数法实现的一个哈希表。 …

tl431几种不常见的接法

tl431可调电源电路图分析 精密电压基准IC TL431是我们常见的精密电压基准IC &#xff0c;应用非常广泛。其输出压连续可调达36V&#xff0c;工作电流范围宽达0.1--100mA&#xff0c;动态电阻典型值为0.22欧&#xff0c;输出杂波低。图1是利用它作电压基准和驱动外加场效应管K7…

泛微OA-Ecology8表单中填充用友U8数据

文章目录 1、需求及效果1.1 需求1.2 效果 2、思路及实现步骤2.1 思路2.2 实现步骤 3.结语 1、需求及效果 1.1 需求 在OA中填写表单中时候&#xff0c;比如物料号还需要从U8中查找后才能填写&#xff0c;非常的麻烦。想要在填写表单的时候可以搜索&#xff0c;并且带出其他的关…

如何使用SVN查看旧版本

和目录 第一步&#xff1a;打开SVN客户端 第二步&#xff1a;浏览历史版本 第三步&#xff1a;还原历史版本 结论 Subversion (缩写为SVN)是一种常用的版本控制系统&#xff0c;它可以帮助团队协作开发软件项目。除了基本的版本控制功能外&#xff0c;SVN还提供了许多其他功…

HackTheBox - Medium - Linux - Faculty

Faculty Faculty 是一台中型 Linux 机器&#xff0c;具有 PHP Web 应用程序&#xff0c;该应用程序使用的库容易受到本地文件包含的影响。利用该库中的 LFi 会泄露一个密码&#xff0c;该密码可用于通过 SSH 以名为“gbyolo”的低级用户身份登录。用户“gbyolo”有权作为“dev…

【kafka】记录用-----------1

主题&#xff08;topic&#xff09;&#xff1a;消息的第一次分类 根据人为的划分条件将消息分成不同的主题 主题的划分是人为的根据不同的任务情景去划分 比如&#xff0c;我们有两个主题&#xff0c;一个是"订单"&#xff0c;另一个是"库存"。每个主题代…

记录一个Insert姿势引起的MySQL从库上查不到数据的问题

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 问题描述&#xff1a; 某测试环境的MySQL用了两台节点&#xff0c;主从同步结构。忽然有研发同学反映说MySQL的主从不同步了。他…

亚马逊测评怎么做?

亚马逊作为全球最大的跨境电商公司&#xff0c;吸引了很多的中国卖家入驻&#xff0c;行业的内卷也是越来越严重&#xff0c;很多做过国内电商的都知道测评可以提高产品权重&#xff0c;快速提升产品销量 而测评模式主要有两种&#xff1a; 真人测评 优点&#xff1a;老外手…