多车道混合交通流仿真(Type)

该代码实现了一个Python程序,用于根据CAVs(联网自动车辆)的渗透率生成随机的三车道交通流。它首先根据给定的车辆总数和CAVs渗透率创建车辆列表,然后随机排列车道上的车辆顺序。接着,代码定义了一个函数来计算车排强度,基于不同类型的车辆组合(Cav跟随Cav,Cav跟随Hdv,Hdv跟随Hdv)有不同的车头时距。最后,程序输出每个车道的车排强度,从而分析交通流特性。
摘要由CSDN通过智能技术生成

随机化产生三车道的交通流,不废话,直接上代码(我Paper正在做,先存一下)

import random
# 第一步,首先按照CAVs的渗透率来建立初始车辆列表
car_num = 100    # 输入1:车辆数量
cav_Per = 0.50  # 输入2:CAVs渗透率
CAVs_num = int(car_num*cav_Per)  # 联网自动车辆的数量
HDVs_num = car_num - CAVs_num    # 人工驾驶车辆的数量

flow_list1 = []  # 车道1的混合交通流
for i in range(car_num):
    if i < HDVs_num:
        flow_list1.append(0)
    else:
        flow_list1.append(1)

# 首先生成一个未打乱的混合交通流
# print(flow_list1)


# 第二步,随机化
mixed_flow_list1 = flow_list1.copy()  # 初始化车道1(创建副本)
mixed_flow_list2 = flow_list1.copy()  # 初始化车道2
mixed_flow_list3 = flow_list1.copy()  # 初始化车道3

# 考虑随机化的车排长度
random.shuffle(mixed_flow_list1)
random.shuffle(mixed_flow_list2)
random.shuffle(mixed_flow_list3)

print("车道1:  "+str(mixed_flow_list1))
print("车道2:  "+str(mixed_flow_list2))
print("车道3:  "+str(mixed_flow_list3))


# 第三步:计算车排强度(这里也是my paper中的一个公式)
p_str = 0   # 初始车排强度
T_CC = 0.9  # 三种跟车模式,分别是cav跟随cav、cav跟随hdv、hdv跟随车辆
T_CH = 1.2
T_HH = 1.5

# 计算车道车辆的车排强度。车排强度越大,车道中的平均车头时距越小
def calculate_platoon_S(arr):
    S_p = 0
    p_str = 0  # 初始车排强度
    T_CC = 0.9  # 三种跟车模式,分别是cav跟随cav、cav跟随hdv、hdv跟随车辆
    T_CH = 1.2
    T_HH = 1.5
    for i in range(0, len(arr)):
        # 遍历车辆数
        if i == len(arr) - 1:
            # 如果是第一辆车
            if arr[i] == 1:
                p_str = p_str + arr[i] * T_CC
            else:
                p_str = p_str + arr[i] * T_HH
        else:
            # case1:后车为hdv
            if arr[i] == 0:
                p_str = p_str + arr[i] * T_HH
            # case2:cav跟随cav
            elif arr[i] + arr[i + 1] == 2:
                p_str = p_str + arr[i] * T_CC
            # case3:cav跟随hdv
            elif arr[i] == 1 and arr[i + 1] == 0:
                p_str = p_str + arr[i] * T_CH
    return p_str


p_str_lane1 = calculate_platoon_S(mixed_flow_list1)
S_platoon_lane1 = round(len(mixed_flow_list1)/p_str_lane1, 2)
p_str_lane2 = calculate_platoon_S(mixed_flow_list2)
S_platoon_lane2 = round(len(mixed_flow_list2)/p_str_lane2, 2)
p_str_lane3 = calculate_platoon_S(mixed_flow_list3)
S_platoon_lane3 = round(len(mixed_flow_list3)/p_str_lane3, 2)

print("车道1的车队强度   "+str(S_platoon_lane1))
print("车道2的车队强度   "+str(S_platoon_lane2))
print("车道3的车队强度   "+str(S_platoon_lane3))





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值