交巡警服务平台的设置与调度-2011年全国大学生数学建模赛题
数学建模 交巡警服务平台的设置与调度
交巡警服务平台的设置与调度摘要本文主要讨论在警务资源有限的情况下,如何根据城市的实际情况和需求合理的设置交巡警服务平台、分配其管辖范围,以及调度警务资源的问题。
针对问题一,题目要求在城区A的20个交巡警服务平台位置确定的情况下,按照尽量3min到达事发地的原则为各服务平台分配管辖范围。
对于此问题,我们首先求出城区A中任意两个路口节点的最短路径ij a,基于Floyd算法,并借助Matlab软件编程求解所得。
再建立该问题的0-1规划模型,以时间最短为目标,引入0-1变量,利用数学软件LINGO进行求解,得出各个服务平台的管辖范围。
求解结果表明有6个路口28、29、38、39、61、92不能满足3分钟内有交巡警到达的条件。
我们对于13条交通要道实现快速封锁的问题,以所用时间最短为目标,一个平台最多封锁一个路口为约束条件,建立0-1规划模型,运用LINGO软件求解。
结果显示8.055分钟可以实现快速封锁。
由前面的分配结果可知,有6个路口在案发时交巡警不能在3分钟内到达,且工作量不均衡度为13.2746,为解决上述某些地方出警时间过长和工作量不均衡的问题,我们建立综合0-1规划模型,结合相关算法,求解结果表明增加4个平台时,可解决出警时间过长的问题,此时工作量不均衡度可降为3.0742。
针对问题二,首先对全市6个城区按照问题一中的方法进行分配,设定两个评价原则:原则一:交巡警能在3分钟内到达案发地;原则二:交巡警服务平台的工作量均衡度尽量小。
以这两个原则评价该市现有的平台设置方案的合理性,结果显示:582个路口中有138个路口不能满足原则一,工作量不均衡度达到40.3,现有方案不合理。
同问题一的方法来解决此问题,结果共需增设54个平台,不均衡度降为9.40。
对于围堵犯罪嫌疑犯的问题,我们首先根据213t t≤+判断出警察可在犯罪嫌疑人之前到达的边界点,然后考虑在A区封锁之前最可能经过30节点跑到C区。
因此我们在A、C两区范围内同时进行围堵,得到最后的全市最佳围堵方案和最少警力调度时间为11.055分钟。
2011高教社杯全国大学生数学建模竞赛B题(题目改变)参考答案
交巡警服务平台的设置与调度优化分析摘要本文综合应用了Floyd算法,匈牙利算法,用matlab计算出封锁全市的时间为1.2012小时。
并在下面给出了封锁计划。
为了得出封锁计划,首先根据附件2的数据将全市的道路图转为邻接矩阵,然后根据邻接矩阵采用Floyd算法计算出该城市任意两点间的最短距离。
然后从上述矩阵中找到各个交巡警平台到城市各个出口的最短距离,这个最短距离矩阵即可作为效益矩阵,然后运用匈牙利算法,得出分派矩阵。
根据分派矩阵即可制定出封锁计划:96-151,99-153,177-177,175-202,178-203,323-264,181-317, 325-325,328-328,386-332,322-362,100-387,379-418,483-483, 484-541,485-572。
除此以外,本人建议在编号为175的路口应该设置一个交巡警平台,这样可以大大减少封锁全市的时间,大约可减少50%。
关键词: Floyd算法匈牙利算法 matlab一、问题重述“有困难找警察”,是家喻户晓的一句流行语。
警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。
为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。
每个交巡警服务平台的职能和警力配备基本相同。
由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。
试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:警车的时速为60km/h, 现有突发事件,需要全市紧急封锁出入口,试求出全市所有的交巡警平台最快的封锁计划,一个出口仅需一个平台的警力即可封锁。
二、模型假设1、假设警察出警时的速度相同且不变均为60/km h 。
2、假设警察出警的地点都是平台处。
3、假设警察接到通知后同时出警,且不考虑路面交通状况。
三、符号说明及一些符号的详细解释A 存储全市图信息的邻接矩阵 D 任意两路口节点间的最短距离矩阵X 01-规划矩阵ij a ,i j 两路口节点标号之间直达的距离 ij d 从i 路口到j 路口的最短距离 ij b 从i 号平台到j 号出口的最短距离ij x 取0或1,1ij x =表示第i 号平台去封锁j 号出口在本文中经常用到,i j ,通常表示路口的编号,但是在ij d ,ij b ,ij x 不再表示这个意思,i 表示第i 个交巡警平台,交巡警平台的标号与附件中给的略有不同,如第21个交巡警平台为附件中的标号为93的交巡警平台,本文的标号是按照程序的数据读取顺序来标注的,在此声明;j 表示第j 个出口,如:第5个出口对应于附件中的路口编号为203的出口。
交巡警服务平台的设置与调度
交巡警服务平台的设置与调度摘要本文建立了交巡警服务平台设置与调度的优化模型,将出警时间和工作量作为考虑因素,设置城市交巡警服务平台,分配各平台的管辖范围,并在发生突发事件时对警务资源进行调度。
针对问题一的第一小问,根据出警时间的条件限制,初步确定城区A中20个服务平台对92个交叉路口节点的相应管辖范围,以交巡警服务平台的工作量方差最小为目标进行优化,使用lingo程序求解得到20个交巡警服务平台的管辖范围,工作量方差为2.9479。
对于第二小问,从全区20个交巡警服务平台中选取13个平台对全区13个交通要道实现了全封锁,以服务平台到达节点的最长时间最短为目标,用lingo 求得封锁时间为8.015分钟,并给出了具体的封锁方案(即选定的13个交巡警服务平台与13个被封锁要道的一一对应关系)。
对于第三小问,由于存在工作量不平衡和出警时间过长的情况,以交巡警服务平台的工作量方差最小为目标,经分析至少需要增加4个平台(节点编号分别为29,39,48,91)才能满足出警时间限制,经lingo求解得到具体服务平台分配方案,且最小方差为1.99。
针对问题二的第一小问,在全市范围内,以出警时间限制和各服务平台均衡工作量为依据,使用lingo程序计算,得到工作量方差为27.21,且有138个节点不满足出警时间要求,可知现有交巡警服务平台设置方案是不合理的。
经lingo程序计算至少需要增加54服务平台才能使这138个节点满足出警时间要求,经优化使用lingo程序求得增加平台后的方差为5.098,明显优于原方案,此分配方案更加合理。
但是由于实际警力资源的限制,增加54个平台的个数相对较多,对此我们给出对现有警力配置,重新分布并适当增加平台数目的数学模型。
对于第二小问,该模型利用蚁群算法[1]的思想,通过matlab程序模拟犯罪嫌疑人的逃窜路线,文中定义了一个新名词,即封堵有效性,以此为依据,提出一个有效且合理的嫌犯围堵方案,并且对该方案进行了可行性分析和封堵有效性检验,结果显示该模型很好。
2011年数学建模B题交巡警服务平台的设置与调度代码
ShapeX=[ ] ShapeY=[ ]N=length(ShapeX);for i=1:Nfor j=1:NDistance(i,j)=sqrt((ShapeX(i)-ShapeX(j))^2+(ShapeY(i)-ShapeY(j))^2); endendDistanceA=zeros(N);Max_V alue=zeros(N);for k=1:N[max_line,column]=max(Distance(k,:));A(k,column)=max_line;endMax_V alue(k,column)=max(max(A))[I,J]=find(Max_Value)point_start=[ShapeX(I) ShapeY(I)]point_end=[ShapeX(J) ShapeY(J)]for i=1:140for k=1:20;text(x,y,'str(k)');enddata1=[413 359403 343383.5 351381 377.5339 376335 383317 362334.5 353.5333 342282 325247 301219 316225 270280 292290 335337 328415 335432 371418 374444 394251 277234 271225 265212 290227 300256 301250.5 306243 328246 337314 367315 351326 355327 350328 342.5336 339336 334331 335371 330371 333388.5 330.5411 327.5419 344394 346342 342342 348325 372315 374342 372345 382348.5 380.5 351 377348 369370 363371 353354 374363 382.5357 387351 382369 388335 395381 381391 375392 366395 361398 362401 359405 360410 355408 350415 351418 347422 354418.5 356 405.5 364.5 405 368409 370417 364420 370424 372438 368438.5 373 434 376438 385440 392447 392444.5 383 441 385440.5 381.5 445 380444 360];data2=[1 751 782 443 453 654 394 635 495 506 597 327 478 98 479 3510 3411 2211 2612 2514 2115 715 3116 1416 3817 4017 4217 8118 8118 8319 7920 8621 2222 1323 1324 1324 2525 1126 2727 1228 2928 1529 3030 730 4831 3231 3432 3333 3433 834 935 4536 35 36 37 36 1636 3937 738 3938 4139 4040 241 1741 9242 4343 243 7244 345 4646 846 5547 48 47 647 548 6149 5049 5350 5151 5251 5952 5653 52 53 5454 6355 356 5757 58 57 6057 458 5960 6261 6062 462 8563 6464 6564 7665 6666 6766 7667 4467 6868 6968 7569 70 69 7169 170 270 4371 7271 7472 7373 7473 1874 174 8075 7676 7777 7877 1978 7979 8080 1881 8282 8 82 9084 8585 2086 8786 8887 8887 9288 8988 9189 2089 8489 9090 9191 92 ];x=[413 403 383.5 381339335317 334.5 333282247219225280290337415432418444251234225212227256 250.5 243246314326 327 328 336 336 331 371 371 388.5 411 419 411 394 342 342 325 315 342 345 348.5 351 348 370 371 354 363 357 351 369 335 381 391 392 395 398 401 405 410 408 415 418 422 418.5405409417420424438 438.5 434438440447448 444.5 441 440.5 445444];y=[359 343351 377.5 376383362 353.5 342325301316270292335328335371374394277271265290300301328 337 367 351 355 350 342.5 339 334 335 330 333 330.5 327.5 344 343 346 342 348 372 374 372 382 380.5 377 369 363 353 374 382.5 387 382 388 395 381 375 366 361 362 359 360 355 350347354356 364.5 368370364370372368373376385392392381383385 381.5 380360];c=[413 403 383.5 381339335317 334.5 333282247219225280290337415432418444];d=[359 343377.5376383362353.5342325301316270292335328335371374394];x1=data1(data2(i,1),1);y1=data1(data2(i,1),2); x2=data1(data2(i,2),1);y2=data1(data2(i,2),2); a=[x1,x2];b=[y1,y2];plot(x,y,'*',c,d,'r*',a,b);hold onendShapeX=[ ] ShapeY=[ ]N=length(ShapeX);for i=1:Nfor j=1:NDistance(i,j)=sqrt((ShapeX(i)-ShapeX(j))^2+(ShapeY(i)-ShapeY(j))^2); endendDistanceA=zeros(N);Max_V alue=zeros(N);for k=1:N[max_line,column]=max(Distance(k,:));A(k,column)=max_line;endMax_V alue(k,column)=max(max(A))[I,J]=find(Max_Value)point_start=[ShapeX(I) ShapeY(I)]point_end=[ShapeX(J) ShapeY(J)]Matlab源代码为function Floyd(w,router_direction,MAX)%x为此图的距离矩阵%router_direction为路由类型:0为前向路由;非0为回溯路由%MAX是数据输入时的∞的实际值len=length(w);flag=zeros(1,len);%根据路由类型初始化路由表R=zeros(len,len);for i=1:lenif router_direction==0%前向路由R(:,i)=ones(len,1)*i;else %回溯路由R(i,:)=ones(len,1)*i;endR(i,i)=0;enddisp('');disp('w(0)');dispit(w,0);disp('R(0)');dispit(R,1);%处理端点有权的问题for i=1:lentmp=w(i,i)/2;if tmp~=0w(i,:)=w(i,:)+tmp;w(:,i)=w(:,i)+tmp;flag(i)=1;w(i,i)=0;endend%Floyd算法具体实现过程for i=1:lenfor j=1:lenif j==i || w(j,i)==MAXcontinue;endfor k=1:lenif k==i || w(j,i)==MAXcontinue;endif w(j,i)+w(i,k)<w(j,k) %Floyd算法核心代码w(j,k)=w(j,i)+w(i,k);if router_direction==0%前向路由R(j,k)=R(j,i);else %回溯路由R(j,k)=R(i,k);endendendend%显示每次的计算结果disp(['w(',num2str(i),')'])dispit(w,0);disp(['R(',num2str(i),')'])dispit(R,1);end%中心和中点的确定[Center,index]=min(max(w'));disp(['中心是V',num2str(index)]);[Middle,index]=min(sum(w'));disp(['中点是V',num2str(index)]);endfunction dispit(x,flag)%x:需要显示的矩阵%flag:为0时表示显示w矩阵,非0时表示显示R矩阵len=length(x);s=[];for j=1:lenif flag==0s=[s sprintf('%5.2f\t',x(j,:))];elses=[s sprintf('%d\t',x(j,:))];ends=[s sprintf('\n')];enddisp(s);disp('---------------------------------------------------');end% 选择后按Ctrl+t取消注释号%%% 示例:% a=[% 0,100,100,1.2,9.2,100,0.5;% 100,0,100,5,100,3.1,2;% 100,100,0,100,100,4,1.5;% 1.2,5,100,0,6.7,100,100;% 9.2,100,100,6.7,0,15.6,100;% 100,3.1,4,100,15.6,0,100;% 0.5,2,1.5,100,100,100,0% ];%% b=[% 0,9.2,1.1,3.5,100,100;% 1.3,0,4.7,100,7.2,100; % 2.5,100,0,100,1.8,100; % 100,100,5.3,0,2.4,7.5; % 100,6.4,2.2,8.9,0,5.1; % 7.7,100,2.7,100,2.1,0 % ];%% Floyd(a,1,100)% Floyd(b,1,100)。
2011B交巡警问题_赛题讲解
2011B题交巡警服务平台的设置与调度“有困难找警察”,是家喻户晓的一句流行语。
警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。
为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。
每个交巡警服务平台的职能和警力配备基本相同。
由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。
试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:(1)附件1中的附图1给出了该市中心城区A的交通网络和现有的20个交巡警服务平台的设置情况示意图,相关的数据信息见附件2。
请为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。
对于重大突发事件,需要调度全区20个交巡警服务平台的警力资源,对进出该区的13条交通要道实现快速全封锁。
实际中一个平台的警力最多封锁一个路口,请给出该区交巡警服务平台警力合理的调度方案。
根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台的具体个数和位置。
(2)针对全市(主城六区A,B,C,D,E,F)的具体情况,按照设置交巡警服务平台的原则和任务,分析研究该市现有交巡警服务平台设置方案(参见附件)的合理性。
如果有明显不合理,请给出解决方案。
如果该市地点P(第32个节点)处发生了重大刑事案件,在案发3分钟后接到报警,犯罪嫌疑人已驾车逃跑。
为了快速搜捕嫌疑犯,请给出调度全市交巡警服务平台警力资源的最佳围堵方案。
附件1:A区和全市六区交通网络与平台设置的示意图。
附件2:全市六区交通网络与平台设置的相关数据表(共5个工作表)。
问题1对该问题的解决,我们先建立数学模型,将需要达到的目标,包括到达事发地的时间尽量短,各服务平台的工作量尽量均衡,用目标函数表达出来,同时将需要满足的约束也表达出来,构成合适的数学模型。
2011数学建模B题
2011高教社杯全国大学生数学建模竞赛题目(请先阅读“全国大学生数学建模竞赛论文格式规范”)B题交巡警服务平台的设置与调度“有困难找警察”,是家喻户晓的一句流行语。
警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。
为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。
每个交巡警服务平台的职能和警力配备基本相同。
由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。
试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:(1)附件1中的附图1给出了该市中心城区A的交通网络和现有的20个交巡警服务平台的设置情况示意图,相关的数据信息见附件2。
请为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。
对于重大突发事件,需要调度全区20个交巡警服务平台的警力资源,对进出该区的13条交通要道实现快速全封锁。
实际中一个平台的警力最多封锁一个路口,请给出该区交巡警服务平台警力合理的调度方案。
根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台的具体个数和位置。
(2)针对全市(主城六区A,B,C,D,E,F)的具体情况,按照设置交巡警服务平台的原则和任务,分析研究该市现有交巡警服务平台设置方案(参见附件)的合理性。
如果有明显不合理,请给出解决方案。
如果该市地点P(第32个节点)处发生了重大刑事案件,在案发3分钟后接到报警,犯罪嫌疑人已驾车逃跑。
为了快速搜捕嫌疑犯,请给出调度全市交巡警服务平台警力资源的最佳围堵方案。
附件1:A区和全市六区交通网络与平台设置的示意图。
附件2:全市六区交通网络与平台设置的相关数据表(共5个工作表)。
附图1:A区的交通网络与平台设置的示意图附图2:全市六区交通网络与平台设置的示意图说明:(1)图中实线表示市区道路;红色线表示连接两个区之间的道路;(2)实圆点“·”表示交叉路口的节点,没有实圆点的交叉线为道路立体相交;(3)星号“*”表示出入城区的路口节点;(4)圆圈“○”表示现有交巡警服务平台的设置点;(5)圆圈加星号“○*”表示在出入城区的路口处设置了交巡警服务平台;(6)附图2中的不同颜色表示不同的区。
数学建模交巡警服务平台的设置与调度
交巡警服务平台的设置与调度摘要本文主要讨论了有关某地区交巡警服务平台的设置与调度的问题,这是一个网络优化模型,利用Flody算法,构建0-1矩阵,变异系数加权法等方法建立模型,并借助Matlab和lingo软件进行分析与求解。
问题一主要讨论了该市中心城区A市交巡警平台设置的有关情况,下设三小问。
问题(1)是一个网络优化模型,要求出现突发事件警车达到目的地的时间最短,把时间最短转化为路程最短,构建了0-1矩阵,用Flody算法求出任意两节点之间的最小值,建立二次整数规划模型,通过lingo求解出总路程最小值,并合理的分配了各平台的管辖范围。
具体结果见表一。
问题(2)要求对于突发事件,如何有效地安排20个平台的警力资源快速的去封锁A市13个交通要道,建立非线性整数规划模型,以最长封堵距离为目标函数,并用lingo软件编程求解给出了平台最优的调度方案。
具体结果见表二。
问题(3)要求根据A区现在的实际情况,对于交巡警工作平台的工作量不均衡以及有些地方出警时间过长的不合理问题,适当的增加一些平台,经建模分析,建立纯整数线性规划模型,用lingo软件编程计算分析,得到应增加5个平台,并给出了各平台相应的位置以及管辖范围。
具体结果见表三。
问题二讨论了该市(包括A,B,C,D,E,F区)的交巡警平台的设立情况,下设二小问。
问题(1)查阅有关资料明确了设置交巡警服务平台的原则和任务,通过对附录二中数据的处理以及附录一附图2示意图的研究,发现该市现有的交巡警服务平台的设置方案存在不合理处。
各地交巡警服务平台的设立与当地的平均发案率和人口密度这两个指标密切相关,因此通过变异系数法确定这两个指标的权重,建立纯整数规划模型,利用lingo编程求解计算分析并给出各地区增加的平台数及管辖范围。
结果见表六到表十。
问题(2)根据已算出的A区平台优化方案,可找到小偷跑3分钟和警察追3分钟即6分钟是到达地周围的点,用这些点对应的管辖平台区抓捕即可。
数学建模:交巡警平台的设置与调度
交巡警服务平台得设置与调度一、问题重述“有困难找警察”,就是家喻户晓得一句流行语.警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。
为了更有效地贯彻实施这些职能,需要在市区得一些交通要道与重要部位设置交巡警服务平台.每个交巡警服务平台得职能与警力配备基本相同。
由于警务资源就是有限得,如何根据城市得实际情况与需求合理地设置交巡警服务平台、分配各平台得管辖范围、调度警务资源就是警务部门面临得一个实际课题。
试就某市设置交巡警服务平台得相关情况,建立数学模型分析研究下面得问题:(1)附件1中得附图1给出了该市中心城区A得交通网络与现有得20个交巡警服务平台得设置情况示意图,相关得数据信息见附件2。
请为各交巡警服务平台分配管辖范围,使其在所管辖得范围内出现突发事件时,尽量能在3分钟内有交巡警(警车得时速为60km/h)到达事发地。
对于重大突发事件,需要调度全区20个交巡警服务平台得警力资源,对进出该区得13条交通要道实现快速全封锁。
实际中一个平台得警力最多封锁一个路口,请给出该区交巡警服务平台警力合理得调度方案。
根据现有交巡警服务平台得工作量不均衡与有些地方出警时间过长得实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台得具体个数与位置.(2)针对全市(主城六区A,B,C,D,E,F)得具体情况,按照设置交巡警服务平台得原则与任务,分析研究该市现有交巡警服务平台设置方案(参见附件)得合理性。
如果有明显不合理,请给出解决方案。
如果该市地点P(第32个节点)处发生了重大刑事案件,在案发3分钟后接到报警,犯罪嫌疑人已驾车逃跑。
为了快速搜捕嫌疑犯,请给出调度全市交巡警服务平台警力资源得最佳围堵方案.二、问题分析2、1问题一(1)问要求为A区得20个交巡警服务平台划分管辖范围,使每个路口尽量在3分钟内能够由交巡警赶到。
根据实际情况,每个交巡警服务平台得资源就是基本均衡且有限得。
我们规定,则此问题可瞧作就是一个多目标0—1规划问题。
2011数学建模交巡警服务平台设置
承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写): B我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):参赛队员(打印并签名) :1.2.3.指导教师或指导教师组负责人(打印并签名):日期: 2011 年 9 月 11 日赛区评阅编号(由赛区组委会评阅前进行编号):编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):赛区评阅记录(可供赛区评阅时使用):评阅人评分备注全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):交巡警服务平台的设置与调度摘要警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。
警务资源有限,根据实际节点、发案率与时间等因素,利用Prime算法和Dijkstra算法建立模型,从而合理地设置交巡警服务平台、分配各平台的管辖范围和调度警务资源。
问题一第一问:建立最短路模型。
利用Prime算法得到最小生成树,然后以3km 为界分别对20个交巡警服务平台的管辖范围划分,并进行适当调整,最后得出最佳管辖范围。
问题一第二问:重大事件发生时,建立最短路模型。
运用Dijkstra算法求出距13条交通要道最近的交巡警服务平台,并根据实际节点分配进行调整,最终确定最佳封锁路线。
问题一第三问:在最短路模型的基础上,建立以工作量和出警时间为约束条件的最短路模型。
其中以出警时间为约束确定增加平台的个数和位置,以工作量为约束验证增加平台的合理性,最终确定出增设交巡警服务平台后的最佳管辖范围。
交巡警服务平台的设置与调度——2011年全国大学生数学建模比赛题
交巡警服务平台的设置与调度摘要本文是在一个原有区域交警平台的基础上,分析讨论在该市警务资源有限的情况下,如何实现城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源的实际问题。
实现最优化管理的方案。
以图论最优路径理论为基础,建立图的最优化模型。
针对问题(1),将A区路口和道路抽象成图,分别以交巡警服务平台对应的点为起点求小于等于3min的路径,再将同一起点的路径的终点相连,围成一个区域,便是交巡警服务平台的管辖范围。
在此基础上综合考虑各个路口发案率的大小、区域人口密集程度,从而建立一个图中路径最优化模型。
再根据各个区域之间的所产生的空白区,即交巡警的管辖盲区。
为其添加交巡警服务平台。
实现其管理最优化的目的。
针对问题(2),结合交巡警服务平台的设置原则,充分考虑全市各区不同的状况,如:人口密度、区域面积等,并以A区的分区标准为基础,实现对全市各区的交巡警服务平台的设置。
对于P点的逃犯,建立一个以P点为中心的最优逃跑路径所组成的图,然后在算出罪犯的最佳逃跑路线,再调度相应的交巡警,实现对他的围堵。
从而实现交巡警服务平台设置和调度的最优化的方案。
关键词:图论;最优化路径; 交巡警服务平台;MATLAB;数据结构1、问题重述“有困难找警察”,是家喻户晓的一句流行语。
警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。
为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。
每个交巡警服务平台的职能和警力配备基本相同。
由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。
试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:(1)附件1中的附图1给出了该市中心城区A的交通网络和现有的20个交巡警服务平台的设置情况示意图,相关的数据信息见附件2。
请为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。
数学建模交巡警服务平台的设置与调度
2 案例的简单分析-问题(1)
第三个小问题: 根据现有交巡警服务平台的工作量不均衡和 有些地方出警时间过长的实际情况,拟在该 区内再增加2至5个平台,请确定需要增加平 台的具体个数和位置。
1 读案例题目
全市六区交通网路和平台设置的数据表 B题 交巡警服务平台的设置与调度
2 案例的简单分析-问题(1)
第一个小问题: 请为各交巡警服务平台分配管辖范围,使其 在所管辖的范围内出现突发事件时,尽量能 在3分钟内有交巡警(警车的时速为 60km/h)到达事发地。
2 案例的简单分析-问题(1)
例1:对于图1给定的图,求任意两点间的最 短路径矩阵,及路径矩阵。
第1步:写出图1的邻接矩阵G
第2步:调用floyd()函数,求出d和p
>>[d, p]=floyd(G)
距离矩阵
路径矩阵
2. getPath() 功能:根据“路径矩阵”求从源节点到目标 节点的最短路线
格式:path=getPath(i, j, p) 参数: p-路径矩阵
2 案例的简单分析-问题(2)
第(2)问和第(1)问之间似乎存在某种联 系:
第(1)问是第(2)问的“子问题”; 解决第(2)问的时候可以参考第(1)问。
3 用Matlab求最短径
一、求最短路径的算法简介 1. Dijkstra算法 2. Floyd算法
二、两个函数(非标准函数) 1. floyd() 功能:求给定图的“距离矩阵”和“路径矩阵” 格式:[d p]=floyd(G) 参数:G-图的邻接矩阵(n×n) d-最短路径“距离矩阵”(n×n) P-最短路径“路径矩阵” (n×n)
数学建模2011B题 交巡警服务平台的设置与调度 程序
问题一(1):管辖区域的分配:求解最大结合覆盖模型function dyt1.1disp(sprintf('正在载入相关数据...'));Node_data=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',1,'b2:c93'); %载入A区路口节点的左边数据Routine_data=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',2,'a2:b144'); %载入路线节点标号数据Record_data = cell(92,1); %创建包体,用来保存92个节点,每点的最大覆盖区域count = 0;%更急路线节点标号数据创建邻接矩阵for i = 1 :92Node_index = Routine_data(find(Routine_data(:,1)==i),2);Node_index = [Routine_data(find(Routine_data(:,2)==i),1);Node_index];Node_index = Node_index(find(Node_index <=92));n = length( Node_index);count = count + n;Record_data{i} = zeros(n,2);for j = 1 : nRecord_data{i}(j,1) = Node_index(j);Record_data{i}(j,2) = 100*sqrt((Node_data(i,1) - Node_data(Node_index(j),1))^2+(Node_data(i,2) - Node_data(Node_index(j),2))^2);endendAdjoin_matrix = zeros(count,3); % 邻接矩阵index_adj = 1;for i = 1 :92[n1,n2] = size(Record_data{i});n = n1;for j = 1 : nAdjoin_matrix(index_adj,:) = [i,Record_data{i}(j,1),Record_data{i}(j,2)];index_adj = index_adj + 1;endend%根据邻接矩阵数据创建图论的稀疏矩阵a1=Adjoin_matrix(:,1)';a2=Adjoin_matrix(:,2)';a3=Adjoin_matrix(:,3)';DG=sparse(a1,a2,a3);%建立稀疏矩阵,图论求解for i=1:92for j=1:92if DG(i,j)==0DG(i,j)=inf;if i==jDG(i,j)=0;endendendendfor k=1:92for i=1:92for j=1:92if DG(i,k)+DG(k,j)<DG(i,j)DG(i,j)=DG(i,k)+DG(k,j);endendendendPatrol_range=cell(20,1);for i=1:20for j=1:92if(DG(i,j)<=3000)Patrol_range{i}=[Patrol_range{i},j];endendendPatrol_distribution=Patrol_range; %复制原始数据Patrol_cover=cell(92,1); %定义交集Cover=[];Isolated=[]; %定义孤立点for i=1:92c=[];for j=1:20m=length(Patrol_range{j});for l=1:mif(Patrol_range{j}(l)==i)c=[c,j]; %保存i节点所对应的所有可能的交通巡警点 endendendm=length(c);if(m>1) %如果大于1,说明有交集,先去除,不分配Cover=[Cover,i];Patrol_cover{i}=c; %保存交集for k=1:mfind(Patrol_distribution{c(k)}~=i);Patrol_distribution{c(k)}=Patrol_distribution{c(k)}(find(Patrol_distr ibution{c(k)}~=i));%预分配只属于自己的交通节点endendif(m==0)Isolated=[Isolated,i];endendPatrol_xin=Patrol_distribution; %进行B类节点的的分配for i=1:92m=length(Patrol_cover{i});Distance_linshi=[];if(m>=1)for j=1:mDistance_linshi(j)=DG(i,Patrol_cover{i}(j));endm0=min(Distance_linshi);for k=1:20if DG(i,k)==m0f=k;endendPatrol_xin{f}=[Patrol_xin{f},i];endendm=length(Isolated); %对孤立点进行分配for i=1:mfor j=1:20dist(j)=DG(Isolated(i),j);end[m0,m1]=min(dist);Patrol_xin{m1}=[Patrol_xin{m1},Isolated(i)];endsave Patrol_xin.mat;问题一(2):求解围堵13条要道的方案程序1:!求围堵的方案与最快时间sets:AA/1..20/;cross/1..13/;links(AA,cross): dis, x;Endsets!数据的定义部分;data:dis=22236.1516028.479286.81219293.4421096.2122501.7522893.219001.1619515.8112083.445880.93511850.114885.217 20463.9214129.727388.06317394.6919197.472060321120.9717228.9317743.5810311.213982.18610309.546035.068 18352.2712767.236025.56616032.1917834.9719240.5119009.3215117.2815631.928199.566093.848197.8844393.385 21997.3815008.518266.85318273.4820076.2621481.7922654.4316226.9115535.348102.9764860.9767395.869350 17628.1912969.636227.96716234.5917749.5219155.0618285.2411306.8710615.293182.9339421.1192475.8265255.075 17658.7813000.216258.55216265.1817780.1119185.6518315.8311337.4510645.883213.5189451.7042506.4115337.332 14914.9410901.224159.55914166.1915036.2716441.8115571.998570.2188015.457583.09527352.7111290.2027991.722 14092.519433.9432692.28212698.9114213.8415619.3814749.5610228.0310493.183060.825885.4343099.4678677.283 13010.718274.2021532.5411539.1713132.0514537.5913667.769775.72210724.413492.3044725.6924199.419336.668 7586.58512775.666956.679510.6937707.9189113.4568243.63514194.8615143.557911.44610149.828618.55314760.8 3791.3538337.29811395.035072.3323269.5574675.0953805.27418633.2319581.9112349.8114588.1813056.9119199.16 011950.2814543.268685.3166882.5416477.0023591.6321781.4522730.1315498.0317736.4116205.1422347.38 5977.0025973.2812714.942708.314905.53855002385.37222808.322375716524.916120.8217232.0121331.79 11950.2806741.6623264.9665067.7416473.288358.65218049.9218916.6811484.3210147.5412191.4215358.51 17029.6113298.086556.42116563.0517150.9418556.4817686.664751.8425700.5254401.4729749.5735108.57911810.1 14543.266741.662010006.6311809.413214.9415100.3111308.2612175.024742.6553405.8775449.7618616.853 21892.1114903.248161.5818168.2119970.9821376.5222549.1618657.1219523.8712091.514755.70312798.627820.525 24247.1818514.4811772.8221779.4523582.2324987.7624904.2321012.1921526.8314094.478366.94613699.266734.362 22546.5316961.4810219.8220226.4522029.2323434.7623203.5819311.5319826.1812393.827639.28111998.615033.709 26945.8 21213.11 14471.45 24478.08 26280.85 27686.39 27602.86 23010.82 22319.25 14886.89 11065.57 14179.78 6448.88;enddata!目标函数;min=@max(links(i,j):x(i,j) * dis(i,j));!需求约束;@for(cross(j):@sum(AA(i): x(i,j))=1);@for(AA(i):@sum(cross(j): x(i,j))<=1);!整数约束;@for(links(i,j):@bin(x(i,j)));程序2:fuction zudj1.2A=zeros(20,13);for i=1:20A(i,1)=DG(i,12);A(i,2)=DG(i,14);A(i,3)=DG(i,16);A(i,4)=DG(i,21);A(i,5)=DG(i,22);A(i,6)=DG(i,23);A(i,7)=DG(i,24);A(i,8)=DG(i,28);A(i,9)=DG(i,29);A(i,10)=DG(i,30);A(i,11)=DG(i,38);A(i,12)=DG(i,48);A(i,13)=DG(i,62);end问题一(3):管辖区域的确定:求解集合覆盖模型并使工作量最均衡程序1:function junheng1.2c=[];for x=1:72c(x)= fenpei(x);endc程序2:function c=fenpei(x)disp(sprintf('正在载入相关数据...'));Node_data=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',1,'b2:c93'); %载入A区路口节点的左边数据Routine_data=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',2,'a2:b144'); %载入路线节点标号数据load B.mat;Record_data = cell(92,1); %创建包体,用来保存92个节点,每点的最大覆盖区域count = 0;%更急路线节点标号数据创建邻接矩阵for i = 1 :92Node_index = Routine_data(find(Routine_data(:,1)==i),2);Node_index = [Routine_data(find(Routine_data(:,2)==i),1);Node_index];Node_index = Node_index(find(Node_index <=92));n = length( Node_index);count = count + n;Record_data{i} = zeros(n,2);for j = 1 : nRecord_data{i}(j,1) = Node_index(j);Record_data{i}(j,2) = 100*sqrt((Node_data(i,1) - Node_data(Node_index(j),1))^2+(Node_data(i,2) - Node_data(Node_index(j),2))^2);endendAdjoin_matrix = zeros(count,3); % 邻接矩阵index_adj = 1;for i = 1 :92[n1,n2] = size(Record_data{i});n = n1;for j = 1 : nAdjoin_matrix(index_adj,:) = [i,Record_data{i}(j,1),Record_data{i}(j,2)];index_adj = index_adj + 1;endend%根据邻接矩阵数据创建图论的稀疏矩阵a1=Adjoin_matrix(:,1)';a2=Adjoin_matrix(:,2)';a3=Adjoin_matrix(:,3)';DG=sparse(a1,a2,a3);%建立稀疏矩阵,图论求解for i=1:92for j=1:92if DG(i,j)==0DG(i,j)=inf;if i==jDG(i,j)=0;endendendendPatrol_range=cell(24,1);D_24=B(x,:); %B为可能的分配情况,共有48中,每次从中选取1中可能,本次选取的事第13中可能for k=1:92for i=1:92for j=1:92if DG(i,k)+DG(k,j)<DG(i,j)DG(i,j)=DG(i,k)+DG(k,j);endendendendfor i=1:24for j=1:92dist(j)=DG(D_24(i),j);endfor j=1:92if(dist(j)<=3000)Patrol_range{i}=[Patrol_range{i},j];endendendsave Patrol_range;%求解交集和预分配问题load Patrol_range.mat; %载入数据Patrol_distribution=Patrol_range; %复制原始数据Patrol_cover=cell(92,1); %定义交集Cover=[];Isolated=[]; %定义孤立点for i=1:92c=[];c2=[];for j=1:24m=length(Patrol_range{j});for l=1:mif(Patrol_range{j}(l)==i)c=[c,j]; %保存i节点所对应的所有可能的交通巡警点 c2=[c2,D_24(j)];endendendm=length(c);if(m>1) %如果大于1,说明有交集,先去除,不分配Cover=[Cover,i];Patrol_cover{i}=c2; %保存交集for k=1:mfind(Patrol_distribution{c(k)}~=i);Patrol_distribution{c(k)}=Patrol_distribution{c(k)}(find(Patrol_distr ibution{c(k)}~=i));%预分配只属于自己的交通节点endendif(m==0)Isolated=[Isolated,i];endendsave Patrol_distribution.mat; %完成预分配,对于交集和孤立交点另外考虑save Patrol_cover.mat; %保存交集所对应的可能交通巡警点load Patrol_cover.mat;load Patrol_distribution.mat;load Patrol_range.mat;%初始化预分配中每个交通巡警点的发案次数Occurrence=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',1,'e2:e93'); %A区每个交通节点的发案次数Standard_occurrence=sum(Occurrence)/24Patrol_occurrence=zeros(24,1);for i=1:24m=length(Patrol_distribution{i});a=0;if(m>=1)for j=1:ma=a+Occurrence(Patrol_distribution{i}(j));endPatrol_occurrence(i)=a;endendPatrol_xin=Patrol_distribution; %进行交集分配for i=1:92m=length(Patrol_cover{i});Distance_linshi=[];if(m>=1)for j=1:mDistance_linshi(j)=DG(i,Patrol_cover{i}(j));endA=Sort_vector(Distance_linshi); %记录最小值的相对位置h=length(Distance_linshi);for j=1:hlinshi_canshu=find(D_24==Patrol_cover{i}(A(j,2)));Patrol_occurrence(linshi_canshu);Patrol_cover{i}(A(j,2));if(Patrol_occurrence(linshi_canshu)<=(Standard_occurrence+0.62)) Patrol_xin{linshi_canshu}=[Patrol_xin{linshi_canshu},i];Patrol_occurrence(linshi_canshu)=Patrol_occurrence(linshi_canshu)+Occ urrence(i);break;endif(j==h)iendendendendPatrol_occurrencec=var(Patrol_occurrence);save Patrol_xin.mat;程序3:function chulia=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];I=[28 29];J=[38 39,40];K=[48,61];L=[87 88 89 90 91 92];m=0;for i=1:2for j=1:3for k=1:2for l=1:6m=m+1;B(m,:)=[a,[I(i) J(j) K(k) L(l)]];DD(m,:)=[I(i) J(j) K(k) L(l)];endendendendsave B;程序4:function A=Sort_vector(X) %创建子函数供调用a=length(X);for i=1:a[m0,weizhi]=min(X);A(i,1)=m0;A(i,2)=weizhi;X(weizhi)=inf;End问题二(1)计算现有节点工作量,不均衡度和C类节点个数,以判断合理性:程序1:function Mcm2.1Node_data=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',1,'b2:c583'); Routine_data=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',2,'a2:b929');Record_data = cell(582,1);count = 0;for i = 1 :582Node_index = Routine_data(find(Routine_data(:,1)==i),2);Node_index = [Routine_data(find(Routine_data(:,2)==i),1);Node_index];n = length( Node_index);count = count + n;Record_data{i} = zeros(n,2);for j = 1 : nRecord_data{i}(j,1) = Node_index(j);Record_data{i}(j,2) = 100*sqrt((Node_data(i,1) - Node_data(Node_index(j),1))^2+(Node_data(i,2) - Node_data(Node_index(j),2))^2);endendAdjoin_matrix = zeros(count,3); % 邻接矩阵index_adj = 1;for i = 1 :582[n1,n2] = size(Record_data{i});n = n1;for j = 1 : nAdjoin_matrix(index_adj,:) = [i,Record_data{i}(j,1),Record_data{i}(j,2)];index_adj = index_adj + 1;endend%创建图论的稀疏矩阵及其图论的求解a1=Adjoin_matrix(:,1)';a2=Adjoin_matrix(:,2)';a3=Adjoin_matrix(:,3)';DG=sparse(a1,a2,a3);%建立稀疏矩阵,图论求解for i=1:582for j=1:582if DG(i,j)==0DG(i,j)=inf;if i==jDG(i,j)=0;endendendendfor k=1:582for i=1:582for j=1:582if DG(i,k)+DG(k,j)<DG(i,j)DG(i,j)=DG(i,k)+DG(k,j);endendendendWeizhi_all=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',3,'b2:b81'); a=length(Weizhi_all);Patrol_range=cell(a,1);for i=1:afor j=1:582dist(j)=DG(Weizhi_all(i),j);%求图中任意两个节点之间的最短距离endfor j=1:582if(dist(j)<=3000)Patrol_range{i}=[Patrol_range{i},j];endendendsave Patrol_range;load Patrol_range.mat; %载入数据Patrol_distribution=Patrol_range; %复制原始数据Patrol_cover=cell(582,1); %定义交集Cover=[];Isolated=[]; %定义孤立点a=length(Weizhi_all);for i=1:582c=[];c2=[];for j=1:am=length(Patrol_range{j});for l=1:mif(Patrol_range{j}(l)==i)c=[c,j]; %保存i节点所对应的所有可能的交通巡警点c2=[c2,Weizhi_all(j)];endendendm=length(c);if(m>1) %如果大于1,说明有交集,先去除,不分配Cover=[Cover,i];Patrol_cover{i}=c2; %保存交集for k=1:mfind(Patrol_distribution{c(k)}~=i);Patrol_distribution{c(k)}=Patrol_distribution{c(k)}(find(Patrol_distr ibution{c(k)}~=i));%预分配只属于自己的交通节点endendif(m==0)Isolated=[Isolated,i];endendsave Patrol_distribution.mat;%完成预分配,对于交集和孤立交点另外考虑save Patrol_cover.mat;%保存交集所对应的可能交通巡警点load Patrol_cover.mat;load Patrol_distribution.mat;load Patrol_range.mat;%初始化预分配中每个交通巡警点的发案次数Occurrence=xlsread('F:\数学建模第二期培训\第一题\B\2.xls',1,'e2:e583'); %A区每个交通节点的发案次数a=length(Weizhi_all);Standard_occurrence=sum(Occurrence)/asum(Occurrence);Patrol_occurrence=zeros(a,1);for i=1:am=length(Patrol_distribution{i});a=0;if(m>=1)for j=1:ma=a+Occurrence(Patrol_distribution{i}(j));endPatrol_occurrence(i)=a;endendPatrol_xin=Patrol_distribution; %进行交集的分配for i=1:582m=length(Patrol_cover{i});Distance_linshi=[];if(m>=1)for j=1:582dist(j)=DG(i,j);endfor j=1:mDistance_linshi(j)=dist(Patrol_cover{i}(j));endA=Sort_vector(Distance_linshi); %记录最小值的相对位置h=length(Distance_linshi);for j=1:hlinshi_canshu=find(Weizhi_all==Patrol_cover{i}(A(j,2)));Patrol_occurrence(linshi_canshu);Patrol_cover{i}(A(j,2));if(Patrol_occurrence(linshi_canshu)<=(Standard_occurrence+8.5)) Patrol_xin{linshi_canshu}=[Patrol_xin{linshi_canshu},i];Patrol_occurrence(linshi_canshu)=Patrol_occurrence(linshi_canshu)+Occ urrence(i);break;endif(j==h)i;endendendend%对孤立点进行分配m=length(Isolated);for i=1:mfor j=1:20D(j)=DG(Isolated(i),j);endIsolated(i);[m0,m1]=min(D);m1;Patrol_xin{m1}=[Patrol_xin{m1},Isolated(i)];Patrol_occurrence(m1)=Patrol_occurrence(m1)+Occurrence(Isolated(i)); endPatrol_occurrence; %每个警力点的工作量length(Patrol_occurrence);var(Patrol_occurrence)[a,b]=max(Patrol_occurrence);zuidazhi=a;b;Weizhi_all(b);save Patrol_xin.mat;程序2:!建立0—1矩阵function jljz2.1AG=zeros(138,502);for i=1:138for j=1:502dist(j)=DG(lsolated(i),j);if(dist(j)<=3000)AG(i,j)=1;endendend程序3:function chulia=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];I=[28 29];J=[38 39,40];K=[48,61];L=[87 88 89 90 91 92];m=0;for i=1:2for j=1:3for k=1:2for l=1:6m=m+1;B(m,:)=[a,[I(i) J(j) K(k) L(l)]];DD(m,:)=[I(i) J(j) K(k) L(l)];endendendendsave B;程序4:function A=Sort_vector(X) %创建子函数,共调用使用a=length(X);for i=1:a[m0,weizhi]=min(X);A(i,1)=m0;A(i,2)=weizhi;X(weizhi)=inf;endlingo程序:程序5:!静态增加服务台的方案求解:sets:AA/1..138/;cross/1..502/:x;links(AA,cross): a;Endsetsdata:a = @FILE(F:\数学建模第二期培训\第一题\新建文件夹\第二问\选择表.xls); @TEXT('result1.txt') = x;enddata 27程序6:!动态的求解方案:sets:AA/1..582/;cross/1..582/:x;links(AA,cross): a;Endsetsdata:a = @FILE(F:\数学建模第二期培训\第一题\新建文件夹\第二问\data3.txt); @TEXT('result7.txt') = x;enddatamin =@sum(AA(i):@if(@sum(cross(j):a(i,j)*x(j))#eq#0,1,0));@sum(cross(j): x(j))=80;@for(cross(i):@bin(x(i)));问题二(2):求解最佳围堵方案程序1:% function weidu%找出最佳的围堵方案clear;load DG.mat;load Xunjinwz1.mat;xun_gs = length(Xunjinwz);dist=graphshortestpath(DG,32);%求图中任意个节点到案发点的最短距离for t = 6:30Anfadian=[];for j = 1 :582if(dist(j) <= t*1000 & (t - 1)*1000 <=dist(j) )Anfadian=[Anfadian,j];endendn = length(Anfadian); %罪犯可能到达点的集合A1 = zeros(n,582);for k = 1:ndist2 = graphshortestpath(DG,Anfadian(k));count = 0;for kk = 1 :xun_gs %搜素罪犯到达点集合旁边的巡逻点if(dist2(Xunjinwz(kk)) < (t-3)*1000 )A1(k,Xunjinwz(kk)) = 1;count = count + 1;endendif(count == 0)break;endend[m,n] = size(A1);if(m < n)pp = Pipei(A1);[m,n] = size(pp);if(rank(pp) == m)pipei =zeros(m,2);for i =1:m[row,coloum] = find(pp(i,:)==1);pipei(i,1) = Anfadian(i);pipei(i,2) = coloum;endbreak;endendend程序2:function pip =Pipei(A)%求最大匹配问题[m,n] = size(A);M(m,n)=0;for(i=1:m)for(j=1:n)if(A(i,j))M(i,j)=1;break;endend %求初始匹配 Mif(M(i,j))break;endend %获得仅含一条边的初始匹配 Mwhile(1)for(i=1:m)x(i)=0;end %将记录X 中点的标号和标记*for(i=1:n)y(i)=0;end %将记录Y 中点的标号和标记*for(i=1:m)pd=1; %寻找X 中 M 的所有非饱和点for(j=1:n)if(M(i,j))pd=0;end;endif(pd)x(i)=-n-1;endend %将X 中 M 的所有非饱和点都给以标号0 和标记*, 程序中用 n+1 表示0 标号, 标号为负数时表示标记*pd=0;while(1)xi=0;for(i=1:m)if(x(i)<0)xi=i;break;endend %假如 X 中存在一个既有标号又有标记*的点, 则任取X 中一个既有标号又有标记*的点xiif(xi==0)pd=1;break;end %假如X 中所有有标号的点都已去掉了标记*, 算法终止x(xi)=x(xi)*(-1); %去掉xi 的标记*k=1;for(j=1:n )if(A(xi,j)&y(j)==0)y(j)=xi;yy(k)=j;k=k+1;endend %对与 xi 邻接且尚未给标号的 yj 都给以标号iif(k>1)k=k-1;for(j=1:k)pdd=1;for(i=1:m)if(M(i,yy(j)))x(i)=-yy(j);pdd=0;break;endend %将yj 在 M 中与之邻接的点xk (即xkyj ∈M), 给以标号j 和标记*if(pdd)break;endendif(pdd)k=1;j=yy(j); %yj 不是 M 的饱和点while(1)P(k,2)=j;P(k,1)=y(j);j=abs(x(y(j))); %任取 M 的一个非饱和点 yj, 逆向返回if(j==n+1)break;end %找到X 中标号为0 的点时结束, 获得 M-增广路 P k=k+1;endfor(i=1:k)if(M(P(i,1),P(i,2)))M(P(i,1),P(i,2))=0; %将匹配 M 在增广路 P 中出现的边去掉else M(P(i,1),P(i,2))=1;endend %将增广路 P 中没有在匹配 M 中出现的边加入到匹配M 中break;endendendif(pd)break;endend %假如X 中所有有标号的点都已去掉了标记*, 算法终止pip = M ; %显示最大匹配 M, 程序结束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交巡警服务平台的设置与调度摘要本文是在一个原有区域交警平台的基础上,分析讨论在该市警务资源有限的情况下,如何实现城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源的实际问题。
实现最优化管理的方案。
以图论最优路径理论为基础,建立图的最优化模型。
针对问题(1),将A区路口和道路抽象成图,分别以交巡警服务平台对应的点为起点求小于等于3min的路径,再将同一起点的路径的终点相连,围成一个区域,便是交巡警服务平台的管辖范围。
在此基础上综合考虑各个路口发案率的大小、区域人口密集程度,从而建立一个图中路径最优化模型。
再根据各个区域之间的所产生的空白区,即交巡警的管辖盲区。
为其添加交巡警服务平台。
实现其管理最优化的目的。
针对问题(2),结合交巡警服务平台的设置原则,充分考虑全市各区不同的状况,如:人口密度、区域面积等,并以A区的分区标准为基础,实现对全市各区的交巡警服务平台的设置。
对于P点的逃犯,建立一个以P点为中心的最优逃跑路径所组成的图,然后在算出罪犯的最佳逃跑路线,再调度相应的交巡警,实现对他的围堵。
从而实现交巡警服务平台设置和调度的最优化的方案。
关键词:图论;最优化路径; 交巡警服务平台;MATLAB;数据结构1、问题重述“有困难找警察”,是家喻户晓的一句流行语。
警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。
为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。
每个交巡警服务平台的职能和警力配备基本相同。
由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。
试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:(1)附件1中的附图1给出了该市中心城区A的交通网络和现有的20个交巡警服务平台的设置情况示意图,相关的数据信息见附件2。
请为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。
对于重大突发事件,需要调度全区20个交巡警服务平台的警力资源,对进出该区的13条交通要道实现快速全封锁。
实际中一个平台的警力最多封锁一个路口,请给出该区交巡警服务平台警力合理的调度方案。
根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台的具体个数和位置。
(2)针对全市(主城六区A,B,C,D,E,F)的具体情况,按照设置交巡警服务平台的原则和任务,分析研究该市现有交巡警服务平台设置方案(参见附件)的合理性。
如果有明显不合理,请给出解决方案。
如果该市地点P(第32个节点)处发生了重大刑事案件,在案发3分钟后接到报警,发罪嫌疑人已驾车逃跑。
为了快速搜捕嫌疑发,请给出调度全市交巡警服务平台警力资源的最佳围堵方案。
2、模型假设1.交巡警出警时,道路畅通无阻,时速保持60km/h2.交巡警平台内总是有人值班。
3.在交巡警分配区域中至多有一起案情发生。
4.案情必定在路上发生。
3、符号说明V----------------------节点集合Sou--------------------交巡警服务平台集合Sin---------------------非交巡警服务平台集合l------------------------路段长度p------------------------人口密度t-------------------------警车在路段行驶时间w------------------------每个路口的发案率4、模型分析4.1对于问题一对于题目所给的数据用MATLAB重新绘制图并求个路段长度和警车的行驶时间,再分别以交巡警平台为中心,求出不大于三分钟的最大路径,然后将路径终点连接起来,再适当考虑发案率,调整连接的区域,便是交巡警的管辖范围。
当发生重大事件时,由靠近重要路段的交巡警迅速前往即可。
根据以上模型,A的交巡警平台如若不足,存在盲点,则,我们需要在盲点处增加交巡警平台。
4.2对于问题二由于全市六个区的面积及人口不同,相应的人口密度也不同,另外犯罪率也各不相同。
在设置服务平台位置时,以路段长度为主,人口密度与发案率次之,又由于人口密度与发案率有一定的正向关系,所以,将其合并为一个权值加以考虑。
再结合交巡警服务平台设置和原则加以权衡,区别对待各个区域的交巡警服务平台的设置。
对于在P点犯案,以封锁路口最快和封锁区域最小的原则,设计最优化的出警方案。
5、问题求解5.1、问题一的解法5.1.1、首先利用MATLAB[2]重新绘制A区道路分布图,见图1:图1:A区道路分布图5.1.2、利用C++编写程序[3](流程图见图2,程序见附录: prog1.cpp)计算出各个路段的距离和警车行驶所需时间,结果见表1:图2:prog1.cpp源程序的流程图表1:各个路段的长度和警车行驶的时间路线起点(节点)标号路线终点(节点)标号坐标中的长度(1:100000)路段长度l/m时间t/min1759.30054930.0540.930054 178 6.40312640.3120.640312 2449.48683948.6830.948683 34542.46474246.47 4.24647 36515.23981523.98 1.52398 43945.60984560.98 4.56098 46310.30781030.78 1.03078 54955000.5 5508.48528848.5280.848528 65916.03121603.12 1.60312 73211.40181140.18 1.14018 74712.80621280.62 1.28062 8911.59741159.74 1.15974 84720.79662079.66 2.07966 935 4.24264424.2640.424264 103449.21644921.64 4.92164 112232.69563269.56 3.26956 112699000.9 122517.88851788.85 1.78885 12471142132.64973264.97 3.26497 15738.18383818.38 3.81838 153129.68162968.16 2.96816 161467.41666741.66 6.74166 163834.05883405.88 3.40588 174026.87942687.94 2.68794 17429.84886984.8860.984886 178140.22444022.44 4.02244 1881 6.7082670.820.67082 1883 5.38516538.5160.538516 1979 4.47214447.2140.447214 2086 3.60555360.5550.360555 212218.02781802.78 1.80278 2237222139.05539905.5390.905539 231355000.5 23383241323.85372385.37 2.38537 242518.02781802.78 1.80278 251120.0252002.5 2.0025 26277.43303743.3030.743303 261035.38363538.36 3.53836 271233.04923304.92 3.3049228299.48683948.6830.948683 281547.51844751.84 4.75184 293074.32367432.367.43236 307 5.83095583.0950.583095 30487.07107707.1070.707107 313211.70471170.47 1.17047 313415.53221553.22 1.55322 3233 5.09902509.9020.509902 33347.56637756.6370.756637路线起点(节点)标号路线终点(节点)标号坐标中的长度(1:100000)路段长度l/m时间t/min3388.27647827.6470.827647 349 5.02494502.4940.502494 3545 6.7082670.820.67082 363555000.5 3637 5.09902509.9020.509902 3616 6.08276608.2760.608276 363935.01433501.43 3.50143 37730.41383041.38 3.04138 383933000.3 384140.0784007.8 4.0078 394017.67771767.77 1.76777 40219.14421914.42 1.91442 41178.58500.85 419246.31684631.68 4.63168 42438.06226806.2260.806226 43288000.8 43728.06226806.2260.806226 44311.62971162.97 1.16297 454666000.6 4689.30054930.0540.930054 465529.42792942.79 2.94279 474810.1981019.8 1.0198 47614.86611486.61 1.48661 47514.56021456.02 1.45602 4861292900 2.9 495010.44031044.03 1.04403 4953 6.7082670.820.67082 5051 3.80789380.7890.380789 5152 4.30116430.1160.430116 5159 2.91548291.5480.291548 5256 4.24264424.2640.424264 53528.544854.40.8544 535422.80352280.35 2.28035 545510.04991004.99 1.00499 546324.18682418.68 2.41868 55312.6591265.9 1.2659 565712.37941237.94 1.23794 57587.57500.75 57608.13941813.9410.813941 57418.68151868.15 1.86815 58597.81025781.0250.781025 606213.89241389.24 1.38924 616034.71313471.31 3.47131 624 3.53500.35 628560.01676001.67 6.0016763649.05539905.5390.905539 6465 5.83095583.0950.583095 647613.15291315.29 1.31529 6566 3.16228316.2280.316228 6667 4.24264424.2640.424264 66769.21954921.9540.921954 674414.76481476.48 1.47648 6768 4.12311412.3110.412311 68697.07107707.1070.707107路线起点(节点)标号路线终点(节点)标号坐标中的长度(1:100000)路段长度l/m时间t/min6875 4.52769452.7690.4527696970 5.38516538.5160.5385166971 6.40312640.3120.64031269155000.57028.60233860.2330.86023370437.61577761.5770.761577717255000.57174 6.10328610.3280.61032872738.06226806.2260.8062267374 4.03113403.1130.403113731819.72311972.31 1.97231741 6.26498626.4980.626498748016.91891691.89 1.691897576 3.53553353.5530.3535537677 4.47214447.2140.4472147778101000177199.84886984.8860.9848867879 6.7082670.820.670827980 4.47214447.2140.44721480188.06226806.2260.8062268182 5.02494502.4940.5024948283 5.40833540.8330.54083382908.73212873.2120.87321283849.84886984.8860.98488684857.28011728.0110.7280118520 4.47214447.2140.447214868711.04541104.54 1.1045486889.34077934.0770.9340778788 4.03113403.1130.403113879221.37762137.76 2.137768889 4.03113403.1130.4031138891 3.04138304.1380.30413889209.48683948.6830.948683898433000.38990 3.53553353.5530.3535539091 4.74342474.3420.474342919220.0252002.5 2.00255.1.3、利用上面结果将A区路口路段抽象成一个图:令G(V,E)是一个图,在节点集V中,含有两类子集Sou和Sin,且Sou Sin= 。