2013年国赛高教杯数学建模
D题 公共自行车服务系统
公共自行车作为一种低碳、环保、节能、健康的出行方式,正在全国许多城市迅速推广与普及。在公共自行车服务系统中,自行车租赁的站点位置及各站点自行车锁桩和自行车数量的配置,对系统的运行效率与用户的满意度有重要的影响。
附件1为浙江省温州市鹿城区公共自行车管理中心提供的某20天借车和还车的原始数据,所给站点的地理位置参见附件2(详细信息可以参考温州市鹿城区公共自行车管理中心网站:http://www.wzbicycle.com)。请你们在搞清楚公共自行车服务模式和使用规则的基础上,根据附件提供的数据,建立数学模型,讨论以下问题:
1. 分别统计各站点20天中每天及累计的借车频次和还车频次,并对所有站点按累计的借车频次和还车频次分别给出它们的排序。另外,试统计分析每次用车时长的分布情况。
2. 试统计20天中各天使用公共自行车的不同借车卡(即借车人)数量,并统计数据中出现过的每张借车卡累计借车次数的分布情况。
3. 找出所有已给站点合计使用公共自行车次数最大的一天,并讨论以下问题:
(1)请定义两站点之间的距离,并找出自行车用车的借还车站点之间(非零)最短距离与最长距离。对借还车是同一站点且使用时间在1分钟以上的借还车情况进行统计。
(2)选择借车频次最高和还车频次最高的站点,分别统计分析其借、还车时刻的分布及用车时长的分布。
(3)找出各站点的借车高峰时段和还车高峰时段,在地图上标注或列表给出高峰时段各站点的借车频次和还车频次,并对具有共同借车高峰时段和还车高峰时段的站点分别进行归类。
4. 请说明上述统计结果携带了哪些有用的信息,由此对目前公共自行车服务系统站点设置和锁桩数量的配置做出评价。
5. 找出公共自行车服务系统的其他运行规律,提出改进建议。
附件1:公共自行车数据(内含20个Excel文件)
附件2:公共自行车站点分布图
整体求解过程概述(摘要)
本文针对温州市鹿城区公共自行车管理中心提供的数据,首先对所给数据进行预处理,建立了相关统计模型,运用SPSS20.0、matlab等软件进行统计分析,最后应用关联度分析法对系统进行评价,并提出改进建议。
针对问题一:在已处理好的数据基础上,建立了频率与频数、用车时长的统计模型,利用SPSS软件分别统计各站点20天中每天及累计的借车及还车频次,得到每天和累计的借车和还车频次(见表五和表六);并对所有站点按累计的借车和还车频次排序(见表七和表八);对每次用车时长的分布情况进行统计分析,画出其分布图(见图一和图二),由图可知:每天用车时长分布形状非常相似且近似服从χ^2分布。
针对问题二:在已处理好的数据基础上,建立了使用公用自行车的不同借车卡数量的统计模型,利用SPSS统计20天中每天使用不同借车卡数量,其中最大的为第20天的19885;统计了每张借车卡累计借车次数的分布图(见图三),对图形分析可得:借车次数在10次以内的占54.86%,借车次数在10至30次占35.88%,借车次数在30至50次占7.51%,借车次数在50以上占1.75%,最大借车次数高达"182" 次。
针对问题三:根据问题一的分析,已给站点累计所用公共自行车次数最大的一天是第20天。对于第一小问:利用第20天数据,运用floyd算法求得两站点间最短时间,将站与站间的距离定义为两站间的最短时间与自行车速度之积,同时考虑到了速度和时间的随机误差影响;利用距离的定义,通过matlab计算得两站点最长距离为:675,最短距离为:0.08。利用问题一中的频数模型,对借还车是同一站点且使用时间在1分钟以上的借还车情况进行统计,得借车频次表(见表十一)和用车时间分布图(见图四)。对于第二小问:根据问题一的统计,第20天的借车和还车频次最高的站点分别为42(街心公园)和56(五马美食林),利用SPSS统计出两站点借、还车时刻和用车时长的分布图(见图五,图六,图七),由图形分析可知:借还车的高峰期与人们上下班的时间非常吻合,在借还车时间上大体都在一小时以内。第三小问:将第20天数据从6点到22点每半小时作为一时段,分别统计各站点各时段借还车频数,利用matlab编程求出借还车高峰时段(见表十二),并对具有借车高峰时段与还车高峰时段的站点进行归类。(见表十四)
针对问题四:根据前三个问题的统计结果,结合公共自行车服务指南,确定评价公共自行车服务系统站点设置和锁桩数量的配置的主要指标有:借车频数、还车频数、可借比例、可还比例、锁桩数目,建立了基于灰色关联分析法和聚类分析的公共自行车服务评价模型,得到评价结果:180个站点分成有优劣之分的三个类(见表十五)。
针对问题五:通过查阅相关资料知:公共自行车的其他运行规律主要是借还车时间有限制,用车时间集中在短时间内等。针对此问题提出了相关建议。
模型假设:
1、以自行车车站号做为借车车站的唯一标识
2、附件中所给的数据能准确描述公共自行车系统管理与运营状况
3、自行车行驶的过程中,以匀速行驶,行驶过程中不会停留
4、异常数据的剔除,不影响数据的整体性
问题分析:
题目提供了20天公共自行车借车和还车等原始数据,本文的关键就是通过分析处理所给数据,建立数学模型来研究公共自行车服务系统,并对公共自行车服务系统进行评级及提出改进建议。
问题一分析
要统计各站点20天中每天和累计的借车和还车频次,查阅资料知[1],频数为频率和频数,对于借车与还车频数,可引入0-1变量表示各站第i天借车和还车在j次记录中出现的频数,各站每天和累计的借车频数就是借出车站号在每天出现的次数和总天数的借车频数和,各站每天的借车频率是借出车站号在每天出现的次数与每天的有效数据,累计的借车频率是累计借车的频数比上总有效数据,对于借车每天及累计的频数类似,从而可建立相应的统计模型。根据以上分析,可统计出各站点20天中每天和累计的借车和还车频次,进而可对所有站点累计的借车和还车频次排序。分析每次用车时长的分布情况,可运用相关软件将分布情况作出。
问题二分析
要统计20天每天使用公共自行车的不同借车卡的数量,对于各天的借车人数相当多,为此先用相关软件对有效数据进行处理,即将重复的借车卡,累计到不同借车卡的一行中,可得到没有重复的不同借车卡数据,引入0-1变量表示第i张卡第j个数据中出现的情况,累计求和,就可得到各天不同借车卡的数量,即得相应统计模型,再运用相关软件分析每张借车卡累计次数的分布情况。
问题三分析
(1)由于站点之间的实际距离很难得到,且城市里人流量较大,自行车行驶速度不可能很大,应比较均匀,所以定义两站点之间的距离,可根据物理中距离与时间和速度的关系定义距离,其中时间的获取可通过数据中所给的站与站之间的用时加以处理后得到。该定义的距离会应不同的骑车速度和时间,导致两站点距离不同,因此速度和时间需要引进误差,且将两相同站点的距离定义为0,为此可得到距离的定义。对于借还车是同一站点且用时一分钟以上的借还车情况直接利用SPSS进行统计即可得出相应结果。
(2)根据问题一得到结果,可找到所有站点使用自行车次数最大一天,借车频次高和还车频次最高的站点,根据相应站点的数据,可应用相关软件将各站点的借、还车时刻的分布及用车时长的分布求出。
(3)题中给出数据的借车还车时间段为6:00-21:00,要求各站点借车还车的高峰时段,可对总的时间段进行划分,考虑到数据量以及统计的精确度,可采用一定时间间隔作为一个时间段,分别统计各个站点在每个事件段内的借车频数以及还车频数,则最高借还车频数对应的时间段即为高峰时段,进而能得出高峰时段各站点的借车频次和还车频次,此处统计工作量可能较大。再对其整体分析,即能得到具有共同借车高峰时段和还车高峰时段的站点的归类情况
问题四分析
要对目前公共自行车服务系统站点设置和数量的配置做出评价,要根据前几问统计的数据,找出相应的指标,根据问题一,可让借车频数和还车频数作为其中指标,从数据的初步分析来看,借车、与还车频数可能大,说明车流量比较多,从这方面,也可根据题目所提供的站点地理位置,可以知道各个站台的得可借比例(可借车位比上总车位)和可还比例(可借车位比上总车位),作为其中指标,对于数量的配置,根据各站锁桩的数量等作为其中指标,为此可得到相应指标对自行车服务系统进行评价,运用灰色关联分析法,求出各个站点的关联度,进行排序,可再用SPSS聚类分析分成三类,求出每一类的均值,从而进一步确定出类别间的优劣。
问题五分析
要找出自行车服务系统的其他运行规律并提出改进意见,要先对问题中所有数据的一个时间分布情况、借车高峰、还车高峰、以及站点中桩位设置的合理性,进行改进。而改进的方法可能从现有数据和系统流程不能解决,因此可通过查找其他服务系统中号的服务规则进行改进。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
function D=floyd(w)
D=w;
n=length(w);
path=zeros(n);
for i=1:n
for j=1:n
if D(i,j)~=inf
path(i,j)=j;
end
end
end
for k=1:n
for i=1:n
for j=1:n
if D(i,k)+D(k,j)<D(i,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
clc;clear;
data=xlsread('day_20.xls');%第一列是借车站号;第二列是还车站号;第三列是用车时长
%P为任意两点间的最小时间
min_time=ones(181)*inf;
for i=1:size(data,1)-1
if min_time(data(i,1),data(i,2))==inf
min_time(data(i,1),data(i,2))=data(i,3);
end
end
min_time;
for i=1:181
for j=i:181
min_time(i,j)=min(min_time(i,j),min_time(j,i));
min_time(j,i)=min(min_time(i,j),min_time(j,i));
end
end
P=floyd(min_time)
xlswrite('day_20_P.xls',P)
function gaofeng=gaofengqi(y)
x=zeros(size(y,1),size(y,1)-1);
x=y(:,2:end);
gaofeng=[];
for i=1:size(x,1)
[max1,index1]=max(x(i,:));
[max2,index2]=max([setdiff(x(i,:),x(i,index1)),0]);
gaofeng=[gaofeng;i,max1,index1,max2,index2];
end
function output=grayrela
x0=xlsread('参考因子与比较因子.xls','Sheet1','B2:F182')'
%计算灰色关联系数
%参考因子与比较因子共同存储在一个矩阵x0中,参考因子位于第一列
%斜率序列
for i=2:length(x0(:,1))
x1(i,:)=x0(i,:)-x0(i-1,:);
end
%标准化
m=length(x1(1,:));
for i=1:m
x2(:,i)=x1(:,i)/std(x1(:,i));
end
%排序
[y,pos]=sort(x2(:,1));
x2_sorted=x2(pos,:);
% 判定关联性质
n=length(x1(:,1));
k=[1:n]';
for j=1:m
sig_j(j)=qiuhe(k.*x2_sorted(:,j))-qiuhe(x2_sorted(:,j))*qiuhe(k)/n;
end
%caculation of distantion
for j=2:m
dist_0i(:,j)=abs(sign(sig_j(:,j)./sig_j(:,1)).*x2_sorted(:,j)-x2_sorted(:,1));
end
%计算关联系数
for i=1:n
for j=1:m
coef_rela(i,j)=(min(dist_0i)+0.5*max(dist_0i))/(dist_0i(i,j)+0.5*max(dist_0i));
end
end
for j=1:m
output(j)=qiuhe(coef_rela(:,j))/n;
end
xlswrite('day_20_Coef',output);
% function output=qiuhe(input)
% output=0;
% for i=1:length(input)
% output=output+input(i);
% end