当前位置: 首页 > news >正文

多无人机--强化学习

这个是我对于我的大创项目的构思,随着时间逐渐更新

项目概要

我们的项目平台来自挑战杯揭绑挂帅的无人机对抗项目,但是在由于时间原因,并未考虑强化学习,所以现在通过大创项目来弥补遗憾

我们项目分为三部分,分为虚拟机,态势系统,和运行程序端(使用主机)

虚拟机内包含各种无人机信息,并封装为接口供windows端控制

态势系统主要是用来显示战场的情况,使得态势可视化

运行程序端编写程序进行无人机控制

启动顺序为

虚拟机-》态势系统-》运行程序端

项目学习基础

强化学习:

       学习马尔可夫决策决策过程(MDP)

       学习强化学习主要算法:

              值迭代法,策略梯度法 重点学习PPO和DDPG

如果对于强化学习公式的了解较少的可以观看b站上的课程

【强化学习的数学原理】课程:从零开始到透彻理解(完结)_哔哩哔哩_bilibili

由于这里我们目前所使用的公式原因,先学习

了解仿真平台

       对于各种API的研究(前期工作)

        理解无人机的各种参数

对于linux系统的了解(前期工作)

        学习一些基础操作,并对于其提供的虚拟机实现了解

对于强化学习接口搭建(完成Gym接口)封装Linux接口作为训练环境

首先利用PPO/DDPG训练单无人机基础移动(边界避障,上下限制)

进行侦察训练,导弹躲避训练

然后再加入对抗系统,使得无人机与敌机进行交互

首先是蓝方设计固定策略进行训练

然后红蓝方都进行强化学习训练

目前较为适合的最终算法(改进的MADDPG)

基础知识

Linux

一些基础linux命令总结为linux命令

如下

linux命令-CSDN博客

然后需要查看shell脚本

这里推荐黑马程序员的课程

02.shell入门(1)_哔哩哔哩_bilibili

强化学习

然后是强化学习的基础知识

马尔可夫决策

基本元素

  1. 状态集(State Space)
    记为 S,表示系统可能处于的所有状态的集合。例如,在一个迷宫环境中,每个格子可以看作一个状态;在资源分配问题中,状态可以是当前资源的使用量、剩余量等的组合。

  2. 动作集(Action Space)
    记为 A,表示在每个状态下可执行的所有动作。例如,在迷宫中可向上、下、左、右移动;在资源分配问题中可以为“给某个任务分配多少资源”等不同策略选项。

  3. 状态转移概率(Transition Probability)
    记为 P(s′∣s,a),表示当前处于状态 s,执行动作 a 之后,转移到下一状态 s′ 的概率。这也是“马尔可夫”性质的来源:转移只与当前状态和当前动作相关,而与之前的历史状态无关。

  4. 奖励函数(Reward Function)
    记为 R(s,a)或 R(s,a,s′),表示在状态 s 执行动作 a并转移到状态 s′时得到的即时回报。这个回报值可能是正的(奖励)或负的(惩罚)。

  5. 折扣因子(Discount Factor)
    记为 γ,取值范围通常在 [0,1] 之间。它用于平衡短期和长期收益的重要性:当 γ越接近 1 时,更注重长期回报;当 γ越小,越关注即时回报。

