首页 > 其他分享 >RLGF无人机深度强化学习任务的通用训练框架(SAC, DQN, DDQN, PPO, Dueling DQN, DDPG)

RLGF无人机深度强化学习任务的通用训练框架(SAC, DQN, DDQN, PPO, Dueling DQN, DDPG)

时间:2024-11-09 10:20:28浏览次数:3  
标签:xml 自定义 SAC 模型 PPO 算法 任务 无人机 DQN

RLGF 是一个通用的训练框架,适用于无人机的深度强化学习任务。该框架集成了多种主流的深度强化学习算法,包括SAC(Soft Actor-Critic)、DQN(Deep Q-Network)、DDQN(Double Deep Q-Network)、PPO(Proximal Policy Optimization)、Dueling DQN(决斗深度Q网络)以及DDPG(Deep Deterministic Policy Gradient)。
在这里插入图片描述

这个框架的设计目的是为了提供一种灵活而强大的工具,让研究者和开发者能够在无人机控制、导航以及其他相关的复杂任务中应用最新的强化学习技术。通过集成这些不同的算法,RLGF允许用户根据特定的应用场景选择最合适的强化学习方法,从而达到最佳的学习效果和性能表现。此外,这种集成方式还便于对比不同算法之间的性能差异,促进了算法的选择与改进。
在这里插入图片描述

开发

RLGF是一个适用于无人机深度强化学习任务的通用训练框架,构建了适用于无人机任务的动作模型,包括连续飞行动作与离散飞行动作。预置了飞行能量消耗模型与航线规划模型。能够根据自身任务自定义任务环境模型与无人机模型。并集成了多种主流的深度强化学习算法。

自定义开发:

该框架以配置XML文件的形式制定无人机强化学习任务,隐藏了深度强化学习过程的过程。仅需要重写环境模型与无人机模型中特定的函数,便能快速实现自定义无人机任务的开发。
多算法集成: 集成了主流的强化学习算法如DQN、AC、DDQN、DuelingDQN、PPO、SAC、DDPG,仅需通过配置XML文件即可快速更换任务所需算法进行训练。
在这里插入图片描述

无人机参数自定义:

能够根据XML文件配置无人机的性能参数,包括加速度、动作更新函数、状态空间函数、APF动态避障模式是否启用、初始坐标、最大/最小速度、最大转向角、最大任务时间步长、子任务粒度、飞行功耗参数(不同速度下无人机的飞行功耗不同)、通信功率等。也支持自定义无人机参数并载入进自定义的无人机模型。
训练日志支持: 能够将训练过程中的参数以csv的形式保存在logs文件夹下(需自定义保存形式)。
多维度无人机轨迹结果可视化:每轮任务迭代后将生成轨迹以HTML的形式保存在/DataBase/experience目录下。若本地或者服务器配置有MySQL数据库,可以通过提供的接口将航线数据存放到数据库中,并通过PathViewer的java后端项目实现每次迭代任务的无人机轨迹动态可视化。

支持私密消息:

服务端能够通过特定指令向公屏发送指定用户可见的私密消息,可用于文字交互游戏的角色分发。

开发环境

训练环境: Python 3.9.7, Pytorch 1.11.0.
可视化平台: jdk 17, Spring 6.15, maven, MySQL 10.3.19.
引用
内置算法均改自《动手学强化学习》中的代码。github链接:https://github.com/boyu-ai/Hands-on-RL
项目目录简介
RLGF/
README.md
requirements.txt
Agents/    #智能体模型所在目录,存放无人机或其他有关的智能体模型
BaseClass/    #存放基本的模型基类,以及通用计算工具
config/
buildings.xml    #环境中的建筑物配置文件。
DB.xml    #数据库配置,若无数据库,可以忽略。
PathPlan_City.xml    #案例环境模型的配置文件,定义了1个UAV在建筑群中执行航线规划任务。
Trainer.xmll    #所采用的训练器的配置文件。
UAV.xml    #案例无人机配置文件,定义了UAV在轨迹规划任务中的相关配置。
UI.xml    #PyEchart配置文件,不建议更改。
DataBase/
experience/    #以html的形式存放无人机的轨迹结果(静态)。
Connector.py    #提供连接数据库的功能。
Env/    #存放环境模型类。
FactoryClass/    #对应的工厂类。
logs/    #存放运行日志。
Mod/    #存放神经网络模型。
Obstacles/    #存放自定义的障碍物类。
Trainer/    #存放已经实现的强化学习算法训练器。
simulator.py    #训练器启动器。

基本使用案例

模型训练:

