數學建模:MATLAB強化學習

一、強化學習簡述

強化學習是一種通過與環境交互,學習狀態到行為的映射關系,以獲得最大積累期望回報的方法。包含環境,動作和獎勵三部分,本質是智能體通過與環境的交互,使得其作出的動作所得到的決策得到的總的獎勵達到最大。強化學習主要是智能體與環境的交互過程。

步驟:

智能體先觀察環境的狀態。狀態是智能體周圍的位置布局或者智能體與周圍物體的距離,通常用向量表示。
基于當前觀察到的狀態,智能體選擇一定策略決定采取的動作,根據每個動作的價值分配一個選擇的概率,價值越高的動作被選中的概率越大,所有動作都有可能會被選擇。
智能體執行動作后,觀察環境對其動作的響應,接收新的狀態和相應的獎勵,獎勵是標量值,用于評估所選動作的好壞。
基于新獲得的狀態和獎勵,智能體采用一定的價值函數更新其對當前策略的價值評估:時序差分學習、蒙特卡洛方法、動態規劃方法。
重復上面步驟改變策略直至達到停止條件。

二、用DQN方法創建智能體并實現智能體訓練與環境的交互

1.簡述

深度Q網絡(DQN)是一種結合了Q學習深度神經網絡的強化學習算法,用于解決具有高維狀態空間的問題。DQN通過使用一個神經網絡來近似動作價值函數(Q值),從而能夠處理復雜的狀態輸入,并為每個可能的動作估計其預期收益。使得智能體能夠在未知環境中通過試錯學習到最優策略。

?

2.代碼

clear
clc%%
%創建強化學習環境%使用預定義環境直接創建一個離散動作空間的倒立擺環境
env = rlPredefinedEnv('CartPole-Discrete');  %查看環境的狀態信息
%getObservationInfo函數返回環境中狀態觀測值的相關信息,包括每個狀態變量的名稱、描述、低值、高值以及維度
obsInfo = getObservationInfo(env);            %查看環境的動作信息
%getActionInfo函數返回環境中所有可能動作的相關信息
actInfo = getActionInfo(env);                 %rng函數控制隨機數生成器的狀態
%設置為0,表示每次運行時都會使用相同的隨機數序列,確保了結果的一致性和可重復性
rng(0)                                                 %%
%創建智能體% 創建神經網絡結構
%定義神經網絡的超參數
layers =[                                      %特征輸入層,大小為狀態觀測值的維度。%使用featureInputLayer函數創建一個輸入層%obsInfo.Dimension(1)參數表示環境狀態空間的維度featureInputLayer(obsInfo.Dimension(1))   %fullyConnectedLayer函數創建一個全連接層,傳入參數為神經元數量%創建兩個全連接層有助于在保持重要信息的同時降低模型復雜度fullyConnectedLayer(200)                  fullyConnectedLayer(50)                   %用reluLayer函數創建一個ReLU激活層,引入了非線性,對輸入數據進行非線性處理reluLayer                                  %創建全連接層為輸出層,神經元數量等于環境中可執行的動作數,通過這個層預測每個動作的價值%length(actInfo.Elements)返回環境中所有可能動作的數量。fullyConnectedLayer(length(actInfo.Elements))
]; %dlnetwork函數將之前定義的layers數組轉換為一個可被MATLAB中的深度學習工具箱所識別和使用深度學習網絡對象,進而進行訓練操作
net = dlnetwork(layers);                      %用rlVectorQValueFunction函數創建一個Q值函數作為評估器
%傳入參數net表示已創建好的神經網絡;obsInfo和actInfo分別表示狀態信息和動作信息
%該Q值函數用于評估在給定狀態下采取每個可能動作的價值
critic = rlVectorQValueFunction(net, obsInfo, actInfo);%用rlOptimizerOptions函數設置Q值函數的優化參數
%傳入參數LearnRate表示學習率;GradientThreshold表示梯度閾值
%學習率控制模型參數更新速度;梯度閾值有助于穩定訓練過程
crtic_Opts = rlOptimizerOptions(LearnRate=1e-3, GradientThreshold=1);%用rlDQNAgentOptions函數設置DQN智能體的訓練選項
%SampleTime0表示每個時間步的時間間隔
%MiniBatchSize表示每次抽取訓練樣本的數量
%UseDoubleDQN表示不使用雙重DQN
agentoption = rlDQNAgentOptions( ...SampleTime = 0.1, ...                       Critic = crtic_Opts, ...     MiniBatchSize = 256, ...                   UseDoubleDQN = false);                      %用rlDQNAgent函數創建DQN智能體
agent = rlDQNAgent(critic, agentoption);       %%
%配置訓練選項%MaxEpisodes表示智能體與環境交互的最大次數
%MaxStepsPerEpisode表示每次與環境交互智能體執行的最大操作次數
%"StopTrainingCriteria","AverageReward"表示停止訓練的標準是基于平均獎勵
%"SaveAgentCriteria","AverageReward"表示當達到某個平均獎勵時保存智能體
trainOpts = rlTrainingOptions( ..."MaxEpisodes", 200, ...                     "MaxStepsPerEpisode", 400, ...               "StopTrainingCriteria", "AverageReward", ... "StopTrainingValue", 400, ...                                                    "SaveAgentCriteria", "AverageReward", ...   "SaveAgentValue", 100);                      %%
%繪圖,使推桿系統可視化
plot(env)                                       %%
%訓練智能體
%用train函數實現智能體與環境之間的交互訓練過程
%在訓練過程中,智能體學習如何通過最大化累積獎勵來選擇最佳動作
training_Stats = train(agent, env, trainOpts);     

