2011年B题交通巡警第一问的练习与实现
题目要求:
试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:
(1)附件1中的附图1给出了该市中心城区A的交通网络和现有的20个交巡警服务平台的设置情况示意图,相关的数据信息见附件2。请为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。
对于重大突发事件,需要调度全区20个交巡警服务平台的警力资源,对进出该区的13条交通要道实现快速全封锁。实际中一个平台的警力最多封锁一个路口,请给出该区交巡警服务平台警力合理的调度方案。
文件来源:
可以到数学建模官网区找往期试题,里面可以下载到完整的题目和数据文件。全国大学生数学建模竞赛 (mcm.edu.cn)
思路:
1.利用现有的数据计算出每个节点之间的直达路径,然后再通过弗洛伊德算法,求解任意两个节点之间的最短距离。
2.先计算出距离交通平台3km之内的交通节点,然后将重复的节点,找到它们最近的交通平台并分配,将任意平台都不能3分钟到达的节点,找到最近的交通平台,最后得到交巡警服务平台的管辖范围。
3.找到距离平台最近的路口节点,或者找到距离路口节点最近的平台节点,一个路口节点只能匹配一个平台节点,一个平台节点也只能匹配一个路口节点。
源代码:
弗洛伊德算法
floyd.m
function [Dist]=floyd(DISTANCE)
Dist = DISTANCE;
n = size(DISTANCE,1);
for k=1:nfor i=1:nfor j=1:nif (Dist(i,k)+Dist(k,j)<Dist(i,j))Dist(i,j)=Dist(i,k)+Dist(k,j); endendend
end
%保存到文件
fid=fopen('Dist.txt','wt');
[m,n]=size(Dist);
for i=1:mfor j=1:nif j==nfprintf(fid,'%g\n',Dist(i,j));elsefprintf(fid,'%g\t',Dist(i,j));endend
end
主程序
clear;clc;
%读取数据
file = 'cumcm2011B附件2_全市六区交通网路和平台设置的数据表.xls';
%节点数据
JIEDIAN = xlsread(file,1,'B2:C93');
%disp(Apoint);
%整数化
[row1,column1] = size(JIEDIAN);
for i = 1 : row1for j = 1 : column1JIEDIAN(i,j) = round(JIEDIAN(i,j));end
end
%disp(JIEDIAN);
%巡警平台数据
PINGTAI = [20,2];
for i = 1 : 20for j = 1 : column1PINGTAI(i,j) =JIEDIAN(i,j);end
end
%disp(PINGTAI);
%路线数据
ROAD = xlsread(file,2,'A2:B144');
[row2,column2] = size(ROAD);
for i = 1 : row2for j = 1 : column2if(ROAD(i,j) > 92)ROAD(i,1) = 0;ROAD(i,2) = 0;endend
end
%disp(ROAD);
%求节点之间的直接距离
DISTANCE = zeros(92);
for i = 1 : 92for j = 1 : 92DISTANCE(i,j) = inf;if(i == j)DISTANCE(i,j) = 0;endend
end
%disp(DISTANCE);
for i = 1 : row2for j = 1 : column2x1 = ROAD(i,1);x2 = ROAD(i,2);if ((x1 == 0)&&(x2 == 0))continue;elsedis=sqrt((JIEDIAN(x1,1)-JIEDIAN(x2,1))^2+(JIEDIAN(x1,2)-JIEDIAN(x2,2))^2);DISTANCE(x1,x2) = dis;DISTANCE(x2,x1) = dis;endend
end
%disp(DISTANCE);
%FLOYD算法并写入文件dist中
Dist = floyd(DISTANCE);
%找出每个平台距离不大于30(换算后距离)的节点以及无法到达的节点
PT_y_JD = [];
PT_n_JD = 21:92;
for i = 1 : 20k = 1;PT_y_JD(i,k) = i;for j =21 : 92if(Dist(i,j)<=30)k = k + 1;PT_y_JD(i,k) = j;PT_n_JD(PT_n_JD == j) = [];endend
end
%读取出入A区的节点
GATE = xlsread(file,4,'C2:C14');
%分别以到出入节点的距离和到平台的距离形成两个矩阵
%距离出入口节点最近的平台
PT_y1_GT = [];
%距离平台最近的出入口节点
PT_y2_GT = [];
column3 = length(GATE);
for j = 1 : 20k = 1;dis_to_GT2 = [];for i = 1 : column3PT_y2_GT(i,1) = GATE(i);dis_to_GT1 = Dist(GATE(i),1:20);dis_to_GT2(end+1) = Dist(j,GATE(i));mindis = min(dis_to_GT1);if(Dist(GATE(i),j) == mindis)PT_y1_GT(j,k) = GATE(i);k = k + 1;endendk = 2;mindis = min(dis_to_GT2);for i = 1 : column3if(Dist(j,GATE(i)) == mindis)PT_y2_GT(j,k) = j;k = k + 1;endend
end
%到平台的距离不用修改即可使用
PT_yy_GT = [];
for i = 1 : column3for j = 1 : 20if (j == PT_y2_GT(i,2))PT_yy_GT(j,1) = j;PT_yy_GT(j,2) = PT_y2_GT(i,1);endend
end
%把每个平台辖区的平台节点删去,优化范围辖区
%前面已优化
%求出优化范围辖区
%找出重复出现的节点
REPEATED_JD = [];
[row4,column4] = size(PT_y_JD);
UN_REPEATED_JD = [];
%定义计数变量
for k = 21 : 92count = 0;for i = 1 : row4for j = 1 : column4if(PT_y_JD(i,j)==k)count = count + 1;endif((count > 1)&&(i == row4)&&(j == column4))REPEATED_JD(end+1) = k; else if((count==1)&&(i == row4)&&(j == column4))UN_REPEATED_JD(end+1) = k;endendendend
end
%找出重复节点最近的交通平台,并记录在优化的巡警范围数组里面
PT_yy_JD = [];
dis_to_PT = [];
row5 = length(REPEATED_JD);
for j = 1 : 20k = 1;PT_yy_JD(j,k) = j;for i = 1 : row5dis_to_PT = Dist(REPEATED_JD(i),1:20);mindis = min(dis_to_PT);if(Dist(REPEATED_JD(i),j) == mindis)k = k + 1;PT_yy_JD(j,k) = REPEATED_JD(i);endend
end
%把不重复的节点记录进去,得到最优范围覆盖节点
column5 = length(UN_REPEATED_JD);
for i = 1 : column5[row , column] = find(PT_y_JD == UN_REPEATED_JD(i));countZeros = length(find(PT_yy_JD(row,:)>0));k = countZeros + 1;PT_yy_JD(row,k)=UN_REPEATED_JD(i);
end
%把无法及时抵达的点也记录进去,得到最优覆盖
for j = 1 : 20k = 1;for i = 1 : length(PT_n_JD)dis_to_PT = Dist(PT_n_JD(i),1:20);mindis = min(dis_to_PT);if(Dist(PT_n_JD(i),j) == mindis)countZeros = length(find(PT_yy_JD(j,:)>0));k = countZeros + 1;PT_yy_JD(j,k)=PT_n_JD(i);endend
end
fprintf('优化后的交通平台管辖范围\n');
disp(PT_yy_JD);
fprintf('交通平台及其负责的A区出入点\n');
disp(PT_yy_GT);
运行结果:
优化后的交通平台管辖范围1 67 68 69 71 73 74 75 76 782 40 43 44 70 72 39 0 0 03 65 66 54 55 0 0 0 0 04 57 63 64 60 62 0 0 0 05 50 51 52 56 58 59 49 53 06 0 0 0 0 0 0 0 0 07 32 47 48 30 61 0 0 0 08 33 46 0 0 0 0 0 0 09 31 34 35 45 0 0 0 0 010 0 0 0 0 0 0 0 0 011 26 27 0 0 0 0 0 0 012 25 0 0 0 0 0 0 0 013 21 22 23 24 0 0 0 0 014 0 0 0 0 0 0 0 0 015 28 29 0 0 0 0 0 0 016 36 37 38 0 0 0 0 0 017 42 41 0 0 0 0 0 0 018 80 81 82 83 0 0 0 0 019 77 79 0 0 0 0 0 0 020 84 85 87 88 89 90 91 86 92交通平台及其负责的A区出入点1 122 143 164 215 226 237 248 289 2910 3011 3812 4813 62
tips:
1.一开始导入excel文件时,matlab会提示该文件没有添加到路径,直接添加就好。
2.在分配路口节点到平台的过程中,我同时进行了将路口节点分配到距离它们最近的平台节点和将平台节点分配到距离它们最近的路口节点两个操作。结果发现将路口节点分配到距离它们最近的平台节点所得结果一个平台会包含多个路口节点,不太合理。将平台节点分配到距离它们最近的路口节点,可以得到合适的结果。
3.本次floyd算法仅仅需要得到最短距离的矩阵,没有要求路径,所以代码里面没有实现路径部分。
后面的两问,以后学会了再写,我们一起进步。各位看官,瑞斯拜~~
2011年B题交通巡警第一问的练习与实现相关推荐
- 全国大学生数学建模2011年B题交巡警服务平台的设置与调度
第三次数学建模练习
- 2020年高教社杯全国大学生数学建模竞赛C题 第一问详细解答+代码
2020年高教社杯全国大学生数学建模竞赛C题 第一问详细解答+代码 本文摘自小编自己的参赛论文与经历,小编获得了2020年高教社杯国奖,有问题的同学们可私聊博主哦. 1. 问题分析 问题一主要围绕信贷 ...
- 2011年数学建模国赛B题(交巡警服务平台的设置与调度模型)论文.doc
本博客下载链接有可以修改的word版本, 可免费下载阅览学习, 也可作为数学建模相关课程作业修改上交. 链接:https://pan.baidu.com/s/1xJKV-MeA1qJAevXpfLpk ...
- 2022华为杯A题第一问详细思路
第一问思路 华为杯A题具有相当专业性,对于非雷达或者信通专业的学生而言可能题都看不懂.这里先带领大家分析一下题目. 这张图说明了本题,也就是连续波雷达的定位方式.首先产生连续波信号,通过功放(PA)进 ...
- 2018年中国研究生数学建模竞赛E题 第一问解析与探讨(含matlab源码)
多无人机对组网雷达的协同干扰 1. 引言 前段时间忙里偷闲,想找虐一下,于是做了一下2018年中国研究生数学建模竞赛E题,整个四天左右的时间里 ...
- 考研英语一2011年真题模考总结
写在前面:今天花了2h41min完成2011年真题的模考. 文章目录 1.时间安排与统计 2 评分 3 总结 1翻译 2 阅读 3 完形填空 2020年11月16日17点13分回顾一下时间安排 1.时 ...
- 经典算法题每日演练——第一题 百钱买百鸡
经典算法题每日演练--第一题 百钱买百鸡 原文:经典算法题每日演练--第一题 百钱买百鸡 百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱, ...
- 面试第一问:简单做个自我介绍吧,怎么回答才让面试官频频点头?
面试第一问:简单做个自我介绍吧,怎么回答才让面试官频频点头? 前言 个人的基本信息,扬长避短 突出自己的技能 个人兴趣爱好与结尾 总体案例: 前言 面试问题第一问,99.99999%都是:请先做个自我 ...
- 【Python二级等考大题】星座三问
问题描述 代码框中给出的代码是提示代码,你可以局部修改,或者全部删除重写. ...
最新文章
- Spring Cloud(七)服务网关 Zuul Filter 使用
- 【网址收藏】本地VSCode编辑远程服务器文件:Remote SSH
- springmvc面试题2021
- 软件测试:面试屡屡碰壁,只因你身上少了这几个特征!
- 自动化测试基础篇--Selenium中数据参数化之TXT
- IdentityServer4 And AspNetCore.Identity Get AccessToken 问题
- bzoj1692 [Usaco2007 Dec]队列变换
- Web存储(Web Storage)介绍
- 第五章 高级发布-订阅模式
- matlab三角函数用法
- 英雄无敌3pc移植android版,英雄无敌3手机版
- 支付宝支付时提示“长时间没操作,请重新发起请求”的错误处理
- python色彩变换CMYK,RGB,HSI
- 平方根估计 python 3
- python 排名函数_python 中rank函数怎样理解?
- 最近5年133个Java面试问题列表
- SolarWinds 黑客攻击可能与 Turla APT 相关
- 安卓手机运行python程序
- 华为平板可不可以安装Android,华为平板能跟iPad过招?MatePad Pro在安卓称王但用户不一定买单...
- Linux使用本地光盘制作yum源
热门文章
- 记录一次wine安装(下列软件包有未满足的依赖关系: winehq-stable : 依赖: wine-stable (= 5.0.0~bionic))
- 电子科大和北邮计算机,电子科技大学和北京邮电大学的计算机专业哪个好?多角度分析...
- 年底了,接个大活儿,做一个回顾公司五年发展的总结ppt,要求做成H5网页
- Cookie的加密与解密
- 计算机应用专业行业企业调研报告
- 气压传感器BMP280
- RabbitMQ忘记guestadmin 密码
- fpga如何约束走线_FPGA时序约束的几种方法
- 如何让背景图按div自适应大小
- 中软国际python机试题_中软国际笔试试题