Python智能驱动数学模型和泰勒级数-贝塞尔曲线模拟微观交通

模拟交通流量背后的主要原因是在没有真实世界的情况下生成数据。 您可以使用在软件上运行的模型来预测交通流量,而不是测试如何在现实世界中,管理交通系统或使用传感器收集数据的新想法。 这有助于加速交通系统的优化和数据收集。 模拟是比实际测试更便宜、更快的替代方案。

训练机器学习模型需要庞大的数据集,收集和处理这些数据集既困难又昂贵。通过模拟流量以程序方式生成数据可以很容易地适应所需的确切数据类型。

在本文中,我将解释为什么交通模拟很重要,比较不同的交通建模方法,并展示我的模拟。

为了分析和优化交通系统,我们首先必须对交通系统进行数学建模。这样的模型应该基于输入参数(道路网络几何形状、每分钟车辆数、车速……)真实地表示交通流量。

在本文中,我将使用微观模型。

交通模型

微观驾驶员模型描述了单个驾驶员/车辆的行为。因此,它必须是一个多智能体系统,也就是说,每辆车都使用来自其环境的输入自行运行。

智能驱动模型

2000 年,Treiber, Hennecke et Helbing 开发了一种称为智能驾驶员模型的模型。 它将第 i 个车辆的加速度描述为它的变量和它前面的车辆的变量的函数。 动力学方程定义为:

在解释这个模型背后的直觉之前,我应该解释一些符号代表什么。

原理

假设车辆沿直线路径移动,并假设遵守以下等式:

为了更好地理解方程,我们可以将它的项一分为二。我们有自由道路加速和交互加速。

路网模型

随机车辆生成

def generate_vehicle(self):
  
  total = sum(pair[0] for pair in self.vehicles)
  r = randint(1, total+1)
  for (weight, config) in self.vehicles:
    r -= weight
    if r <= 0:
      return Vehicle(config)
def update(self):
    """Add vehicles"""
    if self.sim.t - self.last_added_time >= 60 / self.vehicle_rate:
       
        road = self.sim.roads[self.upcoming_vehicle.path[0]]      
        if len(road.vehicles) == 0\
           or road.vehicles[-1].x > self.upcoming_vehicle.s0 + self.upcoming_vehicle.l:
            
            self.upcoming_vehicle.time_added = self.sim.t
            road.vehicles.append(self.upcoming_vehicle)
            
            self.last_added_time = self.sim.t
        self.upcoming_vehicle = self.generate_vehicle()

Python模拟

车辆

我们将使用泰勒级数来近似求解本文建模部分中讨论的动力学方程。

车辆动态运行

交通灯

路况

在现实世界中,道路有曲线。虽然从技术上讲,我们可以在此模拟中通过手写许多道路的坐标来近似曲线来创建曲线,但我们可以在程序上做同样的事情。

我将为此使用贝塞尔曲线。

测试路型

  • 高速公路入口
  • 双向交叉口
  • 迂回
  • 发散钻石交汇处

源代码

参阅 - 亚图跨际
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值