2026b

# rlSQLAgent


强化学习 SQL 智能体

函数库: TyReinforcementLearning

# 语法

agent = rlSQLAgent(models, agentOptions)
agent=rlSQLAgent(critic, agentOptions)

# 说明

agent = rlSQLAgent(models, agentOptions) 使用指定智能体模型来创建一个 SQL 智能体,并通过 agentOptions 设置智能体属性。


agent =rlSQLAgent(critic, agentOptions) 使用指定评价者来创建一个 SQL 智能体,并通过 agentOptions 设置智能体属性。

SQL(Soft Q-Learning)是一种基于 Q-Learning 算法的变体,它引入了一个软化(soften)操作,用于处理动作选择时的探索与利用之间的权衡。引入 Boltzmann 分布(也称为 softmax 函数),对动作的选择进行软化。具体来说,对于每个状态,SQL 计算出每个动作的概率分布,然后根据这个概率分布进行动作选择。这样,不仅会选择具有较高 Q 值的动作,还会给予其他动作一定的概率,以增加探索的机会。

SQL 通过调整参数 alpha 来控制动作选择的随机性。较高的 alpha 会导致更均匀的概率分布,从而增加了非最优动作被选择的概率。相反,较低的 alpha 会使得概率分布更加尖锐,更倾向于选择具有较高 Q 值的动作。

通过软化操作,SQL 允许智能体在策略探索和利用之间进行平衡,同时保持一定程度上的随机性。这样可以帮助智能体更好地探索状态空间,并有可能发现更优的策略。

# 示例

使用指定智能体模型创建 SQL 智能体

创建环境接口。对于此示例,使用“CartPole-v1”环境,其动作空间是离散的,包含 4 个状态和 2 个可选动作。

using TyReinforcementLearning
env = BuildEnv("CartPole-v1");

根据环境的状态个数与动作个数创建 SQL 的值函数。

critic_net = BuildDefaultNet(64, StateSize(env)[1], ActionDims(env));

基于值函数创建智能体模型。

models = rlSQLModels(
    criticNet=critic_net
);

创建智能体选项。

option = rlSQLAgentOptions(
    stateSize=StateSize(env),
    actionNum=ActionDims(env)
);

使用智能体模型与智能体选项创建智能体。

agent = rlSQLAgent(models,option)
rlSQLAgent(Chain(Dense(4 => 64, relu), Dense(64 => 2)), Flux.Optimise.Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), Chain(Dense(4 => 64, relu), Dense(64 => 2)), 0.0001, 0.9, 0.1, 0.001, 0.01, (4,), 2, 1024, 1000, 300, false, 0.05, 0.02, TyReinforcementLearning.original_rewards, rlReplayMemory(Matrix{Float64}(undef, 4, 0), Matrix{Int64}(undef, 1, 0), Float64[], Matrix{Float64}(undef, 4, 0), Bool[], 0), rlTrainResult(Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], -Inf, nothing), 0, 0)
使用指定评价者创建 SQL 智能体

创建环境接口。对于此示例,使用“CartPole-v1”环境,其动作空间是离散的,包含 4 个状态和 2 个可选动作。

using TyReinforcementLearning
env = BuildEnv("CartPole-v1");

创建评价者。

critic_net = BuildDefaultNet(64, StateSize(env)[1], ActionDims(env))
critic = rlVectorQValueFunction(net=critic_net);

创建智能体选项。

option = rlSQLAgentOptions(
    stateSize=StateSize(env),
    actionNum=ActionDims(env)
);

使用评价者与智能体选项创建智能体。

agent=rlSQLAgent(critic,option)
rlSQLAgent(Chain(Dense(4 => 64, relu), Dense(64 => 2)), Flux.Optimise.Adam(0.001, (0.9, 0.999), 1.0e-8, IdDict{Any, Any}()), Chain(Dense(4 => 64, relu), Dense(64 => 2)), 0.0001, 0.9, 0.1, 0.001, 0.01, (4,), 2, 1024, 1000, 300, false, 0.05, 0.02, TyReinforcementLearning.original_rewards, rlReplayMemory(Matrix{Float64}(undef, 4, 0), Matrix{Int64}(undef, 1, 0), Float64[], Matrix{Float64}(undef, 4, 0), Bool[], 0), rlTrainResult(Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], Float64[], -Inf, nothing), 0, 0)

# 输入参数

models-智能体模型
结构体

智能体模型,指定为rlSQLModels对象,用作 SQL 智能体的策略。本函数包括策略函数、值函数,策略函数和值函数的优化器,策略函数和值函数的 L2 正则化因子,用于指导智能体生成动作,并对环境状态-动作对进行价值评估。

critic-评价者
结构体

强化学习评价者 critic,指定为rlVectorQValueFunction对象。

agentOptions-智能体选项
结构体

智能体选项,指定为rlSQLAgentOptions对象。

# 输出参数

agent-智能体
结构体

输出一个可以训练的强化学习 SQL 智能体。

# 另请参阅

BuildEnv | rlSQLModels | rlVectorQValueFunction | rlSQLAgentOptions | StateSize | ActionDims | randomNoise