3.運行結果

淺藍色折線表示每輪智能體與環境交互的獎勵

深藍色折線表示當前所有交互輪次的平均獎勵

三、用simulink模型創建環境

Simulink是一個基于MATLAB的圖形化編程環境,用于建模、仿真和分析多域動態系統,由一系列模塊組成,這些模塊代表了系統的各個組成部分。

用simulink模型創建強化學習環境,接收智能體的動作作為輸入,輸出相應的觀察值、獎勵和完成信號。

?

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

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

相關文章

【leetcode hot 100 160】相交鏈表

解法一:(哈希集合)利用HashSet保存一個鏈表的值,循環另一個列表,在HashSet中尋找該值。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x…

19. 大數據-技術生態簡介

文章目錄 前言一、Hadoop介紹1. 簡介2. Hadoop發展史3. Hadoop現狀 二、Hadoop特性1. Hadoop國外應用2. Hadoop國內應用 三、Hadoop架構變遷1. 發行版本2. Hadoop架構變遷(1.0-2.0變遷)3. Hadoop架構變遷(3.0新版本)4. 綜述 四、技術生態體系 前言 大數據(Big Data…

DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)示例3: 行選擇

前言:哈嘍,大家好,今天給大家分享一篇文章!并提供具體代碼幫助大家深入理解,徹底掌握!創作不易,如果能幫助到大家或者給大家一些靈感和啟發,歡迎收藏關注哦 💕 目錄 Deep…

VsCode 快捷鍵備忘

移動光標及選擇文本 Ctrl ← / → :以單詞為單位移動游標Home / End:光標移到行首/行位Ctrl Home / End:光標移到文件首和文件尾Ctrl Shift \:在匹配的分隔符之間跳轉 配對的分隔符 是指分隔代碼元素的字符,比如字…

用數據喚醒深度好眠,時序數據庫 TDengine 助力安提思腦科學研究

在智能醫療與腦科學快速發展的今天,高效的數據處理能力已成為突破創新的關鍵。安提思專注于睡眠監測與神經調控,基于人工智能和邊緣計算,實現從生理體征監測、智能干預到效果評估的閉環。面對海量生理數據的存儲與實時計算需求,安…

SQL_語法

