当前位置: 首页 > news >正文

基于Actor-Critic策略的Atari中的pong_v3

基于Policy Gradient策略的Atari中的pong_v3

1. 故事背景与原始目标

Pong_v3 是基于经典 Atari 游戏《Pong》的多智能体强化学习环境。它模拟了两个玩家在屏幕两侧控制挡板,试图将球击回并得分的场景。

背景: 这是一个经典的双人对抗游戏,强调反应速度与击球角度。

目标: 每个智能体的目标是将球击回并让球越过对方的挡板,从而获得分数。

2. 动作空间

每个智能体拥有 6 个离散动作:

动作编号 行为描述
0 无操作
1 发球(Fire)
2 向右移动
3 向左移动
4 向右发球
5 向左发球

注:虽然游戏看起来简单,但动作组合可以影响球的速度和角度,进而影响策略表现。

3. 状态空间

  • 形状:(210, 160, 3),即 210×160 像素的 RGB 图像。
  • 值范围:每个像素值在 [0, 255] 之间。

含义:这是游戏画面的原始像素表示,智能体需要从图像中识别球的位置、速度、对手位置等信息。

4. 奖励机制(Reward Mechanism)

  • 得分奖励:当一个智能体成功让球越过对方挡板时,获得 +1 分,对方获得 -1 分。

  • 发球超时惩罚:如果智能体在接球后 2 秒内未发球,将被扣除 -1 分,并重置发球计时器。

这防止了智能体通过“拖延”来规避游戏进程。也意味着该环境 不再是严格的零和博弈。

5. 可配置参数:

参数名 描述
render_mode 是否可视化游戏画面(如 “human”)
num_players 玩家数量(支持 2 或 4)
seed 随机种子,保证实验可重复性

6. 代码项目实现

import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import numpy as np
from pettingzoo.atari import pong_v3# 超参数
GAMMA = 0.99
LR = 1e-3
EPISODES = 500# 预处理函数
def preprocess(obs):obs = np.mean(obs, axis=2).astype(np.uint8)  # (210,160)obs = obs[::2, ::2]  # (105,80)return obs.flatten()# Actor-Critic网络
class ActorCritic(nn.Module):def __init__(self, obs_shape, n_actions):super().__init__()self.input_dim = np.prod(obs_shape)self.fc1 = nn.Linear(self.input_dim, 256)# Attention参数self.attn_seq_len = 8  # 可调节,序列长度self.attn_dim 
http://www.dtcms.com/a/324805.html

相关文章:

  • 机器学习第八课之K-means聚类算法
  • 零基础学编程,编程从入门到精通系列教程,附:编程工具箱之公用事件的用法#零基础学编程从哪里开始#新手学编程先学什么#公用事件构件编程用法
  • Lua语言变量、函数、运算符、循环
  • 小学数学计算技巧全攻略
  • 攻击者瞄准加密技术的基础:智能合约
  • [网安工具] Web 漏洞扫描工具 —— GoBy · 使用手册
  • Video Lecture 8 Page Fault
  • 7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序
  • LightGBM 与 GBDT 在机器学习中的性能与特点比较
  • element-ui el-progress在有小数的情况下,会换行显示。解决不换行的问题。
  • redis集群-本地环境
  • 【前端基础】14、CSS设置背景(background相关的)
  • 正则表达式常用语法参考
  • STM32H7 以太网配置引申的内存问题
  • A2A协议深度理解与实践
  • 解决 .NET Core 6.0 + PostgreSQL 网站首次连接缓慢问题
  • 安全生产基础知识(一)
  • 去除Edge微软浏览器与Chrome谷歌浏览器顶部出现“此版本的Windows不再支持升级Windows 10”的烦人提示
  • 深度剖析 Linux 信号:从基础概念到高级应用,全面解析其在进程管理与系统交互中的核心作用与底层运行机制
  • 【牛客刷题】REAL799 翻转01 (饿了么面试题)
  • Vue 事件冒泡处理指南:从入门到精通
  • 亚麻云之监控管家——CloudWatch基础监控
  • socket编程中系统调用send()详细讲解
  • 《算法导论》第 16 章 - 贪心算法
  • ATF(TF-A)安全通告 TFV-12(CVE-2024-5660)
  • 2025年Java 面试题及答案整理(金九银十最新版,持续更新)
  • vuhub Beelzebub靶场攻略
  • 从零学习three.js官方文档(二)——图元
  • 数据结构2线性表——顺序表
  • Python高阶