主要内容

sim卡

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

自从R2019a

描述

例子

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

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

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

例子

全部折叠

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

rng (0)再现性%负载RLSimExample.matenv
env = CartPoleDiscreteAction with properties: Gravity: 9.8000 MassCart: 1 MassPole: 0.1000 Length: 0.5000 MaxForce: 10 Ts: 0.0200 thetathresholdrans: 0.2094 XThreshold: 2.4000 RewardForNotFalling: 1 PenaltyForFalling: -5 State: [4x1 double]
代理
agent = rlPGAgent with properties: AgentOptions: [1x1 rl.option.]rlPGAgentOptions] UseExplorationPolicy: 1 ObservationInfo: [1x1 rl.util.rlNumericSpec] ActionInfo: [1x1 rl.util.rlFiniteSetSpec] SampleTime: 0.1000

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

simOpts = rlSimulationOptions(MaxSteps=100);

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

情节(env)

Figure Cart Pole Visualizer包含一个轴对象。轴对象包含6个类型为直线、多边形的对象。

模拟环境。

experience = sim(env,agent,simOpts)

Figure Cart Pole Visualizer包含一个轴对象。轴对象包含6个类型为直线、多边形的对象。

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

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

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

模拟为示例中使用的Simulink®模型创建的环境金宝app训练多个代理执行协同任务,使用在该示例中训练的代理。

在MATLAB®工作空间中加载代理。

负载rlCollaborativeTaskAgents

创造一个环境rlCollaborativeTask金宝appSimulink®模型,它有两个代理块。由于两个块使用的代理(agentAagentB)已经在工作区中,您不需要传递它们的观察和操作规范来创建环境。

env = rl金宝appSimulinkEnv(“rlCollaborativeTask”“rlCollaborativeTask /代理”“B rlCollaborativeTask /代理”]);

加载所需的参数rlCollaborativeTask金宝appSimulink®模型运行。

rlCollaborativeTaskParams

模拟代理对抗环境,节省经验xpr

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

策划两个特工的行动。

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

图中包含2个轴对象。轴对象1,标题为时间序列图:力,xlabel时间(秒),ylabel力包含2个类型为楼梯的对象。坐标轴对象2,标题为Time Series Plot:forces, xlabel Time(秒),ylabel forces包含2个类型为stair的对象。

输入参数

全部折叠

agent活动的环境,指定为以下强化学习环境对象之一:

  • 预定义的MATLAB®或仿真金宝app软件®使用rlPredefinedEnv。这种环境不支持同时训练多个代理。金宝app

  • 一个自定义的MATLAB环境,您可以使用诸如rlFunctionEnvrlCreateEnvTemplate。这种环境不支持同时训练多个代理。金宝app

  • 创建的自定义Sim金宝appulink环境rl金宝appSimulinkEnv。这种环境支持同时训练多个代理。金宝app

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

env是一个Si金宝appmulink环境,调用sim卡编译和模拟与环境关联的模型。

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

如果env是否创建了多代理环境rl金宝appSimulinkEnv,将代理指定为数组。数组中代理的顺序必须与用于创建的代理顺序相匹配env。MATLAB环境不支持多智能体仿真。金宝app

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

仿真选项,指定为rlSimulationOptions对象。使用此参数指定选项,如:

  • 每个模拟的步数

  • 要运行的模拟数量

有关详情,请参阅rlSimulationOptions

输出参数

全部折叠

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

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

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

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

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

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

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

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

  • 对于MATLAB环境,一个包含字段的结构SimulationError。此结构包含模拟期间发生的任何错误。

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

版本历史

在R2019a中引入