SMARTS(二).2 straight 环境 + agent (PPO)训练代码解读--run.py

【IC验证】怎么在sequence中调用agent中的函数以及如何快速实验你的想法? 最近略忙,今天就给大家表演个胸口碎……码一段代码。 通过本篇文章主要想送给广大验证初学者和爱好者2件礼物:“一条鱼”和“一只鱼竿”。希望大家连吃带拿,开开心心地。 “一条鱼”就是题目中的那个问题本身:“UVM中怎么在sequence中调用agent中的函数”。这个问题很多同学猛的听到可能还是会有一些懵,反应不出一个优雅的解决方法。 “一只鱼竿”就是当你遇到这样一个问题的时候,怎么快速写一段代码验证你的想法是不是可以实现,也就是Jerry今天带你解决这个问题的过程。 好了,我们开车~ 众所周知,在UVM中 阅读详情

训练内容的解析

基于SMARTS(二).1 straight 环境 + agent (PPO)训练代码解读–环境配置训练启动后内部运行流程分析。

在smarts/benchmark路径下

python run.py scenarios/intersections/staright -f agents/ppo/baseline-continuous-control.yaml

PPO+SMARTS内部究竟在做什么?

  1. 解析外部的yaml文件。
    yaml被解读成为一个多层级结构(具体格式尚不清楚,但是访问方式简单),比如结构如下的yaml
name: ppo-baseline

agent:
  state:
    wrapper:
      name: Simple
    features:
      distance_to_center: True
      speed: True
      steering: True
      heading_errors: [20, continuous]
      neighbor: 8
  action:
    type: 1  # 0 for continuous, 1 for discrete

interface:
  max_episode_steps: 1000
  neighborhood_vehicles:
    radius: 50
  waypoints:
    lookahead: 50  # larger than size of heading errors

policy:
  framework: rllib
  trainer:
    path: ray.rllib.agents.ppo
    name: PPOTrainer

run:
  checkpoint_freq: 40
  checkpoint_at_end: True
  max_failures: 1000
  resume: False
  export_formats: [model, checkpoint]
  stop:
    time_total_s: 14400
  config:
    log_level: WARN
    num_workers: 1
    num_gpus: 0
    horizon: 1000
    clip_param: 0.2
    num_sgd_iter: 10
    sgd_minibatch_size: 32
    lr: 1e-4
    lambda: 0

解析方式为:

import yaml
with open(base_dir / config_file, "r") as f:
    raw_config = yaml.safe_load(f)

raw_config就是一个多级结果,通过raw_config['agent']['state']['wrapper']['name']方式进行访问具体的数值。
随后raw_config被送入benchmark/agents/init.py中的_make_rllib_config()进行解析并返回解析后的config。

接下来逐个 查看整个yaml的解析流程:

  • action space
    yaml中
  action:
    type: 1  # 0 for continuous, 1 for discrete

将上述离散值送入解析

from . import common
agent = config["agent"]
action_type = agent["action"]["type"]
common.ActionSpace.from_type(action_type)

解析流程如下:

class ActionSpace:
    @staticmethod
    def from_type(action_type: int):
        space_type = ActionSpaceType(action_type)
        if space_type == ActionSpaceType.Continuous:
            return gym.spaces.Box(
                low=np.array([0.0, 0.0, -1.0]),
                high=np.array([1.0, 1.0, 1.0]),
                dtype=np.float32,
            )
        elif space_type == ActionSpaceType.Lane:
            return gym.spaces.Discrete(4)
        else:
            raise NotImplementedError

1 离散对应与ActionSpaceType.Lane

class ActionSpaceType(Enum):
    Continuous = 0
    Lane = 1
    ActuatorDynamic = 2
    LaneWithContinuousSpeed = 3
    TargetPose = 4
    Trajectory = 5
    MultiTargetPose = 6  # for boid control
    MPC = 7

所以上述解析返回的数值为gym.spaces.Discrete(4)

class Discrete(Space):
    r"""A discrete space in :math:`\{ 0, 1, \\dots, n-1 \}`. 

    Example::

        >>> Discrete(2)

    """
    def __init__(self, n):
        assert n >= 0
        self.n = n
        super(Discrete, self).__init__((), np.int64)

    def sample(self):
        return self.np_random.randint(self.n)

    def contains(self, x):
        if isinstance(x, int):
            as_int = x
        elif isinstance(x, (np.generic, np.ndarray)) and (x.dtype.char in np.typecodes['AllInteger'] and x.shape == ()):
            as_int = int(x)
        else:
      
SMARTS(二).1 straight 环境 + agent (PPO)训练代码解读--环境配置 SMARTS启动straight 环境 + agent (PPO)训练 将smarts/scenarios/straight文件夹copy到smarts/benchmark/scenarios/下面,并将copy过后的smarts/benchmark/scenarios/straight/scenario.py替换为下面的内容: from smarts.sstudio import types as t from smarts.sstudio import gen_scenario trajectory_ 阅读详情

相关推荐

请你解释PPO在大语言模型和机器人学还有高频股票市场中的具体应用,比方说Agent、Environment、Reward、State分别代表什么?具体如何应用

PPO(Proximal Policy Optimization)是一种流行的强化学习算法,由OpenAI开发。这种算法特别适合于需要平衡探索(Exploration)和利用(Exploitation)的场景,其核心优势在于简单、高效、易于实现,并且在多种任务中都表现出良好的性能。PPO的应用跨越多个领域,其共同点在于通过与环境的交互来不断学习和优化策略,以达到特定的目标。不同领域对Agent、Environment、Reward、State的具体定义有所不同,但核心的强化学习框架保持一致。

