多無人機--強化學習

這個是我對于我的大創項目的構思,隨著時間逐漸更新

項目概要

我們的項目平臺來自挑戰杯揭綁掛帥的無人機對抗項目,但是在由于時間原因,并未考慮強化學習,所以現在通過大創項目來彌補遺憾

我們項目分為三部分,分為虛擬機,態勢系統,和運行程序端(使用主機)

虛擬機內包含各種無人機信息,并封裝為接口供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:在執行階段,每個智能體只基于自身的局部觀測來進行決策,保持靈活性與可擴展性。

初步研究

動作設置:

? ? ? ? 我們使用機動號操作無人機進行對戰,一共執行五個狀態,平飛,俯沖,平飛加減速,爬升,轉彎

獎勵函數設置

初步設計為分為多個階段,進行分開訓練,分為巡航,進攻,躲避,撤退四個策略,通過條件進行狀態轉移

開始設計初步的獎勵和懲罰函數

巡航:

? ? ? ? 獎勵項:偵察到敵方無人機,偵察到敵方無人機時的高度差

? ? ? ? 懲罰項:碰撞到邊界

進攻:

? ? ? ? 獎勵項:導彈命中敵方無人機

? ? ? ? 懲罰項:敵方無人機脫離我方鎖定

躲避:

? ? ? ? 獎勵:躲避敵方導彈

撤退:

? ? ? ? 獎勵:??

? ? ? ? 懲罰:被敵方無人機偵測

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894748.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894748.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894748.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

工業相機常用詞語解釋

線陣相機和面陣相機: 線陣相機,是采用線陣圖像傳感器的相機。線陣圖像傳感器以CCD為主, 一行的數據可以到幾K甚至幾十K,但是高度只有幾個像素,行頻很高,可以到每秒幾萬行,適合做非常高精度、寬…

2501,編寫dll

