generatePolicyFunction

建立评估强化学习代理训练策略的函数

描述

例子

generatePolicyFunction (代理)创建一个函数,该函数使用默认函数、策略和数据文件名计算指定代理的已学习策略。生成策略评价函数后,可以:

例子

generatePolicyFunction (代理,名称,值)使用一个或多个名称-值对参数指定函数、策略和数据文件名。

例子

全部折叠

这个例子展示了如何为PG代理创建一个策略评估函数。

首先,创建并训练一个强化学习代理。在本例中,加载经过训练的PG代理训练PG代理人平衡吊柱系统:

负载(“MATLABCartpolePG.mat”,“代理”)

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

generatePolicyFunction(代理);

此命令创建evaluatePolicy.m文件,其中包含策略函数,以及agentData.mat包含经过训练的深度神经网络演员。

查看生成的函数。

类型evaluatePolicy.m
@ function action1 = evaluatePolicy(observation1) %#codegen % Reinforcement Learning Toolbox %生成于:29-Feb-2020 02:08:21 actionSet = [-10 10];%从采样概率中选择动作概率= localEvaluate(观测1);p = probability (:)'/sum(probability);%确定取边的动作= min([0 cumsum(p)],1);边(结束)= 1;[~,actionIndex] = histc(兰德(1,1),边);%#ok action1 = actionSet(actionIndex);end %%本地函数函数概率= localEvaluate(observation1)持久化策略如果是空的(policy)策略= code . loaddeeplearningnetwork ('agentData.mat','policy');结束概率=预测(政策,观测1);结束

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

由于此PG代理的actor网络只有一个输入层和一个输出层,因此可以使用Deep Learning Toolbox™生成功能为该网络生成代码。有关更多信息,请参见部署经过培训的强化学习策略

这个例子展示了如何为Q-Learning Agent创建一个策略评估函数。

在这个例子中,加载Q-learning agent训练在基本网格世界中训练增强学习代理

负载(“basicGWQAgent.mat”,“qAgent”)

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

generatePolicyFunction (qAgent“MATFileName”,“policyFile.mat”)

此命令创建evaluatePolicy.m文件,其中包含策略函数,以及policyFile.mat文件,其中包含经过训练的Q表值函数。

查看生成的函数。

类型evaluatePolicy.m
函数action1 = evaluatePolicy(observation1) %#codegen % Reinforcement Learning Toolbox %生成于:29-Feb-2020 02:12:06 actionSet = [1;2;3;4];numActions =元素个数(actionSet);q = 0 (1、numActions);对于i = 1:numActions q(i) = localEvaluate(observation1,actionSet(i));end [~,actionIndex] = max(q);action1 = actionSet (actionIndex);函数q = localEvaluate(observation1,action)持久化策略如果为空(policy) s = code .load('policyFile.mat','policy');政策= s.policy;末端起搏= [1;2;3;4];observationSet = [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™为该策略函数生成代码

有关更多信息,请参见部署经过培训的强化学习策略

输入参数

全部折叠

训练后的强化学习agent,具体如下:

由于深度学习工具箱™代码生成和预测功能不支持具有多个输入层的深度神经网络,万博1manbetxgeneratePolicyFunction不支持下列代理配置万博1manbetx。

  • 具有深度神经网络批评表示的DQN代理

  • 具有多个观测输入层的深度神经网络参与者或批评家表示的任何代理

训练你的代理人,使用火车函数。

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值是对应的值。的名字必须出现在引号内。可以按任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“FunctionName”、“computeAction”

生成的函数的名称,指定为由“FunctionName”以及字符串或字符向量。

生成的函数中策略变量的名称,指定为由“PolicyName”以及字符串或字符向量。

代理数据文件的名称,指定为由“MATFileName”以及字符串或字符向量。

介绍了R2019a