具身机器人和通用AI 815

强化学习(1): ppo 原理及代码详解

PPO(Proximal Policy Optimization)是一种强化学习算法,通过引入裁剪机制限制策略更新幅度,平衡性能与稳定性。其核心包含4个模型(Actor、Critic、Reward、Reference)和2个损失(策略损失、价值损失)。Actor负责决策,Critic评估动作价值,Reward提供即时反馈,Reference防止策略偏离。PPO通过计算优势函数(Advantage)衡量动作优劣,并利用GAE平滑和归一化处理优化训练过程。相比传统方法,PPO能更稳定高效地学习复杂任务,广泛应用

@bangbang的博客 806

(11-4)PPO算法:PPO算法的变种与改进

总的来说,PPO2是一种强化学习算法,旨在解决深度强化学习中的稳定性和性能问题。PPO-Clip(Proximal Policy Optimization with Clipping)是一种改进的PPO算法,用于训练强化学习智能体,特别是在连续动作空间中的任务。在上述代码中,首先定义了一个简单的自定义环境CustomEnvironment,它有一个连续的动作空间和一个连续的状态空间。需要注意的是,PPO-Clip只是PPO算法的一种改进版本,实际应用时还需要根据具体任务的需求和性质来选择适当的算法。

码农三叔 5542

Kinect V1结构光激光散斑原理及样式

   对 intel realsense F200 和 Kinect V1的coding pattern原理进行调研,知二者都使用light coding的方式,该方法与传统的coded structure light不同:传统编码结构光(空间编码,时间编码)最终使用的是三角测量的原理计算深度信息;light coding通过投射具有高度伪随机性的激光散斑,会随着不同距离变换不同

松间明月 1万+

Android15 AndroidV冻结和解冻的场景

cgroup 最初由 Google 工程师 Paul Menage 和 Rohit Seth 在 2006 年提出,是一种细粒度资源控制的Linux内核机制。于 2007 年合并到 Linux 内核主线中。然而 Google 原生系统直到 Android 11 或更高版本上才支持 CACHE 应用的 CPU 冻结功能。当应用切换到后台并且没有其他活动时,系统会在一定时间内通过状态判断,将进程 ID 迁移到冻结的 cgroup 节点上,实现冻结 CACHE 应用。

苏法迪的专栏 1775

win11系统ping另一台电脑上VMware虚拟机的IP

我是用了两台电脑,所以刚才遇到一个问题就是两台电脑的IP 在同一局域网内ping不通。于是就找了很多资料,经过坚强的绝望后终于解决了。 下开始解决问题: VMWare提供了三种工作模式:bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。 1. bridged(桥接模式)   在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚

qq_42817360的博客 3230

大彩串口屏+LUA避坑指南:从Flash读写到控件状态配置的5个常见问题

本文针对大彩串口屏的LUA脚本开发,深度剖析了Flash数据存储与控件状态配置中的5个常见陷阱。重点讲解了如何通过标志位安全初始化Flash、正确处理多字节数据转换,以及如何精准配置按钮与文本控件的状态与事件响应,帮助开发者提升开发效率与代码可靠性。

weixin_27945229的博客 233

QMT量化交易实战:如何用通达信预警数据自动买卖股票(附完整Python代码)

本文详细介绍了如何利用QMT平台结合通达信预警数据实现股票自动化交易,提供完整的Python代码实现。通过实时监控通达信预警板块文件,系统自动执行买卖操作,提升交易效率。文章涵盖系统架构设计、数据对接、信号处理、订单执行等核心模块,适合量化交易初学者和通达信用户参考实践。

weixin_29251567的博客 669

081、LLC谐振变换器的短路特性与保护

本文深入分析了LLC谐振变换器在短路工况下的特性与保护策略。作者通过实际案例指出,LLC在输出短路时会出现谐振电流失控、ZVS条件丧失等危险现象,导致MOS管炸毁。文章详细阐述了短路保护的三大难点:响应速度、频率与电流的耦合、重启策略,并提出了硬件级快速保护、频率快速拉升、打嗝模式等实用解决方案。作者分享了关键参数设计经验,包括电流检测阈值设置、最高频率限制和保护响应时间控制,并通过实测波形验证了保护效果。最后总结出五点重要经验,强调硬件保护的必要性和系统设计的注意事项,为LLC变换器的短路保护设计提供了有

Jack010169的博客 62

079、镜头阴影校正(LSC)精讲:径向衰减模型、增益矩阵生成与产线标定技巧

《镜头阴影校正(LSC)实战精要》 本文从实际案例出发,深入解析镜头阴影校正的核心技术与产线应用。作者通过一个典型故障案例(0.05mm镜片偏移导致LSC失效)揭示了LSC不仅是数学问题,更是光学-机械-工艺耦合系统。 【关键技术点】 模型优化:提出"径向+切向"双分量模型替代传统cos⁴θ模型,采用5阶多项式拟合径向衰减,1阶线性补偿切向误差 增益矩阵生成:采用自适应网格技术,在边缘区域加密网格,结合中值滤波与高斯平滑消除噪声干扰 产线标定:强调光源均匀性校准(积分球vs平板光源)、坏点预处理、温度补偿等

zzfmlxs的博客 99

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势!

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1004

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: SMARTS(二).1 straight 环境 + agent (PPO)训练代码解读--环境配置
下一篇: python僵尸进程的产生和僵尸进程自动处理
Jimmy-TONG
博客等级 码龄9年 10粉丝 6原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值