DLL的優點 簡單的說,dll有以下幾個優點: 1)節省內存.同一個軟件模塊,若是源碼重用,則會在不同可執行程序中編譯,同時運行這些exe時,會在內存中重復加載這些模塊的二進制碼. 如果使用dll,則只在內存中加載一次,所有使用該dll的進程會共享此塊內存(當然,每個進程會復制一份的d…

Python----Python高級(并發編程:進程Process,多進程,進程間通信,進程同步,進程池)

一、進程Process 擁有自己獨立的堆和棧,既不共享堆,也不共享棧,進程由操作系統調度;進程切換需要的資源很最大,效率低。 對于操作系統來說,一個任務就是一個進程(Process)&#xff…

在Mapbox GL JS中“line-pattern”的使用詳解

在Mapbox GL JS中,line-pattern 是一種用于在地圖上繪制帶有圖案的線條的樣式屬性。通過 line-pattern,你可以使用自定義的圖像作為線條的圖案,而不是使用純色或漸變。 1. 基本概念 line-pattern: 該屬性允許你指定一個圖像作為線條的圖案。…

C++ Primer 算術運算符

歡迎閱讀我的 【CPrimer】專欄 專欄簡介:本專欄主要面向C初學者,解釋C的一些基本概念和基礎語言特性,涉及C標準庫的用法,面向對象特性,泛型特性高級用法。通過使用標準庫中定義的抽象設施,使你更加適應高級…

【大數據技術】本機PyCharm遠程連接虛擬機Python

本機PyCharm遠程連接虛擬機Python 注意:本文需要使用PyCharm專業版。 pycharm-professional-2024.1.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso寫在前面 本文主要介紹如何使用本地PyCharm遠程連接虛擬機,運行Python腳本,提高編程效率。 注意: …

堆(Heap)的原理與C++實現

1. 什么是堆? 堆(Heap)是一種特殊的樹形數據結構,通常用于實現優先隊列。堆可以分為兩種類型: 最大堆(Max Heap):每個節點的值都大于或等于其子節點的值。最小堆(Min H…

移除元素-雙指針(下標)

題目 給你一個數組 nums 和一個值 val,你需要 原地 移除所有數值等于 val 的元素。元素的順序可能發生改變。然后返回 nums 中與 val 不同的元素的數量。 假設 nums 中不等于 val 的元素數量為 k,要通過此題,您需要執行以下操作&#xff1a…

log4j2日志配置文件

log4j2配置文件每個項目都會用到,記錄一個比較好用的配置文件,方便以后使用時調取,日志輸出級別為debug,也可以修改 <?xml version"1.0" encoding"UTF-8"?> <Configuration monitorInterval"180" packages""><prope…

高等代數筆記—映射與線性空間

映射 映射&#xff1a; σ : M → M ′ \sigma: M \to M σ:M→M′ σ ( a ) a ′ , a ∈ M , a ′ ∈ M ′ \sigma(a)a, a\in M, a \in M σ(a)a′,a∈M,a′∈M′ a ′ a a′是 a a a在 σ \sigma σ下的像&#xff0c; a a a是 a ′ a a′在 σ \sigma σ下的原像 σ : …

提示詞實踐總結

目錄 一、要求創建SqlServer表&#xff08;ChatGpt&#xff09; 二、要求生成多層架構代碼&#xff08;Cursor&#xff09; 三、要求修改方法返回值類型&#xff08;Cursor&#xff09; 四、要求修改方法入參&#xff08;Cursor&#xff09; 五、復雜的多表關聯生成&#…

java進階文章鏈接

java 泛型&#xff1a;java 泛型詳解-絕對是對泛型方法講解最詳細的&#xff0c;沒有之一 Java 泛型&#xff0c;你了解類型擦除嗎&#xff1f; java 注解&#xff1a;深入理解Java注解類型 秒懂&#xff0c;Java 注解 &#xff08;Annotation&#xff09;你可以這樣學 jav…

MyBatis-Plus筆記-快速入門

大家在日常開發中應該能發現&#xff0c;單表的CRUD功能代碼重復度很高&#xff0c;也沒有什么難度。而這部分代碼量往往比較大&#xff0c;開發起來比較費時。 因此&#xff0c;目前企業中都會使用一些組件來簡化或省略單表的CRUD開發工作。目前在國內使用較多的一個組件就是…

Maven jar 包下載失敗問題處理

Maven jar 包下載失敗問題處理 1.配置好國內的Maven源2.重新下載3. 其他問題 1.配置好國內的Maven源 打開??的 Idea 檢測 Maven 的配置是否正確&#xff0c;正確的配置如下圖所示&#xff1a; 檢查項?共有兩個&#xff1a; 確認右邊的兩個勾已經選中&#xff0c;如果沒有請…

Spring 核心技術解析【純干貨版】- IX:Spring 數據訪問模塊 Spring-Jdbc 模塊精講

在現代企業級應用中&#xff0c;數據訪問層的穩定性和高效性至關重要。為了簡化和優化數據庫操作&#xff0c;Spring Framework 提供了 Spring-JDBC 模塊&#xff0c;旨在通過高度封裝的 JDBC 操作&#xff0c;簡化開發者的編碼負擔&#xff0c;減少冗余代碼&#xff0c;同時提…

探秘AI的兩大核心:決策式AI與生成式AI?

目錄 一、引言 二、從定義上來看 1. 決策式AI&#xff08;Discriminative AI&#xff09; 2. 生成式AI&#xff08;Generative AI&#xff09; 三、從技術原理上來看 1. 決策式AI&#xff08;Discriminative AI&#xff09; 2. 生成式AI&#xff08;Generative AI&#…

2.5學習

misc buuctf-假如給我三天光明 下載附件后得到了一個壓縮包和一個圖片&#xff0c;壓縮包為加密壓縮包&#xff0c;需要解出密碼&#xff0c;然后注意到這個圖片并非簡單的一個封面&#xff0c;在下方還有諸多點&#xff0c;有黑有灰。經過搜索&#xff0c;發現這是盲文通過與…

sed變量中特殊字符/處理方式

個人博客地址&#xff1a;sed變量中特殊字符/處理方式 | 一張假鈔的真實世界 如果變量值中包含斜杠&#xff08;/&#xff09;特殊字符&#xff0c;在使用sed命令的做行內字符串替換時可以使用井號&#xff08;#&#xff09;做為sed語法分隔符&#xff0c;如下&#xff1a; G…

java進階1——JVM

java進階——JVM 1、JVM概述 作用 Java 虛擬機就是二進制字節碼的運行環境&#xff0c;負責裝載字節碼到其內部&#xff0c;解釋/編譯為對 應平臺上的機器碼指令行&#xff0c;每一條 java 指令&#xff0c;java 虛擬機中都有詳細定義&#xff0c;如怎么取操 作數&#xff0c…

搭建集成開發環境PyCharm

1.下載安裝Python&#xff08;建議下載并安裝3.9.x&#xff09; https://www.python.org/downloads/windows/ 要注意勾選“Add Python 3.9 to PATH”復選框&#xff0c;表示將Python的路徑增加到環境變量中 2.安裝集成開發環境Pycharm http://www.jetbrains.com/pycharm/…