<simulator>
    <env>
        <Env_Type>PathPlan_City</Env_Type>   <!-- 自定义环境模型名称,与py文件名一致-->
        <len>500</len>  <!-- 环境规划空间长度-->
        <width>500</width>  <!-- 环境规划空间宽度-->
        <h>100</h>  <!-- 环境规划空间高度-->
        <eps>0.1</eps>  <!-- epslon最小贪心概率-->
        <Is_AC>0</Is_AC> 
        <Is_FL>0</Is_FL>   <!-- 是否启用联邦学习进行分布式训练(需要多个智能体)-->
        <Is_On_Policy>0</Is_On_Policy> 
        <FL_Loop>3</FL_Loop> 
        <print_loop>2</print_loop>
        <num_UAV>1</num_UAV> <!-- 无人机数目-->
        <Agent>
            <xml_path_agent>./config/UAV.xml</xml_path_agent>   <!-- 案例无人机的配置文件-->
            <Trainer>
                <Trainer_path>./config/Trainer.xml</Trainer_path>  <!-- 训练器的配置文件-->
            </Trainer>
        </Agent>
        <Obstacles>
            <buildings>./config/buildings.xml</buildings>  <!-- 建筑物分布的配置文件-->
        </Obstacles>
        <UI>
            <UI_path>./config/UI.xml</UI_path>
        </UI>
        <DB>
            <DB_path>./config/DB.xml</DB_path>  <!-- 数据库配置文件-->
        </DB>
    </env>
    <record_epo>10</record_epo> 
    <num_episodes>500</num_episodes>   <!-- 迭代次数-->
    <max_eps_episode>1</max_eps_episode>
    <min_eps>0.1</min_eps>
    <TARGET_UPDATE>3</TARGET_UPDATE>
</simulator>

运行simulator.py文件,即可启动训练过程。支持断点训练。每次运行会在/logs生成一个日志,可以查看每轮次训练的得分详情。并在/DataBase/experience目录下生成无人机轨迹。
在这里插入图片描述

标签:xml,自定义,SAC,模型,PPO,算法,任务,无人机,DQN
From: https://blog.csdn.net/QQ_1309399183/article/details/143640655

相关文章

  • [USACO23FEB] Problem Setting P 题解
    [USACO23FEB]ProblemSettingP题目说的很绕,意思就是所有验题人都认为题目难度顺序单增。发现\(m\)很小,很容易想到状压。把H看作\(\tt1\),E看作\(\tt0\),则我们得到\(m\)个长度为\(n\)的\(\tt01\)串,这就是每道题的“状态”。发现状态相同的题没有本质区别,所以我们......
  • P8906 [USACO22DEC] Breakdown P [最短路]
    P8906[USACO22DEC]BreakdownPSolution经典trick,删边比较难处理,转换成加边,倒着处理。那我们接下来要考虑,怎么记录状态,以及,每加一次边要如何更新状态。还是比较套路地,我们可以求出\(1\)到某个点\(i\)经过\(k/2\)条边的最短路,再求出\(i\)到\(n\)经过\(k-k/2......
  • [USACO23JAN] Subtree Activation P 题解
    这种问题一看满足条件就知道,一般不用想着怎么模拟题意。考虑转化问题。假如节点\(u\)满足了条件一,也就是仅有子树节点全部开启。那么我们把转化具象为:进行\(\text{siz}_u\)次操作直接清空;进行\(\text{siz}_{\text{fa}(u)}-\text{siz}_u\)次操作使\(\text{fa}(u)\)满足......
  • P7984 [USACO21DEC] Tickets P 题解
    题目传送门前置知识线段树优化建图|最短路解法考虑对票建虚点,从\(c_{i}\)向\(i+n\)连一条权值为\(p_{i}\)的边,然后从\(i+n\)向\([a_{i},b_{i}]\)连一条权值为\(0\)的边。建出反图后\(1\toi\)和\(n\toi\)的路径集合会有重复统计的部分,不妨以\(dis_{1,i......
  • P9192 [USACO23OPEN] Pareidolia P 题解
    P9192[USACO23OPEN]PareidoliaP题解首先自然考虑不带修的情况。考虑问题的本质就是求序列中尽量短的bessie序列个数。对于尽量短的理解是对于bessiebessie序列,不考虑其由\(1,8\sim12\)构成的序列,只考虑\(1\sim6,7\sim12\)组成的序列。于是考虑dp:设\(dp_{i......
  • 深入理解PPO算法:从原理到实现
    目录1.引言2.PPO算法的背景3.PPO算法的核心思想4.PPO算法的实现步骤 4.1PPO代码实现 4.2代码说明5.为什么PPO效果如此出色? 5.1PPO的优势函数与GAE 5.2PPO的变体:PPO-Clip和PPO-KL6.PPO算法的应用场景7.总结1.引言        在强化学习领域,PPO(P......
  • P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G:贪心
    [NOIP2004提高组]合并果子/[USACO06NOV]FenceRepairG题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的......
  • [USACO22JAN] Minimizing Haybales P 题解
    [USACO22JAN]MinimizingHaybalesP随机化?五分。显然对于任意\(a_i,a_j\),若\(|a_i-a_j|>K\),则这两堆草的先后顺序永远不会改变。所以易得暴力:对于所有这样的\(i,j\),不妨设\(i<j\),则连一条\(i\toj\)的边,答案就是这个图字典序最小的拓扑排序,优先队列即可。voidtoposort(......
  • [USACO21DEC] Tickets P 题解
    [USACO21DEC]TicketsP首先我们思考暴力的\(O(n^2)\)怎么做。显然比起每次以\(i\)为起点跑\(n\)遍最短路,建反图后分别以\(1\)和\(n\)为起点跑两遍最短路是更加经济的方式。然后你可能会以为\(\text{dis}(1,i)+\text{dis}(n,i)\)就是答案了,之后你就会发现连样例都过......
  • 关于仿真Issac-GYM出现Tensor出现Nan报错的解决方案及分析过程
    报错问题:出现了一个Nannum_envs很小的情况下没问题,一旦大于50就有nan然后被强行停止函数的运行Traceback(mostrecentcalllast):File"train.py",line43,in<module>train(args)File"train.py",line39,intrainppo_runner.learn(num_learning_iterat......