智能交通(8)——腾讯开悟智能交通信号灯调度赛道
本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法,模型的优化在官方提供的代码基础上进行。最终排名是在榜单16,没能进入最后的决赛。
一.赛题介绍
赛题简介:在本地赛题中,参赛团队需要在平台提供的仿真交通场景下,通过算法模型驱动交通信号灯,以在各种交通状况(高峰期、雨天等)下都能最大程度地服务车辆,使其在模拟环境中获得综合最大得分。
赛题目标:参赛团队需要在指定的时间内,本地训练并提交一个模型,并在最终考核中控制交通信号灯在场景中获得尽可能多的得分。
得分规则:参赛团队提交模型后,根据以下指标进行综合得分计算:
平均车辆排队长度:位于交叉口内进口车道上处于等待状态的平均车辆数量。
平均车辆延误:位于交叉口内进口车道上所有车辆的平均延误时间。
平均车速:位于交叉口内进口车道上所有车辆的平均速度。
排名规则:在参赛团队提交的模型评估得分后,根据得分进行排名。排名前12的团队进入专家评审环节。综合参考模型得分及专家评审成绩,形成总成绩,最后按照总成绩从高到低进行最终排名。(具体评审细则待公布)
二.特征处理
三个函数分别用于特征处理,动作处理和样本处理。官方进行了部分的特征处理,在原始的observation_process函数中获取到了车辆的位置和速度。
在原函数的处理之下,加入了加速度和等待时间。
车辆信息:
除了车辆信息以外,尝试加入了车道信息和交叉口的信息。
车道信息:
交叉口信息:
最后的状态向量:
但是最终提交的版本中还是只用加入了车辆信息,其他的特征信息尝试加入以后效果反而变差了(也有可能是我代码设计的问题)。车辆信息主要是在原始的基础上加入了加速度和车辆等待时间.
三.奖励函数
奖励函数分为相位奖励和持续时间奖励,相位奖励即为切换信号灯所带来的奖励,持续时间奖励指的是该信号灯持续所带来的奖励,原始的奖励函数采用了平均等待时间作为奖励,持续时间的奖励等于相位奖励,本赛题的评估指标有平均等待时间,平均排队长度,平均车辆延误。于是尝试多奖励组合,即平均等待时间,平均排队长度,平均车辆延误的加权和,公式为:W1 * 平均等待时间 + W2 * 平均排队长度 + W3 * 平均车辆延误,但经过测试,效果提升不大,有论文指出,可以用平均排队长度代替平均排队长度,它们呈线性相关,所以可能提升不大。
参考2019的论文,PressLight的压力计算方式,采用压力,平均等待时间,平均排队长度,平均车辆延误的加权和,公式为:W1 * 平均等待时间 + W2 * 平均排队长度 + W3 * 平均车辆延误 + W4 * 压力值,效果稍微好了一些,但是由于超参数过多,很难进行调参,只能凭感觉进行调参。
在此的基础上,进行了奖励的归一化。同时采取动态调整权重。
四.策略优化
dqn算法已经比较成熟,尝试在dqn的基础上使用变种dqn,尝试了Double dqn,Dueling DQN,同时也尝试了A2C算法.目前效果比较好的是Dueling DQN。
先介绍一下传统的dqn算法。
传统的dqn算法其实就是用神经网络来代替q-learing中的q表,举一个简单的列子,超级玛丽大家都玩过,其动作选择其实也比较简单,上下左右,所谓的q表就是记录选择每个动作以后的得分,假设选择上可以吃到宝箱,得3分,选择左和右不得分,选择下就死亡,扣100分,那么q表中上的评分则是最高的,下最低,选择的动作即为q值最高的动作。而如果使用 DQN,神经网络将学习一个函数,该函数可以根据当前游戏屏幕的像素值预测每个动作的预期奖励。这样,代理可以根据网络的输出来选择动作,而不需要显式地存储一个巨大的 Q 表。
Dueling DQN:
Dueling DQN是DQN的一种变种算法,它在传统Vanilla DQN的基础上只进行了微小的改动,却大幅提升了DQN的表现能力。具体来说就是Dueling DQN并未直接来估计Q值函数,而是通过估计V状态价值函数和A优势函数来间接获得Q值函数。
在标准DQN中,Q值函数表示的是在给定状态下执行某个动作的总价值。然而,在很多状态下,动作之间的价值差异很小,导致难以区分动作的优劣。Dueling DQN 引入了一种新的网络架构,旨在更有效地学习状态的价值函数与动作的优势函数。
Dueling DQN 使用一个特殊的网络结构,将 Q 值函数分解为两个部分
1状态值函数 V(s):表示在状态 s下的预期总回报,而不考虑具体的动作。
2. 优势函数 A(s,a):表示在状态 s下选择动作 a 相对于其他动作的优势。
网络的最后一层不再直接输出 Q 值,而是先计算状态值函数和优势函数,然后通过以下公式组合成 Q 值:
V(s) 是状态值函数,表示在状态 s下的价值。A(s,a) 是优势函数,表示在状态 s下动作 a相对于其他动作的相对优势。通过减去优势函数的平均值,消除由于相对优势引起的偏差。这个架构的优点在于,即使在一些情况下不同动作的价值相差不大,网络仍然可以通过状态值函数学到重要的信息,从而更好地评估和选择动作。
Double DQN:
Double DQN(Double Deep Q-Network)是一种改进版的DQN算法,用于解决传统DQN算法中过度估计Q值的问题。在DQN中,目标Q值是通过选择当前网络中预测的最大Q值来计算的,而这可能导致某些动作的价值被高估。Double DQN引入了双网络结构来缓解这个问题。具体来说,它使用当前Q网络来选择动作,但使用目标Q网络来评估该动作的Q值,从而更准确地计算目标Q值,减少了过估计的偏差。
软更新:
软更新(Soft Update)是一种更新目标网络的方式,区别于硬更新(Hard Update)。在硬更新中,目标网络会每隔固定的时间完全替换为当前Q网络。而在软更新中,目标网络是逐步更新的,使用指数移动平均的方法:
θ′=τθ+(1−τ)θ ′其中,θ ′是目标网络的参数,θ是当前网络的参数,τ是一个很小的系数(如0.001),表示每次只更新目标网络的一小部分权重。这样可以使目标网络的更新更加平滑,减少训练中的不稳定性。
多DQN决策:
多模型决策机制,旨在通过集成多个DQN模型(model, model2, model3)的输出,进行更加稳健的决策。这种策略通过引入多个模型,可以降低单个模型预测不准确时的风险,并通过融合机制提高决策的可靠性。
通过集成多个模型,系统能够在多个模型之间进行权衡,使得最终决策更具有鲁棒性。相比于单一模型,多个模型的集成可以有效减小预测中的偏差和方差,尤其是在面对不确定性或复杂任务时更为有效。
三种DQN模型被同时用于同一个任务,它们的作用是在给定输入特征(feature)的情况下,预测下一步的动作(action),即交通信号的相位(phase)和持续时间(duration)。
多模型的独立决策
代码首先通过三个独立的DQN模型进行推理,每个模型根据输入特征(feature)给出一个动作预测。动作被分解成两个部分:
Phase(相位):交通信号灯的相位,可以理解为当前路口哪个方向的车流应该被放行。
Duration(持续时间):该相位保持的时间,即信号灯持续亮灯的时间。
多模型结果的融合策略
多模型决策的关键在于如何有效地融合多个模型的输出。代码采用了以下融合策略:
(1) 相位的决策:
对于每个观测数据,三个模型各自输出一个相位。
系统会在三个模型中找到出现次数最多的相位(即投票机制)。多数投票可以减少单个模型预测出错带来的影响。
如果三个模型的相位完全不同,则会随机选择一个相位。这种情况相对较少,但在模型间预测差异较大时能保证系统继续运行。
(2) 持续时间的决策:
当多个模型的相位一致时,系统计算这些相位对应的持续时间的平均值,以平衡各个模型的预测结果。
如果相位不同(比如在三个模型都预测出不同的相位时),则使用随机选中的相位对应的持续时间。
相关文章:

智能交通(8)——腾讯开悟智能交通信号灯调度赛道
本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法,模型的优化在官方提供的代码基础上进行。最终排名是在榜单16,没能进入最后的决赛。 一.赛题介绍 赛题简介:在本地赛题中,参赛团队…...

ip所属地址是什么意思?怎么改ip地址归属地
在数字化时代,IP地址作为网络设备的唯一标识符,不仅关乎设备间的通信,还涉及到用户的网络身份与位置信息。IP所属地址,即IP地址的归属地,通常反映了设备连接互联网时的地理位置。本文将深入解析IP所属地址的含义&#…...

攻防世界 ctf刷题 新手区1-10
unserialize3 因为我上个笔记写了 php返序列化 所以先趁热打铁 看这个题目名字 我们就知道是 反序列化呀 因为flag有值所以 我们先输个 111 看看有没有线索 没线索但是这边 有个发现就是他是使用get方式传参的 可能他会把我们的输入 进行传入后台有可能进行反…...
Node做一个自动删除指定文件和文件夹工具
node14 可以搭配脚手架工具实现自动实现删除 // 引入path模块,用于处理文件路径 const path require(path); // 引入fs模块的promises API,用于异步文件操作 const fs2 require(fs).promises; // 引入fs模块,用于同步文件操作 const fs …...

陈若尧新歌《一来二去》陆续登陆全球音乐平台
由青年演员,歌手陈若尧带来的全新创作单曲《一来二去》由索尼音乐发行,于2024年11月18日陆续全球上线。这也是陈若尧与索尼音乐合作的第一首单曲。探索古典风格与流行音乐的新结合。歌曲上线不久,就因优美抒情的动人旋律,诗意而意味深远的歌词…...