决策过程

  • 观察状态
    系统(或智能体)观察当前状态 s。

  • 选择动作
    根据一定的策略(policy)π\piπ,在状态 sss 下选择一个动作 aaa。策略 π\piπ 可以理解为一个函数或规则,用于指定在不同状态下执行哪一个动作。

  • 环境反馈

    • 状态转移:在环境中执行动作 aaa 后,系统会随机地转移到下一个状态 s′s's′(由转移概率 P(s′∣s,a)P(s' \mid s,a)P(s′∣s,a) 决定)。
    • 得到奖励:与此同时,系统给予执行该动作的即时回报 R(s,a)R(s,a)R(s,a) 或 R(s,a,s′)R(s, a, s')R(s,a,s′)。
  • 更新决策
    基于新的状态 s′s's′ 和获得的奖励,智能体可以对其策略 π\piπ 进行更新或继续保持不变,具体取决于使用的算法(例如价值迭代、策略迭代、Q 学习、深度强化学习等)。

  • 进入下一轮决策
    新的状态 s′s's′ 成为当前状态,系统重复上述过程,直到达到终止条件(如达到目标状态、达到最大交互步数、收敛到稳定策略等)

PPO

DDPG 

note:无人机飞行是连续的动作,使用 DDPG

聚焦连续动作空间,使用确定性策略和 Critic-Q 网络来估计动作价值,具备较高的数据利用效率,但也对训练稳定性和超参数选择有更高要求。

MADDPG

多无人机对战是多智能体和DDPG的结合

  • 集中式 Critic:在训练过程中,每个智能体的 Critic 都可以访问 全局信息,包括所有智能体的状态和动作。这使得 Critic 在更新时对环境动态和其他智能体决策有更全面的认识,缓解了环境非平稳问题。
  • 分散式 Actor:在执行阶段,每个智能体只基于自身的局部观测来进行决策,保持灵活性与可扩展性。

初步研究

动作设置:

        我们使用机动号操作无人机进行对战,一共执行五个状态,平飞,俯冲,平飞加减速,爬升,转弯

奖励函数设置

初步设计为分为多个阶段,进行分开训练,分为巡航,进攻,躲避,撤退四个策略,通过条件进行状态转移

开始设计初步的奖励和惩罚函数

巡航:

        奖励项:侦察到敌方无人机,侦察到敌方无人机时的高度差

        惩罚项:碰撞到边界

进攻:

        奖励项:导弹命中敌方无人机

        惩罚项:敌方无人机脱离我方锁定

躲避:

        奖励:躲避敌方导弹

撤退:

        奖励:??

        惩罚:被敌方无人机侦测

相关文章:

多无人机--强化学习

这个是我对于我的大创项目的构思,随着时间逐渐更新 项目概要 我们的项目平台来自挑战杯揭绑挂帅的无人机对抗项目,但是在由于时间原因,并未考虑强化学习,所以现在通过大创项目来弥补遗憾 我们项目分为三部分,分为虚…...

UE制作2d游戏

2d免费资产: Free 2D Game Assets - CraftPix.net 需要用到PaperZD插件 官网下载后启用即可 导入png素材 然后全选 - 创建Sprite 创建 人物基类 设置弹簧臂和相机 弹簧臂设置成旋转-90 , 取消碰撞测试 设置子类Sprite 拖到场景中 绑定设置输入映射,让角色移动跳跃 神似卡拉比…...

说一下JVM管理的常见参数

Java虚拟机&#xff08;JVM&#xff09;有许多常见参数&#xff0c;用于控制其行为和性能。以下是一些常见的JVM参数及其说明&#xff1a; 1. 内存管理参数 -Xms<size> START 设置初始堆内存大小。例如&#xff0c;-Xms512m表示初始堆大小为512MB。 -Xmx<size>…...

【FPGA】 MIPS 12条整数指令【2】

目录 仿真 代码 完整代码 实现slt 仿真 ori r1,r0,1100h ori r2,r0,0020h ori r3,r0,ff00h ori r4,r0,ffffh addi r5,r0,ffff slt r6,r5,r4 slt r6,r4,r3 代码 EX Slt:regcData ($signed(regaData)<$signed(regbData))?1b1:1b0; ID Inst_slt:be…...

机器学习--python基础库之Matplotlib (2) 简单易懂!!!

python基础库之Matplotlib&#xff08;2&#xff09; python基础库之Matplotlib0 准备1 散点图的绘制2 柱状图绘制3 其他 python基础库之Matplotlib 上篇文章机器学习–python基础库之Matplotlib (1) 超级详细!!!主要讲解了python的基础库matplotlib中绘图的流程以及折线图的…...

mybatis plus 持久化使用技巧及场景

mybatis plus提供了很多强大的持久化工具&#xff0c;新手容易对这些工具使用困难&#xff0c;下面我总结了一下mybatis plus持久化的使用技巧及使用场景。 一、持久化 官方文档&#xff1a;https://baomidou.com/guides/data-interface/ &#xff08;一&#xff09;通过ser…...

JVM监控和管理工具

基础故障处理工具 jps jps(JVM Process Status Tool)&#xff1a;Java虚拟机进程状态工具 功能 1&#xff1a;列出正在运行的虚拟机进程 2&#xff1a;显示虚拟机执行主类(main()方法所在的类) 3&#xff1a;显示进程ID(PID&#xff0c;Process Identifier) 命令格式 jps […...

记录 | 基于MaxKB的文字生成视频

目录 前言一、安装SDK二、创建视频函数库三、调试更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; 自己的感想 本文记录了创建文字生成视频的函数库的过程。如果想复现本文&#xff0c;需要你逐一…...

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)

