关于SUMO的初步模型建立与使用

首先,贴个链接,感谢这位朋友的分享:

SUMO仿真案例

SUMO模型建立主要需要两个东西

网络

路线

关于SUMO的初步模型建立与使用_第1张图片
在此基础上在sumo gui中生成可视化仿真文件,进行仿真。
然后,对于需要对仿真过程进行控制的,可以通过python编写控制文件,用调用Traci来完成对车辆的控制,包括跟驰与换道等。

网络:包括node和edge

路线:包括route和车辆type与number


在案例中,我主要关注了他的跟驰模型:
包括加速过程、减速过程、慢启动现象、随机慢化;

 #生成下一时刻速度
    def speed_generate(self):
        v_next = self.speed
        Pslow, Ps = 0.5, 0.3#慢启动和随机慢化概率
        frontCar =self.frontCar()
        if frontCar != "":
            frontCarSpeed = traci.vehicle.getSpeed(frontCar)#前车速度
            frontCarDistance = traci.vehicle.getLanePosition(frontCar)#前车行驶通过距离
            minAccSpeed = min(self.speed+self.maxacc, self.vmax)
            if self.speed == 0 and random.uniform(0, 1) < Pslow:#慢启动现象
                v_next = 0 #下一时刻速度为0
            elif frontCarSpeed+frontCarDistance-(minAccSpeed+self.speed)/2-self.lanePosition > self.minGap+self.length:#加速情况
                v_next = minAccSpeed
                if random.uniform(0, 1) < Ps:  # 随机慢化现象
                    v_next = max(v_next - self.maxdec, 0)
            elif frontCarSpeed+frontCarDistance-(minAccSpeed+self.speed)/2-self.lanePosition == self.minGap+self.length:#匀速情况
                if random.uniform(0, 1) < Ps:  # 随机慢化现象
                    v_next = max(v_next - self.maxdec, 0)
            else:#减速情况
                v_next = max(self.speed-self.maxdec, 0)
        return v_next

核心是:在下一时刻,(前车的位置 减去 本车的位置)与(本车车长 与 车之间最小间距的和)进行比较;
从而对下一时刻的速度进行规划,完成speed_generate。
输入:前车id:前车车速与行驶距离
输出:本车下一刻车速

你可能感兴趣的:(Sumo/Eclipse,python)