1 數據庫 1.1 新增 create database [if not exists] 數據庫名; 1.2 刪除 drop database [if exists] 數據庫名; 1.3 查詢 (1) 查看所有數據庫 show databases; (2) 查看當前數據庫下的所有表 show tables; 2 數據表 2.1 新增 (1) 創建表 create table [if not exists…

Qt 開發 OpenGL 程序流程

在用 Qt 開發 OpenGL 程序時,整體的工作流程分為幾個關鍵步驟,最終目的是將數據傳遞給 GPU 并開始渲染。這一過程涉及到從代碼編寫到與著色器連接的多個操作,下面我將詳細講解每個步驟。 1. 設置 Qt 項目 這個步驟是準備工作,你首…

長短期記憶網絡(LSTM)學習指南

長短期記憶網絡(LSTM)學習指南 1. 定義和背景 長短期記憶網絡(Long Short-Term Memory, LSTM)是一種遞歸神經網絡(RNN)的變體,旨在解決傳統RNN在處理長期依賴關系時遇到的梯度消失或爆炸問題。…

仿12306項目(4)

基本預定車票功能的開發 對于乘客購票來說,需要有每一個車次的余票信息,展示給乘客,供乘客選擇,因此首個功能是余票的初始化,之后是余票查詢,這兩個都是控臺端。對于會員端的購票,需要有余票查詢…

第十二屆藍橋杯 異或數列

原題: https://www.acwing.com/problem/content/3424/ 題目大意: A、B兩人的數初始值均為0,他們輪流從X數組中取數,可以將該數與自己的數或對方的數進行異或操作,A先手,當X中的數被取完的時候誰的數大誰…

微服務的認識與拆分

微服務架構通過將應用分解為一組小的、獨立的服務來實現,每個服務圍繞特定業務功能構建,并能獨立部署與擴展。這種架構增強了開發靈活性、提高了系統的可維護性和擴展性,使得團隊可以更快地響應變化和市場需求。 目錄 認識微服務 單體架構 …

高效編程指南:PyCharm與DeepSeek的完美結合

DeepSeek接入Pycharm 前幾天DeepSeek的充值窗口又悄悄的開放了,這也就意味著我們又可以絲滑的使用DeepSeek的API進行各種輔助性工作了。本文我們來聊聊如何在代碼編輯器中使用DeepSeek自動生成代碼。 注:本文適用于所有的JetBrains開發工具&#xff0c…

項目中同時使用Redis(lettuce)和Redisson的報錯

溫馨提示:圖片有點小,可以放大頁面進行查看... 問題1:版本沖突 直接上圖,這個錯表示依賴版本不匹配問題,我本地SpringBoot用的是2.7,但是Redisson版本用的3.32.5。 我們通過點擊 artifactId跟進去 發現它…

Jackson 詳解

目錄 前言 Jackson 是 Java 生態中最流行的 JSON 處理庫之一,廣泛應用于 RESTful API、數據存儲和傳輸等場景。它提供了高效、靈活的 JSON 序列化和反序列化功能,支持注解、模塊化設計和多種數據格式(如 XML、YAML)。本文將詳細介…

H.264,H.265,H.266標準技術改進

關于H.264,H.265,H.266相關資料鏈接: 標準及中文資料鏈接 視頻編碼中的主要技術 視頻編碼的目標是在保證視頻質量的前提下,盡可能減少數據量。以下是視頻編碼中的核心技術: 塊劃分(Block Partitioning) 將視頻幀劃分…

clickhouse安裝路徑

《ClickHouse安裝路徑指南》 大家好,今天我們將一起學習如何在電腦上找到和理解ClickHouse的安裝路徑。這將幫助學生、科研人員以及任何對數據庫技術感興趣的人更好地管理他們的數據查詢工作。 ClickHouse是一款列式存儲數據庫管理系統(DBMS&#xff09…

時序數據庫 InfluxDB 3.0 版本性能實測報告:寫入吞吐量提升效果驗證

亮點總結: TSBS 測試表明,對于少于 100 萬臺設備的數據集,InfluxDB OSS 3.0 的數據寫入速度實際上比 InfluxDB OSS 1.8 更慢。 對于 100 萬臺及以上設備的數據集,InfluxDB OSS 3.0 的數據寫入性能才開始超過 InfluxDB OSS 1.8。…

AS32X601雙核鎖步MCU技術優勢分析

AS32X601是國科安芯公司研制的一系列基于32位RISC-V指令集車規級MCU處理器芯片。主頻高達180MHz,支持雙核鎖步架構,基于軟錯誤防護技術加持,顯著提高芯片安全性能。產品具有高安全、低失效、多IO、低成本、抗輻照等特點。 一、功能安全與可靠…

基于 LeNet 網絡的 MNIST 數據集圖像分類

1.LeNet的原始實驗數據集MNIST 名稱:MNIST手寫數字數據集 數據類型:灰度圖 (一通道) 圖像大小:28*28 類別數:10類(數字0-9) 1.通過torchvision.datasets.MNIST下載并保存到本地…

電池綜合測試儀:科技賦能,精準守護能源安全

在當今這個科技日新月異的時代,電池作為眾多電子設備的心臟,其性能的穩定與高效直接關系到設備的運行質量與使用安全。隨著電動汽車、可穿戴設備、儲能系統等領域的快速發展,對電池性能的檢測與評估提出了更高要求。在此背景下,電…