主要内容

生成policyfunction.

创建评估培训的强化学习代理策略的功能

描述

例子

generatepolicyfunction(代理人使用默认函数,策略和数据文件名创建一种函数,该函数评估指定代理的学习策略。生成策略评估功能后,您可以:

  • 生成函数的代码马铃薯®编码器™或GPU编码器™。有关更多信息,请参阅部署培训的强化学习政策

  • 模拟Simulink中的培训代理金宝app®用一个Matlab功能(金宝appSimulink)堵塞。

例子

generatepolicyfunction(代理人名称,价值使用一个或多个名称值对参数指定函数,策略和数据文件名。

例子

全部收缩

此示例显示如何为PG代理创建策略评估功能。

首先,创建和培训钢筋学习代理。对于此示例,请加载培训的PG代理火车PG代理可以平衡车杆系统

加载('matlabcartpolepg.mat''代理人'

然后,使用默认名称为此代理创建策略评估函数:

生成PolicyFunction(代理);

此命令创建equatepolicy.m.文件,包含策略函数,以及AgentData.mat.文件,包含培训的深神经网络演员。

查看生成的函数。

类型equatepolicy.m.
函数Action1 = evaluatePolicy(观察1)%#Codegen%钢筋学习工具箱%:23-FEB-2021 18:52:32 Actionset = [-10 10];%从采样概率选择概率= localEvaluate(观察1);%归一化概率p =概率(:)'/ sum(概率);%确定要采取的边缘= min的动作([0 cumsum(p)],1);边缘(结束)= 1;[〜,actionIndex] = histc(rand(1,1),边缘);%#确定 action1 = actionset(actionsIndex);结束%%本函数函数概率= localEvaluate(观察1)持久策略如果是isempty(policy)policy = coder.loaddeeplearningnetwork('AgentData.mat','策略');结束观察1 =观察1(:)';概率=预测(政策,观察1); end

对于给定观察,策略函数使用演员网络评估每个潜在动作的概率。然后,策略函数随机基于这些概率选择动作。

由于该PG代理的演员网络具有单个输入层和单个输出层,因此您可以使用深度学习工具箱™生成功能为此网络生成代码。有关更多信息,请参阅部署培训的强化学习政策

此示例显示如何为Q学习代理创建策略评估功能。

对于此示例,请加载培训的Q学习代理在基本网格世界中列车加固学习代理

加载('basicgwqagent.mat''Qagent'

为此代理创建策略评估函数,并指定代理数据文件的名称。

generatepolicyfunction(qagent,'matfilename'“policyfile.mat”

此命令创建equatepolicy.m.文件,包含策略函数,以及policyfile.mat.文件,其中包含培训的Q表值函数。

查看生成的函数。

类型equatepolicy.m.
函数Action1 = evaluatePolicy(观察1)%#Codegen%钢筋学习工具箱%:23-FeB-2021 18:52:34 Actionset = [1; 2; 3; 4];数量=数量(actionset);q =零(1,数量);对于i = 1:natimate q(i)= localevaluate(观察1,actionset(i));结束[〜,actionIndex] = max(q);Action1 = Icsionset(ActionIndex);结束%%本函数函数q = lopalevaluate(观察1,动作)持久策略如果是isempty(policy)s = coder.load('policyfile.mat','策略');policy = s.policy;结束actionset = [1; 2; 3; 4];观察到= [1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 23; 24; 25]; actionIndex = rl.codegen.getElementIndex(actionSet,action); observationIndex = rl.codegen.getElementIndex(observationSet,observation1); q = policy(observationIndex,actionIndex); end

对于给定的观察,策略函数使用Q表查找每个潜在动作的值函数。然后,策略函数选择值函数最大的操作。

您可以使用MATLAB®Coder™生成此策略功能的代码

有关更多信息,请参阅部署培训的强化学习政策

输入参数

全部收缩

培训的钢筋学习代理,指定为以下之一:

由于深度学习工具箱™代码生成和预测功能不支持具有多个输入层的深神经网络,金宝app生成policyfunction.不支持以下代理配置金宝app。

  • DQN代理商,具有单输出深度神经网络评论家表示

  • 任何具有深度神经网络演员的代理商或具有多个观察输入层的评论家表示

笔记

具有多输出深度神经网络表示的DQN代理得到支持金宝app生成policyfunction.如果网络只有一个用于观察的输入层。

要训​​练你的代理,请使用火车功能。

名称值对参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:'functionname',“computeAction”

生成的函数的名称,指定为包含的名称值对'functionname'和字符串或字符矢量。

生成函数中的策略变量的名称,指定为包含的名称值对'policyname'和字符串或字符矢量。

代理数据文件的名称,指定为包含的名称值对'matfilename'和字符串或字符矢量。

在R2019A介绍