主要内容

generatePolicyFunction

生成计算代理或策略对象的策略的函数

描述

这个函数生成一个政策评估函数,你可以使用它:

此函数还创建了一个存储策略信息的数据文件。评估函数在第一次被调用时加载这个数据文件以正确地初始化它自己。

欲了解更多关于政策和价值功能的信息,请参见创建政策和价值功能

例子

generatePolicyFunction (代理)创建一个函数,使用默认函数名、策略名和数据文件名计算学习到的指定代理的策略。

generatePolicyFunction (政策)创建一个函数,该函数使用默认函数名、策略名和数据文件名计算指定策略对象的学习策略。

例子

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

例子

全部折叠

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

首先,创建和训练强化学习代理。对于本例,加载训练过的PG代理训练PG Agent平衡Cart-Pole系统

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

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

generatePolicyFunction(代理);

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

查看生成的函数。

类型evaluatePolicy.m
function action1 = evaluatePolicy(observation1) %#codegen % Reinforcement Learning Toolbox % Generated on: 31 aug -2022 05:41:43 persistent policy;if isempty(policy) policy = coder.loadRLPolicy("agentData.mat");end %评估策略action1 = getAction(policy,observation1);

对随机观察的策略进行评估。

evaluatePolicy(兰德(agent.ObservationInfo.Dimension))
ans = 10

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

可以在自定义训练循环中创建和训练策略对象,也可以从训练过的代理中提取训练过的对象。对于本例,加载训练过的PG代理训练PG Agent平衡Cart-Pole系统,并提取其贪婪的政策使用getGreedyPolicy。或者,您可以使用getExplorationPolicy

负载(“MATLABCartpolePG.mat”,“代理”) policy = getGreedyPolicy(agent)
policy = rlstocticactorpolicy的属性:rl离散tecategoricalactor] usemaxlikelihood hoodaction: 1 ObservationInfo: [1x1 rl.util. util.]rlNumericSpec] ActionInfo: [1x1 rl.util. util.]rlFiniteSetSpec] SampleTime: 1

然后,使用默认名称为该策略创建一个策略评估函数。

generatePolicyFunction(政策);

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

查看生成的函数。

类型evaluatePolicy.m
function action1 = evaluatePolicy(observation1) %#codegen % Reinforcement Learning Toolbox % Generated on: 31 aug -2022 05:41:45 persistent policy;if isempty(policy) policy = coder.loadRLPolicy("agentData.mat");end %评估策略action1 = getAction(policy,observation1);

对随机观察的策略进行评估。

evaluatePolicy(兰德(policy.ObservationInfo.Dimension))
ans = 10

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

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

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

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

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

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

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

查看生成的函数。

类型evaluatePolicy.m
函数action1 = evaluatePolicy(observation1) %#codegen % Reinforcement Learning Toolbox % Generated on: 05-May-2022 17:43:27 persistent policy;if isempty(policy) policy = coder.loadRLPolicy("policyFile.mat");end %评估策略action1 = getAction(policy,observation1);

对随机观察的策略进行评估。

evaluatePolicy (randi (25)
ans = 3

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

输入参数

全部折叠

训练过的强化学习代理,指定为以下代理对象之一。要训练您的代理,请使用火车函数。

对于具有随机行动者(PG、PPO、SAC、TRPO、AC)的代理,生成的策略函数返回的动作取决于的值UseExplorationPolicy代理人的财产。默认情况下,UseExplorationPolicy并且生成的动作是确定的。如果UseExplorationPolicy真正的,生成的动作是随机的。

强化学习策略,指定为以下对象之一:

请注意

rlAdditiveNoisePolicyrlEpsilonGreedyPolicy不支持策略对象。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字是参数名和价值是对应的值。名值实参必须出现在其他实参之后,但对的顺序并不重要。

在R2021a之前,用逗号分隔每个名称和值,并括起来的名字在报价。

例子:FunctionName = " computeAction "

所生成函数的名称,指定为字符串或字符向量。

生成函数内的策略对象名称,指定为字符串或字符向量。

生成的数据文件的名称,指定为字符串或字符向量。如果具有指定名称的文件已经存在于当前MATLAB文件夹中,则在名称中添加一个适当的数字,以便不覆盖现有文件。

生成的数据文件包含四个结构,用于存储完全描述策略所需的数据。评估函数在第一次被调用时加载这个数据文件以正确地初始化它自己。

版本历史

介绍了R2019a

全部展开

Baidu
map