强化学习应用(七):基于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, 3, 29, 26, 5, 21, 2, 20, 10, 4, 15, 18, 14, 22, 17, 11, 19, 25, 7, 23, 27, 8, 24, 16, 13, 1]

(2)随机生成25个城市

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

(3)随机生成20个城市

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

四、完整Python代码

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

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

相关文章

软件外包资源网站分享

经济不景气导致很多人失业,能否找到一份工作或找些项目做做,这里列了一些国内和国外的资源网上,希望对大家有益: 国内篇: 软件项目交易网:(软件项目交易网)这是一个专注于软件开发需求的外包平台&#xf…

【DP】712. 两个字符串的最小ASCII删除和

题目 与583. 两个字符串的删除操作题目几乎一模一样&#xff01; 法1&#xff1a;DP class Solution {public int minimumDeleteSum(String s1, String s2) {int m s1.length() 1, n s2.length() 1;int[][] dp new int[m][n];for (int i 1; i < n; i) { // 首行dp[0…

Python如何免费调用微软Bing翻译API

一、引言 现在免费的机器翻译越来越少了&#xff0c;随着有道翻译开始收费&#xff0c;百度降低用户的免费机器翻译额度(目前只有实名认证过的高级用户才能获得100万字符的免费翻译额度)&#xff0c;而亚马逊、腾讯等机器翻译调用相对比较麻烦&#xff0c;需要下载各种插件包&…

【IDEA】瑞_IDEA模版注释设置_IDEA自动生成注释模版(详细图文步骤)

文章目录 1 概要2 类的自定义模版注释3 自定义模版注释3.1 方法的自定义模版注释3.2 属性的自定义模版注释 &#x1f64a; 前言&#xff1a;在Java开发中&#xff0c;注释具有不可或缺的重要性&#xff0c;注释负责解释代码&#xff0c;能帮助开发人员深入理解代码的逻辑和功能…

Jupyter Notebook之添加anaconda环境

流程 创建新的 Anaconda 环境&#xff1a; 打开 Anaconda Prompt&#xff08;或命令行界面。 创建一个新的环境&#xff0c;使用命令如 conda create -n yourenvname pythonx.x anaconda&#xff0c;其中 yourenvname 是您的环境名&#xff0c;x.x 是 Python 版本。 激活新环…

动作计数 基于人体姿态

目录 运动跟踪 人体运动评估 基于mediapose,计数左臂,右臂的关节角度

【Spring实战】28 @Autowired 和 @Resource注解的区别与使用

文章目录 1. 区别1&#xff09;匹配方式2&#xff09;属性名称3&#xff09;处理方式4&#xff09;支持类型 2. 如何选择3. 代码示例 Spring 框架是一个强大的 Java 企业应用开发框架&#xff0c;提供了多种依赖注入的方式。其中&#xff0c;Autowired 和 Resource 是两个常用的…

