在MDP环境下训练强化学习智能体

news2024/11/20 13:38:28

目录

1.创建MDP环境

2.创建Q-learning智能体

3. 训练Q-learning智能体

4.验证Q-learning结果


        本文示例展示了如何训练Q-learning智能体来解决一般的马尔可夫决策过程(MDP)环境。有关这些智能体的更多信息,请参阅Q-Learning智能体。

MDP环境如下图:

其中:

  1. 每一个圆圈代表一个状态。
  2. 每个状态可以决定上升或下降。
  3. 智能体从状态1开始。
  4. 智能体收到的奖励等于图中每个转换的值。
  5. 训练目标是获得最大的累积奖励。

1.创建MDP环境

创建具有8个状态和2个动作(上和下)的MDP环境。

MDP = createMDP(8,["up";"down"]);

为了对上图中的转换建模,需要修改MDP的状态转移矩阵和奖励矩阵。默认情况下,这些矩阵包含零。

为MDP指定状态转移矩阵和奖励矩阵。例如,在以下命令中:

  • 前两行指定通过采取动作1(“向上”)从状态1转移到状态2并且奖励+3。
  • 接下来的两行指定了通过采取动作2(“向下”)从状态1转移到状态3,并且奖励+1。
MDP.T(1,2,1) = 1;
MDP.R(1,2,1) = 3;
MDP.T(1,3,2) = 1;
MDP.R(1,3,2) = 1;

类似地,为图中剩余的规则指定状态转换和奖励。

% State 2 transition and reward
MDP.T(2,4,1) = 1;
MDP.R(2,4,1) = 2;
MDP.T(2,5,2) = 1;
MDP.R(2,5,2) = 1;
% State 3 transition and reward
MDP.T(3,5,1) = 1;
MDP.R(3,5,1) = 2;
MDP.T(3,6,2) = 1;
MDP.R(3,6,2) = 4;
% State 4 transition and reward
MDP.T(4,7,1) = 1;
MDP.R(4,7,1) = 3;
MDP.T(4,8,2) = 1;
MDP.R(4,8,2) = 2;
% State 5 transition and reward
MDP.T(5,7,1) = 1;
MDP.R(5,7,1) = 1;
MDP.T(5,8,2) = 1;
MDP.R(5,8,2) = 9;
% State 6 transition and reward
MDP.T(6,7,1) = 1;
MDP.R(6,7,1) = 5;
MDP.T(6,8,2) = 1;
MDP.R(6,8,2) = 1;
% State 7 transition and reward
MDP.T(7,7,1) = 1;
MDP.R(7,7,1) = 0;
MDP.T(7,7,2) = 1;
MDP.R(7,7,2) = 0;
% State 8 transition and reward
MDP.T(8,8,1) = 1;
MDP.R(8,8,1) = 0;
MDP.T(8,8,2) = 1;
MDP.R(8,8,2) = 0;

指定状态“s7”和"s8"作为终止状态。

MDP.TerminalStates = ["s7";"s8"];

为这个过程模型创建强化学习MDP环境:

env = rlMDPEnv(MDP);

要指定智能体的初始状态始终为状态1,请指定一个返回初始智能体状态的重置函数。这个函数在每一次训练的开始被调用。创建一个匿名函数句柄,将初始状态设置为1。

env.ResetFcn = @() 1;

为了再现结果固定随机生成器种子:

rng(0)

2.创建Q-learning智能体

为了创建Q-learning智能体,首先使用MDP环境中的观察值和动作创建一个Q表,并设置学习率为1。

obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);
qTable = rlTable(obsInfo, actInfo);
qFunction = rlQValueFunction(qTable, obsInfo, actInfo);
qOptions = rlOptimizerOptions(LearnRate=1);

接下来,使用这个表创建一个Q-learning智能体,配置贪心探索算法。

agentOpts = rlQAgentOptions;
agentOpts.DiscountFactor = 1;
agentOpts.EpsilonGreedyExploration.Epsilon = 0.9;
agentOpts.EpsilonGreedyExploration.EpsilonDecay = 0.01;
agentOpts.CriticOptimizerOptions = qOptions;
qAgent = rlQAgent(qFunction,agentOpts);

3. 训练Q-learning智能体

为了训练智能体,首先指定训练选项,对于这个例子,使用如下选项:

  • 训练最多500次,每次最多持续50个时间步。
  • 当智能体在连续30次中获得的平均累计奖励大于10时,停止训练。
