基于SUMO和强化学习的交通优化

本文旨在解释强化学习方法如何通过 TraCl 与 SUMO 配合使用,以及这如何有利于城市交通管理和自动驾驶车辆的路径优化。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 

1、SUMO和强化学习概述

SUMO是一款功能强大的交通仿真器,旨在处理大型负载交通网络和指定的交通需求,包括车辆路线和车辆跟随模型。 SUMO还提供了许多有用的信息,例如车辆速度、型号和位置。 SUMO的主要功能之一是交通控制接口(简称TraCI),它是一个Python API,将SUMO仿真视为服务器,允许用户从交通仿真中获取信息,或修改仿真。 TraCI 启用了一个接口,允许第三方系统(或库)与 SUMO 交通模拟集成。

强化学习(RL)作为一种机器学习技术,作为复杂系统的解决方案已经取得了非常有前景的结果。 强化学习方法能够通过与环境本身的交互来获取知识或提高性能。 强化学习的理论受到行为心理学的启发,它在环境中的策略下采取某些行动后获得奖励。 强化学习的目标是根据重复与环境交互所获得的奖励来学习最优策略。 这会持续优化策略并最终创建解决方案。

强化学习在现实世界中应用的一个很好的例子是城市交通管理。 随着城市交通网络中车辆数量的增加,设计智能交通管理系统来为车辆执行智能路由的需求很高。 然而,城市交通网络的复杂性给交通管理带来了诸多挑战,如交通系统的高速变化、道路上车辆的广泛分布等。 为了应对这些挑战,强化学习方法将很有用,因为它已经成功证明它能够处理复杂的优化问题。

2、基于强化学习的城市交通管理

正如我们在本文开头提到的,SUMO 交通仿真器可以使第三方系统实现强化学习。 在这种情况下,TraCI 将扮演 SUMO 和强化学习方法之间“转换器”的角色来建立这种交互。 TraCI 能够检索仿真中的每一条信息,包括车辆和网络。 这为强化学习代理提供了有用的功能来证明环境状态的合理性。 根据对状态的观察,我们可以相应地设置和分配奖励,并让强化学习根据奖励来优化策略。 之后,强化学习代理将通过 TraCI 为 SUMO 分配新的动作,并持续观察环境状态。

TraCI 可以使用多种编程语言进行访问,最常见的语言是 Python。 SUMO模拟器中的工具包/TraCl允许用户使用Python与SUMO交互。 这是有利的,因为 Python 已经是一种成熟的机器学习脚本语言,在实现机器学习算法的同时提供有用的库(例如 Numpy 和 Pandas)。

强化学习代理与环境之间通过 TraCI 的交互将持续进行,直到达到终止状态,或者代理满足终止条件。 本质上,强化学习技术应用马尔可夫决策过程(MDP)。 MDP被定义为五元组 <S,A,T,R,γ>,其中S是状态的集合,A是可以改变状态的动作集合,T是转移函数,即一定动作下状态改变的概率,R是奖励函数,γ被称为折扣因子,它对未来和即时奖励的重要性进行建模。

强化学习通过重复以下步骤来优化其策略:在每个时间步t,强化学习代理从状态集合S中感知状态,并根据其观察,选择一个动作并执行它,以引导环境状态转变为 下一个状态。 然后,代理收到即时奖励 R,观察新状态,并使用上面的方程(包括折扣奖励 γ)更新策略。

总之,强化学习将是复杂城市交通管理问题的理想解决方案,SUMO 模拟器提供了一个良好的界面 (TraCI),用于应用强化学习来运行模拟并学习重新规划车辆路线的最佳策略。 在下面的内容中,我将演示如何使用 TraCI 应用强化学习方法在 SUMO 中重新规划车辆路线。

为了在 SUMO 仿真器中实现强化学习,我们需要 SUMO 中马尔可夫决策过程的相应元素。 SUMO模拟器使用默认路径方法 DuaRouter为仿真中的每辆车生成路径文件。  DuaRouter基于最短路径计算执行动态用户分配(DUA)。 强化学习代理将用它学到的最优策略替换默认路由方法。

3、自动驾驶车辆的路径优化案例

这一部分我们将演示一个简单的交通仿真,该仿真使用 TraCI 在 SUMO 模拟器中应用强化学习方法,旨在演示车辆如何通过选择正确的路径来学习到达目的地以避免交通拥堵。 它还展示了车辆如何根据收到的奖励来优化其路径选择策略。

首先,我们需要准备一个包含道路信息的交通网络文件和一个包含车辆路线信息的路线文件,用于构建模拟环境。

图1:仿真用的交通路网

图1所示为由.net文件和.rou文件生成的仿真道路网络。 道路上的三个绿色小矩形是堵塞道路并造成拥堵的卡车。 左边的小三角形是仿真的车辆,其目的地位于网络的右侧。

图2:路网结构详图