关联规则分析(Apriori算法2

目录 1.核心术语&#xff1a;2.强关联规则&#xff1a;小结&#xff1a; 1.核心术语&#xff1a; 支持度&#xff08;Support&#xff09;&#xff1a;指项集出现的频繁程度&#xff08;相当于项集出现的概率&#xff09; 最小支持度有绝对值和占比两种表示方式 置信度&#…

Xtuner大模型微调

Xtuner大模型微调 一、课程笔记 文档链接&#xff1a;https://github.com/InternLM/tutorial/blob/main/xtuner/README.md 视频链接&#xff1a; https://www.bilibili.com/video/BV1yK4y1B75J/ 大模型微调 大模型的训练利用了各类数据&#xff0c;可以说是一个通才&#xff…

数据仓库(2)-认识数仓

1、数据仓库是什么 数据仓库 &#xff0c;由数据仓库之父比尔恩门&#xff08;Bill Inmon&#xff09;于1990年提出&#xff0c;主要功能仍是将组织透过资讯系统之联机事务处理(OLTP)经年累月所累积的大量资料&#xff0c;透过数据仓库理论所特有的资料储存架构&#xff0c;做…

高级路由技术案例

文章目录 案例项目一&#xff1a;1、静态ECMP和浮动静态路由配置实验2、浮动静态路由配置 案例项目二&#xff1a;使用filter-policy过滤路由案例项目三&#xff1a;IS-IS基本配置案例项目四&#xff1a;OSPF基本配置案例任务一&#xff1a;OSPF单区域配置案例任务二&#xff1…

开源 UI 组件库和开发工具库概览 | 开源专题 No.59

ant-design/ant-design Stars: 87.9k License: MIT Ant Design 是一个企业级 UI 设计语言和 React UI 库。 为 Web 应用程序设计的企业级 UI。提供一套高质量的开箱即用的 React 组件。使用可预测静态类型编写 TypeScript 代码。包含完整的设计资源和开发工具包。支持数十种语…

zsh插件之gitignore安装使用教程

安装 zsh 插件管理工具 首先&#xff0c;确保你已经安装了 zsh&#xff0c;然后安装 Oh My Zsh&#xff0c;这是一个流行的 zsh 配置框架。在终端运行以下命令安装 Oh My Zsh&#xff1a; bashCopy code sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/ma…

小程序基础学习(组件传参)

原理&#xff1a;通知在组件标签中传递参数已达到传参的目的 在组件的js的 properties中接受传递来的参数 然后在页面是展示这些数据 源码&#xff1a; <!--components/my-info/my-info.wxml--> <view class"title"> <text class"texts"&g…

Java--RSA非对称加密的实现(使用java.security.KeyPair)

文章目录 前言实现步骤测试结果 前言 非对称加密是指使用不同的两个密钥进行加密和解密的一种加密算法&#xff0c;调用方用使用服务方提供的公钥进行加密&#xff0c;服务方使用自己的私钥进行解密。RSA算法是目前使用最广泛的公钥密码算法。Java提供了KeyPairGenerator类要生…

BikeDNA(七)外在分析:OSM 与参考数据的比较1

BikeDNA&#xff08;七&#xff09;外在分析&#xff1a;OSM 与参考数据的比较1 该笔记本将提供的参考自行车基础设施数据集与同一区域的 OSM 数据进行所谓的外部质量评估进行比较。 为了运行这部分分析&#xff0c;必须有一个参考数据集可用于比较。 该分析基于将参考数据集…

01.neuvector防护平台功能实现设计

本篇文章主要讲neuvector大概的设计与实现&#xff0c;功能实现细节可查看后续文章&#xff0c;原文链接,欢迎大家关注我的github账号 一、整体架构 相关主要业务容器运行结构如下&#xff1a; 主要容器为以下几个&#xff1a; Controller容器负责规则的收集与下发&#xff0…

c 生成任意尺寸YUV420P格式水平垂直彩条

因为先控制生成的是像素三基色&#xff0c;所以可以用此方法生成任何图案。如直线&#xff0c;圆&#xff0c;甚至汉字 可以把长宽围成的图案看成是一个大的二维数组&#xff0c;再从其中扣出一部分&#xff0c;再填充一部分就成了。可惜现在jpeg编码程序有错误&#xff0c;显…

Open3D AABB包围盒计算与使用(19)

Open3D AABB包围盒计算与使用(19) 一、算法速览二、算法实现1.代码2.结果少年听雨歌楼上。红烛昏罗帐。壮年听雨客舟中。江阔云低、断雁叫西风。 而今听雨僧庐下。鬓已星星也。悲欢离合总无情。一任阶前、点滴到天明。 一、算法速览 AABB包围盒就是将点云用一个各条边沿着坐…

OceanBase架构概览

了解一个系统或软件&#xff0c;比较好的一种方式是了解其架构&#xff0c;下图是官网上的架构图&#xff0c;基于V 4.2.1版本 OceanBase 使用通用服务器硬件&#xff0c;依赖本地存储&#xff0c;分布式部署在多个服务器上&#xff0c;每个服务器都是对等的&#xff0c;数据库…