环形公路堵车概率模型(含详细解析)

环形公路堵车概率模型(含详细解析)

文章目录

基础理论代码实现图形分析

基础理论

路面上有n辆车,以不同的速度向前行驶, 模拟堵车问题。 有以下假设:

假设某辆车的当前速度是v。若前方可见范围内没车,则它在下一秒的车速提高到v+1,直到达到规定的最高限速。若前方有车,前车的距离为d,且d < v,则它下 一秒的车速降低到d-1 。每辆车会以概率p随机减速v-1。、

代码实现

// An highlighted block

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

#对车辆的位移进行限制,当大于水平的公路长度时,则认为是拐外后的位移

def clip(x, path):

for i in range(len(x)):

if x[i] >= path:

x[i] %= path

if __name__ == "__main__":

#文字转化

mpl.rcParams['font.sans-serif'] = [u'SimHei']

mpl.rcParams['axes.unicode_minus'] = False

'''初始化定义'''

path = 5000 # 环形公路的长度

n = 100 # 公路中的车辆数目

v0 = 50 # 车辆的初始速度

p = 0.3 # 随机减速概率

Times = 1000 #模拟时间

'''模拟车辆的位移和速度'''

np.random.seed(0)

#模拟100辆车辆的位置

x = np.random.rand(n) * path

#车辆位移进行排序

x.sort()

#将100个车辆的速度定义为50,并设为float类型数据

v = np.tile([v0], n).astype(np.float)

#

'''画布大小'''

plt.figure(figsize=(10, 8), facecolor='w')

'''模拟在时间范围内的堵车情况'''

for t in range(Times):

#绘图 x:车辆位置 [t]*n:时间

plt.scatter(x, [t]*n, s=1, c='b', alpha=0.05)

'''依次判断100辆车的速度和位移情况'''

for i in range(n):

#计算前后车辆的距离

if x[(i+1)%n] > x[i]:

d = x[(i+1) % n] - x[i]

else:

d = path - x[i] + x[(i+1) % n]

'''判断此刻的速度和与前车的距离大小'''

if v[i] < d:

#若前方可见范围内没车,则它在下一秒的车速提高到v+1,直到达到规定的最高限速。同时,每辆车会以概率p随机减速v-1。

if np.random.rand() > p:

v[i] += 1

else:

v[i] -= 1

else:

#若前方有车,前车的距离为d,且d < v,则它下 一秒的车速降低到d-1 。

v[i] = d - 1

#限制速度,v<0,则将v定义为0;v>150,则将v定义为150

v = v.clip(0, 150)

#车辆的位移在增加,车在往前开

x += v

#调用clip

clip(x, path)

'''限制坐标轴'''

#对x轴的坐标进行限制

plt.xlim(0, path)

#对y轴坐标进行限制

plt.ylim(0, Times)

'''标签'''

plt.xlabel(u'车辆位置', fontsize=16)

plt.ylabel(u'模拟时间', fontsize=16)

plt.title(u'环形公路车辆堵车模拟', fontsize=20)

'''自动调整子图参数,使之填充整个图像区域'''

plt.tight_layout(pad=2)

'''画图'''

plt.show()

图形分析

图形中颜色越重的地方,说明很多车的位移相同,则说明发生了堵车的情况。如果颜色重的地方多,说明堵车严重。 随机减速概率越大,堵车越严重。 随机减速概率=0.3 随机减速概率=0.5

相关推荐

minecraft药水酿造
365bet365官网

minecraft药水酿造

📅 10-03 👁️ 3568
英雄联盟传送是哪个键
365bet开户

英雄联盟传送是哪个键

📅 09-20 👁️ 6001
一升水等于多少斤,一升水等于500毫升吗
365bet网上足球比赛

一升水等于多少斤,一升水等于500毫升吗

📅 08-27 👁️ 607
前天晚上 巴西世界杯爷爷去世了
365bet开户

前天晚上 巴西世界杯爷爷去世了

📅 07-12 👁️ 5044