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

一、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, 5, 26, 29, 3, 2, 21, 20, 10, 4, 15, 18, 14, 22, 17, 11, 19, 25, 7, 23, 27, 8, 24, 16, 13, 1]

(2)随机生成38个城市

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

(3)随机生成17个城市

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

四、完整Python代码

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

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

相关文章

C语言——(printf和scanf介绍)

一.printf 1.基本用法 printf()的作用是将参数文本输出的屏幕。如下; 2.占位符 printf()可以在输出文本中指定占位符 ,“占位符”,也就是这个位置可以用其他值代入。 如: …

基于 IDEA 创建 Maven 的 Java SE 工程和 Java Web 工程

一、概念简介 Maven 工程相对之前的项目,多出一组 gavp 属性,gav 需要我们在创建项目的时候指定,p 有默认值,我们先行了解下这组属性的含义。 Maven 中的 GAVP 是指 GroupId、ArtifactId、Version、Packaging 等四个属性的缩写&am…

刚买的助听器就弄丢了,不想白配,快来看看这8大助听器防丢小技巧

我们知道助听器可以让听损人士重新听到美妙的声音和享受沟通的乐趣。但是,助听器也是一种很贵的物品,如果不小心弄丢了,就会让人心痛不已。 更有甚者,有些人因为害怕丢失助听器,而不敢佩戴助听器,错过了听力…

解决Windows11 “我们无法设置移动热点”

目录 问题复现解决办法①启动网络适配器②打开移动热点③共享网络连接④连接移动热点总结 问题复现 因为交换机上网口限制,开发环境暂时没有WIFI设备,只有一根网线和一台笔记本电脑。于是开启笔记本电脑的WiFi共享服务。结果提示 “我们无法设置移动热点…

7-35 有理数均值 分数 20

每日一言 我们把世界看错,反说它欺骗了我们。 --飞鸟集 题目 本题要求编写程序,计算N个有理数的平均值。 输入格式: 输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的…

应急管理蓝皮书 |《应急预案数字化建设现状和发展建议》下篇

导读 《应急预案数字化建设现状和发展建议》:297-313页 《中国应急管理发展报告》系列蓝皮书由中央党校(国家行政学院)应急管理培训中心(中欧应急管理学院)联合社会科学文献出版社研创出版,本着“权威前沿…

asp.net core项目发布到 iis上

我们都知道与传统asp.net 项目比较,ASP.NET Core则完全不同,它并不是运行在IIS的工作进程中,而是独立运行的。它运行于控制台应用程序之中,控制台中则运行了Kestrel Web服务器组件。Kestrel作为一款.NET Web服务器的实现&#xff…

【计算机网络】--集线器,路由器,交换机对比

🎵1.集线器 🌈1.1集线器概念 集线器是一种网络设备,广泛应用于计算机局域网环境中。它通常具有多个以太网接口,用于将多个计算机或其他网络设备连接在一起,形成一个网络拓扑结构。 🌈2.集线器的作用 集线器…

2024年CES展会都有些啥?亮点集锦都在这里

💡 大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 CES在科技界是一场盛会,被誉为科技界的春晚,展会上前沿的技术、概念的产品吸引不少关注。2024年CES是在2023年大语言模型…

uniapp 实战 -- 创建 uni-admin 项目,部署到 uniCloud 前端网页托管(免费云空间)

创建 uni-admin 项目 可见 只能创建一个超级管理员,创建过后,登录页将不再显示 注册管理员账号 部署到 uniCloud 前端网页托管 部署成功,访问地址可预览效果! https://static-mp-7b65169e-151f-4fbb-a5ba-2125d4f56e3f.next.bs…

俩万字详解C++STL期末复习知识点(C++STL课本源码私信可得)

邸老师复习建议 复习注意事项 1 不考死记硬背的题,比如名词解释。 2 选择题重点考核宏观性、综合性的问题,比如:把电话通讯录存入容器,该选哪一个容器? 3 选择题重点考核理解性的问题,比如,…

TCP/IP 网络模型

TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。 应用层 应用层专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。我们电脑或手机使用的应用软件都是在应用层实现。应用层是不用去关…

波动,热传导,扩散方程建立

数学物理方程是从自然科学的各个领域和工程技术领域中导出的偏微分方程和积分方程.在这些以偏微分方程为基础的数学模型中,二阶线性偏微分方程中的三个典型方程与定解条件的建立、解法及其应用.描述振动和波动过程的波动方程、描述输运过程的热传导&…

【grpc】利用protobuf实现java或kotlin调用python脚本,含实现过程和全部代码

前言 在一些特殊场景中,我们可能需要使用java或者其他任意语言调用python脚本或sdk等。本文的需求衍生也不例外于此,python端有sdk,但只能在python中调用,于是就有了本文章。 常见的调用方式如jython、python提供http rest接口、…

照片模糊如何变清晰不妨试试这款软件吧

很多人希望能把模糊的图片或照片变得很清晰,或者把一个只有几十KB的小图变成有几M大小的高清大图。一般来说,一张模糊或打了马赛克的图片本身很多细节信息就没有或被删除了,就像一本书缺了很多页,我们是可能百分百的还原出它原来的…

知道IP怎么反查域名?这几个方法一查一个准!

知道网络IP怎么反查出真实域名来?给大家分享几个我常用的方法,就算你不懂技术你都能查得出来! 一、fofa 这是一个白帽黑客非常喜欢用的社工平台,只要你输入IP就能查到很多背后的信息。 传送门:https://fofa.info 二…

GPT Store开业大吉:一场AI技术与创新的盛宴

就在1.11 日,ChatGPT 正式上线 GPT Store ! OpenAI CEO 山姆奥特曼第一时间确认了这个消息: 自从GPTs的概念提出以来,短短两个月内,全球用户已经创造了超过300万个GPTs。 点击 GPT Store 或者进入ChatGpt页面&am…

【Vue】引入路径正确,不影响正常运行但文件爆红

现象:引入路径正确但文件爆红,不影响运行但不美观(按住Ctrl可以跳转到该文件,关闭后过段时间再打开还是爆红) 原因 (1)相对路径使用了不正确的大小写 (2)项目不支持force…

AD20 解决PCB铺铜与锡盘之间锯齿状连接问题的设置方法

上一篇文章:PCB简单绘制一般步骤 对上一篇文章中,关于铺铜设置的补充,解决铺铜与锡盘之间的锯齿状连接情况。 1、新建Demo,创建PCB板子,布置锡盘和铺铜,如图: 2、设置规则,参考上一…

8. 《自动驾驶与机器人中的SLAM技术》基于保存的自定义NDT地图文件进行自动驾驶车辆的激光定位

目录 1. 为 NDT 设计一个匹配度评估指标,利用该指标可以判断 NDT 匹配的好坏。 2. 利用第 1 题的指标,修改程序,实现 mapping 部分的回环检测。 3. 将建图结果导出为 NDT map,即将 NDT 体素内的均值和协方差都存储成文件。 4.…