基于DDPG的连续动作空间强化学习控制实验
1. 立项背景和目标
随着强化学习在连续控制领域(如机器人、自动驾驶、机械臂控制)中的广泛应用,深度确定性策略梯度(DDPG)算法因其能够处理高维连续动作空间而成为重要的研究工具。本项目旨在通过实现DDPG算法,模拟一个二维平面内“末端执行器”通过调整两个关节角度,实现对动态目标点的追踪任务。
2. 功能
本系统实现了以下核心功能:
机械臂运动仿真:模拟两个关节角度(0~360°)的连续控制,并计算末端执行器的二维坐标。
DDPG智能体训练:通过与环境交互,自主学习调整关节角度以接近目标点。
课程学习机制:先让机械臂学习抵达固定目标点,然后每隔一定回合随机重置目标点,逐步训练其追踪能力。
训练过程监控与数据记录:记录每回合的最小/最大奖励、总奖励、步数等,并定期保存模型参数。
3. 核心功能模块描写
模块 功能描述
qNet Critic网络,输入状态+动作,输出Q值,评估当前动作的好坏。
aNet Actor网络,输入状态,输出连续动作(两个关节的角度变化量,范围-2~2度)。
DDPG 主算法类,包含经验存储、动作选择、网络更新、软目标更新等核心逻辑。
环境交互模块(在DDPGlearning.py中) 定义状态转移、奖励计算、末端坐标计算等物理仿真逻辑。
课程学习调度模块 控制目标点重置频率,逐步提高任务难度。
训练监控与存储模块 记录训练指标,定期保存模型参数和奖励日志。
4. 业务流程
初始化:创建DDPG智能体,初始化环境状态(两个关节角度随机、目标点固定或随机)。
交互采样:智能体根据当前状态选择动作,环境执行动作并返回新状态和奖励。
经验存储:将(s, a, r, s_)存入经验池。
经验回放与学习:当经验池数据足够时,随机采样批次数据,更新Actor和Critic网络。
目标网络软更新:每TARGET_REPLACE_ITER步,通过Polyak平均更新目标网络参数。
课程学习调整:每完成一定回合数,重置目标点位置,并记录训练数据。
模型保存与日志输出:定期保存网络参数,输出奖励统计信息。
5. 功能路径描述
启动训练:运行DDPGlearning.py。
阶段一(固定目标):目标点固定为[0.2, 0.2](归一化坐标),智能体学习如何调整关节角度使末端执行器抵达该点。
阶段二(动态追踪):成功抵达目标点的轮次进行随机重置目标点,智能体需适应新目标并持续追踪。
监控输出:控制台不直接输出,但n_rn.txt文件会记录每回合的奖励统计,模型参数保存为.pkl文件。
继续训练:可通过加载已保存的模型参数继续训练或测试。
人工智能