# rlSARSAAgent
强化学习 SARSA 智能体
函数库: TyReinforcementLearning
# 语法
agent = rlSARSAAgent(models, agentOptions)
agent = rlSARSAAgent(critic, agentOptions)
# 说明
agent = rlSARSAAgent(models, agentOptions)使用指定智能体模型来创建一个 SARSA 智能体,并通过 agentOptions 设置智能体属性。
agent = rlSARSAAgent(critic, agentOptions)使用指定评价者来创建一个 SARSA 智能体,并通过 agentOptions 设置智能体属性。
SARSA(State-Action-Reward-State-Action) 是一种无模型、在线、基于价值的强化学习算法,它基于环境状态、动作、奖励以及下一个环境状态和动作的组合来进行策略的更新和优化。
SARSA 算法的核心目标是通过与环境的交互学习到最优策略,使智能体能够在给定状态下选择使长期累积奖励最大化的动作。具体而言,SARSA 算法使用 Q 值函数来估计每对环境状态-动作的价值。在训练的每个时间步中,SARSA 根据环境状态和动作计算当前 Q 值,并使用下一个环境状态和动作来更新 Q 值。
SARSA 是一种重要且常用的强化学习算法,适用于许多问题领域。通过不断迭代和更新 Q 值函数,SARSA 算法可以帮助智能体学会如何在给定环境中做出最优决策。
# 示例
使用指定智能体模型创建 SARSA 智能体
创建环境接口。对于此示例,使用“CliffWalking-v0”环境,包含 48 个状态和 4 个可选动作。
using TyReinforcementLearning
env = BuildEnv("CliffWalking-v0");
由于状态空间和动作空间均为离散且低维,因此使用表格来模拟 Q 值函数。
创建基于环境状态个数与动作个数的 Q 表格,并基于 Q 表格搭建智能体模型。
models = rlSARSAModels(
Qtable=zeros(StateDims(env), ActionDims(env))
);
创建智能体选项。
option = rlSARSAAgentOptions(
stateNum=StateDims(env),
actionNum=ActionDims(env)
);
使用智能体模型与智能体选项创建智能体。
agent = rlSARSAAgent(models,option)
rlSARSAAgent([0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0; … ; 0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0], 0.05, 0.9, 48, 4, 0.1, 0.001, 0.01, 1000, TyReinforcementLearning.original_rewards, rlTrainResult(Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], -Inf, nothing), 0, 0)
使用指定评价者创建 SARSA 智能体
创建环境接口。对于此示例,使用“CliffWalking-v0”环境,包含 48 个状态和 4 个可选动作。
using TyReinforcementLearning
env = BuildEnv("CliffWalking-v0");
由于状态空间和动作空间均为离散且低维,因此使用表格来模拟 Q 值函数。
创建基于环境状态个数与动作个数的 Q 表格,并基于 Q 表格创建评价者。
critic = rlVectorQValueFunction(
table=zeros(StateDims(env),
ActionDims(env)),
optimizer=0.05
);
创建智能体选项。
option = rlSARSAAgentOptions(
stateNum=StateDims(env),
actionNum=ActionDims(env)
);
使用评价者与智能体选项创建智能体。
agent = rlSARSAAgent(critic,option)
rlSARSAAgent([0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0; … ; 0.0 0.0 0.0 0.0; 0.0 0.0 0.0 0.0], 0.05, 0.9, 48, 4, 0.1, 0.001, 0.01, 1000, TyReinforcementLearning.original_rewards, rlTrainResult(Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], -Inf, nothing), 0, 0)
# 输入参数
models-智能体模型
结构体
智能体模型,指定为rlSARSAModels对象,用作 SARSA 智能体的策略。在本函数中包括了值函数与学习率,用于指导智能体对环境状态-动作对进行价值评估并选择输出动作。
critic-评价者
结构体
强化学习评价者 critic,指定为rlVectorQValueFunction对象。其值函数为二维表格,优化器为浮点数。
agentOptions-智能体选项
结构体
智能体选项,指定为rlSARSAAgentOptions对象。
# 输出参数
agent-智能体
结构体
输出一个可以训练的强化学习 SARSA 智能体。
# 另请参阅
rlSARSAModels | rlVectorQValueFunction | rlSARSAAgentOptions | BuildEnv | StateDims | ActionDims