图 2 与图 1 具有相同的网络设计。但是,它显示了连接每个节点的边的 ID,这也表明了车辆将采取的路径。 如果车辆从左到右节点或从上到下节点移动,我们会使用正边 ID 记录车辆采用该路径。 否则(从右到左或从下到上)我们使用负边缘 ID 记录车辆采用该路径。 例如,如果车辆从节点 A -> C -> F -> E -> B -> C 返回节点 A,则所采取的路径将被记录为['gneE0', 'gneE1', '-gneE15'、'-gneE6'、 'gneE5'、 'gneE0']

下一步,我们使用 TraCI 库控制 SUMO 仿真器,因为连接到该库可以实现强化学习方法。 在这种情况下,将使用 numpy 和 pandas 库。 numpy 库用于支持多维数组和矩阵,以及大量数学函数。 然而,pandas 库是用于数据操作和分析的。 这两个库都广泛用于机器学习。

在开始强化学习之前,我们初始化Q表。 Q表是用于路径选择策略的可更新表。 每次采取行动以优化策略时,表的值都会更新。 该表将记录环境的每个状态以及采取每个动作的概率。 本例的 Q表格式如下所示:

表3:强化学习Q表

在图 3 中,我们可以将边 ID 设置为带有其三个可用移动得分的阶段。 如果车辆进入Q表中未覆盖的新边,我们将该边ID记录为新记录并将其分配为随机移动,然后根据车辆进入的下一条边更新分数。

我们将学习次数设置为 30,这意味着我们将运行仿真 30 次。 每次仿真都会一直运行,直到左侧的车辆找到到达目的地的路或陷入拥堵。 车辆从边“gneE0”出发,目标到达边“gneE4”并尝试避开拥堵边,即“gneE2”、“gneE6”和“gneE13”。 因此,当车辆到达边缘“gneE4”时给予奖励,而当车辆进入“gneE2”、“gneE6”或“gneE13”时给予惩罚。

强化学习根据 Q表做出动作。 之后,它通过执行该操作来更新有关下一阶段收到的奖励或惩罚的 Q表。 因此,下次它会通过寻找包含更高分数的动作来表现得更“贪婪”。 在这种情况下,我们使用以下算法更新Q 表分数:

q_table.[edge_id, action] +=learning_rate * (q_target — q_predict)

其中折扣因子为 0.1,q_target 是我们在下一阶段收到的奖励或惩罚,q_predict 是特定操作的当前分数(最初为 0) )。

运行仿真 30 次后,我们可以看到车辆变得越来越聪明,学会通过避开拥堵路径来到达目的地。 图 4 显示了车辆在每次模拟中所走的总路径:

图4:车辆行驶路线记录

在图 4 中,从第 1 个episode到第 10 个episode,我们可以看到车辆是否进入拥堵路径或采取较长的路径到达目的地。 从第11个episode到第20个episode,它变得越来越聪明,但偶尔仍然会走更长的路。 从第21个episode到第30个episode,始终走最短路径到达目的地,不进入拥堵路径。

4、结束语

在本文中,我们开发了一个简单的程序,通过 TraCI 在 SUMO 模拟器中执行强化学习,并表明车辆变得更加智能,能够到达目的地并避开拥堵的路径。 这证明强化学习在SUMO中是适用的,并且效果良好。


原文链接:SUMO+RL 交通优化 - BimAnt

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

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

相关文章

Node包管理工具 - nvm、npm、yarn、cnpm、pnpm

转载说明 原文地址 简介 nvm : 可以实现一台电脑&#xff0c;拥有多个版本的Node npm : node package manager 下载Node后自带的一个包管理工具 yarn : npm 的升级版&#xff0c;更优秀 cnpm : 配置下载非官方地址的依赖&#xff08;淘宝、华为、腾讯镜像&#xff09; pnpm :…

day70

今日回顾 session 中间件 auth session Cookie虽然在一定程度上解决了“保持状态”的需求&#xff0c;但是由于Cookie本身最大支持4096字节&#xff0c;以及Cookie本身保存在客户端&#xff0c;可能被拦截或窃取&#xff0c;因此就需要有一种新的东西&#xff0c;它能支持更…

辛普森距离(SD,Sampson Distance)

定义 Sampson误差是复杂性介于代数误差和几何误差之间&#xff0c;但非常近似于几何误差的一种误差。 应用 SLAM对极几何中使用到SD来筛选内点&#xff1a; 1.随机采样8对匹配点 2.8点法求解基础矩阵 ​&#xff1b; 3.奇异值约束获取基础矩阵F&#xff1b; 4.计算误差&…

通达信指标公式19:龙虎榜股票池——主力控盘度的计算方法

0.小红牛本指标&#xff0c;选股的思路说明&#xff1a;控盘度&#xff0c;又称主力控盘&#xff0c;是指主力控制了某只股票的大部分流通股&#xff0c;从而控制了股票的价格。主力控盘的目的通常是为了获取更多的收益&#xff0c;通过控制股票价格来实现其策略。所以首要分析…

(04730)电路分析基础之电阻、电容及电感元件

04730电子技术基础 语雀&#xff08;完全笔记&#xff09; 电阻元件、电感元件和电容元件的概念、伏安关系&#xff0c;以及功率分析是我们以后分析电 路的基础知识。 电阻元件 电阻及其与温度的关系 电阻 电阻元件是对电流呈现阻碍作用的耗能元件&#xff0c;例如灯泡、…

