主要内容

sim卡

在指定的环境中模拟训练过的强化学习代理

描述

例子

经验= sim卡(env代理使用默认模拟选项模拟环境中的一个或多个强化学习代理。

经验= sim卡(代理env执行与前面语法相同的模拟。

env= sim卡(___simOpts使用模拟选项对象simOpts.使用模拟选项来指定参数,例如每个模拟的步骤数或要运行的模拟的数量。在前面语法中的任何输入参数之后使用此语法。

例子

全部折叠

使用为该环境配置的代理模拟强化学习环境。对于本例,加载已经配置的环境和代理。环境是一个离散的车极环境创建与rlPredefinedEnv.代理是一个策略梯度(rlPGAgent)代理。有关本例中使用的环境和代理的更多信息,请参见训练PG代理人平衡车杆系统

rng (0)可重复性%负载RLSimExample.matenv
env = cartpoledistteaction with properties: Gravity: 9.8000 MassCart: 1 MassPole: 0.1000 Length: 0.5000 MaxForce: 10 Ts: 0.0200 thetathresholdraans: 0.2094 XThreshold: 2.4000 RewardForNotFalling: 1 pentyforfalling: -5 State: [4×1 double]
代理
AgentOptions: [1×1 rl.option. agent = rpgagent . properties:rlPGAgentOptions] UseExplorationPolicy: 1 ObservationInfo: [1×1 rl.util.rlNumericSpec] ActionInfo: [1×1 rl.util.rlFiniteSetSpec] SampleTime: 0.1000

通常,你训练代理使用火车并对所训练的智能体进行环境模拟,以测试其性能。对于本例,使用加载的代理模拟环境。配置模拟选项,指定模拟运行100步。

simOpts = rlSimulationOptions(“MaxSteps”, 100);

对于本例中使用的预定义的车杆环境。你可以用情节生成车杆系统的可视化。当您模拟环境时,这个图会自动更新,以便您可以在模拟过程中观察系统的发展。

情节(env)

模拟环境。

experience = sim(env,agent,simOpts)

经验=带有字段的结构:观察:[1×1 struct]动作:[1×1 struct]奖励:[1×1 timeseries] IsDone: [1×1 timeseries] SimulationInfo: [1×1 struct]

输出结构经验记录从环境中收集到的观察,行动和奖励,以及在模拟过程中收集到的其他数据。每个字段包含一个timeseries的对象或结构timeseries数据对象。例如,体验。行动是一个timeseries包含代理在模拟的每一步对车-杆系统的作用。

体验。行动
ans =带有字段的结构:CartPoleAction: [1×1 timeseries]

模拟为本例中使用的Simulink®模型创建的环境万博1manbetx训练多个代理执行协作任务,使用在那个例子中训练过的特工。

在MATLAB®工作区中加载代理。

负载rlCollaborativeTaskAgents

创造一个环境rlCollaborativeTask万博1manbetxSimulink®模型,它有两个代理块。由于两个块使用的代理(agentA而且agentB)已经在工作空间中,您不需要通过它们的观察和操作规范来创建环境。

env = rl万博1manbetxSimulinkEnv(“rlCollaborativeTask”,[“rlCollaborativeTask /代理”“B rlCollaborativeTask /代理”]);

控件所需的参数rlCollaborativeTask万博1manbetxSimulink®模型要运行。

rlCollaborativeTaskParams

模拟人工智能对环境的影响,节省人工智能的经验xpr

xpr = sim(env,[agentA agentB]);

策划两个代理人的行动。

次要情节(2,1,1);情节(xpr (1) .Action.forces)次要情节(2,1,2);情节(xpr (2) .Action.forces)

图中包含2个轴对象。坐标轴对象1的标题时间序列图:力量包含2个对象的类型楼梯。坐标轴对象2标题时间序列图:力量包含2个类型的楼梯对象。

输入参数

全部折叠

代理行为的环境,指定为下列强化学习环境对象之一:

  • 一个预定义的MATLAB®或仿真万博1manbetx软件®使用rlPredefinedEnv.这种环境不支持同时训练多个代理。万博1manbetx

  • 一个自定义的MATLAB环境,您创建的函数,如rlFunctionEnvrlCreateEnvTemplate.这种环境不支持同时训练多个代理。万博1manbetx

  • 您创建的自定义Si万博1manbetxmulink环境rl万博1manbetxSimulinkEnv.这种环境支持同时训练多个代理。万博1manbetx

有关创建和配置环境的更多信息,请参见:

env是一个Si万博1manbetxmulink环境,调用sim卡编译并模拟与环境相关的模型。

要模拟的代理,指定为强化学习代理对象,如rlACAgentrlDDPGAgent,或作为这类对象的数组。

如果env是否创建了多代理环境rl万博1manbetxSimulinkEnv,将代理指定为数组。数组中代理的顺序必须与用于创建的代理顺序匹配env.MATLAB环境不支持多代理模拟。万博1manbetx

有关如何创建和配置用于强化学习的代理的详细信息,请参见强化学习代理

模拟选项,指定为rlSimulationOptions对象。使用此参数指定选项,例如:

  • 每个模拟的步骤数

  • 要运行的模拟数量

详情请参见rlSimulationOptions

输出参数

全部折叠

模拟结果,作为结构或结构数组返回。数组中的行数等于类指定的模拟数NumSimulations选择rlSimulationOptions.数组中的列数就是代理的数量。每个的字段经验结构如下。

从环境中收集的观察结果,作为结构返回,其中包含与环境中指定的观察结果相对应的字段。每个字段包含一个timeseries的长度N+ 1,其中N为模拟步骤数。

要获得给定模拟步骤的当前观察值和下一个观察值,可以使用如下代码,假设字段之一观察obs1

Obs = getSamples(experience. observe .obs1,1:N);NextObs = getSamples(experience. observe .obs1,2:N+1);
如果您正在编写自己的训练算法,这些值可能很有用sim卡为培训产生经验。

由代理计算的操作作为结构返回,该结构具有与环境中指定的操作信号对应的字段。每个字段包含一个timeseries的长度N,在那里N为模拟步骤数。

在模拟的每一个步骤的奖励,返回为timeseries的长度N,在那里N为模拟步骤数。

标志,指示事件的终止,返回为timeseries标量逻辑信号的。根据配置环境时为事件终止指定的条件,该标志由环境在每一步设置。当环境将此标志设置为1时,模拟终止。

在模拟过程中收集的信息,作为以下之一返回:

  • 对于MATLAB环境,一种包含字段的结构SimulationError.该结构包含模拟过程中发生的任何错误。

  • 对于Si万博1manbetxmulink环境,a万博1manbetx仿真软件。SimulationOutput包含模拟数据的对象。记录的数据包括模型配置为日志记录的任何信号和状态、模拟元数据以及发生的任何错误。

版本历史

在R2019a中引入