今天小李哥将开启全新的技术分享系列&#xff0c;为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来生成式 AI 安全市场正迅速发展。据IDC预测&#xff0c;到2025年全球 AI 安全解决方案市场规模将突破200亿美元&#xff0c;年复合增长率超过30%&#xff0c;而Gartn…...

现场流不稳定,EasyCVR视频融合平台如何解决RTSP拉流不能播放的问题?

视频汇聚EasyCVR安防监控视频系统采用先进的网络传输技术&#xff0c;支持高清视频的接入和传输&#xff0c;能够满足大规模、高并发的远程监控需求。平台灵活性强&#xff0c;支持国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大…...

文献阅读 250205-Global patterns and drivers of tropical aboveground carbon changes

Global patterns and drivers of tropical aboveground carbon changes 来自 <Global patterns and drivers of tropical aboveground carbon changes | Nature Climate Change> 热带地上碳变化的全球模式和驱动因素 ## Abstract: Tropical terrestrial ecosystems play …...

算法与数据结构(括号匹配问题)

思路 从题干可以看出&#xff0c;只要给出的括号对应关系正确&#xff0c;那么就可以返回true,否则返回false。这个题可以使用栈来解决 解题过程 首先从第一个字符开始遍历&#xff0c;如果是括号的左边&#xff08;‘&#xff08;‘&#xff0c;’[‘&#xff0c;’}‘&…...

订单状态监控实战:基于 SQL 的状态机分析与异常检测

目录 1. 背景与问题 2. 数据准备 2.1 表结构设计 3. 场景分析与实现 3.1 场景 1:检测非法状态转换...

C# 中记录(Record)详解

从C#9.0开始&#xff0c;我们有了一个有趣的语法糖&#xff1a;记录(record)   为什么提供记录&#xff1f; 开发过程中&#xff0c;我们往往会创建一些简单的实体&#xff0c;它们仅仅拥有一些简单的属性&#xff0c;可能还有几个简单的方法&#xff0c;比如DTO等等&#xf…...

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-autobackend.py

autobackend.py ultralytics\nn\autobackend.py 目录 autobackend.py 1.所需的库和模块 2.def check_class_names(names): 3.def default_class_names(dataNone): 4.class AutoBackend(nn.Module): 1.所需的库和模块 # Ultralytics &#x1f680; AGPL-3.0 License …...

Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)

目录 1.镜像名的组成 2.镜像操作相关命令 镜像常用命令总结&#xff1a; 1. docker images 2. docker rmi 3. docker pull 4. docker push 5. docker save 6. docker load 7. docker tag 8. docker build 9. docker history 10. docker inspect 11. docker prune…...

Rust 变量特性:不可变、和常量的区别、 Shadowing

Rust 变量特性&#xff1a;不可变、和常量的区别、 Shadowing Rust 是一门以安全性和性能著称的系统编程语言&#xff0c;其变量系统设计独特且强大。本文将从三个角度介绍 Rust 变量的核心特性&#xff1a;可变性&#xff08;Mutability&#xff09;、变量与常量的区别&#…...

NFT Insider #167:Champions Tactics 角色加入 The Sandbox;AI 助力 Ronin 游戏生态

引言&#xff1a;NFT Insider 由 NFT 收藏组织 WHALE Members、BeepCrypto 联合出品&#xff0c; 浓缩每周 NFT 新闻&#xff0c;为大家带来关于 NFT 最全面、最新鲜、最有价值的讯息。每期周报将从 NFT 市场数据&#xff0c;艺术新闻类&#xff0c;游戏新闻类&#xff0c;虚拟…...

鹧鸪云无人机光伏运维解决方案

在新能源产业蓬勃发展的当下&#xff0c;光伏电站作为清洁能源供应的关键一环&#xff0c;其稳定运行和高效运维至关重要。随着光伏电站规模持续扩大&#xff0c;数量不断增加&#xff0c;传统人工巡检方式的弊端日益显著。人工巡检不仅效率低、人力和时间成本高&#xff0c;而…...

NeuralCF 模型:神经网络协同过滤模型

实验和完整代码 完整代码实现和jupyter运行&#xff1a;https://github.com/Myolive-Lin/RecSys--deep-learning-recommendation-system/tree/main 引言 NeuralCF 模型由新加坡国立大学研究人员于 2017 年提出&#xff0c;其核心思想在于将传统协同过滤方法与深度学习技术相结…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...