外包干了2个月,技术倒退2年。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;20年通过校招进入深圳某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

现代版“田忌赛马”:IPMT如何实现资源利用最大化

摘要&#xff1a;在流程调整和产品重整过程中&#xff0c;IPMT发挥了至关重要的作用。IPMT是什么&#xff1f;它的职责到底是什么&#xff1f;每个公司必须要有IPMT吗&#xff1f; 1992年&#xff0c;IBM在激烈的市场竞争下&#xff0c;遭遇到了严重的财政困难&#xff0c;利润…

机器学习-ROC曲线:技术解析与实战应用

本文全面探讨了ROC曲线&#xff08;Receiver Operating Characteristic Curve&#xff09;的重要性和应用&#xff0c;从其历史背景、数学基础到Python实现以及关键评价指标。文章旨在提供一个深刻而全面的视角&#xff0c;以帮助您更好地理解和应用ROC曲线在模型评估中的作用。…

【新手解答8】深入探索 C 语言:递归与循环的应用

C语言的相关问题解答 写在最前面问题&#xff1a;探索递归与循环在C语言中的应用解析现有代码分析整合循环示例代码修改注意事项结论 延伸&#xff1a;递归和循环的退出条件设置解析使用递归使用循环选择适合的方法 写在最前面 一位粉丝私信交流&#xff0c;回想起了当初的我C…

Zabbix HA高可用集群搭建

Zabbix HA高可用集群搭建 Zabbix HA高可用集群搭建一、Zabbix 高可用集群&#xff08;Zabbix HA&#xff09;二、部署Zabbix高可用集群1、两个服务端配置1.1主节点 Zabbix Server 配置1.2 备节点 Zabbix Server 配置1.3 主备节点添加监控主机1.4 查看高可用集群状态 2、两个客户…

【数据结构与算法】JavaScript实现二叉搜索树

文章目录 一、二叉搜索树的封装1.插入数据2.遍历数据2.1.先序遍历2.2.中序遍历2.3.后续遍历 3.查找数据3.1.查找最大值&最小值3.2.查找特定值 4.删除数据4.1.情况1&#xff1a;没有子节点4.2.情况2&#xff1a;有一个子节点4.3.情况3&#xff1a;有两个子节点4.4.完整实现 …

成为AI产品经理——回归模型评估(MSE、RMSE、MAE、R方)

分类问题的评估是看实际类别和预测类别是否一致&#xff0c;它的评估指标主要有混淆矩阵、AUC、KS。回归问题的评估是看实际值和预测值是否一致&#xff0c;它的评估指标包括MAE、MSE、RMSE、R方。 如果我们预测第二天某支股票的价格&#xff0c;给一个模型 y1.5x&#xff0c;…

查询绑定了所有id的name

1、如图&#xff0c;绑定了所有id的有A,B两个name 2、第一种Sql及效率 explain SELECT name,count(id) as count from test GROUP BY name HAVING count(id)(SELECT count(DISTINCT id) from test); 3、第二种sql及效率 explain select * from (SELECT name,count(id) as co…

SQL自学通之简介

目录 一、SQL 简史 二、数据库简史 1、Dr. Codds 对关系型数据库系统的十二条规则 2、设计数据库的结构 3、数据库的前景 4、对于什么是客户机/服务器型电脑系统 BernardH.Boar的定义如下&#xff1a; 5、交互式语言 6、易于实现 7、SQL 总览 三、流行的 SQL 开发工具…

MFC 绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线.

MFC 绘制三种不同圆形以及绘制正弦函数曲线 本文使用visual Studio MFC 平台实现绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线. 关于基础工程的创建请参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-vis…

【【FPGA 之 MicroBlaze XADC 实验】】

FPGA 之 MicroBlaze XADC 实验 Vivado IP 核提供了 XADC 软核&#xff0c;XADC 包含两个模数转换器&#xff08;ADC&#xff09;&#xff0c;一个模拟多路复用器&#xff0c;片上温度和片上电压传感器等。我们可以利用这个模块监测芯片温度和供电电压&#xff0c;也可以用来测…

【五分钟】熟练使用np.interp函数函数(干货!!!)

引言 np.interp函数可对一维数组进行线性插值。具体来说&#xff0c;如果已知xp和yp&#xff0c;并且xp和yp具有确定的对应关系(比如ypsin(xp))&#xff0c;那么对于新的一维数组x&#xff0c;可通过np.interp函数得到数组y&#xff0c;y是基于 xp和yp的映射关系 通过【线性插…

Spring之AOP理解与应用

1. AOP的认识 面向切面编程&#xff1a;基于OOP基础之上新的编程思想&#xff0c;OOP面向的主要对象是类&#xff0c;而AOP面向的主要对象是切面&#xff0c;在处理日志、安全管理、事务管理等方面有非常重要的作用。AOP是Spring中重要的核心点&#xff0c;AOP提供了非常强…

面了一个测试工程师要求月薪26K,总感觉他背了很多面试题

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

Nacos 安装下载

Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高。 1、Windows安装 开发阶段采用单机安装即可 1.1 下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nac…