//download.csdn.net/download/programmer9/11987786
机场出租车的优化模型问题研究
摘要
机场的出租车安排与调度对机场至关重要,本文主要运用了排队论、微分模型,并结合了VISSIM仿真,研究司机的最优决策模型和如何设置最优上车点,使得总的乘车效率最高。
针对问题一,我们通过查阅资料,分析研究出了影响出租车司机决策的几大因素,建立司机收益模型,分为两种收益:(1)在机场接客的平均收益 (2)在市区接客的平均收益,为了得到第一种收益,我们假设乘客都要去某一固定地点,乘客按照泊松流到达接客地点,并建立排队论模型,求出司机在机场接客需要平均等待的时间,结合油价等算出在机场接客的平均收益。为了得到第二种收益,我们通过查阅文献,得到市区司机载客人数、出行距离和空载时间等数据,结合油价计算出去市区的收益。通过这两种收益我们得出在一天之内适合去机场的时间段以及适合去市区的时间段,使得司机获得更多收益。
针对问题二,在问题一建立的决策模型上,我们利用python编程获取2019年9月11日到达某机场的客流量,并将一天等时划分为48个段。并将客流数据与我们建立的决策模型相结合可知在去机场的收益更高,何时去市区的收益更高。我们从乘客数据可知凌晨一点半到八点机场几乎没有乘客到达,这与我们的模型相符,充分证明了我们模型的合理性。依赖因素:乘客人数,油价,司机的等待时间。依赖比重为: ::=5.7:3.2:1.1
针对问题三,在保证车辆和乘客安全的条件下,如何设置上车点,使得在双车道中乘车效率最高是解决本问题的关键。我们通过查阅大量资料,得到乘客上车所需时间,出租车从等待区到泊位的时间,建立排队论模型,并通过VISSIM建模,研究的泊位数量与通行能力的关系,发现随着泊位数量的增加通行效率先增加后减少,最后可得到在最佳的泊位数量为14个时,乘车效率最高。
针对问题四,在前三问建立的模型基础之上,我们求出了拉长途出租的平均收益 =22.90元/时和拉短途出租的平均收益=5.63元/时,显然其利益并不均衡。为了补偿拉短途出租的利益,飞机场要通过单独设置车道等方式来降低拉短途出租的等待时间,从原来的1.25小时降到0.16小时,这样才可以平衡利益。
关键词:选择决策模型;排队论;对数正态分布;泊松分布;VISSIM仿真
一、问题重述
1.1问题背景
大多数乘客下飞机后要去市区(或周边)的目的地,出租车是主要的交通工具之一。国内多数机场都是将送客(出发)与接客(到达)通道分开的。送客到机场的出租车司机都将会面临两个选择:
(A) 前往到达区排队等待载客返回市区。出租车必须到指定的“蓄车池”排队等候,依“先来后到”排队进场载客,等待时间长短取决于排队出租车和乘客的数量多少,需要付出一定的时间成本。
(B) 直接放空返回市区拉客。出租车司机会付出空载费用和可能损失潜在的载客收益。在某时间段抵达的航班数量和“蓄车池”里已有的车辆数是司机可观测到的确定信息。通常司机的决策与其个人的经验判断有关,比如在某个季节与某时间段抵达航班的多少和可能乘客数量的多寡等。如果乘客在下飞机后想“打车”,就要到指定的“乘车区”排队,按先后顺序乘车。机场出租车管理人员负责“分批定量”放行出租车进入“乘车区”,同时安排一定数量的乘客上车。在实际中,还有很多影响出租车司机决策的确定和不确定因素,其关联关系各异,影响效果也不尽相同。
1.2 问题提出
根据以上问题背景,我们团队将从以下几个问题展开讨论:
(1) 分析研究与出租车司机决策相关因素的影响机理,综合考虑机场乘客数量的变化规律和出租车司机的收益,建立出租车司机选择决策模型,并给出司机的选择策略。
(2) 收集国内某一机场及其所在城市出租车的相关数据,给出该机场出租车司机的选择方案,并分析模型的合理性和对相关因素的依赖性。
(3) 在某些时候,经常会出现出租车排队载客和乘客排队乘车的情况。某机场“乘车区”现有两条并行车道,管理部门应如何设置“上车点”,并合理安排出租车和乘客,在保证车辆和乘客安全的条件下,使得总的乘车效率最高。
(4) 机场的出租车载客收益与载客的行驶里程有关,乘客的目的地有远有近,出租车司机不能选择乘客和拒载,但允许出租车多次往返载客。管理部门拟对某些短途载客再次返回的出租车给予一定的“优先权”,使得这些出租车的收益尽量均衡,试给出一个可行的“优先”安排方案。
二、问题假设与符号说明
2.1问题假设
1)假设所有的出租车都不会有路上抛锚、燃油耗尽等意外情况;
2)假设出租车司机只有两种出行选择:去机场或者去市区;
3)假设乘客出机场后如果发现没有适合乘坐的出租车,他们将会排队乘车,而不选择其他方式乘车;
4)假设飞机航班都不会延误都按时到达;
5)假设所有的出租车司机的收费标准都相同;
6)不考虑出租车在返回机场途中遭遇堵车等因素;
7)假设出租车司机不会中途插队;
8)假设出租车司机不会半路接客;
9)假设机场的客流量能反映出整体的实际,不考虑极度偶然的情况。
2.2符号说明
符号 含义
司机去机场收益
司机去市区收益
司机长途拉乘客的平均收益
司机短途拉乘客的平均收益
司机在机场接乘客并将其送到目的地的时间
司机在市区接乘客并将其送到目的地的时间
司机的平均收益
某司机前面排队的司机人数
机场内的乘客人数
乘客的目的地和机场之间的距离
乘客选择打车的概率
服务中的乘客数
队列中的乘客数
乘客在队列中的等待时间
载客人数比重矩阵
乘客人数比重矩阵
乘客上车过程所需时间
出租车上客的通行能力
三、模型的建立与求解
3.1 问题一
3.1.1问题分析
对于问题一,出租车司机如何选择可以转换为去机场拉客利润大,还是去市区拉客利润大,为此我们建立出租车的收益模型。同时我们查阅资料后,我们归纳出影响出租车司机决策的相关因素:
1)司机在接到乘客之前的排队时间。
2)此阶段油价的高低。
3)机场乘客的数量多少
3.1.2模型建立:
针对第一问,我们建立了一个司机收益模型,这个收益的标准应为单位时间收益,即每小时司机能挣多少钱。分为以下两种收益:
司机选择去机场的收益以及选择去市区的收益分别为:
式中与相同,这是为了简化计算,所以取相同的时间。
3.1.3司机在飞机场平均收益
假设在该司机前面排队的司机人数为,而机场内的乘客人数为,乘客打车去的地方和机场的距离为,乘客会选择打车的概率为,假设该司机需要等待时间才可以拉上乘客。
根据我们对符号的设定,在该时间点有的乘客选择打车,通过查阅资料我们得出机场乘客约 的人会选择出租车。通过我们的查询,在一天内郑州市接纳乘客33854人,那么约有11285人选择打车。
并且我们通过对机场乘客到来规律的分析,我们可以知道顾客的相继到达时间服从参数为8的负指数分布,而根据模型假设,此处为单处理台,服务时间 服从参数为11的负指数分布,为了简化问题规模,我们在这里假设乘客数目是无限的,那么这就是一个的单服务台模型。
对于这个排队论模型而言,可推导出以下数学公式:
式中:为机场平均每分钟坐出租车的人数,为机场平均每分钟出租车可以送走的人数,为服务强度,为机场等待的平均司机数,每名司机在飞机场的平均逗留时间。
根据条件可求得:、、
进一步我们根据公式(3)可以求得每位司机在机场的平均等待时间:
式中:
我们可以知道每位司机平均要等待75分钟,结合油费等成本,最终我们求得司机在飞机场的平均收益为41.30元/时。
考虑到从飞机场下机的人通常要前往市区,并且其距离有远有近,,为了简化计算难度,因此我们假设机场乘客目的地均为紫荆山广场,所以行程距离都等于都前往郑州紫荆山广场的距离。通过实际调查得出:
对于郑州的出租车而言,起步价为六元,每公里1.5元超过12公里还需加收单程费用,也就是每公里2.25元。从郑州新郑国际机场到紫荆山广场的距离为=37公里,根据以下公式可以求得毛利润=80.25元:
为了简化计算量,我们假设司机所用均为95号汽油,该汽油在河南的油价为,查阅相关数据可知:对于出租车一般每百公里耗油8~10升,我们选择其平均值即:每百公里耗油。
根据以下公式:
求得出租车司机每公里的油耗费用=0.64元。
经过查阅资料得出,出租车每天大约开300公里,假设每天行驶10个小时,那么每小时就是三十公里,那么这路上就要消耗的时间为=1.23小时。由公式(6)
上式中: 从郑州新郑国际机场到紫荆山广场的距离, 为出租车司机每公里的油耗费用,为净耗时,为净利润,为净平均收益。
由上述公式我们得出司机在飞机场的净平均收益元/时
接着我们通过分析资料,得出以下数据:
表1 0:00到14:00乘客比重表
时间 比重 时间 比重
0:30 2.18 10:30 1.85
1:00 1.06 11:00 3.49
1:30 0.87 11:30 0.74
2:00~8:00 0.00 12:00 2.61
8:30 1.00 12:30 2.51
9:00 2.63 13:00 1.53
9:30 1.30 13:30 0.21
10:00 2.86 14:00 0.59
表2 14:00到23:00乘客比重表
时间 比重 时间 比重
14:30 0.82 19:00 1.78
15:00 3.40 19:30 1.55
15:30 0.77 20:00 0.81
16:00 1.64 20:30 0.44
16:30 0.76 21:00 1.03
17:00 3.47 21:30 0.97
17:30 0.82 22:00 1.55
18:00 0.58 22:30 0.57
18:30 1.05 23:00 0.59
通过分析我们可以知道不同时刻相对于平均人流量的比重,那么每一时间段得实际净收益M可以根据公式(7)求得:
式中:为不同时刻的权重。
3.1.4司机在市区的平均收益
我们通过查阅大量数据[7],经统计分析得出城市内市民打车出行距离的长短,如下表所示:
表3:三个城市里乘客的出行距离
距离/km A城市 B城市 C城市
乘客频繁出行距离 2.90km 1.00km 1.70km
平均出行距离 6.30km 3.10km 4.20km
分析上表,我们可以知道:对于到达市区的司机而言,所拉的客人大部分出行距离比较短,很少有超过十公里的出行距离。为了简化问题,我们根据公式(7)在这里认为郑州市的出租车平均距离为km
经查阅资料[7]可知,市区居民平均出行时间约为15分钟,郑州市的出租车速度为30km/h,进而可以求出每分钟出租车行驶路程。同样我们经过分析数据[7],我们得到该司机的空载时间约为14分钟。
由问题假设可知,出租车司机不会中途拉客,到达市区后立刻拉到客人,拉客15分钟后即进入14分钟的空载时间。从机场到市区耗时,那么总时间 ,由公式(8)求出司机的收支为(按7.50公里计算):
同样的,我们查阅资料得到下表7、表8 市区载客比重表
表4 0:30到11:30司机在市区的载客比重表
时间 比重 时间 比重
00:30 0.82 7:30 1.78
1:30 3.40 8:00 1.55
2:30 0.77 8:30 0.81
3:30 1.64 9:00 0.44
4:30 0.76 9:30 1.03
5:30 3.47 10:00 0.97
6:00 0.82 10:30 1.55
6:30 0.58 11:00 0.57
7:00 1.05 11:30 0.59
表5 11:30到21:00司机在市区的载客比重表
时间 比重 时间 比重
12:30 1.75 17:00 1.59
13:00 1.77 17:30 1.67
13:30 1.76 18:00 1.72
14:00 1.70 18:30 1.76
14:30 1.62 19:00 1.79
15:00 1.55 19:30 1.82
15:30 1.50 20:00 1.83
16:00 1.58 20:30 1.81
16:30 1.64 21:00 1.65
根据上表司机可以通过下面公式求出各个时段内得收益:
综述我们可以通过公式(7)和公式(9),得到不同时段去机场和去市区得利润,通过比较就可以知道选择去哪利润更大.
3.2 问题二
3.2.1问题分析
在本问中我们选择9月11日郑州新郑机场接纳的客流量及出租车相关数据。并结合我们第一问中提出的决策模型,给出司机的选择方案。我们在第一问中已求出司机在飞机场的平均收益,司机在市区的平均收益,再结合乘客人数比重和载客比重即可求得司机各个时间段在飞机场和市区的收益,两者比较即可得出司机的实际选择方案。
3.2.2数据分析
首先我们将得到的一天客流量按照半小时一个时间段进行分段,得到:
表6 0:30到14:00机场客流量图
时间 人数 时间 人数
0:30 1538 10:30 1302
1:00 746 11:00 2458
1:30 612 11:30 522
2:00~8:00 0 12:00 1839
8:30 708 12:30 1768
9:00 1852 13:00 1078
9:30 914 13:30 150
10:00 2018 14:00 414
表7 14:00到23:00机场客流量图
时间 人数 时间 人数
14:30 576 19:00 1256
15:00 2396 19:30 1096
15:30 546 20:00 572
16:00 1154 20:30 312
16:30 534 21:00 726
17:00 2446 21:30 684
17:30 576 22:00 1096
18:00 406 22:30 400
18:30 741 23:00 418
由两表数据可知:
1)每天以14:00为分割线,两边均有不同的峰值波动。
2)前半日人流量随着时间先增加后减少再增加,
3)后半日的人流量随着时间先猛增至最大然后减少再增加在减少
4)对于23:00到次日0:30时的客流量较少可忽略不计
进一步分析数据,我们使用matlab作图对上述表格做了处理,得到了下图
图1 机场客流量直方图
我们将一天均分为了48个时段,表中的0-1就代表着0:00-0:30.
根据图和表我们可以十分轻易地看出一天客流量内的三个特点:
(1)1:30到8:00这段时间内飞机场是没有乘客到达的
(2)半小时内的最高到达人数为2446人,不过出现这种情况的时间段比较少,半小时到达乘客人数超过2000人的只有两小时
(3)半小时内到达乘客人数在750人(不计算无乘客到达的情况)以内的时间段最多,约有10个小时。
同理,我们处理得到市区的乘客数量直方图。
3.2.3模型的求解
根据第一问建立的决策模型,我们可以知道司机在飞机场的平均收益,司机在市区的平均收益。再将本题中收集的乘客数据做成乘客比重,进而得出乘客比重矩阵,就可以求出司机各个时间段在飞机场的收益。
表8 0:00到14:00乘客比重表
时间 比重 时间 比重
0:30 2.18 10:30 1.85
1:00 1.06 11:00 3.49
1:30 0.87 11:30 0.74
2:00~8:00 0.00 12:00 2.61
8:30 1.00 12:30 2.51
9:00 2.63 13:00 1.53
9:30 1.30 13:30 0.21
10:00 2.86 14:00 0.59
表9 14:00到23:00乘客比重表
时间 比重 时间 比重
14:30 0.82 19:00 1.78
15:00 3.40 19:30 1.55
15:30 0.77 20:00 0.81
16:00 1.64 20:30 0.44
16:30 0.76 21:00 1.03
17:00 3.47 21:30 0.97
17:30 0.82 22:00 1.55
18:00 0.58 22:30 0.57
18:30 1.05 23:00 0.59
据此我们就可以求出司机在飞机场各个时间段的的收益。
同理可得,司机在市区拉客的各个时间段的收益。
最终我们通过对两者的收益进行做差,并整理数据,做出了不同时段的收益差值图。
图2 收益差值图
由上图我们可以得到:
1)在0:301:30、8:309:00、9:3011:00、12:0013:30、14:30~15:00的时间里,司机选择去机场的利润更高。
2)在2:008:30、9:009:30、13:0014:30、17:0018:30、20:00~23:30的时间里,司机选择去市区的利润更高
3.2.4选择方案对相关因素的依赖性
经过我们分析可知,选择方案会对以下三个因素产生依赖性
1)乘客的数量(包括飞机场和市区)。
2)司机在接到乘客之前的排队时间
3)此处油价的高低。
在这三个因素中,我们通过编程分析数据,我们得出三种因素在选择方案中的依赖程度为 ::=5.7:3.2:1.1。
3.3问题三
3.3.1问题分析
针对问题三,经分析本题的目的是在双并行车道的条件下,同时保证车辆和乘客安全的条件下,如何设置乘客上车点,使得总的乘车效率最高,因此我们只需要乘客与出租车司机满足动态平衡即可,所以我们假设此时乘客和出租车都足够多,建立排队论模型。为此我们通过查阅大量资料,得到乘客上车时间,出租车从等待区到泊位的时间。
而VISSIM作为一种微观交通仿真工具,由于它可以动态、直观的模拟交通运行场景而被广泛应用与交通系统运行的分析与评价,因此我们可以通过仿真模型VISSIM分析并得出泊位数量与通行能力的关系,通行能力越大说明乘车效率越高,最后得出最佳的上车设置点和划分方法。
3.3.2 VISSM建模逻辑分析
经查阅资料可得,车辆放行控制员以信号的方式( 如:吹哨) 开始放行车辆,当上客泊位停满以后,以信号的方式停止放行车辆,待客车辆被阻止在蓄车区等待下一次放行;乘客放行控制员在车辆停稳后,以信号的方式开始放行乘客,当放行的乘客数量与泊位区车辆数相匹配时,以信号的方式停止放行乘客,后续乘客在队列中等待下一次被放行。
3.3.3仿真参数的确定及模型的建立[13]
1.1仿真参数的确定
在浦东机场 T1航站楼到达高峰时段,作者对其出租车上客区进行了视频采集 ,通过对所采集数据的分析和整理,得出如下参数:
1)从第一辆车从蓄车区被放行开始,到其在第一个泊客位停稳所需的时间服从均值为5s,偏差为2s的均匀分布。
2)在上客区内,从前方车辆在泊客位停稳后,到其紧后车辆在其紧后泊位停稳所需的时间均服从均值为2.5s,偏差为1s的均匀分布。
3)乘客上车过程所需时间:
通过视频的分析,统计了250辆出租车的上客时间( 从乘客走到出租车 附近 到乘客完成上车过程),最短时间为30s,最长时间为90.7s,以10s的时问间隔进行统计,可得下表所示数据:
表10:乘客上车时间与车辆数的统计表
时间区域/s 车辆数/辆 时间区域/s 车辆数/辆
29.3~39.3 100 39.4~49.3 90
49.4~59.3 30 59.4~69.3 16
79.4~89.5 10 89.6~99.5 4
对上表做数据处理,得到其乘客上车时间频数折线图,如图6,我们直观可以看到该趋势线近似指数分布,同时,计算这250个随机变量的方差系数为0.88,可以近似认为乘客上车时间近似服从均值为54s的指数分布。
图3 乘客上车时间频数分布图
3.3.4 VISSM模型模拟结果及数据分析
1.1启动模型,
先以泊位数为4,进行每一轮模拟,开始于第一辆车驶入上客区,终于最后一辆车驶离泊位,为减少偶然因素对模拟结果的影响,运行2000次,得到4个泊位的统计信息表,如表6所示:
表11 泊位占用相关数据统计信息(4泊位)
停车位数 服务车辆数/辆 平均服务时间时间/s 忙闲率
1 2000 26.47 34.2
2 2000 34.76 45.7
3 2000 45.92 56.9
4 2000 52.15 65.1
通过以上分析,出租车上客系统的通行能力可以用下面公式表示:
式中:为载客系数;为泊位数量;为模拟总轮数;为模拟终止时,模拟时钟的值,时间单位为小时。
根据公式(9),当配备4个泊位时,出租车上客系统通行能力为435人/小时。
1.2泊位数量对通行能力的影响分析
双车道出租车上客系的通行能力的大小与泊位数量有关,增加泊位数量,通行能力增加,边际通行能力减少,但当泊位数量超过某个值的时候,通行能力会减小,本文建立了12个仿真模型,分别模拟泊位数量从2增加到20时候,通行能力的变化情况。模拟结果如表12所示。
表12 :不同泊位数与通行能力关系汇总表
停车位个数 停车位的利用率 模型运行时间 通行能力/(人/小时) 边际通行能力
2 30.6 23086 240 340
4 38.4 32408 435 210
6 45.4 40966 507 180
8 57.3 48687 651 130
10 64.1 55158 790 100
12 72.9 62661 860 63
14 74.3 71895 950 30
16 75.6 85460 958 6
18 77.1 10339 960 2
20 78.8 129490 852 -11
表12的统计结果显示:随着泊位个数的增加,泊位的利用率变大,但是边际通行能力呈下降趋势,当泊位数量为14时,增加两个泊位,通行能力增加8人 ,以载客系数为1.47计,每小时通过出租车的数量增加8辆,当泊位数为16时,每小时通过出租车的数量增加2辆,通行能力的提高不明显,同时随着泊位数量的增加 ,出租车上客区的管理难度增加,不安全因素增加,因此,本次仿真实验表明:双车道出租车上客区的最佳泊位数量为14或16。此时乘客乘车效率最高。
以上分析结果可看出,除了泊位个数以外,影响通行能力的另一个重要因素是上客时间的波动,由于时间所限我们不再对上客时间这个因素进一步分析。现我们给出双车道情况下的最佳上车点,如图4所示:
图4 上车点的设置
我们选择在双车道安置14个上车点,每边就是7个上车点。出租车司机从地下蓄车场出来进入排队,等待管理人员吹哨,每次14辆出租车进入接客区,待这14辆出租车都驶离接客区后,管理人员放下一批出租车司机进入。
3.4问题4
3.4.1问题分析
本题的目的是为了给拉短途的司机一定的优先权,以降低他们的损失,鼓励他们拉短途乘客。题中机场的出租车载客收益与载客的行驶里程有关,我们在此处定义3公里为短途出租车拉乘客跑的距离,定义18公里为拉长途出租车跑的距离。那么很显然,拉长途出租车与拉短途出租车要等候一样的时间,而拉长途出租车赚的要比拉短途出租车多很多,我们认为机场所能给与的优先权就是通过单独设置行车通道这类的办法来降低拉短途出租车的等待时间。
3.4.2计算拉长途司机与拉短途司机的平均收益
根据之前建立的模型,我们这里认为司机的速度为30公里/时。
那么对于拉长途出租而言,往返用时=1.2h,由我们之前建立的模型可知,司机的平均等待时间为1.25h,则拉长途出租拉一次乘客总用时为2.25h。由我们上文建立的模型可知,每公里的油耗为0.64元,则拉长途的司机往返的收益如下:
对于拉短途出租而言,往返收益为:
3.4.3求出飞机场需要降低等待时间到多少
显然飞机场在给完拉短途出租车“优先权”之后,短途出租车的平均收益需要增加到和长途出租车平均收益一样。那么在收益不变的前提下,假设其平均收益为22.90元/时,那么其往返时间=8.16/22.90=0.36小时,那么拉短途出租在机场的时间为0.36-0.20=0.16小时。
3.4.4给出优先安排方案
出租车原本在机场的平均等待时间为1.25小时,现在要将其减为0.16小时,这需要专门为拉短途出租车司机提供专用的停车区,并且优先让他们出行,这样才可使得大多数司机的收益达到一种平均的状态。
四、模型评价与推广
4.1模型的优点
通过建立司机收益模型,在假设的条件下,运用排队论和相关数学知识,求出了在每天的不同时段,司机选择去机场的利润大,还是去市区的利润大。同时采用MISSIM模型,进行模拟机场接客,研究设置上车点个数与乘车效率的关系,最后得到在最佳上车点个数14时,乘车效率最大。我们的方案思路清晰,建立模型可靠,并且有大量的数据支撑,结果有很强说服力。
4.2模型的缺点
1)由于模型中考虑的因素不是很全面,在运用matlab处理分析数据时,难免会有误差;
2)模型的假设考虑得不是很周到,忽略了一些有用的因素。
4.3模型的推广
每种模型都有擅长解决的问题和其适用的范围,本模型作为机场出租车调度的参考,
具有借鉴意义;当然也可以应用于类似的场景,如:高铁站出租车的调度,火车站出租车的调度等
五、参考文献
[1] 过秀成,道路交通运行分析基础。南京,东南大学出版社,2009.
[2] 韩中庚. 数学建模方法及应用[M]. 北京:高等教育出版社,2005.
[3] 黄新民.MATLAB在数学建模竞赛中的应用.广西大学学报,2003.
[4] 孙健,丁日佳,陈艳艳,基于排队论的单车道出租车上客系统建模与仿真.中国矿业大学,2017.5.
[5] 常瑶,基于排队论的西安国际港务区公交优化研究,山西建筑,2013.1.
[6] 苏金明,阮沈勇,王永利.MATLAB工程数学[M].北京:电子工业出版社,2005.
[7] 张凌,出租车乘客和司机的行为模式研究,大连理工大学硕士学位论文,2017.
[8] 刘文安,概率论与数理统计 [M].北京:高等教育出版社,2011.
[9] Cleve Moler,MATLAB之父:编程实践[M].北京:北京航空航天大学出版社,2014.
[10] 过秀成,道路交通运行分析基础。南京,东南大学出版社,2009.
[11] 孔慧心,城市客流分布与出租车出行路线推荐算法的研究.北京邮电大学,2015.
[12] 马云飞,基于出租车轨迹点的居民出行热点区域与时空特征研究.南京师范大学,2014.
[13] 基于VISSIM的首都机场出租车上客方案比较研究.北京交通大学,2013.
六、附录
附录1:新郑国际机场人流量表
航班 起飞时间 到达时间 载客数量
CZ9356 7:35 8:58 150
MU5395 7:35 8:58 162
MU9345 8:11 9:42 162
FM9345 8:11 9:42 150
MU9567 9:12 10:44 162
FM9567 9:12 10:44 150
CZ3592 10:39 12:03 150
MU9456 12:24 13:54 162
MU4883 14:05 15:33 162
HO1069 14:05 15:33 128
MU9329 14:53 16:23 162
CZ9355 16:31 18:03 150
MU5385 16:31 18:03 162
FM9323 17:05 18:33 150
AA7062 19:47 21:20 122
CZ3594 19:47 21:20 150
MU9321 19:56 21:27 162
CZ3598 22:32 0:07 150
FM822 22:55 0:21 150
MU9822 22:55 0:21 162
ZH1391 9:35 10:54 162
CA1391 9:35 10:54 128
NZ3863 9:35 10:54 128
ZH1331 20:19 21:36 128
NZ3903 21:19 22:36 150
CA1331 21:19 22:36 128
AQ1029 6:24 8:19 122
CZ6611 7:20 9:15 150
MU3399 9:36 11:30 162
CZ6631 9:36 11:30 150
PN6381 9:53 11:50 128
HU7739 10:06 11:57 128
CZ6625 11:44 13:34 150
CZ3960 12:53 14:46 150
MU3434 14:36 16:42 162
CZ3972 14:36 16:42 150
3U3198 16:56 18:58 122
CZ3394 16:56 18:58 150
Y87719 18:01 19:55 162
HU7719 18:01 19:55 128
MF1546 18:52 20:43 162
MU3435 18:52 20:43 162
CZ3396 20:00 21:55 150
MF1541 20:00 21:55 162
MU3436 20:00 21:55 162
CZ3390 21:31 23:29 150
MF1543 21:31 23:29 162
MU3433 21:31 23:29 162
CZ3392 21:31 23:29 150
GJ8781 6:50 8:07 128
MF5119 7:20 8:35 162
SC7085 7:20 8:35 158
G58725 7:20 8:35 128
3U8953 7:20 8:35 122
JD5635 9:37 11:00 210
MF1085 10:45 12:12 162
3U3080 10:45 12:12 122
CZ3746 10:45 12:12 150
MU9295 11:08 12:36 162
FM9295 11:08 12:36 150
MF1089 13:21 14:48 162
3U3107 13:21 14:48 122
MU3328 13:21 14:48 162
CZ3939 13:21 14:48 150
3U4233 15:12 16:44 122
CZ5087 15:12 16:44 150
NS8243 15:12 16:44 150
MF8243 15:12 16:44 162
MF1086 21:42 23:03 162
3U3094 21:42 23:03 122
CZ3840 21:42 23:03 150
CA4779 6:54 8:46 128
G58348 6:54 8:46 128
SC4779 6:54 8:46 158
SC8083 7:45 9:37 158
CA8083 7:45 9:37 128
G58418 7:45 9:37 128
NS8275 8:50 10:46 150
MF8275 8:50 10:46 162
3U4237 8:50 10:46 122
CZ5093 8:50 10:46 150
NS8335 10:37 12:29 150
MF8335 10:37 12:29 162
CZ5124 10:37 12:29 150
JD5383 11:18 13:04 210
FU7445 12:26 14:18 215
HU7445 12:26 14:18 128
CA4735 12:33 14:33 128
SC4735 12:33 14:33 158
MF8329 14:56 16:56 162
NS8329 14:56 16:56 150
CZ5122 14:56 16:56 150
CZ5138 16:57 18:50 150
NS8357 16:57 18:50 150
MF8357 16:57 18:50 162
ZH4956 19:49 21:37 128
SC8296 19:49 21:37 158
CA8296 19:49 21:37 128
CZ6232 20:32 22:21 150
MU2759 8:17 9:30 162
NX088 10:07 12:09 150
CA5474 10:07 12:09 128
ZH3392 10:07 12:09 162
CZ9635 7:21 8:49 150
3U8857 7:21 8:49 122
G58154 7:39 9:13 128
TV6341 7:39 9:13 150
ZH4277 7:39 9:13 210
CA4277 7:39 9:13 128
CZ3474 11:10 12:38 150
3U3060 11:10 12:38 122
8L9629 15:55 17:27 162
3U3058 16:35 18:07 122
CZ3472 16:35 18:07 150
CA4045 16:46 18:14 128
3U8721 20:58 22:26 122
3U3142 23:01 0:29 122
CZ6472 23:01 0:29 150
G58388 8:21 9:40 128
SC4969 8:21 9:40 158
CA4969 8:21 9:40 128
G58340 13:48 15:10 128
SC4755 13:48 15:10 158
CA4755 13:48 15:10 128
MU5253 14:55 16:40 162
PN6262 22:48 0:07 128
CZ3024 12:17 14:35 150
AE5993 12:17 14:35 122
AE993 14:30 17:25 122
CZ4751 14:30 17:25 150
FU6529 7:57 9:58 215
3U4211 8:09 10:02 122
CZ5012 8:09 10:02 150
NS8055 8:09 10:02 150
MF8055 8:09 10:02 162
NS8251 13:38 15:31 150
MF8251 13:38 15:31 162
CZ5089 13:38 15:31 150
HU7850 16:40 18:30 128
EU1844 17:23 19:15 185
CZ6918 17:31 19:25 150
MF1135 17:31 19:25 128
GS7843 10:21 11:39 128
Y87529 6:16 8:15 162
PN6321 6:08 8:12 128
HU7255 8:04 10:04 128
KY9341 8:27 10:33 150
ZH9341 8:27 10:33 128
DZ6263 8:25 11:05 158
MF1452 9:36 11:36 128
CZ3976 9:36 11:36 150
Y87525 10:24 12:26 162
CZ6389 11:35 13:36 150
ZH9303 12:57 14:57 128
CA3417 12:57 14:57 128
KY9303 12:57 14:57 150
HO3811 12:57 14:57 128
DZ6219 13:32 15:35 158
CZ6336 14:26 16:36 150
MF1462 14:26 16:36 128
GS5755 15:53 17:57 128
HU7755 15:53 17:57 128
CZ6478 18:26 20:29 150
CA3419 22:27 0:32 128
HO3813 22:27 0:32 128
3U4069 22:27 0:32 122
ZH9305 22:27 0:32 128
KY9305 22:27 0:32 150
CZ3974 21:56 0:27 150
MF1450 21:56 0:27 128
PN6312 23:26 1:25 128
SC8935 7:54 9:35 158
ZH4005 7:54 9:35 128
CA8935 7:54 9:35 128
GS6415 9:32 11:10 128
PN6280 9:21 10:51 128
HU7646 10:11 11:44 128
8L9598 11:00 12:33 162
DZ6308 12:31 14:08 158
ZH9388 14:50 16:25 128
CA3688 14:50 16:25 128
KY9388 14:50 16:25 150
MF8046 15:01 16:38 128
NS8046 15:01 16:38 150
HU7826 18:00 19:33 128
CZ6644 21:34 23:08 150
EU2770 7:07 9:21 185
ZH9727 9:34 11:34 128
KY9727 9:34 11:34 150
CA3533 9:34 11:34 128
CZ6576 13:18 15:28 150
CZ8570 19:19 21:22 150
CA3622 21:17 23:20 128
KY9038 21:17 23:20 150
ZH8352 21:17 23:20 150
3U8847 7:42 10:01 122
8L9973 7:46 10:09 162
CZ6370 8:21 10:28 150
3U3164 8:21 10:28 122
MU9542 12:19 14:43 128
FM9542 12:19 14:43 150
PN6390 14:13 16:47 128
ZH3177 14:39 16:58 128
CA5777 14:39 16:58 128
KY8277 14:39 16:58 150
CZ3492 15:37 17:49 150
3U3168 16:54 19:03 122
KY8229 16:54 19:03 150
CZ6602 16:54 19:03 150
8L9951 18:01 20:16 162
MU5576 18:54 21:09 128
MU5839 20:42 22:58 128
8L9651 21:48 0:05 162
CZ3496 22:14 0:27 150
SC9808 22:50 1:01 158
KY9482 22:50 1:01 150
ZH8370 22:50 1:01 128
MU9895 17:18 19:01 128
MF8045 8:52 10:50 128
NS8045 8:52 10:50 150
PN6282 9:42 11:27 128
PN6376 12:56 14:50 128
NS8213 13:59 15:48 150
MF8213 13:59 15:48 128
8L9562 19:25 21:35 162
GS6599 7:27 8:27 128
CZ4925 7:40 8:55 150
3U8317 7:40 8:55 122
PN6273 9:14 10:39 128
3U3178 9:25 10:43 122
CZ6650 10:07 11:33 150
DZ6282 11:20 12:31 158
CZ8143 11:20 12:31 150
OQ2343 11:20 12:31 110
CZ6354 12:42 14:05 150
CZ3476 15:56 17:15 150
GS6583 19:19 20:47 128
CZ3480 22:31 23:45 150
CZ6359 9:20 12:15 150
CZ6552 13:55 18:50 150
CZ6243 15:35 18:35 150
8L9660 15:50 19:00 162
3U1618 16:24 20:49 122
EU2252 16:24 20:49 185
HU7645 17:13 19:58 128
HU7685 19:21 22:07 128
附录2:一天内的时刻及对应载客量
时刻 载客量 时刻 载客量 时刻 载客量
0:30 1538 8:30 708 16:30 534
1:00 746 9:00 1852 17:00 2446
1:30 612 9:30 914 17:30 576
2:00 0 10:00 2018 18:00 406
2:30 0 10:30 1302 18:30 741
3:00 0 11:00 2458 19:00 1256
3:30 0 11:30 522 19:30 1096
4:00 0 12:00 1839 20:00 572
4:30 0 12:30 1768 20:30 312
5:00 0 13:00 1078 21:00 726
5:30 0 13:30 150 21:30 684
6:00 0 14:00 414 22:00 1096
6:30 0 14:30 576 22:30 400
7:00 0 15:00 2396 23:00 418
7:30 0 15:30 546 23:30 1625
8:00 0 16:00 1154 00:00 0
附录3:matlab源程序
clc;clear
x = xlsread(‘try1.xlsx’,‘sheet1’,‘A1:A33’)
y = xlsread(‘try1.xlsx’,‘sheet1’,‘B1:B33’)
s = 20*ones(33,1)
scatter(x,y,s,[1 0 0],‘filled’)
set(gca,‘xtick’,0:1:24)
set(gca,‘ytick’,02500)
xlabel(‘Time’)
ylabel(‘Number’)
clc;clear
x = xlsread(‘try1.xlsx’,‘sheet1’,‘A1:A33’)
y = xlsread(‘try1.xlsx’,‘sheet1’,‘B1:B33’)
%a = histogram(y,48)
%b = histogram(y,[1:0.5:24])
%s = 20*ones(33,1)
%scatter(x,y,s,[1 0 0],‘filled’)
%set(gca,‘xtick’,0:1:24)
%set(gca,‘ytick’,02500)
%xlabel(‘Time’)
%ylabel(‘Number’)
a = [1538 746 612 0 0 0 0 0 0 0 0 0 0 0 0 0 708 1852 914 2018
1302 2458 522 1839 1768 1078 150 414 576 2396 546 1154 534
2446 576 406 741 1256 1096 572 312 726 684 1096 400 418]
bar(a)
a = [1538 746 612 0 0 0 0 0 0 0 0 0 0 0 0 0 708 1852 914 2018
1302 2458 522 1839 1768 1078 150 414 576 2396 546 1154 534
2446 576 406 741 1256 1096 572 312 726 684 1096 400 418]
b = a/705.29
c = [1:0.5:24]
plot(c,b)
clc;clear
x = xlsread(‘try1.xlsx’,‘sheet1’,‘A1:A246’)
y = xlsread(‘try1.xlsx’,‘sheet1’,‘B1:B246’)
X = x24
s = 20ones(246,1)
scatter(X,y,s,[1 0 0],‘filled’)
%plot(X,y)
%axis([0 24 0 250])
set(gca,‘xtick’,0:1:24)
set(gca,‘ytick’,0:10:250)
xlabel(‘Time’)
ylabel(‘Number’)
注:矩阵a中的元素应该为一列,我们考虑到排一列所占篇幅太长才如此写。
附录4:VISSIM仿真模型源程序
import gpssjv. : //须引入gpssjv 仿真包
public class SingleLane一5 extends BlockOp
{
//模型类为公有且须继承仿真包的BlockOp类
public void run(){
blockMax(200);
setModel(this);
start(1000);//以下写模型控制语句
}
Switch passengerSwitch=new Switch();
Switch taxiSwitch- ~aew Switch();
Savevalue cycleTim e=new Savevalue(0);
Addr next=new Addr();
Addr toBerth2=new Addr0 ;
Addr toBerth3=new Addr0 ;
Addr toBerth4–new Addr0 ;
Addr toBerth5=new Addr0 ;
Facility berthl–new Facility ();
Facility berth2–new Facility ();
Facility berth3–new Facility ();
Facility berth4=new Facility();
Facility berth5–new Facility ();
Tab1e cycleT=new Table(55,5,20);
boolean canDriveln0 {
retum berth5.FN U 0 & & passengerSw itch.L R 0 & &
taxiSw itch.L R 0 ;
}
//建立仿真模型
public void sim ulate(){
sw itch(nextB lock){ //以下 写仿真模 型语句
case 10: generate(0,0,0,1 000);
case 15: test(T .canD riveln0 );
case 20: cycleTim e.saveV alue(A C $0 );
case 25: taxiSw itch.1ogie(SET );
case 30: advance(5,2);
case 40: split(1,toBerth2);
case 50: berth1.seize();
case 55: advance(4,2);
case 60: advance(expntl(2.15));//乘客上车过程
case 70: berth1.release();
case 80: terminate();
case 90:A (toB erth2);advance(2.5,1);
case 100: split(1,toB er t h3);
case 110: berth2.seize();
case 115: passengerSwitch.1ogic(SE T);
case 116: advance(3,1);
case 120: advanee(expntl(2,1 5));
case l30: gate(N U ,ber t h1);
case 140: berth2.release();
case 150: terminate();
case 160:A(toBerth3);advance(2.5,1);
case 170: split(1,toBerth4);
case 180: berth3.seize();
case 185: advance(8,4);
case 190: advance(expntl(2,15));
case 200: gate(NU ,berth2);
case 210: berth3.release();
case 220: term inate();
case 230:A(toBerth4);advance(2.5,1);
case 240: split(1,toBerth5);
case 250: berth4.seize();
case 255: advance(12,61;
case 260: advanee(expntl(2,15));
case 270: gate(N U , berth3);
case 280: berth4.release();
case 290: terminate();
case 300:A (toBerth5);advance(2.5,1);
case 310: berth5.seize();
case 315: advance(15,6);
case 320 : advance(expntl(2,1 5));
case 330: gate(NU , berth4);
case 340: berth5.release();
case 345: taxiSwitch.1ogic(RESET);
case 350: cycleT . tabulate(AC$0 一cycleTim e.xs0 );
case 360: term inate(I);
//乘客子模块
case 500: generate(0,0,0,1 000);
case 510: gate(LS,passengerSw itch);
case 520: passengerSw itch.1ogic(RESET);
case 530: assign(1,5);
case 540:A (next);advance(1,0.5);
case 550: loop(1,next);
case 560: terminate();
case 1000:
end();
}
}
}
附录5:python源程序
import requests#获取数据
from bs4 import BeautifulSoup
import traceback
import re
def getHTMLText(url):
try:
r = requests.get(url)
r.raise_for_status()#这是对获取网页内容过程中做的一个判断,如果有误则报错,如果无误,顺利运行,一般不用管它
r.encoding = r.apparent_encoding
return r.text
except:
print(“getHTMLText函数出错”)#这部分代码常常被复用,基本上获取页面信息都用这部分代码
def getStockList(lst, stockURL):#获取股票信息列表,lst是列表保存的列表类型,存储了所有股票的信息,stockURL是获取股票列表的URL网站
html = getHTMLText(stockURL)
soup = BeautifulSoup(html, "html.parser")#郑州新郑机场
a = soup.find_all("a")#使用find_all方法找到a标签
for i in a:#遍历
try:
herf = i.attrs["href"]
lst.append(re.findall(r"[s][hz]\d{6}",herf)[0])#
except:
continue#可能会有异常,让程序继续运行就可以了
def getStockInfo(lst, stockURL, fpath):#
for stock in lst:#stock是列表lst里面的内容,
url = stockURL + stock +".html"#https://gupiao.baidu.com/stock/sh601899.html #后面六位数则是编号
html = getHTMLText(url)
try:
if html == “”:
continue#continue的用处很大嘛
infoDict = {}#我们定义了一个字典,里面存放所有飞机信息
soup = BeautifulSoup(html, “html.parser”)
stockInfo = soup.find(“div”,attrs={“class”:“stock-bets”})
name = stockInfo.find_all(attrs={“class”:“bets-name”})[0]
infoDict.update({“股票名称”:name.text.split()[0]})#
keyList = stockInfo.find_all(“dt”)#飞机信息的键的域
valueList = stockInfo.find_all(“dd”)#飞机信息的值的域
for i in range(len(keyList)):
key = keyList[i].text
val = valueList[i].text
infoDict[key] = val#赋值并将键值对存放到字典中,使用 key = value的办法
with open(fpath, “a”, encoding = “utf-8”) as f:
f.write( str(infoDict) + “\n”)
except:
traceback.print_exc()
continue
def main():
stock_list_url = “http://quote.eastmoney.com/stocklist.html”#美团,获取飞机列表
stock_info_url = “http://gupiao.baidu.com/stock/”#,获得每只飞机的具体信息
output_file = “F://飞机数据定向爬取//飞机数据.txt”#经过测试,如果没有这个txt文件,那么会新建一个写进去,如果有,则在该文件上写
slist = []#这个列表里面存储的是股票的信息
getStockList(slist, stock_list_url)
getStockInfo(slist, stock_info_url, output_file)
main()