Highway_env(Intersection)修改离散动作空间

2023-05-16

前言

在十字路口环境中,主车默认的动作空间是以5m/s变化的加减速以及保持原速三个动作。有时候为了学习更优化的策略,同时与自己设置的奖励函数吻合,需要修改环境的动作空间。

这里我们主要添加两个较小加速度的纵向加速度动作,使得动作空间中有5个可以选择执行的动作。

动作空间修改方式

基于十字路口的环境,为了添加舒适性评判指标,需要增加动作空间,主要添加两个不同加速度值的离散动作。

需要修改以下几个地方:

1.首先修改自己定义的环境文件(myIntersection_env.py):

在action中以字典的形式添加动作:

ACTIONS: Dict[int, str] = {
        0: 'SLOWER',
        1: 'IDLE',
        2: 'FASTER',
        3:'MOREFASTER',
        4:'MORESLOWER'
    }

2.其次需要修改highway_env/commom/action中动作的定义字典

    ACTIONS_LONGI = {
        0: 'SLOWER',
        1: 'IDLE',
        2: 'FASTER',
        3: 'MOREFASTER',
        4: 'MORESLOWER'
    }

3.然后要修改highway_env/env/commom/action中get_available_actions方法中的限制,需要添加代码:

        if self.controlled_vehicle.speed_index < self.controlled_vehicle.target_speeds.size - 1 and self.longitudinal:
            actions.append(self.actions_indexes['MOREFASTER'])
        if self.controlled_vehicle.speed_index > 0 and self.longitudinal:
            actions.append(self.actions_indexes['MORESLOWER'])

4.最后需要修改highway-env/highway_env/vehicle/controller.py中动作的选取方法

1)在全局变量中定义需要添加的动作的加速度值

DELTA_SPEED_DOWN=3

2)修改动作的选取方法(ControlledVehicle(Vehicle)类的act方法),添加以下代码

        elif action == "MOREFASTER":
            self.target_speed += self.DELTA_SPEED_DOWN
        elif action == "MORESLOWER":
            self.target_speed -= self.DELTA_SPEED_DOWN

3)修改动作的选取方法(MDPVehicle(ControlledVehicle)类的act方法),添加以下代码:

        elif action == "MOREFASTER":
            self.speed_index = self.speed_to_index(selfeed) + 1
        elif action == "MORESLOWER":
            self.speed_index = self.speed_to_index(self.speed)-1

这样就完成了动作空间的修改,注意一定要找到你下载的包的文件里面修改。如果该文章对您有帮助希望能得到您的点赞或者关注,后面也会更新更多有关highway_env、rl_agent、强化学习基础以及其他算法测试仿真平台的博文。

更正:

这篇动作空间修改文章存在一定问题,等有时间我会将其改正,主要问题是离散空间和连续空间动作杂糅了之后我会详细解释如何修改并附上链接,给您造成困扰敬请谅解。

修改离散动作空间转这:

离散动作的修改(基于highway_env的Intersection环境)_ego_vehicle的博客-CSDN博客icon-default.png?t=N2N8https://blog.csdn.net/qq_53576285/article/details/130084979?spm=1001.2014.3001.5502

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Highway_env(Intersection)修改离散动作空间 的相关文章

  • C# 两组排序数字最快的交集

    我正在应用程序的时间关键部分计算两组排序数字的交集 这个计算是整个应用程序的最大瓶颈 所以我需要加快它的速度 我已经尝试了很多简单的选项 目前正在使用这个 foreach var index in firstSet if secondSet
  • 如何从OpenStreetMap中找到路口?

    如何在OpenStreetMap中提取路口 我需要路口的经度和纬度 谢谢 曾经有过类似的问题here 没有直接的 API 调用来检索交集 但是您可以查询给定边界框中的所有方式 例如直接通过API或通过立交桥API 并查找由两种或多种方式共享
  • 集合的快速交集:C++ 与 C#

    在我的机器 四核 8GB RAM 上 运行 Vista x64 Business 使用 Visual Studio 2008 SP1 我试图非常快速地求出两组数字的交集 我在 C 中实现了两种方法 在 C 中实现了一种 到目前为止 C 方法
  • 寻找 Pandas 中两个系列之间的交集

    我有两个系列s1 and s2在 pandas 中 想要计算交集 即该系列的所有值都是公共的 我将如何使用concat函数来做到这一点 我一直在尝试解决这个问题 但一直无法 我不想计算索引的交集s1 and s2 但基于值 将这两个系列放入
  • 找到两个嵌套列表的交集?

    我知道如何获得两个平面列表的交集 b1 1 2 3 4 5 9 11 15 b2 4 5 6 7 8 b3 val for val in b1 if val in b2 or def intersect a b return list se
  • Java-多边形和线的交点

    有没有什么函数可以给我一个交点Polygon and Line2D 我有一个多边形和一个我知道相交的线段 我想要交点的实际值而不是布尔答案 给你 有趣的方法是 getIntersections 和 getIntersection 前者解析所
  • 确定点是否位于 3D 网格内部的算法

    用于确定点是否位于 3D 网格内部的快速算法是什么 为简单起见 您可以假设网格都是三角形并且没有孔 到目前为止我所知道的是 确定光线是否穿过网格的一种流行方法是计算光线 三角形相交的数量 它必须很快 因为我正在使用它进行触觉医学模拟 所以我
  • (MongoDB) 在同一管道中结合并集和交集

    我在最新版本的 mongoDB 和 pymongo 中运行以下聚合管道 project union setUnion query a query b unwind union group id union ID date a addToSe
  • 绘制相交圆的轮廓

    我有一组点 每个点都有一个 影响 区域或基本上是一个半径 我希望能够将所有点的每个影响圆绘制为一条简单的圆形线 它们会重叠 但我希望绘制所形成形状的外部 我知道这可能需要我找出它们相交的位置 并以某种方式形成一个完整的形状来绘制 问题是有些
  • 确定点是否在 3D 三角形内部

    我正在寻求对我对确定点是否位于 3D 三角形内部的方法的看法的认可 给定一条 R t e td 形式的射线和一组三个点 T V0 V1 V2 它们在三维空间中形成一个三角形 我知道如何找到该平面的参数方程三点形成以及如何确定射线是否与该平面
  • 在Python中找到公差范围内两个矩阵的交集?

    我正在寻找找到两个不同大小矩阵的交集的最有效方法 每个矩阵具有三个变量 列 和不同数量的观测值 行 例如矩阵A a np matrix 1 5 1003 2 4 1002 4 3 1008 8 1 2005 b np matrix 7 9
  • 快速球体与网格相交

    给定一个 3D 网格 一个作为球体中心的 3d 点和一个半径 我想快速计算球体包含或相交的所有单元格 目前 我采用球体的 网格对齐 边界框并计算该边界框的最小和最大点的两个单元格 然后 对于这两个单元格之间的每个单元格 我进行盒球相交测试
  • 在 C++ 中设置差异

    如果我知道一个集合是另一个集合的子集 并且我想找出差异 那么最有效的方法是什么 前任 伪代码 gt set
  • Python:使用单词交集而不是字符交集的杰卡德距离

    我没有意识到 Python set 函数实际上将字符串分隔成单个字符 我为Jaccard编写了python函数并使用了python交集方法 我将两个集合传递到此方法中 在将这两个集合传递到我的 jaccard 函数之前 我在设置环上使用 s
  • 检查 android.graphics.path 与其自身的交集

    我想检查路径是否与自身相交 如果是 则碰撞在 x y 只是为了突出显示 我如何检查一条路径是否与另一条路径相交也非常有趣 这是一个屏幕截图 可以更好地解释我的意思 https i stack imgur com JrEmN png http
  • 在 C++ 中获取集合的并集、交集或差集

    我有几个关于如何使用 C 集 std set 的问题 有没有办法获得两个 C 集合的并集 交集或差集 编写自己的函数来做到这一点非常容易 但我想知道是否有内置函数 C 集合可以用作映射中的键吗 Use the set difference
  • 一种更快的方法来实现 intersect() 给我的目标?

    我发现一个lot我的 matlab 函数花费的时间在这段代码中 intersect freq bins our bins 两者都可以是相当大的向量 并且仅由整数组成 我只需要知道两者中都有哪些整数 这确实是 intersect 的原始目的
  • 根据另一个 DataFrame 选择一个 DataFrame 的列

    我试图根据另一个 DataFrame 的列选择 DataFrame 的子集 数据框看起来像这样 a b c d 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 3 12 13 14 15 a b 0 0 1 1 2 3 2
  • MATLAB 中不使用 for 循环的多个数组的交集

    我总是被告知 在 MATLAB 中几乎所有的 for 循环都可以省略 而且它们通常会减慢进程 那么这里有办法做到这一点吗 我有一个元胞数组 tsCell tsCell存储不同长度的时间数组 我想为所有时间数组找到一个相交的时间数组 Inte
  • 如何找到运行代码的 conda 环境的名称?

    我正在寻找一种好方法来从正在运行的代码或交互式 python 实例中找出我所在的 conda 环境的名称 用例是我通过 miniconda 安装运行带有 Python 2 和 Python 3 内核的 Jupyter 笔记本 默认环境是Py