【Docker】针对开发环境、测试环境、生产环境如何编排?
目录 一、引言 二、Docker Compose 文件基础 三、针对不同环境的 Docker 编排 开发环境 测试环境 生产环境 四、配置文件全局变量的编写 五、总结 一、引言 在软件开发和部署的过程中,不同的环境有着不同的需求和配置。Docker 作为一种强大的容器化技术&…...

小程序项目的基本组成结构
分类介绍 项目根目录下的文件及文件夹 pages文件夹 用来存放所有小程序的页面,其中每个页面都由4个基本文件组成,它们分别是: .js文件:页面的脚本文件,用于存放页面的数据、事件处理函数等 .json文件:…...
001-mysql安装
[rootcentos701 ~]# hostname -I 10.0.0.200 172.17.0.1 [rootcentos701 ~]# hostname centos701 [rootcentos701 ~]# rpm -qa | grep mariadb [rootcentos701 ~]# rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64 [rootcentos701 ~]# useradd mysql -s /sbin/nologin #创建…...

预训练模型与ChatGPT:自然语言处理的革新与前景
目录 一、ChatGPT整体背景认知 (一)ChatGPT引起关注的原因 (二)与其他公司的竞争情况 二、NLP学习范式的发展 (一)规则和机器学习时期 (二)基于神经网络的监督学习时期 &…...

高通---Camera调试流程及常见问题分析
文章目录 一、概述二、Camera配置的整体流程三、Camera的代码架构图四、Camera数据流的传递五、camera debug FAQ 一、概述 在调试camera过程中,经常会遇到各种状况,本篇文章对camera调试的流程进行梳理。对常见问题的提供一些解题思路。 二、Camera配…...

【冷冻电镜】RELION5.0使用教程总结
准备数据集: A test data set composed of 5 tomograms of immature HIV-1 dMACANC VLPs, which is available at EMPIAR-10164. 原始倾斜系列数据需要是单独的影片或单独的运动校正图像,但不是组合倾斜系列堆栈。 mdoc 文件包含每个倾斜系列的元数据。…...

【Maven系列】深入解析 Maven 镜像配置
前言 Maven 是一个流行的 Java 项目管理和构建工具,可以自动化构建项目、管理依赖、生成报告等。在Maven构建项目时,通常经常需要下载各种依赖。默认情况下,Maven 会从中央仓库下载这些依赖,但在某些情况下,这个过程可…...

优质翻译在美国电子游戏推广中的作用
美国作为世界上最大的视频游戏市场之一,为寻求全球成功的游戏开发商提供了无与伦比的机会。然而,美国市场的文化和语言多样性使其成为一个复杂的导航景观。高质量的翻译在弥合开发者和这些充满活力的观众之间的差距方面发挥着关键作用,确保游…...

数据结构---栈(Stack)
1. 简介 栈(Stack)是计算机科学中的一种抽象数据类型,它遵循特定的操作顺序,即后进先出(Last In First Out,LIFO)。这意味着最后添加到栈中的元素将是第一个被移除的。栈的基本操作通常包括&am…...

【全网最新】若依管理系统基于SpringBoot的前后端分离版本开发环境配置
目录 提前准备: 下载源代码 设置依赖 设置后台连接信息 运行后台 运行前端 安装npm依赖 启动前端 登录网页客户端 提前准备: 1、安装mysql 5以上就可以。 2、安装redis. 3、安装npm npm下载地址:https://nodejs.org/dist/v22.12…...
limit(0,10)和limit(10,10)有什么区别吗?
在SQL查询中,LIMIT子句用于限制查询结果的数量。LIMIT子句通常有两种形式: LIMIT offset, countLIMIT count 这里的offset表示从哪一条记录开始选取,count表示选取多少条记录。 LIMIT(0,10):这种形式的LIMIT子句表示从第一条记录…...
grpc与rpcx的区别
什么是微服务?rpc架构的主要区别rpcx与grpc的区别rpcx:grpc:为什么grpc要使用http2,为什么不适应http1或者http3?为什么grpc要使用proto而不是json或者其他数据格式? 为什么rpcx快,快多少?rpcx的具体性能指标与grpc比较: 什么是微服务? 整体功能通过多个程序实现,每个程序…...

基于XML的AOP开发
AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程。 AOP相关术语: 目标对象(Target): 你要去代理的对象,可以理解为之前很单纯的那个对象。 代理对象(Proxy): 你把你那个单纯的对象给我,…...

pdf也算是矢量图——pdf大小调整--福昕pdf
有时候需要把pdf作为矢量图放到latex论文中,有时候需要裁剪掉空白的部分,就需要用福昕pdf进行编辑, 参考文章:福昕高级PDF编辑器裁切工具怎么用?裁切工具使用方法介绍_福昕PDF软件工具集 (foxitsoftware.cn)...

Web应用程序文件包含-Server2233-解析
B-6 Web应用程序文件包含 任务环境说明:服务器场景名称:Server2233...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...