主要内容

generatePolicyBlock

生成动态仿真模块块,它计算代理或策略对象的策略

    描述

    这个函数生成一个Simulink®政策来自代理或策略对象的评估块。它还创建一个存储策略信息的数据文件。生成的策略块加载这个数据文件,以便在模拟之前正确地初始化自己。您可以使用该块来模拟策略并生成用于部署目的的代码。

    有关策略和价值函数的更多信息,请参见创建政策和价值功能

    例子

    generatePolicyBlock (代理创建一个块,该块使用默认块名称、策略名称和数据文件名计算指定代理的策略。

    例子

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

    generatePolicyBlock (___MATFileName =dataFileName指定数据文件的文件名。

    例子

    全部折叠

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

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

    然后,使用默认名称从该代理创建策略评估块。

    generatePolicyBlock(代理);

    此命令创建一个无标题的Simulink®模型,其中包含策略块和blockAgentData.mat文件,包含创建和初始化策略块所需的信息(如代理中参与者使用的经过训练的深度神经网络)。块加载这个数据文件,以便在模拟之前正确地初始化自己。

    现在,您可以在Simulink®模型中拖放该块,并将其连接起来,以便它将来自环境的观察作为输入,并将计算的动作返回给环境。这允许您在闭环中模拟策略。然后可以生成用于部署目的的代码。有关更多信息,请参见部署训练有素的强化学习策略

    关闭模式。

    bdclose (《无题》

    创建观察和操作规范对象。对于本例,将观察空间和操作空间分别定义为连续的四维空间和二维空间。

    obsInfo = rlNumericSpec([4 1]);actInfo = rlNumericSpec([2 1]);

    或者使用getObservationInfo而且getActionInfo从环境中提取规范对象。

    创造一个连续的决定性角色。这个参与者必须接受一个观察作为输入,并返回一个操作作为输出。

    为了近似参与者内部的策略函数,使用循环的深度神经网络模型。将网络定义为层对象的数组,并从环境规范对象中获取观察和操作空间的维度。要创建循环网络,请使用sequenceInputLayer作为输入层(其大小等于观测通道的维数),并包含至少一个lstmLayer

    layers = [sequenceInputLayer(obsInfo.Dimension(1)) fullyConnectedLayer(10) reluLayer lstmLayer(8,OutputMode= .“序列”) fulllyconnectedlayer (actInfo.Dimension(1)) tanhLayer];

    将网络转换为adlnetwork对象,并显示权重的数量。

    模型= dlnetwork(层);总结(模型)
    可学习数量:880输入:1 'sequenceinput' 4维序列输入(CTB)

    使用以下命令创建actor模型,以及观察和行动规范。

    演员= rlContinuousDeterministicActor(模型、obsInfo actInfo)
    actor = rlContinuousDeterministicActor,属性:ObservationInfo: [1×1 rl.util.]rlNumericSpec] ActionInfo: [1×1 rl.util.]rlNumericSpec] UseDevice:“cpu”

    用随机的观察输入检查actor。

    行动= getAction(演员,{兰德(obsInfo.Dimension)});行为{1}
    ans =2×1单列向量-0.0742 - 0.0158

    创建策略对象演员

    政策= rlDeterministicActorPolicy(演员)
    Actor: [1×1 rl.function. policy = rlDeterministicActorPolicy .]rlContinuousDeterministicActor] ObservationInfo: [1×1 rl.util.]rlNumericSpec] ActionInfo: [1×1 rl.util.]rlNumericSpec] SampleTime: 1

    可以使用点表示法访问策略选项。使用随机观察输入检查策略。

    行动= getAction(政策,{兰德(obsInfo.Dimension)});行为{1}
    ans =2×1-0.0060 - -0.0161

    您可以使用自定义训练循环来训练策略。

    然后,使用生成的mat文件的默认名称从这个策略对象创建一个策略评估块。

    generatePolicyBlock(政策);

    此命令创建一个无标题的Simulink®模型,其中包含策略块和blockAgentData.mat文件,包含创建和初始化策略块所需的信息(如代理中参与者使用的经过训练的深度神经网络)。块加载这个数据文件,以便在模拟之前正确地初始化自己。

    现在,您可以在Simulink®模型中拖放该块,并将其连接起来,以便它将来自环境的观察作为输入,并将计算的动作返回给环境。这允许您在闭环中模拟策略。然后可以生成用于部署目的的代码。有关更多信息,请参见部署训练有素的强化学习策略

    关闭模式。

    bdclose (《无题》

    输入参数

    全部折叠

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

    对于具有随机角色(PG, PPO, SAC, TRPO, AC)的代理,生成的策略函数返回的动作取决于UseExplorationPolicy代理的属性。默认情况下,UseExplorationPolicy生成的动作是确定的。如果UseExplorationPolicy真正的,生成的动作是随机的。

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

    请注意

    rlAdditiveNoisePolicy而且rlEpsilonGreedyPolicy不支持策略对象。

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

    生成的数据文件包含四个结构,用于存储完全描述策略所需的数据。在模拟之前,块(用数据文件名作为掩码参数生成)加载这个数据文件以正确地初始化自己。

    版本历史

    介绍了R2019a

    Baidu
    map