随机推荐

  • 蓝桥杯嵌入式第十四届省赛题目解析

    前几天刚刚参加完第十四届的省赛 xff0c 这届题目比我想象中的要难 xff0c 其实想一想这也是应该的 xff0c 以前的知识点都被摸透了 xff0c 也是需要加入新的知识点了 xff0c 但是我还是想说能不能别在我参加的时候加大题目难度
  • dockerfile构建

    2 简答题 编写Dockerfile制作镜像 xff0c 生成镜像名为my build Nginx2 首先创建目录dockerfile nginx2 xff0c 保存Dockerfile文件 具体要求如下 xff1a 1 基于镜像cento
  • 安装虚拟机之后怎么配置虚拟环境、深度学习、深度强化学习环境安装

    安装步骤目录 一 配置虚拟机VMware安装包 amp Ubuntu的光盘映像文件 xff1a VMware安装Ubuntu安装 二 进入虚拟机配置环境深度 xff08 强化 xff09 学习环境的配置1 得知系统所自带python版本 x
  • 力扣-刷题方法总结(测试文章)

    知乎方面收集到的资料 xff08 非原创 xff0c 题主只是对其进行统一的整理 xff0c 方便后续查看 xff09 算法训练讲究循序渐进 xff1a 1 先从简单开始 xff0c 然后过度到中等 xff0c 再过渡到困难的进程 2 如何
  • 文件分隔符 ‘/‘(斜杠) 和 ‘\‘(反斜杠) 的使用

    前言 在学习时 xff0c 总会用到 Windows 和 Linux xff0c 输入路径时 xff0c 文件路径分隔符有时用 xff08 斜杠 xff09 xff0c 有时用 xff08 反斜杠 xff09 xff0c 属实不好区分 xf
  • VMware虚拟机安装Win11教程(解决常见报错)

    前言 今天闲来无事 xff0c 就想着装一下最新版的win11玩一下 xff0c 然后来来去去还是折腾了一些时间 xff0c 有遇到一些错误不过最好都找到了解决办法 xff0c 下面我就分享一下VMware虚拟机安装win11的详细步骤 V
  • vue打包后neditor不显示了

    原因是vue和vue template compiler 1 两者的版本不一致 xff1b 2 两者的版本低了 xff1b 例如 xff1a 我出问题的版本是 34 vue 34 34 2 5 10 34 34 vue template c
  • 【Docker常用命令】

    Docker常用命令 xff08 学习笔记 xff09 一 Docker基础命令二 Docker镜像命令三 Docker容器命令3 1 运行容器3 2 退出容器3 3 查看容器进程 xff0c 日志3 4 再次进入容器3 5 容器启停3 6
  • OpenCV学习——ArUco模块

    前提介绍 xff1a ArUco模块是OpenCV的contrib拓展库中一个模块 xff0c 需要安装OpenCV的 contrib拓展库 才能正常使用 ArUco标记 xff1a ArUco 标记是由 宽黑色边框 和 确定其标识符 xf
  • 【Vue】报错:Avoid mutating a prop directly since the value will be overwritten whenever the parent

    当我们直接改变父组件的 props 值是会报以下警告 xff1a Vue warn Avoid mutating a prop directly since the value will be overwritten whenever th
  • 深蓝学院-机器人运动规划学习笔记-第一章

    第一课 移动机器人运动规划 Motion planning for mobile robots IntroductionCourse outlineTypical planning methods overviewMap represent
  • opencv+python实战日记 入门篇(八)色块识别

    色块识别 import cv2 import numpy as np frameWidth 61 640 frameHeight 61 480 cap 61 cv2 VideoCapture 0 获取摄像头 cap set 3 640 ca
  • highway_env中自定义环境

    前言 highway env中集成了很多强化学习或者控制算法测试的驾驶环境 xff0c 但很多时候我们需要依据需求对环境进行自定义 xff0c 这里给出了自定义环境的一些步骤 xff0c 主要是基于gym 61 61 0 26版本 创建步骤
  • 深度相机和激光雷达的融合标定(Autoware)

    深度相机和激光雷达是智能汽车上常用的传感器 但深度相机具有特征难以提取 xff0c 容易受到视角影响 激光雷达存在数据不够直观且容易被吸收 xff0c 从而丢失信息 因此在自动驾驶领域 xff0c 需要对于不同传感器做数据的融合和传感器的标
  • 基于OpenCv和ROS的图像灰度化处理

    直接调用opencv灰度化函数 xff0c 对于本地图像进行处理 实现C 43 43 代码如下 xff1a 图像灰度化 include lt iostream gt cv cvtColor头文件 include lt opencv2 img
  • IMU的轨迹解算和航迹显示

    基于ros操作系统 xff0c 调用IMU数据包 xff0c 利用数据解算小车运动的轨迹 xff0c 并在rviz中实现轨迹的可视化 其中IMU四元数对于位移速度和加速度的转换 轨迹解算和换机显示的代码 xff1a IMU航迹推算 incl
  • 对IMU数据进行卡尔曼滤波

    我们要使用IMU数据 xff0c 必须对数据进行预处理 xff0c 卡尔曼滤波就是很好的方式 1 卡尔曼滤波 卡尔曼滤波 xff08 Kalman filtering xff09 是一种利用线性系统状态方程 xff0c 通过系统输入输出观测
  • PHPExcel导出导入问题”continue” targeting switch is equivalent to “break”.Did you mean to use “continue 2”?

    在 php 7 3 的 switch 中使用 continue 会出现警告 1 2 3 最好的方式是把 PHPExcel Shared OLE php 文件中的 continue 改为 continue 2 或 break 亲测 xff0c
  • 强化学习highway_env代码解读

    写在前面 作为强化学习的新手 xff0c 写这个系列的博客主要是为了记录学习过程 xff0c 同时也与大家分享自己的所见所想 前段时间发布了人生第一篇博客 xff0c 是关于highway env的自定义环境 但博客主要是关于如何创建一个自
  • Highway_env(Intersection)修改离散动作空间

    前言 在十字路口环境中 xff0c 主车默认的动作空间是以5m s变化的加减速以及保持原速三个动作 有时候为了学习更优化的策略 xff0c 同时与自己设置的奖励函数吻合 xff0c 需要修改环境的动作空间 这里我们主要添加两个较小加速度的纵