主要内容

generatePolicyFunction

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

描述

例子

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

例子

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

例子

全部折叠

本示例演示如何为PG Agent创建策略评估函数。

首先,创建并训练一个强化学习代理。对于本例,加载PG代理训练PG代理平衡车杆系统

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

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

generatePolicyFunction(代理);

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

查看生成的函数。

类型evaluatePolicy.m
function action1 = evaluatePolicy(observation1) %#codegen % Reinforcement Learning Toolbox % Generated on: 01-Sep-2021 14:14:41 actionSet = [-10 10];%从抽样概率中选择动作概率= localEvaluate(observation1);% Normalize the probability p = probability (:)'/sum(probability);= min([0 cumsum(p)],1);边(结束)= 1;[~, actionIndex] = histc(兰德(1,1),边);%#ok action1 = actionSet(actionIndex);end %%本地函数函数概率= localEvaluate(observation1) persistent policy if isempty(policy) policy = code . loaddeeplearningnetwork ('agentData.mat','policy');End observation1 = observation1(:)';概率=预测(政策,观察1); end

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

评估随机观察的策略。

evaluatePolicy(兰德(4,1))
ans = 10

您现在可以使用MATLAB®Coder™为这个策略函数生成代码。有关更多信息,请参见部署训练有素的强化学习政策

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

对于本例,加载经过训练的Q-learning agent在基本网格世界中训练强化学习代理

负载(“basicGWQAgent.mat”“qAgent”

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

generatePolicyFunction (qAgent“MATFileName”“policyFile.mat”

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

查看生成的函数。

类型evaluatePolicy.m
function action1 = evaluatePolicy(observation1) %#codegen % Reinforcement Learning Toolbox % Generated on: 01- 9 -2021 14:14:44 actionSet = [1;2;3;4];numActions =元素个数(actionSet);q = 0(1、numActions);for i = 1:numActions q(i) = localEvaluate(observation1,actionSet(i));end [~,actionIndex] = max(q);action1 = actionSet (actionIndex);end %% Local Functions function q = localEvaluate(observation1,action) persistent policy if isempty(policy) s = code .load('policyFile.mat','policy');政策= s.policy;end actionSet = [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表查找每个潜在操作的值函数。然后,策略函数选择价值函数最大的动作。

评估随机观察的策略。

evaluatePolicy (randi (25)
ans = 1

您现在可以使用MATLAB®Coder™为这个策略函数生成代码。有关更多信息,请参见部署训练有素的强化学习政策

输入参数

全部折叠

训练过的强化学习agent,指定为:

训练你的特工,使用火车函数。

名称-值参数

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

例子:“FunctionName”、“computeAction”

生成函数的名称,指定为名称-值对“FunctionName”和一个字符串或字符向量。

生成函数中策略变量的名称,指定为名称-值对“PolicyName”和一个字符串或字符向量。

代理数据文件的名称,指定为由以下内容组成的名称-值对“MATFileName”和一个字符串或字符向量。

介绍了R2019a