智能交通(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) 持续时间的决策:

当多个模型的相位一致时,系统计算这些相位对应的持续时间的平均值,以平衡各个模型的预测结果。

如果相位不同(比如在三个模型都预测出不同的相位时),则使用随机选中的相位对应的持续时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/484567.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音矩阵系统快速部署指南/抖音矩阵系统源码分发,短视频矩阵账号管理系统开发部署—

抖音矩阵系统的源码分发与短视频账号管理平台的开发部署,要求通过对接官方API来实现功能的拓展。当前开发的账号矩阵管理系统专注于提供一键式管理多个账户的能力,支持定时发布内容、自动化关键词生成以实现搜索引擎优化(SEO)和霸…

社群借势与 AI 智能名片微信小程序的融合应用与发展策略

摘要:本文探讨了在社群运营中借势策略的运用,包括通过联谊活动和互换用户在不同社群间实现资源整合与协同发展。同时,引入 AI 智能名片微信小程序这一新兴工具,分析其在社群运营借势过程中的独特作用与应用模式,旨在为…

群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

一、腾讯云短信工厂开发 1、添加框架对应的SDK composer require tencentcloud/tencentcloud-sdk-php 2、添加腾讯云工厂 在根目录下extend文件夹下Sms文件夹下channel文件夹下,创建腾讯云短信发送工厂并命名为TencentSmsSender。记住,一定要在腾讯云短…

【JavaEE】多线程(6)

一、用户态与内核态 【概念】 用户态是指用户程序运行时的状态,在这种状态下,CPU只能执行用户态下的指令,并且只能访问受限的内存空间 内核态是操作系统内核运行时的状态,内核是计算机系统的核心部分,CPU可以执行所有…

SpringBoot 架构下校园失物招领系统:精准定位校园失物去向

2系统开发环境 2.1vue技术 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第…

x86处理器编程模型

为x86处理器编写程序的时候, 必须要了解x86的内核寄存器 通用寄存器 后面才扩充到了32位,又要对以前的代码进行兼容, 所以之前16位结构保留了, BP与SP主要用于对栈空间进行操作, SI和DI用来进行数据的拷贝. 段寄存器 因为早期是16位的模式,只能到65535(64KB的空间),所以后来…

Maven核心概念

Maven 介绍 Maven 官方文档是这样介绍的 Maven 的: Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a projects build, reporting and documentation from a ce…

Ubuntu的pip怎么用

第一步:查看python3版本 第二步:安装pip 第三步:可以尝试使用pip list查看 也可以尝试安装 下面这条命令可以设置永久源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

第三十九篇——条件概率和贝叶斯公式:机器翻译是怎么工作的?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 数学中的概率,看似和我们的生活没关系,其实它却是…

计算机毕业设计Python轨道交通客流预测分析可视化 智慧交通 机器学习 深度学习 人工智能 爬虫 交通大数据

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Spring Boot + MySQL 多线程查询与联表查询性能对比分析

Spring Boot MySQL: 多线程查询与联表查询性能对比分析 背景 在现代 Web 应用开发中,数据库性能是影响系统响应时间和用户体验的关键因素之一。随着业务需求的不断增长,单表查询和联表查询的效率问题日益凸显。特别是在 Spring Boot 项目中&#xff0…

Java 初学者的第一个 SpringBoot 系统

Java 初学者的第一个 SpringBoot 系统 对编程初学者而言,都存在一个 “第一个系统” 的问题。有些学习者找不到自己的 “第一个系统”,他们即使再努力也没有办法了解完整的系统,即使他们把教科书里的所有程序都跑通了。但是,面对…

【Vue3】详解Vue3的ref与reactive:两者的区别与使用场景

文章目录 引言Moss前沿AIVue 3响应式系统概述ref与reactive的基础概念ref与reactive的区别1. 数据类型2. 访问方式3. 响应式追踪机制4. 可变性5. 使用场景表格对比 ref与reactive的使用场景1. 选择ref的场景2. 选择reactive的场景 性能分析与优化建议1. 响应式系统的性能优势2.…

【笔记2-3】ESP32 bug:PSRAM chip not found or not supported 没有外部PSRAM问题解决

主要参考b站宸芯IOT老师的视频,记录自己的笔记,老师讲的主要是linux环境,但配置过程实在太多问题,就直接用windows环境了,老师也有讲一些windows的操作,只要代码会写,操作都还好,开发…

itextpdf读取pdf宽高问题

在使用itextpdf读取文档宽高的时候,大多数代码都是这样的: Rectangle page reader.getPageSize(pageNum); float width page.getWidth(); float height page.getHeight(); int rotation page.getRotation();这样读取的,对于标准pdf如A4等…

【nodejs】puppeteer在window下因参数scale导致重复截图问题解决

在线地址:https://textcard.shushiai.com/zh 最近构建流光卡片免费 markdown 文本转精美图片 api 的时候遇见了一个问题 👇(API 尚未公开,还在小部分内测,测试,尝试修复 bug 中) 我发现在我 w…

3、.Net UI库:MaterialSkin - 开源项目研究文章

MaterialSkin 是一个开源的 WinForms 第三方库,提供了许多仿谷歌设计风格的组件,使得 WinForms 窗体程序更加美观。以下是 MaterialSkin 的一些关键特点和使用方法: 主要特点: 仿谷歌设计风格:MaterialSkin 提供了大量…

VMware安装windows2003

一、安装vm 这一项大家应该都会,网上也有很多教程。 二、搭建Windows server 2003 1、镜像下载- 2、虚拟机安装 首先是新建虚拟机,我选的是自定义,也可以选典型 第一步默认下一步,也可以是自己的情况做修改 第二步选择稍后安…

51c自动驾驶~合集11

我自己的原文哦~ https://blog.51cto.com/whaosoft/12684932 #如何在自动驾驶的视觉感知中检测corner cases? 一篇来自德国大学的论文:“Corner Cases for Visual Perception in Automated Driving: Some Guidance on Detection Approaches“&#xf…

四、自然语言处理_02RNN基础知识笔记

1、RNN的定义 RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络架构,它与传统的前馈神经网络(Feedforward Neural Network)不同,主要区别在于它能够处理输入数…