trainOpts = rlTrainingOptions;
trainOpts.MaxStepsPerEpisode = 50;
trainOpts.MaxEpisodes = 500;
trainOpts.StopTrainingCriteria = "AverageReward";
trainOpts.StopTrainingValue = 13;
trainOpts.ScoreAveragingWindowLength = 30;

 使用Train函数训练智能体。这可能需要几分钟才能完成。为了节省运行此示例时的时间,通过将doTraining设置为false来加载预训练的智能体。要训练自己的智能体,就将doTraining设置为true。

doTraining = false;

if doTraining
    % Train the agent.
    trainingStats = train(qAgent,env,trainOpts); %#ok<UNRCH> 
else
    % Load pretrained agent for the example.
    load("genericMDPQAgent.mat","qAgent"); 
end

4.验证Q-learning结果

为了验证训练结果,使用sim函数在训练环境中模拟智能体。agent成功找到最优路径,累计奖励为13。

Data = sim(qAgent,env);
cumulativeReward = sum(Data.Reward)

由于折扣因子设置为1,因此训练智能体的Q表中的值与环境的未折现收益相匹配。

QTable = getLearnableParameters(getCritic(qAgent));
QTable{1}

TrueTableValues = [13,12;5,10;11,9;3,2;1,9;5,1;0,0;0,0]


 

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

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

相关文章

浙江爱知道控股集团,数字化经营的实践者,科技降本增效,助力基业长青

拥抱时代浪潮&#xff0c;加速科技变革。10月27日&#xff0c;浙江爱知道控股集团于西子智慧产业园西子音乐厅举办“AIGC可持续发展峰会”&#xff0c;重点探讨了数字化经营的重要意义。 提高效率和降低成本&#xff1a;数字化经营可以优化和自动化企业的业务流程&#xff0c;提…

Chrome浏览器Snippets调试面板

用Chrome的snippets片段功能创建页面js外挂程序&#xff0c;从控制台创建js小脚本。 Chrome的snippets是小脚本&#xff0c;还可以创作并在Chrome DevTools的来源面板中执行。 可以访问和从任何页面运行它们。当你运行一个片段&#xff0c;它从当前打开的页面的上下文中执行。 …

达索系统SOLIDWORKS 2024 装配体新增功能

如今市场环境紧迫&#xff0c;许多企业在这样的情形之下&#xff0c;都需要尽快将产品推向市场&#xff0c;赢得头筹。所以产品设计需要快速进行装配验证&#xff0c;以确保产品功能和性能的准确性和可靠性&#xff0c;同时原型或样机的制造和装配需要尽快完成&#xff0c;以满…

HEC-RAS模型教程

详情点击公众号链接&#xff1a;HEC-RAS模型教程 前言 水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。 一&#xff0c;水动力模型 1.水动力模型的本质 2.水动力模型的基本方程与适用范围 3.模型建模要点…

地球系统模式CESM

目前通用地球系统模式&#xff08;Community Earth System Model&#xff0c;CESM&#xff09;在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来&#xff0c;一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海…

接口测试,一篇搞定

大多数人对于接口测试都觉得是一种高大上的测试&#xff0c;觉得学会接口测试就可以从小白测试员&#xff0c;变成了高级测试员&#xff0c;但其实接口测试只是测试的基础内容 什么是接口 接口泛指实体把自己提供给外界的一种抽象化物&#xff08;可以为另一实体&#xff09;&…

Java List Set Map

一、List 1.1 ArrayList 1.2 LinkedList 二、Set 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、Map 3.1 HashMap 3.2 TreeMap 3.3 LinkedHashMap 四、对比 类型底层结构重复null值场景备注查询删除新增ListArrayList动态数组可允许快速随机访问元素0(1)0(n)尾部增加0&a…

MFC 重绘static控件,使用png、jpg图片贴图

MFC实现static静态文件贴图png,底部有完整工程链接免费下载 一、添加变量 二、使用CPngStatic类型添加对应的m_sta1类变量 三、在init初始化代码内增加加载图片代码 四、最终效果 参考按钮实现添加GDI 按钮贴图实现 VS2015完整工程下载 下载链接

一文读懂防火墙基本原理

你们好&#xff0c;我的网工朋友。 今天想和你聊聊防火墙。防火墙是啥&#xff1f;表意自然是防止火灾发生时&#xff0c;火势烧到其它区域&#xff0c;使用由防火材料砌的墙。 后来这个词语引入到了网络中&#xff0c;把从外向内的网络入侵行为看做是火灾&#xff0c;防止这种…

SHCTF 2023 新生赛 Web 题解

