MMP,寒冷的冬天,在西安北郊的一个上午,一组四人刚起床早饭没吃就去数车,大腿冻得直哆嗦,终于以五分钟时间间隔数了一个半小时的车。

以下是要求

为两个实验前做准备做交通调查,对所调查的路口现有路口交通信号控制参数的进行优化设计。

实验一,单个交叉路口定时控制。实验二,四个路口绿波带控制。

提交文件一,单个交叉口信号控制参数优化设计,含括调查资料。

需要调查内容:饱和交通流量S,各个方向车流量q。路口绿灯起步损失时间,黄灯滞后时间,黄灯时间,全红时间。

调查结束后,自行完成对路口交通信号灯控制参数的优化设计。

需要提交的文件二,四个路口绿波带控制参数设计,含括调查资料。(仅限于一个时间段内的参数设计,前一个文件单个交叉口的也是仅限于一个时间段内的即可)

调查内容包括:

1.四个路口的道路几何参数,每一路口每一方向进口车道数量,左直右车道数,4个交叉口之间的距离。

2.交通流参数,车辆在路段上运行速度,各个交叉口直行车流量,转弯流量。

3.信号灯控制参数,各个路口交通信号灯控制参数,周期,绿灯时间分配,黄灯全红时间。

最后计算,运行方式单双向,最大周期,绿波带宽度,绿灯时间分配,绿灯起步时距差,推荐运行速度。

我们数的时候分大车和小车

1、数回来的基础数据是这样的
image.png
2、加工一下是这样的
image.png
3、
import numpy as np
import pandas as pd
from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
def deal(db):
db_copy=pd.DataFrame(db,columns=['time','右','左','直']).fillna(0)
for i in range(0,16):
db_copy['右'][i*3+2]=db_copy['右'][i*3+0]+db_copy['右'][i*3+1]
db_copy['左'][i * 3 + 2] = db_copy['左'][i * 3 + 0] + db_copy['左'][i * 3 + 1]
db_copy['直'][i * 3 + 2] = db_copy['直'][i * 3 + 0] + db_copy['直'][i * 3 + 1]
db_copy['合计']= db_copy['右']+db_copy['左']+db_copy['直']
return db_copy
db={}
db[0]=pd.read_excel('张1.xls')
db[1]=pd.read_excel('孙1.xls')
db[2]=pd.read_excel('田1.xls')
db[3]=pd.read_excel('刘1.xls')
westD=db[0]['合计'][0::3].tolist()
westX=db[0]['合计'][1::3].tolist()
northD=db[1]['合计'][0::3].tolist()
northX=db[1]['合计'][1::3].tolist()
eastD=db[3]['合计'][0::3].tolist()
eastX=db[3]['合计'][1::3].tolist()
southD=db[2]['合计'][0::3].tolist()
southX=db[2]['合计'][1::3].tolist()
ZD=sum(westD+northD+eastD+southD)
ZX=sum(westX+northX+eastX+southX)
print(ZD)
# plt.pie([ZD,ZX],labels={'big car','small car'},autopct='%1.1f%%')#,colors=colors)
# plt.axis('equal')
eastout=[57.0, 40.0, 40.0, 41.0, 43.0, 49.0, 55.0, 49.0, 44.0, 43.0, 48.0, 54.0, 35.0, 45.0, 35.0, 53.0]
westout=[42.0, 45.0, 44.0, 42.0, 38.0, 50.0, 47.0, 55.0, 46.0, 35.0, 48.0, 48.0, 41.0, 45.0, 35.0, 47.0]
northout=[7.0, 6.0, 2.0, 3.0, 4.0, 5.0, 7.0, 2.0, 5.0, 3.0, 7.0, 3.0, 2.0, 3.0, 5.0, 4.0]
southout=[13.0, 16.0, 12.0, 13.0, 9.0, 10.0, 12.0, 8.0, 19.0, 12.0, 15.0, 11.0, 8.0, 15.0, 11.0, 13.0]
eastin=[43.0, 52.0, 10.0, 44.0, 54.0, 9.0, 35.0, 40.0, 11.0, 43.0, 55.0, 12.0, 51.0, 62.0, 8.0, 47.0]
westin=[29.0, 43.0, 8.0, 26.0, 31.0, 7.0, 33.0, 40.0, 6.0, 38.0, 45.0, 10.0, 32.0, 41.0, 8.0, 34.0]
northin=[8.0, 8.0, 0.0, 3.0, 3.0, 0.0, 3.0, 3.0, 2.0, 3.0, 3.0, 0.0, 0.0, 0.0, 2.0, 2.0]
southin=[11.0, 16.0, 2.0, 10.0, 10.0, 1.0, 7.0, 11.0, 5.0, 12.0, 18.0, 5.0, 8.0, 11.0, 0.0, 12.0]
font = FontProperties(fname=r"C:\\WINDOWS\\Fonts\\simsun.ttc", size=14)#C:\WINDOWS\Fonts
# plt.plot([i * 12 for i in eastout] ,'-o',[i * 12 for i in westout] ,'-o',[i * 12 for i in northout] ,'-o',[i * 12 for i in southout] ,'-o')
# label = ["eastout", "westout", "northout","southout"]
# plt.legend(label, loc = 0, ncol = 2)
# plt.title(u'出口流量',fontproperties=font)
# plt.plot([i * 12 for i in eastin] ,'-o',[i * 12 for i in westin] ,'-o',[i * 12 for i in northin] ,'-o',[i * 12 for i in southin] ,'-o')
# label = ["eastin", "westin", "northin","southin"]
# plt.legend(label, loc = 0, ncol = 2)
# plt.title(u'入口流量',fontproperties=font)
#plt.legend([plot1, plot2], (’red line’, ’green circles’), ’best’, numpoints=1)
# plt.show()
west_left=db[0]['左'][2::3].tolist()
west=db[0]['合计'][2::3].tolist()
north_left=db[1]['左'][2::3].tolist()
north=db[1]['合计'][2::3].tolist()
east_left=db[3]['左'][2::3].tolist()
east=db[3]['合计'][2::3].tolist()
south_left=db[2]['左'][2::3].tolist()
south=db[2]['合计'][2::3].tolist()
#w=float(west_left)*west**-1
left=[sum(west_left),sum(east_left),sum(south_left),sum(north_left)]
sum=[sum(west),sum(east),sum(south),sum(north)]
plt.bar(range(4),[round(left[i]*100/sum[i]) for i in range( len(sum) )],width=0.45,color='darkred')
plt.xticks(range(4),['west','east','south','north'])
plt.title(u'各出口左转车辆百分比',fontproperties=font)
for x,y in zip(range(4),[round(left[i]*100/sum[i]) for i in range( len(sum) )]):
plt.text(x, y+0.05, '%.2f' % y+'%', ha='center', va= 'bottom')
plt.show()
4、出图
image.png
image.png
image.png
%@Z(T$Z8L(L}CDS39_PRTXV.png