2010年认证杯SPSSPRO杯数学建模
交通拥堵问题
B题 Braess 悖论
原题再现:
Dietrich Braess 在 1968 年的一篇文章中提出了道路交通体系当中的Braess 悖论。它的含义是:有时在一个交通网络上增加一条路段,或者提高某个路段的局部通行能力,反而使所有出行者的出行时间都增加了,这种为了改善通行能力的投入不但没有减少交通延误,反而降低了整个交通网络的服务水平。人们对这个问题做过许多研究,在城市建设当中也尽量避免这种现象的发生。但在复杂的城市道路当中,Braess 悖论仍然不时出现,造成实际交通效率的显著下降。在此,请你通过合理的模型来研究和解决城市交通中的 Braess 悖论。
第一阶段问题:
(1) 通过分析实际城市的道路交通情况(自行查询的数据需给出引用来 1源),建立合理的模型,判断在北京市二环路以内的路网中(包括二环路)出现的交通拥堵,是否来源于 Braess 悖论所描述的情况。
(2) 请你建立模型以分析:如果司机广泛使用可以反映当前交通拥堵情况的GPS 导航系统,是否会缓解交通堵塞,并请估计其效果。
整体求解过程概述(摘要)
本文首先通过对非合作网络中 Nash 平衡点与 Pareto 边界理论的分析,通过单起点单终点的简单路网入手, 分析 Braess 悖论的成因,Braess 悖论实质上是非合作网络中 Nash 平衡点不满足 Pareto 最优性时出现的现象。定量的给出出行时间与流量的关系,这里引入了路段延迟参数的概念,量化得到延迟参数与路段流量,出行时间,出行密度之间的关系。进而通过建立北京二环区交通路网模型,拟合出 flow ~ / L speed 关系曲线,得到各路段的延迟参数,进而得到单月内北京二环区 Pareto 最优解的判别条件。
其次,根据 Pareto 边界理论,我们以年月为单位统计北京二环以内交通流量因素,得到城区交通年延迟参数,并计算了共 120 个月的延迟参数。接着,我们构建了 Nash 均衡原理模型,引入了路段 Nash 平衡比率的概念,即当某一时间范围内,路段 Nash 平衡比率低于路段延迟参数时,则发生了 Braess 悖论,当同时又满足 Nash平衡波动率超过 30%时,为严重 Braess 悖论,从而完善了 Nash 平衡比率理论方程。
再次,根据已建立的 Nash 平衡比率理论方程,在此基础上构建小波神经网络来对北京二环区交通路网路段 Nash 平衡比率进行预测,这里我们将选择路段延迟参数为样本,根据路段延迟参数与路段 Nash平衡比率的动态关系式,对路段 Nash 平衡比率进行计算。得到结果:东城区,朝阳区路段常年持续存在 BRAESS悖论情况(平均每年超过 6 个月)。尽管我们发现坛路拓宽,普方路拓宽,永定门桥延修,天坛路改道会给北京二环区南部路段带来交通改善,但结果显示,整个北京二环路段的交通情况的平衡性变得更不稳定,BRAESS 悖论情况更加突出。譬如在 2006 年,2009 年的东城区,朝阳区路段堵塞问题更加尖锐,这也使得本来相对通畅的南段也出现 BRAESS 悖论情况。
接着,我们建立了 GPS 动态导航的车辆运行模型,量化得到了时耗期望值和时耗方差两个目标函数并作为 ATM 路由选择的约束条件,以降低 Nash 平衡比率为目标,通过ATM 路由选择进行 GPS 导航对路段影响的预测。当我们控制业务源提高 GPS 使用率时,路段 NASH 平衡比率也持续上升,使用率升至 0.34 时,NASH 平衡比率上升幅度最大化。
最后,我们通过灰色 Gompertz 模型对 ATM 路由选择算法进行误差分析,检验结果表明此抽检方案为合理方案,误差范围 5.84%。通过遗传算法对路段 Nash 平衡比率进行优化,得到最优化后的结果,证明了ATM路由选择算法对GPS动态导航研究的可靠性。
问题分析
首先分析单一路段在单一时间范围内的 BRAESS 悖论情况,然后以北京二环以内的综合路段为考虑对象,天坛路拓宽,普方路拓宽,永定门桥延修,天坛路改道的 NASH 平衡比率,并通过 MATLAB 工具 CHIP()提取出月波动率超过 30%的比率数进行标定,同时,我们将近十年的北京二环以内主要路段的 BRAESS 悖论情况进行分析,并讨论 GPS 动态导航对路段BRAESS 悖论现象的影响。
模型的假设:
(1)天气因素对 BRAESS 悖论的影响忽略不计
(2)《北京交通发展年报》及《全市综合交通调查》提供了精确无误的数据
(3)北京市区内地铁路线改造的影响忽略不计。
论文缩略图:
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:(代码和文档not free)
% III 为预测点
% X 为预测序列(一行)
% X0X 为预测值(对有 III 而言)
% Q0Q 为预测精度
% PP 为小误差概率
% C 为后验误差比
% PP>0.95 或 C<0.35 为 1 级(好)
% PP>0.80 或 C<0.50 为 2 级(合格)
% PP>0.70 或 C<0.65 为 3 级(勉强合格)
% PP<=0.70 或 C>=0.65 为 4 级(不合格)
%
% AUA=[A;U;UA;XUA];
% XEG=[XG;EG];
% PPC=[PP;C];
FUNCTION [X0X,Q0Q,PPC,PDDSTR,XII,AUA,XEG]=GM11(X,III);
%%%%%%%%%%%%%%%%%%%%%%% %例子
%X=[3.711 3.723 3.716 3.721 3.728]
%X=[2.67 3.13 3.25 3.36 3.56 3.72]
% X=[2.97 3.23 3.29 3.46 3.59 3.71]
%X=[43.45 47.05 52.75 57.14 62.64 68.52]
% X=[3.38 4.27 4.55 4.69 5.59]
% X=[4.24 4.33 5.20 6.42 7.32 8.53 8.82 10.72]
%
% X=[3.38 4.27 4.55 4.69 5.59]
% III=[ 5 6 7 8 9 10 11]
% III=[] %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% 一、数据处理 %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %1 建立 X1 生成数列
%FORMAT LONG
A12=SIZE(X);
N=A12(2);
X1=ONES(1,N);
X1(1)=X(1);
FOR I=2:N X1(I)=X1(I-1)+X(I);
END
X1;
%2 构造数据距阵 B 和数据向量 YN:
B=ONES(N-1,2);
FOR I=1:N-1 B(I,1)=(-0.5)*(X1(I)+X1(I+1));
END
YN=ONES(N-1,1);
FOR I=2:N YN(I-1,1)=X(I);
END
B;
YN;
%3 计算 B'B,INV(B'B)和 B'YN;得到参数 A 和 U
%BTB=B'*B;%
%BTB=INV(BTB);
%BTYN=B'*YN;
%AU=BTB*BTYN;
AU=INV(B'*B)*B'*YN; A=AU(1,1);
U=AU(2,1); % FPRINTF('参数 A:%F\N',A);
% FPRINTF('参数 U:%F\N',U);
UA=U/A;
XUA=X(1)-UA;
%4 得出预测模型
%预测第 I 的预测值
%有问题 % XI1=XUA*EXP((-A)*I)+UA;% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% 二、模型检验 %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%5:残差检验
%51 计算 X1
X1=ONES(1,N);
FOR I=1:N X1(I)=XUA*EXP((-A)*(I-1))+UA;
END
X1;
%52 累减生成 X0 序列
X0=ONES(1,N);
X0(1)=X1(1);
FOR I=2:N X0(I)=X1(I)-X1(I-1);
END
X0;
%53 计算绝对误差及相对误差序列
DD=ABS(X0-X);%计算绝对误差序列
DDD=(DD./X).*100;%计算相对误差序列 X%
% FPRINTF('相对误差序列:');
% FPRINTF('%F%% ',DDD);
% FPRINTF('\N');
%6 进行关联度检验
%61 计算序列绝对误差 XX
XX=ONES(1,N);
FOR I=1:N XX(I)=X(I)-X0(I);
END
% FPRINTF('序列绝对误差:');
% FPRINTF('%F ',XX);
% FPRINTF('\N'); MINXX=MIN(DD);
% FPRINTF('最小差:');
% FPRINTF('%F ',MINXX);
% FPRINTF('\N'); MAXXX=MAX(DD);
% FPRINTF('最大差:');
% FPRINTF('%F ',MAXXX);
% FPRINTF('\N');
%62 计算关联系数 P=0.5 (则 R=0.6)
P=0.5;
NI=ONES(1,N);
FOR I=1:N NI(I)=(MINXX+P*MAXXX)/(DD(I)+P*MAXXX);
END
%63 计算关联度,(P=0.5 时,则 R=0.6)
R=(1/N)*SUM(NI);
% FPRINTF('请查找 P=0.5 是的检验准则 R=0.6 是否大于%F\N',R);
%7 后验差检验
%71
XM=MEAN(X);
%72 求的均方差
S1=(SUM((X-XM).^2)/(N-1))^(1/2);
%73 计算残差的均值
DDM=MEAN(DD);
%74 计算残差的均方差
S2=(SUM((DD-DDM).^2)/(N-1))^(1/2);
%75 计算后验误差比 C:
C=S2/S1;
% FPRINTF('验误差比 C:%F\N',C);
%76 计算小误差概率
%%%%%%%%%%%%%% PR=ABS(XX-MEAN(XX))<0.6745*S1; %M 满足条件的样本
PA=SIZE(FIND(PR==1));
PS=PA(1,2); %M 满足条件的样本个数
PB=SIZE(PR);
PS=PB(1,2); %M 总样本个数 PP=PS/PS; %小误差概率
% FPRINTF('小误差概率 PP:%F\N',PP); %%%%%%%%%%%%%%%%
%检验 预测精度 YCD % FPRINTF(' PP>0.95 或 C<0.35 为 1 级(好)\N PP>0.80 或 C<0.50
为 2 级(合格)\N PP>0.70 或 C<0.65 为 3 级(勉强合格)\N PP<=0.70
或 C>=0.65 为 4 级(不合格)\N\N',C);
IF PP>0.95 PD=1;
% FPRINTF(' 因 PP>0.95 且 ');
END
IF PP<=0.95&PP>0.80 PD=2;
% FPRINTF(' 因 PP<=0.95&PP>0.80 且 ');
END
IF PP<=0.80&PP>0.70 PD=3;
% FPRINTF(' 因 PP<=0.80&PP>0.70 且 ');
END
IF PP<=0.70 PD=4;
% FPRINTF(' 因 PP<=0.70 且 ');
END PD1=0;
IF C<0.35 PD1=1;
% FPRINTF('C<0.35');
END
IF C>=0.35&C<0.50 PD1=2;
% FPRINTF('C>=0.35&C<0.50');
END
IF C>=0.50&C<0.65 PD1=3;
% FPRINTF('C>=0.50&C<0.65');
END
IF C>=0.65 PD1=4;
% FPRINTF('C>=0.65');
END PDD=MAX(PD,PD1); IF PDD==1 PDDSTR='1 级(好)';
% FPRINTF(' 故根据经验,预测精度为 1 级(好)\N\N');
END
IF PDD==2 PDDSTR='2 级(合格)' ;
% FPRINTF(' 故根据经验,预测精度为 2 级(合格)\N\N');
END
IF PDD==3 PDDSTR='3 级(勉强合格)';
% FPRINTF(' 故根据经验,预测精度为 3 级(勉强合格)\N\N');
END
IF PDD==4 PDDSTR='4 级(不合格)';
% FPRINTF(' 故根据经验,预测精度为 4 级(不合格)\N\N');