Web [WEEK1]babyRCE 源码过滤了cat 空格 我们使用${IFS}替换空格 和转义获得flag [WEEK1]飞机大战 源码js发现unicode编码 \u005a\u006d\u0078\u0068\u005a\u0033\u0074\u006a\u0059\u006a\u0045\u007a\u004d\u007a\u0067\u0030\u005a\u0069\u0030\u0031\u0059\u006d\u0045…

ElasticSearch 高级查询语法Query DSL实战

ES高级查询Query DSL ES中提供了一种强大的检索数据方式&#xff0c;这种检索方式称之为Query DSL&#xff08;Domain Specified Language 领域专用语言&#xff09; , Query DSL是利用Rest API传递JSON格式的请求体(RequestBody)数据与ES进行交互&#xff0c;这种方式的丰富查…

chorme安装esay scholar及chrome 无法从该网站添加应用、扩展程序和用户脚本解决方案

问题描述 如题&#xff0c;博主想安装easy scholar用于查询论文的分区&#xff0c;结果安装了半天一直出现chrome 无法从该网站添加应用、扩展程序和用户脚本解决方案的问题。 解决方案 先从这个网址下载&#xff1a;https://www.easyscholar.cc/download 然后对下载好的文…

一文详解防御DDoS攻击的几大有效办法

伴随互联网的飞速发展&#xff0c;网络安全问题变得越来越突出&#xff0c;其中最常见的就是DDoS攻击&#xff0c;也就是分布式拒绝服务攻击。DDoS攻击者利用计算机或其他设备的协作&#xff0c;以发送大量请求的方式导致目标超负荷&#xff0c;导致不能正常运转或“宕机”。以…

python:使用Scikit-image对遥感影像进行形态学轮廓特征提取(contour)

作者:CSDN @ _养乐多_ 在本博客中,我们将介绍如何使用Scikit-Image来进行形态学轮廓特征提取(contour),并且提供一个示例代码,演示了如何在单波段遥感图像上应用这些方法。 形态学轮廓特征提取是一种用于图像处理和分析的技术,旨在检测和描述图像中的对象的边界或外围…

rem设置 vscode设置rem 适配 px转rem

1、下载安装 2、 二、 如果代码里面设置 就按代码里面来 -- 20 代码: // 基准大小 const baseSize 20 // 设置 rem 函数 function setRem() {// 当前页面宽度相对于 750 宽的缩放比例&#xff0c;可根据自己需要修改。const scale document.documentElement.clientWidth / …

联合分析专题--解密多组学联合分析在中药方向的研究思路

研究必要性 中药主要由植物药&#xff08;根、茎、叶、果&#xff09;、动物药&#xff08;内脏、皮、骨、器官等&#xff09;和矿物药组成。因植物药占中药的大多数&#xff0c;所以中药也称中草药。中药基因组学的理解&#xff0c;侧重于中药本身&#xff0c;主要包括中药转…

SOP8封装 NV080C芯片在智能洗碗机的应用

根据天猫研究所的数据显示&#xff0c;精致和智能&#xff0c;已成为当代年轻人居家生活消费新趋势。随着人均收入的增长&#xff0c;伴随着年轻人越来越追求生活的仪式感、精致感&#xff0c;新兴的智能家居产品已慢慢成为年轻人居家必备的“刚需”。洗碗机、智能马桶等产品受…

2016 款北京现代悦纳车换挡冲击、加速无力

一、故障现象 一辆2016款北京现代悦纳车&#xff0c;搭载G4LC发动机和A6GF1-2自动变速器&#xff0c;累计行驶里程约为17.9万km。车主反映&#xff0c;从P挡切换到R挡或D挡时&#xff0c;存在换挡冲击&#xff0c;行驶中加速无力&#xff0c;且发动机故障灯异常点亮&#xff08…

git教程(2)---远程仓库操作

git教程---远程仓库 远程操作创建远程仓库克隆远程仓库HTTPSSSH 向远程仓库推送拉取远程仓库.gitignore文件给git指令起别名IssuesPull Requests 标签管理操作标签推送标签 多人协作场景一场景二 开发模型Git分支设计规范使用Gitee的DevOps平台体验项目开发流程 远程操作 创建…

Access 数据源配置

将数据文件mdb下载到本地电脑&#xff1b;建议不要放在有中文名的路径下打开>控制面板>所有控制面板项>管理工具>ODBC数据源(32位&#xff09;进行数据源配置 用户DNS>添加>选择 Driver do Microsoft Access(*.mdb)项 对话框填写数据源名为 “bookdb” 选择m…