智能交通(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...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
