分层强化学习在多智能体协作任务中的应用
关键词:分层强化学习、多智能体协作、强化学习算法、数学模型、实际应用场景
摘要:本文深入探讨了分层强化学习在多智能体协作任务中的应用。首先介绍了相关背景,包括研究目的、预期读者和文档结构等。接着阐述了分层强化学习和多智能体协作的核心概念及其联系,通过文本示意图和 Mermaid 流程图进行直观展示。详细讲解了核心算法原理,并用 Python 代码进行具体实现。分析了相关数学模型和公式,并举例说明。通过项目实战给出代码实际案例及详细解释。探讨了该技术在多个领域的实际应用场景,推荐了学习资源、开发工具框架和相关论文著作。最后总结了未来发展趋势与挑战,还提供了常见问题解答和扩展阅读参考资料,旨在为读者全面深入地了解分层强化学习在多智能体协作任务中的应用提供帮助。
1. 背景介绍
1.1 目的和范围
随着人工智能技术的不断发展,多智能体协作任务在许多领域得到了广泛应用,如机器人团队协作、自动驾驶、智能电网管理等。然而,在复杂的多智能体协作场景中,传统的强化学习方法面临着状态空间爆炸、学习效率低下等问题。分层强化学习作为一种有效的解决方案,通过将复杂任务分解为多个子任务,降低了学习的复杂度,提高了学习效率。本文的目的是深入研究分层强化学习在多智能体协作任务中的应用,探讨其核心概念、算法原理、数学模型,并通过实际案例进行验证,为相关领域的研究和应用提供理论支持和实践指导。
1.2 预期读者
本文预期读者包括人工智能、机器学习、机器人等领域的研究人员、工程师和学生。对于对分层强化学习和多智能体协作感兴趣的初学者,本文可以作为入门教程,帮助他们了解相关概念和方法;对于有一定基础的专业人士,本文可以提供更深入的技术分析和实践经验,为他们的研究和开发工作提供参考。
1.3 文档结构概述
本文将按照以下结构进行组织:
- 核心概念与联系:介绍分层强化学习和多智能体协作的核心概念,分析它们之间的联系,并通过文本示意图和 Mermaid 流程图进行直观展示。
- 核心算法原理 & 具体操作步骤:详细讲解分层强化学习在多智能体协作任务中的核心算法原理,并用 Python 代码进行具体实现。
- 数学模型和公式 & 详细讲解 & 举例说明:分析相关数学模型和公式,通过具体例子说明其应用。
- 项目实战:代码实际案例和详细解释说明:通过实际项目案例,展示分层强化学习在多智能体协作任务中的应用,包括开发环境搭建、源代码详细实现和代码解读。
- 实际应用场景:探讨分层强化学习在多智能体协作任务中的实际应用场景,如机器人团队协作、自动驾驶等。
- 工具和资源推荐:推荐学习资源、开发工具框架和相关论文著作,帮助读者进一步深入学习和研究。
- 总结:未来发展趋势与挑战:总结分层强化学习在多智能体协作任务中的应用现状,分析未来发展趋势和面临的挑战。
- 附录:常见问题与解答:提供常见问题的解答,帮助读者解决在学习和实践过程中遇到的问题。
- 扩展阅读 & 参考资料:提供扩展阅读资料和参考文献,方便读者进一步深入学习和研究。
1.4 术语表
1.4.1 核心术语定义
- 分层强化学习(Hierarchical Reinforcement Learning,HRL):是一种将复杂任务分解为多个子任务的强化学习方法,通过在不同层次上进行学习,降低了学习的复杂度,提高了学习效率。
- 多智能体协作(Multi - Agent Collaboration):指多个智能体通过相互协作完成共同任务的过程,智能体之间需要进行信息交互和协调。
- 智能体(Agent):是具有感知、决策和行动能力的实体,能够根据环境状态做出决策并采取行动。
- 状态空间(State Space):指智能体在环境中可能处于的所有状态的集合。
- 动作空间(Action Space):指智能体在环境中可能采取的所有动作的集合。
- 奖励函数(Reward Function):用于评估智能体在环境中采取某个动作后的表现,智能体的目标是最大化长期累积奖励。
1.4.2 相关概念解释
- 宏观动作(Macro - action):在分层强化学习中,宏观动作是由一系列基本动作组成的复合动作,用于表示在较高层次上的决策。
- 子任务(Sub - task):是将复杂任务分解后得到的较小的、相对独立的任务,每个子任务可以由一个或多个智能体协作完成。
- 策略(Policy):是智能体在不同状态下选择动作的规则,通常用函数 π(s)\pi(s)π(s) 表示,其中 sss 是状态。
1.4.3 缩略词列表
- HRL:Hierarchical Reinforcement Learning(分层强化学习)
- MARL:Multi - Agent Reinforcement Learning(多智能体强化学习)
- Q - learning:一种无模型的强化学习算法,用于学习最优动作价值函数。
2. 核心概念与联系
2.1 分层强化学习核心概念
分层强化学习的核心思想是将一个复杂的任务分解为多个层次的子任务。在高层,智能体进行宏观决策,选择合适的子任务;在低层,智能体专注于执行子任务。这种分层结构可以有效降低学习的复杂度,提高学习效率。
例如,在一个机器人导航任务中,高层策略可以决定机器人是前往房间 A 还是房间 B,而低层策略则负责控制机器人的具体移动动作,如前进、转弯等。
2.2 多智能体协作核心概念
多智能体协作是指多个智能体通过相互协作来完成共同的任务。在多智能体系统中,每个智能体都有自己的感知、决策和行动能力,但它们需要通过信息交互和协调来实现整体目标。
例如,在一个机器人团队搬运任务中,每个机器人都可以感知周围环境和其他机器人的位置,通过协作来完成搬运物体的任务。
2.3 核心概念联系
分层强化学习和多智能体协作可以相互结合,发挥各自的优势。在多智能体协作任务中,分层强化学习可以帮助智能体更好地组织和协调子任务,提高协作效率。具体来说,高层策略可以用于协调多个智能体的任务分配,而低层策略可以用于每个智能体的具体动作执行。
2.4 文本示意图
多智能体协作任务
├── 高层策略(分层强化学习)
│ ├── 任务分配
│ │ ├── 智能体 1 子任务
│ │ ├── 智能体 2 子任务
│ │ └── ...
│ └── 协调机制
└── 低层策略(分层强化学习)
├── 智能体 1 动作执行
├── 智能体 2 动作执行
└── ...
2.5 Mermaid 流程图
3. 核心算法原理 & 具体操作步骤
3.1 核心算法原理
在分层强化学习中,常用的算法有 MAXQ 算法和选项(Options)框架。这里我们以选项框架为例进行介绍。
选项框架引入了宏观动作(选项)的概念,每个选项由一个起始条件、一个终止条件和一个内部策略组成。智能体在高层可以选择不同的选项,而在低层则执行选项的内部策略。
选项框架的核心思想是在不同层次上学习不同的策略。高层策略负责选择选项,低层策略负责执行选项。智能体通过不断地与环境交互,学习到最优的高层和低层策略,以最大化长期累积奖励。
3.2 具体操作步骤
步骤 1:定义选项
首先,需要定义任务中的选项。每个选项需要明确其起始条件、终止条件和内部策略。例如,在机器人导航任务中,可以定义“前往房间 A”和“前往房间 B”两个选项。
步骤 2:初始化策略
初始化高层策略和低层策略。高层策略用于选择选项,低层策略用于执行选项的内部策略。可以使用随机策略进行初始化。
步骤 3:智能体与环境交互
智能体根据当前状态,使用高层策略选择一个选项。然后,根据选项的内部策略执行动作,与环境进行交互,获得奖励和新的状态。
步骤 4:更新策略
根据获得的奖励和新的状态,使用强化学习算法(如 Q - learning)更新高层和低层策略。
步骤 5:重复步骤 3 和 4
重复步骤 3 和 4,直到智能体学习到最优策略。
3.3 Python 代码实现
import numpy as np
# 定义选项类
class Option:
def __init__(self, start_condition, end_condition, policy):
self.start_condition = start_condition
self.end_condition = end_condition
self.policy = policy
def can_start(self, state):
return self.start_condition(state)
def is_terminated(self, state):
return self.end_condition(state)
def get_action(self, state):
return self.policy(state)
# 定义智能体类
class Agent:
def __init__(self, options, high_level_policy):
self.options = options
self.high_level_policy = high_level_policy
self.current_option = None
def choose_option(self, state):
available_options = [option for option in self.options if option.can_start(state)]
option_index = self.high_level_policy(state, available_options)
self.current_option = available_options[option_index]
def take_action(self, state):
if self.current_option is None or self.current_option.is_terminated(state):
self.choose_option(state)
return self.current_option.get_action(state)
# 示例环境
def simple_environment(state, action):
# 简单的环境模型,这里仅作示例
new_state = state + action
reward = 1 if new_state > 10 else -1
return new_state, reward
# 示例选项和策略
def start_condition_1(state):
return state < 5
def end_condition_1(state):
return state >= 5
def policy_1(state):
return 1
option_1 = Option(start_condition_1, end_condition_1, policy_1)
def high_level_policy(state, available_options):
return 0 # 简单示例,总是选择第一个可用选项
agent = Agent([option_1], high_level_policy)
# 智能体与环境交互
state = 0
for _ in range(10):
action = agent.take_action(state)
new_state, reward = simple_environment(state, action)
print(f"State: {state}, Action: {action}, New State: {new_state}, Reward: {reward}")
state = new_state
4. 数学模型和公式 & 详细讲解 & 举例说明
4.1 数学模型和公式
4.1.1 动作价值函数
在强化学习中,动作价值函数 Q(s,a)Q(s, a)Q(s,a) 表示在状态 sss 下采取动作 aaa 后,智能体能够获得的长期累积奖励的期望。在分层强化学习中,我们可以定义选项的动作价值函数 Qo(s)Q_o(s)Qo(s) ,表示在状态 sss 下选择选项 ooo 后能够获得的长期累积奖励的期望。
Qo(s)=E[∑t=0∞γtrt∣s0=s,o0=o]Q_o(s) = \mathbb{E}\left[\sum_{t = 0}^{\infty}\gamma^t r_{t}\mid s_0 = s, o_0 = o\right]Qo(s)=E[t=0∑∞γtrt∣s0=s,o0=o]
其中,γ\gammaγ 是折扣因子,rtr_trt 是第 ttt 时刻的奖励。
4.1.2 策略更新公式
在 Q - learning 算法中,策略更新公式为:
Q(s,a)←Q(s,a)+α[r+γmaxa′Q(s′,a′)−Q(s,a)]Q(s, a) \leftarrow Q(s, a) + \alpha\left[r + \gamma\max_{a'}Q(s', a') - Q(s, a)\right]Q(s,a)←Q(s,a)+α[r+γa′maxQ(s′,a′)−Q(s,a)]
其中,α\alphaα 是学习率,rrr 是当前奖励,s′s's′ 是新的状态。
在分层强化学习中,对于选项的动作价值函数,更新公式类似:
Qo(s)←Qo(s)+α[r+γmaxo′Qo′(s′)−Qo(s)]Q_o(s) \leftarrow Q_o(s) + \alpha\left[r + \gamma\max_{o'}Q_{o'}(s') - Q_o(s)\right]Qo(s)←Qo(s)+α[r+γo′maxQo′(s′)−Qo(s)]
4.2 详细讲解
动作价值函数 Q(s,a)Q(s, a)Q(s,a) 是强化学习中的核心概念,它用于评估在某个状态下采取某个动作的优劣。在分层强化学习中,选项的动作价值函数 Qo(s)Q_o(s)Qo(s) 则用于评估在某个状态下选择某个选项的优劣。
策略更新公式的目的是让智能体不断学习,使得动作价值函数更接近最优值。通过不断地更新动作价值函数,智能体可以逐渐找到最优策略。
4.3 举例说明
假设我们有一个简单的网格世界环境,智能体需要从起点到达终点。我们定义两个选项:“向上移动”和“向右移动”。
初始时,智能体在起点 (0,0)(0, 0)(0,0),选项的动作价值函数 Qo(s)Q_o(s)Qo(s) 都初始化为 0。智能体根据高层策略选择一个选项,比如“向上移动”。然后执行该选项的内部策略,向上移动一格,获得奖励 rrr。
根据策略更新公式,更新选项的动作价值函数:
假设当前状态 s=(0,0)s = (0, 0)s=(0,0),选择的选项 ooo 是“向上移动”,新状态 s′=(0,1)s' = (0, 1)s′=(0,1),奖励 r=1r = 1r=1,学习率 α=0.1\alpha = 0.1α=0.1,折扣因子 γ=0.9\gamma = 0.9γ=0.9。
则更新后的 Qo(s)Q_o(s)Qo(s) 为:
Qo(s)=Qo(s)+α[r+γmaxo′Qo′(s′)−Qo(s)]Q_o(s) = Q_o(s) + \alpha\left[r + \gamma\max_{o'}Q_{o'}(s') - Q_o(s)\right]Qo(s)=Qo(s)+α[r+γo′maxQo′(s′)−Qo(s)]
假设 maxo′Qo′(s′)=0\max_{o'}Q_{o'}(s') = 0maxo′Qo′(s′)=0(初始时其他选项的动作价值函数也为 0),则:
Qo(s)=0+0.1×(1+0.9×0−0)=0.1Q_o(s) = 0 + 0.1\times(1 + 0.9\times0 - 0)= 0.1Qo(s)=0+0.1×(1+0.9×0−0)=0.1
通过不断地与环境交互和更新动作价值函数,智能体可以逐渐学习到最优策略。
5. 项目实战:代码实际案例和详细解释说明
5.1 开发环境搭建
5.1.1 安装 Python
首先,确保你已经安装了 Python 3.x 版本。可以从 Python 官方网站(https://www.python.org/downloads/) 下载并安装。
5.1.2 安装必要的库
我们需要安装一些必要的 Python 库,如 NumPy 和 Gym。可以使用以下命令进行安装:
pip install numpy gym
5.2 源代码详细实现和代码解读
5.2.1 项目背景
我们将实现一个简单的多智能体协作导航任务,两个智能体需要协作到达目标位置。
5.2.2 代码实现
import numpy as np
import gym
# 定义环境
class MultiAgentNavigationEnv(gym.Env):
def __init__(self):
self.grid_size = 5
self.agent_positions = [np.array([0, 0]), np.array([0, 4])]
self.target_position = np.array([4, 4])
self.action_space = gym.spaces.Discrete(4) # 上、下、左、右
self.observation_space = gym.spaces.Box(low=0, high=self.grid_size - 1, shape=(2, 2), dtype=np.int32)
def reset(self):
self.agent_positions = [np.array([0, 0]), np.array([0, 4])]
return np.array(self.agent_positions)
def step(self, actions):
rewards = [0, 0]
for i, action in enumerate(actions):
if action == 0: # 上
self.agent_positions[i][1] = max(0, self.agent_positions[i][1] - 1)
elif action == 1: # 下
self.agent_positions[i][1] = min(self.grid_size - 1, self.agent_positions[i][1] + 1)
elif action == 2: # 左
self.agent_positions[i][0] = max(0, self.agent_positions[i][0] - 1)
elif action == 3: # 右
self.agent_positions[i][0] = min(self.grid_size - 1, self.agent_positions[i][0] + 1)
if np.array_equal(self.agent_positions[i], self.target_position):
rewards[i] = 10
else:
rewards[i] = -1
done = all(np.array_equal(pos, self.target_position) for pos in self.agent_positions)
return np.array(self.agent_positions), rewards, done, {}
# 定义智能体类
class Agent:
def __init__(self, action_space):
self.action_space = action_space
self.q_table = {}
def get_action(self, state, epsilon=0.1):
state_key = tuple(state.flatten())
if state_key not in self.q_table:
self.q_table[state_key] = np.zeros(self.action_space.n)
if np.random.uniform(0, 1) < epsilon:
return self.action_space.sample()
else:
return np.argmax(self.q_table[state_key])
def update_q_table(self, state, action, reward, next_state, alpha=0.1, gamma=0.9):
state_key = tuple(state.flatten())
next_state_key = tuple(next_state.flatten())
if state_key not in self.q_table:
self.q_table[state_key] = np.zeros(self.action_space.n)
if next_state_key not in self.q_table:
self.q_table[next_state_key] = np.zeros(self.action_space.n)
self.q_table[state_key][action] += alpha * (reward + gamma * np.max(self.q_table[next_state_key]) - self.q_table[state_key][action])
# 主训练循环
env = MultiAgentNavigationEnv()
agents = [Agent(env.action_space) for _ in range(2)]
episodes = 1000
for episode in range(episodes):
state = env.reset()
done = False
while not done:
actions = [agent.get_action(state) for agent in agents]
next_state, rewards, done, _ = env.step(actions)
for i, agent in enumerate(agents):
agent.update_q_table(state, actions[i], rewards[i], next_state)
state = next_state
if episode % 100 == 0:
print(f"Episode {episode} completed.")
5.2.3 代码解读
- 环境类
MultiAgentNavigationEnv:定义了多智能体导航环境,包括智能体的初始位置、目标位置、动作空间和观测空间。reset方法用于重置环境,step方法用于执行动作并返回新的状态、奖励和是否完成的信息。 - 智能体类
Agent:实现了基于 Q - learning 的智能体。get_action方法用于根据当前状态选择动作,使用了 ϵ\epsilonϵ-贪心策略。update_q_table方法用于更新 Q 表。 - 主训练循环:在主训练循环中,智能体与环境进行交互,不断更新 Q 表,直到达到最大训练次数。
5.3 代码解读与分析
5.3.1 优点
- 简单易懂:代码结构清晰,使用了基本的 Q - learning 算法,易于理解和实现。
- 可扩展性:可以很容易地扩展到更复杂的多智能体协作任务,如增加智能体数量、改变环境结构等。
5.3.2 缺点
- 学习效率低:Q - learning 算法在复杂环境中学习效率较低,可能需要大量的训练时间。
- 缺乏分层结构:代码中没有使用分层强化学习,在处理复杂任务时可能会遇到状态空间爆炸的问题。
6. 实际应用场景
6.1 机器人团队协作
在机器人团队协作任务中,如机器人搬运、搜索救援等,多个机器人需要协作完成任务。分层强化学习可以帮助机器人更好地组织和协调子任务,提高协作效率。例如,在机器人搬运任务中,高层策略可以负责分配搬运任务给不同的机器人,低层策略可以负责控制机器人的具体移动和抓取动作。
6.2 自动驾驶
在自动驾驶领域,多辆自动驾驶汽车需要相互协作,以提高交通效率和安全性。分层强化学习可以用于规划车辆的宏观路线和微观驾驶行为。例如,高层策略可以根据交通状况和目的地规划车辆的大致行驶路线,低层策略可以控制车辆的加速、减速、转弯等具体驾驶动作。
6.3 智能电网管理
在智能电网管理中,多个分布式电源和负载需要相互协作,以实现电网的稳定运行和优化调度。分层强化学习可以用于协调不同电源和负载的运行策略。例如,高层策略可以根据电网的整体需求和发电情况,分配发电任务给不同的电源;低层策略可以控制每个电源的具体发电功率。
6.4 游戏领域
在多人在线游戏中,玩家组成的团队需要协作完成游戏任务。分层强化学习可以用于训练游戏智能体,提高团队协作能力。例如,在策略游戏中,高层策略可以制定团队的整体战略,低层策略可以控制每个玩家角色的具体行动。
7. 工具和资源推荐
7.1 学习资源推荐
7.1.1 书籍推荐
- 《Reinforcement Learning: An Introduction》:这是强化学习领域的经典教材,详细介绍了强化学习的基本概念、算法和应用。
- 《Hierarchical Reinforcement Learning: Foundations of Adaptive Sequential Behavior》:专门介绍分层强化学习的书籍,对分层强化学习的理论和方法进行了深入探讨。
7.1.2 在线课程
- Coursera 上的“Reinforcement Learning Specialization”:由 DeepMind 的研究人员授课,提供了系统的强化学习课程。
- edX 上的“Introduction to Reinforcement Learning”:介绍了强化学习的基本概念和算法。
7.1.3 技术博客和网站
- OpenAI Blog:OpenAI 发布的关于人工智能和强化学习的最新研究成果和技术文章。
- DeepMind Blog:DeepMind 发布的关于人工智能和强化学习的研究动态和技术分享。
7.2 开发工具框架推荐
7.2.1 IDE 和编辑器
- PyCharm:一款功能强大的 Python IDE,提供了丰富的代码编辑、调试和项目管理功能。
- Visual Studio Code:一款轻量级的代码编辑器,支持多种编程语言和插件扩展。
7.2.2 调试和性能分析工具
- TensorBoard:TensorFlow 提供的可视化工具,可以用于监控训练过程和分析模型性能。
- Pycharm 的调试功能:可以方便地对 Python 代码进行调试,查看变量值和程序执行流程。
7.2.3 相关框架和库
- OpenAI Gym:一个用于开发和比较强化学习算法的工具包,提供了多种环境和基准测试。
- Stable Baselines:一个基于 TensorFlow 的强化学习库,提供了多种预训练的强化学习算法和模型。
7.3 相关论文著作推荐
7.3.1 经典论文
- “Learning to Solve Markov Decision Processes Hierarchically”:介绍了分层强化学习的早期工作,提出了 MAXQ 算法。
- “Between MDPs and semi - MDPs: A framework for temporal abstraction in reinforcement learning”:提出了选项框架,为分层强化学习提供了重要的理论基础。
7.3.2 最新研究成果
- 可以关注 AAAI、ICML、NeurIPS 等顶级人工智能会议的论文,了解分层强化学习在多智能体协作任务中的最新研究进展。
7.3.3 应用案例分析
- 可以参考相关领域的研究论文和报告,了解分层强化学习在机器人团队协作、自动驾驶等实际应用场景中的案例分析。
8. 总结:未来发展趋势与挑战
8.1 未来发展趋势
8.1.1 与深度学习的结合
分层强化学习与深度学习的结合将是未来的一个重要发展趋势。深度学习可以用于处理复杂的感知信息,如图像、语音等,而分层强化学习可以用于处理复杂的决策任务。通过将两者结合,可以构建更加智能和强大的智能体。
8.1.2 多智能体系统的规模化
随着智能体数量的增加,多智能体系统的规模化将成为一个重要的研究方向。分层强化学习可以帮助解决多智能体系统中的协调和通信问题,提高系统的可扩展性和效率。
8.1.3 实际应用的拓展
分层强化学习在机器人团队协作、自动驾驶、智能电网管理等领域已经取得了一定的应用成果。未来,它将在更多的领域得到应用,如医疗保健、金融服务等。
8.2 挑战
8.2.1 理论基础的完善
虽然分层强化学习已经取得了一些进展,但它的理论基础还不够完善。例如,如何设计有效的分层结构、如何保证分层策略的收敛性等问题还需要进一步研究。
8.2.2 计算资源的需求
分层强化学习通常需要大量的计算资源,尤其是在处理复杂任务时。如何降低计算成本,提高学习效率,是一个亟待解决的问题。
8.2.3 环境的不确定性
在实际应用中,环境往往具有不确定性,如噪声、动态变化等。如何使分层强化学习在不确定环境中具有更好的鲁棒性,是一个重要的挑战。
9. 附录:常见问题与解答
9.1 分层强化学习与传统强化学习有什么区别?
分层强化学习将复杂任务分解为多个子任务,在不同层次上进行学习,降低了学习的复杂度。而传统强化学习通常在一个层次上进行学习,处理复杂任务时容易遇到状态空间爆炸的问题。
9.2 多智能体协作中如何处理智能体之间的冲突?
可以通过设计合适的协调机制来处理智能体之间的冲突。例如,在任务分配时考虑智能体的能力和状态,避免冲突的发生;在智能体交互过程中,通过通信和协商来解决冲突。
9.3 分层强化学习的训练时间通常比传统强化学习长吗?
不一定。分层强化学习通过分解任务,降低了学习的复杂度,在某些情况下可以提高学习效率,减少训练时间。但在一些复杂任务中,分层强化学习的训练时间可能会更长,因为需要学习多个层次的策略。
9.4 如何评估分层强化学习在多智能体协作任务中的性能?
可以使用多种指标来评估分层强化学习在多智能体协作任务中的性能,如任务完成率、平均奖励、协作效率等。同时,可以通过对比实验,与传统强化学习方法进行比较,评估其优势。
10. 扩展阅读 & 参考资料
10.1 扩展阅读
- Sutton, Richard S., and Andrew G. Barto. “Reinforcement learning: An introduction.” MIT press, 2018.
- Dietterich, Thomas G. “Hierarchical reinforcement learning with the MAXQ value function decomposition.” Journal of artificial intelligence research 13 (2000): 227 - 303.
- Kaelbling, Leslie Pack, Michael L. Littman, and Andrew W. Moore. “Reinforcement learning: A survey.” Journal of artificial intelligence research 4 (1996): 237 - 285.
10.2 参考资料
- OpenAI Gym Documentation: https://gym.openai.com/docs/
- Stable Baselines Documentation: https://stable - baselines.readthedocs.io/en/master/
- Coursera Reinforcement Learning Specialization: https://www.coursera.org/specializations/reinforcement - learning
分层强化学习在多智能体协作中的应用
40

被折叠的 条评论
为什么被折叠?



