2011数学建模国赛B题 求解答
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2011数学建模国赛B题 求解答相关的知识,希望对你有一定的参考价值。
B题 就是交通调度那道
一 问题的重述110警车在街道上巡逻,既能够对违法犯罪分子起到震慑作用,降低犯罪率,又能够增加市民的安全感,同时也加快了接处警时间,提高了反应时效,为社会和谐提供了有力的保障。
现给出某城市内一区域,其道路数据和地图数据已知,该区域内三个重点部位的坐标分别为:(5112,4806),(9126, 4266),(7434 ,1332)。该区域内共有307个道路交叉口,为简化问题,相邻两个交叉路口之间的道路近似认为是直线,且所有事发现场均在下图的道路上。
该市拟增加一批配备有GPS卫星定位系统及先进通讯设备的110警车。设110警车的平均巡逻速度为20km/h,接警后的平均行驶速度为40km/h。警车配置及巡逻方案要尽量满足以下要求:
D1. 警车在接警后三分钟内赶到现场的比例不低于90%;而赶到重点部位的时间必须在两分钟之内。
D2. 使巡逻效果更显著;
D3. 警车巡逻规律应有一定的隐蔽性。
现在我们需要解决以下几个问题:
一. 若要求满足D1,该区最少需要配置多少辆警车巡逻?
二. 请给出评价巡逻效果显著程度的有关指标。
三.请给出满足D1且尽量满足D2条件的警车巡逻方案及其评价指标值。
四. 在第三问的基础上,再考虑D3条件,给出你们的警车巡逻方案及其评价指标值。
五.如果该区域仅配置10辆警车,应如何制定巡逻方案,使D1、D2尽量得到满足?
六. 若警车接警后的平均行驶速度提高到50km/h,回答问题三。
七. 你们认为还有哪些因素、哪些情况需要考虑?给出你们相应的解决方案。
二 问题分析
本题为城区道路网络中警车配置及巡逻问题。在进行警车配置时,首先要考虑警车在接警后在规定时间内赶到现场的比例,在此条件下,以车数最少为目标,建模、求解;在制定巡逻方案时,要考虑巡逻的效果及隐蔽性问题。
问题一只要求满足D1,求最少的警车配置数,可以认为警车是不动的,在三分钟或两分钟内它能到达的区域就是它的覆盖范围。据此,在满足所有街道的覆盖率不低于90%的条件下,寻找最优解。
问题二要评价巡逻效果,有两个方面需要考虑:一是巡逻的全面性,即经过一段时间后警车走过的街道数占总街道数的比例;二是巡逻的不均匀性,即经过一段时间后警车经过每一条街道的次数相差不大,用方差来衡量。
问题三是在满足D1的条件上尽量满足问题二所给的指标,并给出评价方案的指标。首先找到一组满足D1的各警车位置,然后在和各警车位置相连的点中随机寻找一个点,判断新的点是否满足D1,如果满足则警车行驶到该点,否则重新寻找,直到满足为止。一段时间后统计所有车走过的点数及每个点被走过的次数,用问题二给出的两个指标进行评价。综合两个指标,可判断此路径的好坏,重复这个过程,直到综合评价指标达到一个满意的值为止。
问题四增加了隐蔽性要求,首先给出评价隐蔽性的指标,隐蔽性可用路线的随机性来评价,将它加入到问题三的模型中去进行求解。
问题五限制警车数量为10,要综合考虑D1、D2,先分配这10辆车使道路的覆盖率最高,然后按照问题三的步骤进行求解,其中每一步对D1的判断只需使道路的覆盖率尽量高即可。
问题六同问题三,只需将车速改为50km/h即可。
三 模型的假设
1. 警车都在路上巡逻,巡警去处理案件的时间不考虑;
2. 所有事发现场都在道路上,案件在道路上任一点是等概率发生的;
3. 警车初始停靠点是随机的,但尽量让它们分散分布,一辆警车管辖一个分区;
4. 假定各个划分区域内,较短时间内,最多会发生一个案件;
5. 假设区域内的每条道路都是双行线,不考虑转弯对结果造成的影响;
6. 如果重点部位不在道路上的,假设这些重点部位在离它们最近的道路上;
7. 图中水域对巡逻方案没有影响。
四 符号说明
表示警车数目
表示警车初始停靠点到各道路的最短距离
表示整个区域的总道路长度
表示不能在3分钟内到达的区域的道路的长度
表示非重点部位的警车在3分钟内不能到达现场的比例
表示三分钟内能从接警位置赶到事发现场的最大距离是
表示整个区域总的离散点个数
表示第 区内的节点个数
表示区内调整函数
表示模拟退火的时间,表征温度值
表示区间调整函数
表示全面性指标
表示不均匀性指标
表示综合评价指标
表示第 辆车经过每条道路的次数
表示整个区域每条道路经过的平均次数
五 模型的建立与算法的设计
5.1 满足D1时,该区所需要配置的最少警车数目和巡逻方案
5.1.1 满足D1条件时,区域最少警车的规律
题目要求警车的配置和巡逻方案满足D1要求时,整个区域所需要配置的警车数目最少。由假设可知警车都在道路上,且所有事发现场也都在道路上,但区域内总的道路长度是个定值的;警车在接警后赶到事发现场有时间限制和概率限制:三分钟内赶到普通区域案发现场的比例不低于90%,而赶到重点部位的时间必须控制在两分钟之内。由此可知每辆警车的管辖范围不会很大,于是考虑将整个区域分成若干个分区,每辆警车管辖一个分区域。
由上面的分析,求解整个区域的警车数目最少这个问题可转化为求解每一辆警车所能管辖的街道范围尽量的大。于是我们寻找出使每辆警车管辖的范围尽量大的规律。为了简化问题,我们不考虑赶到现场的90%的几率的限制,仅对警车能在三分钟内赶到事发现场的情况作定性分析,其分析示意图如图1所示。警车的初始停靠位置是随机的分布在道路上的任一节点上,我们假设一辆警车停靠在A点上。
图1 一辆警车管辖范围分析示意图
由于警车的平均巡逻速度为20km/h,接警后的平均行驶速度为40km/h,由于距离信息比较容易得到,于是我们将时间限制转化为距离限制,这样便于分析和求解。当警车接警后,在三分钟内能从接警位置赶到事发现场的最大距离是 ,其中 。
如图1所示,我们设警车初始停靠位置在A点,A点是道路1,2,3,4的道路交叉口。我们仅以警车在道路1巡逻为例来进行分析,警车以 的速度在道路1上A到 点之间巡逻, 与初始停靠点A的距离为 。由于案件有可能在道路上任一点发生,当警车巡逻到A点时,若案发现场在道路2,3,4上发生时,警车以40km/h的速度向事发现场行驶,警车能在三分钟内从 点赶到现场的最大距离为 。如果警车在道路1上继续向前行驶,则该警车能在三分钟内赶到现场的距离继续缩小,当警车从初始点向A点行驶但没有达到 点时,此时该警车的最大管辖范围比警车到达 点时的最大管辖范围大。为了使警车的管辖范围尽量大,警车的巡逻范围越小越好,当 时,即警车在初始停靠点静止不动时,警车的管辖范围达到最大值 。
图1所分析的是特殊的情况,道路1,2,3,4对称分布,现在我们来对一般的情况进行分析,如图2所示。
图2.1 图2.2
图2 一辆警车最大管辖范围分析示意图
图2.1所示的情况是道路分布不对称,与图1相比,图2.1所示的道路方向和角度都发生了改变,图2.3中的情形更为复杂。参照对图1的分析方法,我们分析这两种情形下,警车巡逻时能在三分钟内赶到现场的最大距离的规律,我们只分析图2.2的情况,道路1,2,3,4,5相交于点C,同时道路1与道路6也有个道路交叉口D, 由于警车巡逻时是在道路上行驶的,行走的路线是分段直线,并不影响路径的长度,所以当警车巡逻到距离初始停靠点C点 远处的D,此时若有案件发生时,该警车要在三分钟内能赶到现场处理案件,最大行驶距离在 之内,如果警车在道路1上继续向前行驶,则该警车能在三分钟内赶到现场的距离继续缩小,当警车没有行驶到D点时,此时该警车的最大管辖范围比 大,为了使警车的管辖范围尽量大,警车的巡逻范围越小越好。当 时,即警车静止不动时,一辆警车的管辖范围能达到最大值。
以上分析的仅作定性的分析,对于三个重点部位也可以同理分析,所得的结论是一致的,以上的分析没有考虑到90%的到达几率限制,但在设计算法需要充分考虑。
综上所述,当警车静止在初始停靠点时,在三分钟时间限制内,警车能从初始停靠点赶到事发现场的最大距离为 。
5.1.2 将道路离散化
由于事发现场是等概率地分布在道路上的,由区域地图可以发现,整个区域中的道路长度不均,为了使计算结果更加精确,可将这些道路离散化。只要选取合适的离散方案,就能使警车在经过道路上的离散的点时就相当于经过了这条道路。这样,不论是求解警车初始停靠点还求解警车赶到事发现场所经过的道路时,所计算得的的结果显然比仅考虑整条道路的叉路口要精确得多。
区域中共有307个道路交叉口,458条道路。我们采用线性插值方法对道路进行离散化,以 的速度行走一分钟的距离作为步长,一分钟时间的选择是参照问题三的结果要求来设定的,步长 。用线性插值的方法,从道路的一个方向进行线性插值,实现将每条道路离散化的目标,考虑到有些道路不是 的整数倍,我们就一般情况进行讨论,其分析示意图如图3所示。道路AB长度为 个 与 长度的和,为了更精确处理CB段道路,那么就要考虑在CB之间是否要插入一个新的点, 根据 的长度不同,其对应的处理方式也有所不同。
图3 道路离散化分析示意图
引进临界指数 ,选取 大小的准则是使尽量离散化后警车等效的平均巡逻速度和题目给定的速度( )的差值尽量小,经过计算得 时,不再插入新的坐标点时能使整个区域的道路离散效果较好。此时,将CB段长度设定为 处理,于是离散后的AB道路长度会比实际长度短些;当 时,需要在两个点之间再插入一点,因为这样处理能使整个区域的整体道路的离散化效果比较理想。如图3所示,在C与B间再插入新的坐标点,插入的位置在距C点 的D点处,这样处理后所得的道路长度比实际长度长了 。采用这样的方法进行线性插值,我们使用MATLAB编程实现对整个区域道路的离散,所得的离散结果如图4所示,离散后共得到762个节点,比原始数据多了455个节点,离散后的节点数据见附件中的“newpoint.txt”。
图4 整个区域离散结果图
采用这种插值方法道路离散后,将直线上的无穷多个点转化有限个点,便于分析问题和实现相应的算法,由图4可知,所取得的整体离散效果还是比较理想的。
5.1.3 分区域求解警车数目的算法设计
考虑到警车配置和巡逻方案需要满足:警车在接警后三分钟内赶到普通部位案发现场的比例不低于90%,赶到重点部位必须控制在两分钟之内的要求。设计算法的目标就是求解出在满足D1情况下,总的警车数目最小,即每个区域都尽可能多地覆盖道路节点。由于警车的初始位置是未知的,我们可设警车初始停靠点在道路上的任一点,即分布在图4所示的762个离散点中的某些点节点上,总体思路是让每两辆车之间尽量分散地分布,一辆警车管辖一个分区,用这些分区覆盖整个区域。
于是我们设计算法1,步骤如下所示:
Step1:将整个区域预分配为 个分区,每个分区分配一辆警车,警车的初始停靠位置设在预分配区中心的道路节点上,若区域的中心不在道路节点上,则将警车放在离中心最近的道路节点上;
Step2:统计分区不能覆盖的节点,调整警车的初始停靠点,使分区覆盖尽可能多的道路节点,调整分为区内调整和区间调整方案:(1)区内调整按照模拟退火思想构造的函数,在区间调整调整车辆初始点的位置(后文中有详细说明),当分区内节点数较多时,调整的概率小些,分区内节点数较少时,调整的概率大些,(2)当区域中存在未被覆盖的节点或节点群(大于等于三个节点集中在一个范围内)时,将警车初始位置的调整方向为朝着这些未被覆盖的节点按一定的规则(在算法说明中有详细叙述)移动,同时要保证 3个重点部位能在2分钟之内100%到达;
Step3:用Floyd算法计算出警车初始停靠点到周边各道路节点的最短距离 ;
Step4:以 个划分区域未覆盖的总的道路长度 与整个区域的道路总长度 的比值 来表示警车不能3分钟内到达现场的概率;
Step5:模拟足够多的次数,若 ,将车辆数 减1,跳转到Step1;
Step6:计算结束后,比较当 时所对应的 值, 当 取得最小值时,记录此时的区域划分方案, 即为最少的警车数。
对算法的几点说明:
(1)该算法所取的车辆数 是由多到少进行计算的, 初始值设为20,这个值的选取是根据区域图估算的。
(2)预分区的优点在于使警车的初始位置尽可能均匀地分散分布,警车的初始停靠点在一个分区的中心点附近寻找得到,比起在整个区域随机生成停靠点,计算效率明显得到提高。
预分配之后,需要对整个区域不断地进行调整,调整时需要考虑调整方向和 调整概率。
警车调整借鉴的是模拟退火算法的方法,为了使分区内包含道路节点数较多的分区的初始停车点调整的概率小些,而分区内包含道路节点数的少的分区内的初始停车点调整的概率大些,我们构造了一个调整概率函数 ,
(1)
(1)式中, 均为常数, 为整个区域车辆数, 为第 分区内覆盖的节点数, 为时间,同时 也能表征模拟退火的温度变化情况:初始温度较高,区域调整速度较快,随着时间的增加,温度不断下降,区域调整速度逐渐变慢,这个调整速度变化也是比较符合实际情况的。
由式(1)可以得出调整概率函数 ,假设在相同的温度 (时间)的条件下,由于总的车辆数目 是定值,当 时,即第 分区内的节点数大于第 分区的节点数时,分区 调整的概率大些,分区 的调整概率小些。分析其原因:当分区内包含了较多的节点个数时,该分区的警车初始停靠位置选取地比较合适了,而当分区内包含的道路节点数较少时,说明警车的初始停靠位置没有选好,需要更大概率的调整,这样的结论也是比较客观的。
对于所有分区外未被覆盖的道路节点和很多节点(称之为节点群),用来调整警车位置迁移的方向,其分析示意图如图5所示。调整方案目标是使未被覆盖的节点数尽量的少。在设计调整方向函数时,需要考虑:(1)节点群内节点的数目;(2)警车距离节点群的位置。优先考虑距离,所以在公式(2)中,用距离的平方来描述调整方向函数。
由于某一个区域范围内的未被覆盖节点数,整个区域未被覆盖的节点总数,分区域与未被覆盖的节点或节点群的距离等几个因素会影响到调整的方案,所以要综合考虑这些因素。于是设计了区间调整函数 ,
式中, 表示第 个分区内未被覆盖的节点数, 表示第 分区域与未被覆盖的节点或节点群的距离, 表示未被覆盖的节点和节点群个数。
现在简要分析第 分区按区间调整函数的调整方案,当某两节点群 的节点数目相等,但是距离不等时,如 ,由区间调整公式可知,该区间向节点群 方向调整。当某个分区与两个节点群的距离相等,但节点群的内节点个数不相等,如 时,由(4)可知,该分区域会想节点群 方向调整。
注意在整个调整过程中,调整几率控制是否调整,调整方向函数控制调整的方向,寻找在这种调整方案下的最优结果。
图5 调整分区域示意图
(3)在step3中,使用Floyd算法计算出警车初始停靠点到周边各节点的最短距离 ,目的是当区域内有情况发生时,警车能在要求的时间限制内到达现场。
(4)为求出较优的警车停靠点,采用模拟退火算法,算出局部最优的方案。
5.1.4 警车的配置和巡逻方案
使用MATLAB编程实现算法1得到,整个区域配备13辆警车,这些警车静止在初始停靠点时,能满足D1要求。警车的初始停靠位置分别为道路交叉节点6,25,30,37,82,84,110,111,126,214,253,258,278处。每个警车所管辖的交叉点(原始的交叉节点)如图6所示,求解的分区结果见附录所示。
图6 满足D1条件下的区分划分图
13个分区共覆盖了252个交叉点,另外的55个原始交叉点没有被这些分区域覆盖:137,138,151,159,167,168,170,174,175,186,188,189,211,215,226,242,255,260,261,262,263,267,270,271,272,275,282,283 ,284,287,288,289,292,296,297,299,304,305,307。在这种分区方案下,这些点中,每两个相连的点间的道路离散值长度占整个区域总的长度的比值为 。因此,在整个区域配置13辆警车,每个警车在初始停靠点静止不动,当有案件发生时,离案发现场最近的警车从初始停靠点赶到现场。
5.2 评价巡逻效果显著的指标
110警车在街道上巡逻是目的是为了对违法犯罪分子起到震慑作用,降低犯罪率,又能够增加市民的安全感,同时还加快了接处警(接受报警并赶往现场处理事件)时间,提高了反应时效,为社会和谐提供了有力的保障。巡警在城市繁华街道、公共场所执行巡逻任务, 维护治安, 服务群众, 可以得良好的社会效应[1]。
在整个区域中,由于案发现场都在道路上,道路上的每一点都是等概率发生的,因此警车巡逻的面越广,所巡逻的街道数目越多,警车的巡逻效果就越好,对违法犯罪分子就越有威慑力,警车也能更及时地处理案件。
我们采用全面性 来衡量巡逻的效果显著性,即用警车巡逻所经过的街道节点数占区域总节点数的比值。当警车重复经过同一条街道同一个离散点时, 仅记录一次。
(3)
式中, 表示警车经过的离散点数, 代表整个区域总的离散点数。 值越大,表明警车所经过的街道数目越多,所取得的效果越显著。
同时考虑到在巡逻过程中可能会出现这样的情况:在相同的时段内,警车会多次巡逻部分街道,而一些街道却很少巡逻甚至没有警车到达,这样会造成一些巡逻盲区。分布很不均衡。这样就可能出现巡逻密度大的街道上的违法犯罪分子不敢在街道上作案,而流窜到巡逻密度稀疏的街道上作案,因此在相同的警车数目条件下,密度不均衡的巡逻方式的巡逻效果的效果较差,而密度较均衡的巡逻方式所取得的巡逻效果会更好些。我们引入一个巡逻的不均匀度 来衡量巡逻效果的显著性,考虑到方差能表示不均衡度,于是我们用方差的大小来表征不均衡,方差越大,巡逻密度越不均衡,所取得的巡逻效果越差。
(4)
问题1所给出的满足D1条件下的警车数目为13辆,这时每辆警车在初始停靠点静止不动,只有该管辖区域内发生了案件时,警车才从初始停靠点赶到案发现场处理案件。当警车在巡逻状态时,所需要考虑的问题就更复杂一些,如当节点运动时,警车还能否达到D1的要求,警车的运动方向如何等问题,但基本算法思想与问题1类似,所得的算法2的框图如图7所示,
为了简化问题,我们假设各分区警车的巡逻时候,尽量保证所有的警车的行驶方向相一致,且警车都走双行道,即当警车走到某个节点后,它们又同时返回初始停靠点,警车的行驶方向有四种方式,如6所示。
在图6中,数字1代表走巡逻走的第一步,2表示朝1的巡逻方向相反的方向巡逻。在具体程序实现时,四种巡逻方向任意选择,但是尽量保证所有的警车向同一个方向巡逻。
图6 各警车巡逻方向图
我们用MATLAB编程对这种巡逻方式进行计算,所得的车辆数目为18辆,综合评价指标为 ,其结果巡逻方案见附件中的“1193402-Result3.txt”所示。
5.4 在满足问题三的基础上讨论D3条件,警车的巡逻方案和评价指标
巡逻的隐蔽性体现在警车的巡逻路线和时间没有明显的规律,主要目的是让违法犯罪分子无可乘之机,防止他们在非巡逻时间实施违法犯罪活动,危害人民的生命和财产安全。
为了使巡逻的规律具有隐蔽性,这就需要警车在巡逻时至少具有两条不同的路线,时间最好也是不相同的。因此,考虑到隐蔽性时,只需要在问题2的基础上加上一个随机过程即可。对于其评价指标,由于警车有几条可选的巡逻路线,当相同的路线在同一时间内重复出现时,重新将所设定的方案再执行一遍,我们用这个时间间隔来衡量隐蔽性的程度,当循环周期 越大,表明可选的巡逻方案越多,其规律就越具有隐蔽性,而循环周期 越小时,表明巡逻方案比较少,其隐蔽性较差。在巡逻状态时,最差的隐蔽性巡逻方案是巡逻方案只有一个,并且时间固定,这样的巡逻方案没有任何隐蔽性可言。
5.5 整个区域为10辆车时的巡逻方案
由第三问的结果可知,10辆车的数量是不能把整个区域完全覆盖的,其算法与算法2类似,不同的是此时车的数目已经固定了,要求使D1,D2尽量大的满足,我们求得的评价指标值为 ,所得的巡逻方案见附件中的“1193402-Result5.txt”所示。
5.6 平均行驶速度提高到 时的巡逻方式和评价指标值
问题六的分析方法与具体实现与问题三一致,但是警车的接警后的平均速度由原来的 提高到 ,于是各分区的覆盖范围也增大了,将数值带入问题3的算法中求解, 计算得的指标值为 ,其巡逻方案见附件中的“1193402-Result6.txt”所示。
图7 算法2框图
六 模型的分析和评价
在求解满足D1的条件下,整个区域需要配备多少辆警车问题中,采用分区巡逻的思想,先分析能使各区管辖范围达到最大值时的规律,由特殊到一般层层进行分析,逻辑严密,结果合理。
在求解区域和警车数目时,在初步设定警车停靠点位置的基础上,用模拟退火算法思路构造函数 来确定调整的概率大小,综合考虑了影响区间调整的因素后构造了 函数来确定分区的调整方向,当分区按照这两个调整函数进行调整时,各分区能管辖尽可能多的道路节点,所取得效果也比较理想。
参 考 文 献
[1]中小城市警察巡逻勤务方式的探讨,俞详,江苏公安专科学校学报,1998年第1期
[2]Matlab7.0从入门到精通,求是科技,人民邮电出版社;
[3]不确定车数的随机车辆路径问题模型及算法,运怀立等,工业工程,第10卷第3期,2005年5月;
[4]随机交通分配中的有效路径的确定方法,李志纯等,交通运输系统工程与信息,第3卷第1期,2003年2月。 参考技术A 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个工作表)。
这是参考答案:http://wenku.baidu.com/view/92631cc0d5bbfd0a795673ad.html
希望对你有帮助。 参考技术B 城市交通巡警平台的设置与调度
摘要:
关键字:最短路径、效率最高、动态规划、surfer作图、
一.问题的重述
警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。每个交巡警服务平台的职能和警力配备基本相同。根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源。就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:
(1)为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。
对于重大突发事件,需要调度全区20个交巡警服务平台的警力资源,对进出该区的13条交通要道实现快速全封锁。实际中一个平台的警力最多封锁一个路口,请给出该区交巡警服务平台警力合理的调度方案。
根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台的具体个数和位置。
(2)针对全市(主城六区A,B,C,D,E,F)的具体情况,按照设置交巡警服务平台的原则和任务,分析研究该市现有交巡警服务平台设置方案(参见附件)的合理性。如果有明显不合理,请给出解决方案。
如果该市地点P(第32个节点)处发生了重大刑事案件,在案发3分钟后接到报警,犯罪嫌疑人已驾车逃跑。为了快速搜捕嫌疑犯,请给出调度全市交巡警服务平台警力资源的最佳围堵方案。
二、问题的分析
问题一中有三个小问题,分别讨论在现有巡警台不变的情况下,确定出每个巡警台的控制范围,要求在三分钟之内尽可能到达;当有案件发生时,各交巡警按预定的路线到达指定路口封锁该路口,要求我们给出各节点接到指示时他们的行车路线;根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台的具体个数和位置。根据给出的地图和其他数据,运用matlab软件使用Dijkstra算法以及floyd算法,确定出了最短路径,从而可以计算得出每个巡警台所能控制的范围。不仅仅要考虑运行路线的最短和优化性,还要考虑时间尽可能较少的优化。
问题二
三.基本假设
1.不考虑巡警在实际工作中所出现的故障而导致延误追捕。
2.假设各站点的警力量是平均一致且为一固定值(巡警台人数高峰期和低潮期的平均值为单一均值)。
3.在整个路途中,通过各种通讯工具,走的路程都是最短路程。
4.不考虑巡警车在行驶过程中出现的塞车、抛锚等耽误时间的情况。
5.不考虑警员所消耗的时间。
7.在整个路途中,转弯处不需要花费时间
8.假设逃犯与警察的速度是相同的。
9.假设路径是单向的。
变量说明:
: 任意两个标志点 与 间的距离
: 标志点间的距离组成的距离矩阵
: 标志点的邻接矩阵
: 邻接矩阵的元素。
: 相邻标志点间的距离矩阵。
: 相邻标志点 与 间的距离
: 标志点的权值矩阵
: 标志点间的最短距离矩阵
: 标志点 与 之间的最短距离。
: 恒定车速
: 图中标数与实际比例
T: 出警所用最大时间
V: 接到报警到到达出事地点所用最大时间
L(θ): 从交巡警平台到达出事地块所行驶的最大路程
四、模型定义
1.Dijksta算法:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将 加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度⑴。
2.最优化问题:采用问量表示法,例如前面例子中的(r.H)可以看做是二维问题中的一个向量区的两个分量,即
或
对于n维向量空间Rn中一个向量X的n个分量,即
或
于是前面所描述的求极小值问题可以简记为:minf(X)
这里的f(X)称为向量变量的实值函数。
设有L个向量变量的实值函数:h1(X), h2(X), …,hL(X)
给定X后,又可以把这L个实值函数看做是L维空间RL中的一个向量h(X)的L个分量,记为:h(X)=[ h1(X), h2(X), …,hL(X)]T。
按照这种表示方法,具有L个等式约束的求极小问题可记为:
(1-1)
其中s.t是subject to 缩写,表示“满足于”,“受…约束”
最优化问题有如下形式:
一般式:
(1-2)
向量式:
(1-3)
式中f(X)称为目标函数(或求它的极小,或求它的极大)。
优化过程就是优选X,使目标函数达到最优值:f(X)->Optimization
si(X)称为不等式约束,它的向量表示法可以写成:
s(X)=[ s1(X), s2(X), …,sm(X)]T
hj(X)称为等式约束
X∈Ω,称为集约束,在我们的问题中集约束是无关重要的,这是因为有时Ω≡Rn,不然的话,Ω也可以用不等式约束表达出来,如:
对 ,其中 ,此时集约束可以用不等式来代替,如
故今后不再考虑集约束。
例如:前面例子球铸成圆柱体,
这个问题的集约是:
实际上都可以用不等式约束来代替:
则
floyd算法:
1,从任意一条单边路径开始。所有两点之间的距离是边的权,或者无穷大,如果两点之间没有边相连。
2,对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己知的路径更短。如果是更新它。
3,不可思议的是,只要按排适当,就能得到结果。
5.邻接矩阵:邻接矩阵(Adjacency Matrix):是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V=v1,v2,…,vn。G的邻接矩阵是一个具有下列性质的n阶方阵:
①对无向图而言,邻接矩阵一定是对称的,而且对角线一定为零,有向图则不一定如此。
②在无向图中,任一顶点i的度为第i列所有元素的和,在有向图中顶点i的出度为第i行所有元素的和,而入度为第i列所有元素的和。③用邻接矩阵法表示图共需要n^2个空间,由于无向图的邻接矩阵一定具有对称关系,所以扣除对角线为零外,仅需要存储上三角形或下三角形的数据即可,因此仅需要n(n-1)/2个空间。
五.模型的建立与求解
对于问题一,模型求解:
根据我们建立的模型,我们进行了编程,主要代码如下:
(1)Dijkstra算法的C++代码:
#include<iostream.h>
void main()
int infinity=100,j,i,n,k,t,**w,*s,*p,*d;
cout<<"input the value of n:";
cin>>n;
cout<<endl;
d=new int[n];
s=new int[n];
p=new int[n];
w=new int*[n];
for(i=0;i<n;i++) w[i]=new int[n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>w[i][j];
for(s[0]=1,i=1;i<n;i++)
s[i]=0;d[i]=w[0][i];
if(d[i]<infinity) p[i]=0;
else p[i]=-1;
for(i=1;i<n;i++)
t=infinity;k=1;
for(j=1;j<n;j++)
if((!s[j])&&(d[j]<t)) t=d[j];k=j;
s[k]=1;//point k join the S
for (j=1;j<n;j++)
if((!s[j])&&(d[j]>d[k]+w[k][j]))
d[j]=d[k]+w[k][j];p[j]=k;
cout<<"从源点到其它顶点的最短距离依次如下:";
for(i=1;i<n;i++) cout<<d[i]<<" ";
(2)floyd算法:
#include <iostream>
#include <iomanip>
using namespace std;
#define MAX_VERTEX_NUM 10 //最大顶点个数
#define TRUE 1
#define FALSE 0
#define INFINITY 32767 /* 用整型最大值代替∞ */
typedef char VERTYPE;
typedef struct
VERTYPE vexs[MAX_VERTEX_NUM]; //顶点向量
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点数和弧数
mgraph, * MGraph;
typedef int DistancMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //存放路径长度
typedef int PathMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM][MAX_VERTEX_NUM];
//存放路径,P[0][1][]表示顶点0到顶点1的路径,经过哪个点P[0][1][i]就是TRUE。
void init_mgraph(MGraph &g) //初始化图
g=(MGraph)malloc(sizeof(mgraph));
g->vexnum=0;
g->arcnum=0;
for(int i=0;i<MAX_VERTEX_NUM;i++)
g->vexs[i]=0;
for(i=0;i<MAX_VERTEX_NUM;i++)
for(int j=0;j<MAX_VERTEX_NUM;j++)
g->arcs[i][j]=INFINITY;
void add_vexs(MGraph &g) //增加顶点
cout<<"请输入顶点的个数:"<<endl;
cin>>g->vexnum;
cout<<"请输入顶点的值"<<endl;
for(int i=0;i<g->vexnum;i++)
cin>>g->vexs[i];
void add_arcs(MGraph &g) //增加边
cout<<"请输入边的个数:"<<endl;
cin>>g->arcnum;
VERTYPE ch1,ch2;
int row,col,weight;
for(int i=0;i<g->arcnum;i++)
cin>>ch1>>ch2>>weight;
for(int j=0;j<g->vexnum;j++)
if(g->vexs[j]==ch1)
row=j;
if(g->vexs[j]==ch2)
col=j;
g->arcs[row][col]=weight; //有向带权图只需把1改为weight
void creat_mgraph(MGraph &g) //创建图
add_vexs(g); //增加顶点
add_arcs(g); //增加边
void print_mgraph(MGraph &g) //打印图
for(int i=0;i<g->vexnum;i++)
cout<<" "<<g->vexs[i]<<" ";
cout<<endl;
for(i=0;i<g->vexnum;i++)
cout<<g->vexs[i]<<" ";
for(int j=0;j<g->vexnum;j++)
cout<<setw(5)<<g->arcs[i][j]<<" ";
cout<<endl;
void ShortestPath_FLOYD(MGraph &g, PathMatrix &P, DistancMatrix &D)
//用Floyd算法求有向网G中各顶点对v和w之间的最短路径P[v][w]及其带权长度D[v][w]。
//若P[v][w][u]为TRUE,则u是从v到w当前求得最短路径上的顶点。
int v,w,u,i;
for(v=0; v<g->vexnum; ++v)
for(w=0; w<g->vexnum; ++w)
D[v][w] = g->arcs[v][w];
for(u=0; u<g->vexnum; ++u) //初始化
P[v][w][u] = FALSE;
if(D[v][w] < INFINITY) //从v到w有直接路径
P[v][w][v] = TRUE; //起点
P[v][w][w] = TRUE; //终点
//if
//for
for(u=0; u<g->vexnum; ++u)
for(v=0; v<g->vexnum; ++v)
for(w=0; w<g->vexnum; ++w)
if(u==v || v==w || w==u)
continue;
if(D[v][u] + D[u][w] < D[v][w]) //从v经u到w的一条路径更短
D[v][w] = D[v][u] + D[u][w];
for(i=0; i<g->vexnum; ++i)
P[v][w][i] = P[v][u][i] || P[u][w][i];
//if
void print_PathMatrix(MGraph &g, PathMatrix &P) //打印路径矩阵
cout<<" ";
for(int i=0;i<g->vexnum;i++)
cout<<g->vexs[i]<<" ";
cout<<endl;
for(i=0;i<g->vexnum;i++)
for(int j=0;j<g->vexnum;j++)
cout<<i<<"-->"<<j<<": ";
for(int k=0;k<g->vexnum;k++)
cout<<P[i][j][k]<<" ";
cout<<endl;
cout<<endl;
void print_DistancMatrix(MGraph &g, DistancMatrix &D) //打印距离矩阵
for(int i=0;i<g->vexnum;i++)
cout<<" "<<g->vexs[i]<<" ";
cout<<endl;
for(i=0;i<g->vexnum;i++)
cout<<g->vexs[i]<<" ";
for(int j=0;j<g->vexnum;j++)
cout<<setw(5)<<D[i][j]<<" ";
cout<<endl;
int main()
MGraph G;
init_mgraph(G); //初始化图
creat_mgraph(G); //创建图
print_mgraph(G); //打印图
DistancMatrix D;
PathMatrix P;
ShortestPath_FLOYD(G,P,D);
print_DistancMatrix(G,D); //打印距离
print_PathMatrix(G,P); //打印路径
return 0;
得到的作图结果如下图所示:
覆盖范围(单位:百米)
为了达到效率最大化,6,9,14平台不需要进行警力调配,设置警力范围,做出如下范围图示带有颜色的线条,为邻近交巡警服务台的管辖范围。
通过模糊数学知识和匈牙利算法计算可以得出,20个巡警台最快的调度方案所用时间为t=8.015,调度方案如下:第12号路口的交警去12号路口
第16号路口的交警去14号路口,第 9号路口的交警去16号路口,第14号路口的交警去21号路口,第13号路口的交警去23号路口,第 4号路口的交警去62号路口,第10号路口的交警去22号路口,第11号路口的交警去24号路口,第15号路口的交警去28号路口,第 7号路口的交警去29号路口,第 8号路口的交警去30号路口,第 2号路口的交警去38号路口,第 5号路口的交警去48号路口
由图中可以看出,可以新增多个巡警台,分别为图中38,48,29,71,90,54,61,92点为巡警台设备选址合理点,再考虑经济效益最大化以及环保节能化,以增加4个垃圾站为首选,分别是:29,92,61,38点较为合适。
对于问题二:
根据犯罪率和人口密度与巡警台的正比关系,可以得出,人口密度越大,犯罪率越高的地方,更应该增加巡警台的设置,形象地表示A区每个标点的犯罪率高低以及人口密度,从而更好地得出结论
A区各结点犯罪率的标示图
B区各结点犯罪率的标示图
C区各结点犯罪率的标示图
D区各结点犯罪率的标示图
E区各结点犯罪率的标示图
F区各结点犯罪率的标示图
由于犯罪率和人口密度与巡警台的正比关系以及图中所表示的情况可以得出,当前设置的巡警台存在不合理性,更改的结果是:A区情况第一问已经给出,B区警力配置基本合理,不需再多做调度。C区需要增加一个,增加在273路口处。D区中应该新增8个巡警台。E区中需要增加4个巡警台F区中新增4个巡警台较为合理。
对于追捕逃犯问题,针对案发后犯罪嫌疑人去向不明,我们采用圈套式方法,利用动态规划进行分析,找出人力,物力及时间达到一个平衡点。根据第一题的第二小问,我们可以计算出来,A区13个交通要道出口的每个封锁时间为t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,及用时最长的路口时间为T1和用时最短的路口的时间为T2。同时,找到从P出A区最短的线路(见图P)事实上,经过计算得出,犯罪嫌疑人只有可能在两个区中,即A区和C区,我们先考虑犯罪嫌疑人跑出A区到C区的情况一:犯罪嫌疑人由P->节点30,大约需要1.8分钟,也就是说犯罪嫌疑人在3分钟之后已经离开A区,进入C区,所以此时我们应该考虑C区巡警台的围捕问题。经计算可以得出,出动173,174 号平台的警力封锁216,299号节点即可。情况二:犯罪嫌疑人还在A区,可供他选择也就是两个方向,第一小方面是往左边逃跑(如情况二图一),也就只有三种可能出项的情况,通过计算可以得出,巡警台15封锁28号路口,10平台封锁26路口,14平台封锁14路口即可。另一方面是往右边逃跑(如情况二图二),通过计算得出,2,3,4号巡警台往最近的路口处进行封堵就可以达到围捕成功。 (图P)
七.优化结果分析及误差分析:
误差主要体现在距离计算上面,某些站点之间距离不方便计算。为了计算方便,也设定路径是单向的。还有每个巡警台的工作效率和警力是不一致,不是恒定的。假设模型为了实现方便,假定逃犯的速度与警力的速度是一致的,但从实际看,逃犯速度不是恒定不变的而一个完善合理的计划,还应包含一个着眼与长期的计划,由于时间限制,我们也没有深入研究这个问题,但可以作为今后努力的方向。
巡警台发生故障的考虑:在实际操作中,巡警台工作发生故障是一个很大的影响因素,我们应该进一步考虑在调度系统中如何反映与处理故障,以及对路线安排有何影响。
八.模型的评价
上文从巡警台的选址,路线的效率最大化以及巡警台中警员的调度,花费最小化这些方面进行了分析,建立了一个多目标的非线性的数学模型。成功地通过实验和数据分析得出较为准确和可行性高的结果。
九、参考文献:
十、附录: 参考技术C 全国大学生数学建模竞赛B题个人见解:# `7 t' S4 @+ g7 h7 k6 A- m
/ U2 s* `; j2 \# j1 R
这个题目一看就知道是个优化问题;' I- q9 R1 T! V, E5 ~, `# i
1、第一问有三段话,每一段其实是对方案的一次帅选;针对第一段内容,傻子都知道首先建立3分钟区域圈,然后可以得出一些方案,这里可能得出好几个甚至无数个方案,不过不要担心;
! ^) ?/ @2 m' _$ l |2 $ n至于筛选规则,提醒下大家:不要筛没了,也不要留的太多(一般情况下,晒到处理不好,方案没了)! x5 y7 ^4 l3 `& W
第二段主要让你给出调度方案,就是一个配置问题,设计或者选用合适算反来解决是王道!
: X8 b4 Z8 Z$ / T第三段是要你添加一些点,这个应该不难做吧,可以参考下图论的那些个经典算法;
f" C) y& D1 w% p2 M
, H2 v5 \" Q, e- p本题还有其他的解题思路:就是通过建立目标规划模型解决!重点还是实现上啦,其实图论及目标规划很简单,关键是求解算法及实现,这个大家可得花功夫奥!8 M7 h/ V0 x( v) J- . Z' `/ F
" Q8 l0 V2 x: I" X2、这一问其实是一个全局的配置问题;过多的我也不能做解释了,大家自己思考吧,找出一些问题,尤其是区域边界处的设点拥挤问题;
: a2 1 E% S- R5 j9 p% w5 V6 D下面是给你一个问题,让你给出一个方案,这个问题是个资源调配问题,把握两个原则:时间最短、围堵区域最小。 参考技术D 2011 高教社杯全国大学生数学建模竞赛 承 诺 书 我们仔细阅读了中国大学生数学建模竞赛的竞赛规则. 我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮 件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问 题. 我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他 公开的资料(包括网上查到的资料) ,必须按照规定的参考文献的表述方式在正 文引用处和参考文献中明确列出. 我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性.如有违反竞 赛规则的行为,我们将受到严肃处理. 我们参赛选择的题号是(从 A/B/C/D 中选择一项填写) : 我们的参赛报名号为(如果赛区设置报名号的话) : 所属学校(请填写完整的全名) : 参赛队员 (打印并签名) :1. 2. 3. 指导教师或指导教师组负责人 (打印并签名): 日期: 日 C 年 月 赛区评阅编号(由赛区组委会评阅前进行编号): 2010 高教社杯全国大学生数学建模竞赛 编 号 专 用 页 赛区评阅编号(由赛区组委会评阅前进行编号): 赛区评阅记录(可供赛区评阅时使用): 评 阅 人 评 分 备 注 全国统一编号(由赛区组委会送交全国前编号): 全国评阅编号(由全国组委会评阅前进行编号): 交巡警平台设置的优化模型 摘要 在充分理解题意的基础上, 我们提出了合理的假设.通过对问题的深入分析, 我们将本题归结为一个带有约束条件的优化问题. 鉴于路线的复杂程度,我们没有采用常规的 Dijkstra 算法,而采用了动态 规划的方法.其基本思想是通过 LINGO 编程得到一个路口到其他路口的最优路径 寻找出不能设为交警平台的路口. 针对问题一(只考虑线路的网络系统) ,我们建立了模型一,并通过 LINGO 编 程得到从任意一个路口到其他路口的最短距离,从中筛选出大于 120 米的距离, 统计成表二,再根据各路口到离其最远的地块的最短路径分析,得出 A、M 不能 设为交巡警平台. 针对问题二, 我们将问题一中 LINGO 编程所得结果通过 EXCEL 统计出从各路 口到各个地块的最小距离,并将其存为数据文件(见表三).接着用 matlab 编程 求出各路口到离其最远地块的最小距离(见表四) ,观察结果得出出警至最远地 块且用时最短的最小距离为 85 米的三个路口 C、H、I. 针对问题三,根据题意设出最优原则,结合表五逐一进行筛选得到最优交巡 警平台设置路口 B. 最后模型的建立有效的改善了交巡警在执行任务中的效率,同时也可运用到 其他最优选址中,并且可将该模型算法拓展模型在其他领域的适用范围. 关键词:动态规划 最优路径 交巡警平台 LINGO 1 一、问题的背景 面对各种突发事件, 即使在科技高度发达的今天, 也有显得束手无策的时候, 许多国家政府、科学家为预防事故,保障生命财产安全作了一定的工作,例如澳 大利亚在 1993 年 1 月九成立了应急管理署(EMA) ,负责处理自然、人为、技术 等方面的灾害,在事故或灾害发生时,及时、有效地迎对各种重大紧急事件和灾 害. 近十年来,我国科技带动生产力不断发展,国家经济实力不断增强,然而另 一方安全生产形势却相当严峻,每年因各类生产事故造成大量的人员伤亡、经济 损失.尤其是在一些大目标点,作为人类经济、文化、政治、科技信息的中心, 由于其“人口集中、建筑集中、生产集中、财富集中”的特点,一旦发生重大事 故,将会引起相当惨重的损失.为了保障安全生产、预防各类事故.我国正在各省 (市)目标点逐步设立交巡警平台. 2010 年 2 月 7 日,一只名为“交巡警”的全新警种在重庆诞生.这一警种拥 有包括枪支在内的“高精尖”装备,代替过去的交警和巡警.交巡警平台是 将刑事执法、 治安管理、 交通管理、 服务群众四大职能有机融合的新型防控体系. 在人流量极大、治安状况比较复杂、交通持续比较混乱的事故多发带产生强大的 司法制衡力、社会治安的驾驭力、打击罪犯的冲击力.保证在事故发生的第一时 间赶到现场.大力的减少了社会上各种混乱行为的发生.使居民的生命财产安全 得以保障. 二、问题重述 如图 1 所示为重庆市某街区草图,街区内有上下平行 5 条路,左右平行 7 条 路.路宽忽略不计,路长可从图中得知.图中标数与实际比例为 1:25,单位为米. 若在此街区内部设立一交巡警平台,巡警出动到到达出事点不能超过 5 分钟.此 处假定到达出事地块边缘即为到达出事地点.并规定路上行驶时间不得超过 3 分 钟,警车车速恒为 60 千米/小时.那么我们针对题目给出以下三个问题: 图1 重庆市某街区草图 2 问题一:哪些路口不能设交巡警平台? 问题二:哪个路口设为交巡警平台可使出警至最远地块且用时最短?并陈述 理由. 问题三:若地块(4) (16)为事件多发区,则交巡警平台该设在何处?为什 么要设在此处,并由此给出答案.
求dalao解答弱的疑问
1.
#include <stdio.h>
#define maxsize 32575
typedef int SElemType;
typedef struct stack{
SElemType *base,*top;
int stacksize;
}stack;
int Initstack(stack S){
S.base = new stack[maxsize];
if(!S.base)
return -1;
S.base = S.top;
S.stacksize = maxsize;
return 0;
}
int push(stack S,SElemType e){
if(S.top -S.base == S.stacksize)
return -1;
*(S.top++) = e;
return e;
}
int pop(stack S,SElemType e){
if(S.top == S.base)
return -1;
e = *--S.top;
return 1;
}
int stackEmpty(stack S){
if(S.base == S.top)
return -1;
return 0;
}
//十进制转换为八进制
int main(int a){
Initstack(S);
stackEmpty(S);
while(a){
push(S,a%8);
a = a/8;
}
while(!stackEmpty(S)){
pop(S,e);
printf("%d",e);
}
delete S;
return 0;
}
--------------------Configuration: hello - Win32 Debug--------------------
Compiling...
hello.cpp
D:\\vc2016.10.23\\MyProjects\\first2\\hello.cpp(10) : error C2440: ‘=‘ : cannot convert from ‘struct stack *‘ to ‘int *‘
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
D:\\vc2016.10.23\\MyProjects\\first2\\hello.cpp(39) : error C2065: ‘S‘ : undeclared identifier
D:\\vc2016.10.23\\MyProjects\\first2\\hello.cpp(46) : fatal error C1903: unable to recover from previous error(s); stopping compilation
执行 cl.exe 时出错.
hello.obj - 1 error(s), 0 warning(s)
2.区别理解
p= NULL
P-> next =NULL
3.邻接表 后面的链表为什么不用数组 减少循环
4.、、注意边界、特殊情况、、抽象实际图 --》 本质关系图
5.
区别
SqQueue &Q
SqQueue *Q
SqQueue Q
6.
什么时候使用
-》
。
多看些例子也许会明白,特别是连个连起来都要使用的情况
7.
前、后插法建单链表为什么要带头结点
构造一个空栈,栈顶置空,是不是和不带头结点一个意思?
8.
++i i++ --i i--
是由很大的区别 即使是在循环条件中也是非常重要的
注意n》 = 0 应该有否等于号 边界问题很重要
这里循环从0开始, ++i 就没有了0,直接从下标1开始
//十进制转任意进制
#include <stdio.h>
int main(){
int i,n,r,a[2000];
while(scanf("%d,%d",&n,&r)!= EOF){
i =0;
if(n<0){
printf("-");
n = -n;
}
while(n>0){
a[i++] = n%r;
n /= r;
}
for(i -=1;i>=0;--i){
printf("%X",a[i]);
printf("\\n");
}
}
return 0;
}
以上是关于2011数学建模国赛B题 求解答的主要内容,如果未能解决你的问题,请参考以下文章
2021 数学建模国赛B题:空气质量预报二次建模 1 赛后总结与分析