导航:首页 > 源码编译 > 匈牙利算法步骤

匈牙利算法步骤

发布时间:2022-08-07 19:42:30

‘壹’ 什么是匈牙利算法Hall定理是什么

谈匈牙利算法自然避不开Hall定理,即是:对于二部图G,存在一个匹配M,使得X的所有顶点关于M饱和的充要条件是:对于X的任意一个子集A,和A邻接的点集为T(A),恒有: │T(A)│ >= │A│
匈牙利算法是基于Hall定理中充分性证明的思想,其基本步骤为:
1.任给初始匹配M;
2.若X已饱和则结束,否则进行第3步;
3.在X中找到一个非饱和顶点x0,作V1 ← {x0}, V2 ← Φ;
4.若T(V1) = V2则因为无法匹配而停止,否则任选一点y ∈T(V1)\V2;
5.若y已饱和则转6,否则做一条从x0 →y的可增广道路P,M←M?E(P),转2;
6.由于y已饱和,所以M中有一条边(y,z),作 V1 ← V1 ∪{z}, V2 ← V2 ∪ {y}, 转4;

设数组up[1..n] --- 标记二分图的上半部分的点。
down[1..n] --- 标记二分图的下半部分的点。
map[1..n,1..n] --- 表示二分图的上,下部分的点的关系。
True-相连, false---不相连。
over1[1..n],over2[1..n] 标记上下部分的已盖点。
use[1..n,1..n] - 表示该条边是否被覆盖 。

首先对读入数据进行处理 ,对于一条边(x,y) ,起点进集合up,终点进集合down。 标记map中对应元素为true。

1. 寻找up中一个未盖点 。
2. 从该未盖点出发 ,搜索一条可行的路线 ,即由细边出发, 由细边结束, 且细粗交错的路线 。
3. 若找到 ,则修改该路线上的点所对应的over1,over2,use的元素。重复步骤1。
4. 统计use中已覆盖的边的条数total,总数n减去total即为问题的解。

‘贰’ 大学运筹学考试哪些是重点

运筹学重点内容:
第一章
1.掌握LP数学模型的基本特征与形式
根据背景资料建立LP数学模型的方法技巧(例1) (会用图解法求解简单的LP问题 不做重点要求)
2.理解LP问题的解相关概念与判别准则(可行解、基解等) 3.熟悉单纯形表的形式与单纯形表的计算步骤
4.熟练运用普通单纯形表法、人工变量法(包括大M法、两阶段法)求解LP问题
提示:单纯形表的表格线必须正确画出,单纯形表迭代过程要写清楚(如:换入、换出变量(θ值要算出)的确定和主元)
第二章
1.理解与掌握LP原问题与对偶问题的关系(课本中的表),了解LP问题的对偶理论
2.当已知LP问题的原问题及其最优解时,能根据对偶性质直接写出对偶问题和最优解(必须说明具体依据)
3.掌握对偶单纯形法的使用条件,熟练运用对偶单纯形法解适当的LP问题 4.了解影子价格的含义与性质 5.掌握灵敏度分析的方法
①变量的价值系数Cj ②约束条件右端项bi ③
第三章
1.了解运输问题数学模型的特点
2.熟悉表上作业法的步骤。掌握初始基可行解的求法,会对求得的或给定的可行解进行最优性检验。掌握解的改进方法
注意:每得到一个基可行解,就应画一张运输表,运输表的画法要规范,检验数和解必须填入表中的适当位置,必须经过检验才能判定最优解
提示:也可能给一个初始基可行解额,要求从第2个步骤往下做
第四章
1.了解目标规划数学模型的特点 2.掌握目标规划问题的建模
3.掌握求解目标规划问题的单纯形法
第五章
1.了解整数规划模型的特点,整数规划的解与其松弛问题的解的关系 2.掌握求解整数规划问题的割平面法
3.掌握0—1型变量的应用和0—1型整数规划问题的建模
4.了解指派问题数学模型的特点,掌握匈牙利算法的步骤,熟练运用匈牙利法求解指派问题 注意:运用匈牙利法求解指派问题时过程要写清楚,关键步骤不能忽略
第七章
1.理解动态规划的基本概念和基本原理 2.掌握常见动态规划问题的建模与求解方法 建立DP模型 ① 选定解法 ② 划分阶段(按什么划分为几个阶段) ③ 确定状态变量(说明其意义---表示什么)
状态集合(状态数量的取值范围(所有可能出现的状态)) ④ 确定决策变量(说明其意义----表示什么) ⑤ 允许决策集合(说明决策变量允许的取值范围) ⑥ 状态转移方程(从k阶段转移到k(或前)一阶段的递推式) ⑦ 阶段指标(第k阶段在状态为sk决策为uk 时的效果) ⑧ 最优指标函数(说明其意义---表明什么) ⑨ DP基本方程(递推关系与边界条件) 可重点复习:
①一维资源分配问题(含部分静态规划问题建模与求解 例5 习题7.6 7.9(3)) ②生产与存贮问题的动态规划建模(例8 习题7.3) ③采购与销售问题的动态规模建模(例9)
第八章
1.理解图的有关概念、分类及其性质 2.掌握解最短路问题的Dijkstra标号算法
3.理解网络的基本概念。掌握寻求网络最大流、最小割的Ford—Fulkerson标号算法
注意:用Dijkstra、Ford—Fulkerson算法解题时须简要写出步骤,并在图上作必要的标记(每个可行流画一张图)

‘叁’ 指派问题的匈牙利算法

这个问题有点专业!

‘肆’ 关于匈牙利算法的问题

图不连通就是所有连通子图的匹配数的和啊。。
完全二分图不用这个算法,结果直接就是较小那边的数目。。

‘伍’ 什么是匈牙利算法

谈匈牙利算法自然避不开Hall定理,即是:对于二部图G,存在一个匹配M,使得X的所有顶点关于M饱和的充要条件是:对于X的任意一个子集A,和A邻接的点集为T(A),恒有: │T(A)│ >= │A│
匈牙利算法是基于Hall定理中充分性证明的思想,其基本步骤为:
1.任给初始匹配M;
2.若X已饱和则结束,否则进行第3步;
3.在X中找到一个非饱和顶点x0,作V1 ← {x0}, V2 ← Φ;
4.若T(V1) = V2则因为无法匹配而停止,否则任选一点y ∈T(V1)\V2;
5.若y已饱和则转6,否则做一条从x0 →y的可增广道路P,M←M?E(P),转2;
6.由于y已饱和,所以M中有一条边(y,z),作 V1 ← V1 ∪{z}, V2 ← V2 ∪ {y}, 转4;

设数组up[1..n] --- 标记二分图的上半部分的点。
down[1..n] --- 标记二分图的下半部分的点。
map[1..n,1..n] --- 表示二分图的上,下部分的点的关系。
True-相连, false---不相连。
over1[1..n],over2[1..n] 标记上下部分的已盖点。
use[1..n,1..n] - 表示该条边是否被覆盖 。

首先对读入数据进行处理 ,对于一条边(x,y) ,起点进集合up,终点进集合down。 标记map中对应元素为true。

1. 寻找up中一个未盖点 。
2. 从该未盖点出发 ,搜索一条可行的路线 ,即由细边出发, 由细边结束, 且细粗交错的路线 。
3. 若找到 ,则修改该路线上的点所对应的over1,over2,use的元素。重复步骤1。
4. 统计use中已覆盖的边的条数total,总数n减去total即为问题的解。

‘陆’ KM算法的注意

每一次找匹配时USED都是清0的,这是为了记录什么可以找,什么不可以找,说白了,这个模块就是一个递归的过程,USED的应用就是为了限制递归过程中的寻找范围,从而达到“不好则换,换则最好”,这里的最好是“新换”中最好的。
匈牙利算法解题是极为简单的,但是图论的难并不是难在解答,而是建图的过程,也难怪会有牛曰:用匈牙利算法,建图是痛苦的,最后是快乐的。当然,我们这些◎#!◎◎也只能搞搞NOIP了,一般不会太难,所以此算法,极为好用。
KM算法:
最大流的KM算法,又算的上算法世界中的一朵奇葩了。
解决最大流问题可以使用“网络流”,但较为繁琐,没有KM来得痛快,
下面是KM算法的核心模块:

functionfind(x:byte):boolean;vary:byte;beginfind:=false;vx[x]:=true;fory:=1tondoifnotvy[y]and(lx[x]+ly[y]=w[x,y])thenbeginvy[y]:=true;if(aim[y]=0)orfind(aim[y])thenbeginaim[y]:=x;find:=true;exit;end;end;end;
可以见出,该模块与匈牙利算法极为相似,差别便是:
if not vy[y] and (lx[x]+ly[y]=w[x,y])判断语句了,这里涉及到KM算法的思想,不再赘述,请自行“摆渡”之。
但是在源程序的调用过程更是烦杂: fork:=1tondorepeatfillchar(vx,sizeof(vx),0);fillchar(vy,sizeof(vy),0);iffind(k)thenbreak;////有机会d:=maxn;/////没有机会fori:=1tondo/////创造机会ifvx[i]thenforj:=1tondoifnotvy[j]theniflx[i]+ly[j]-w[i,j]<dthend:=lx[i]+ly[j]-w[i,j];fori:=1tondobeginifvx[i]thendec(lx[i],d);ifvy[i]theninc(ly[i],d);end;untilfalse;总结起来便是:有机会就上,没有机会创造机会也要上!

‘柒’ 匈牙利法没有交点

摘要 您好,亲,感谢您的耐心等待[鲜花][鲜花][鲜花][鲜花],为您查询核实到⑴ 匈牙利算法步骤

‘捌’ 2011数学建模国赛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月。

‘玖’ 匈牙利算法三个人完成六项任务怎么算

匈牙利算法的步骤
1.
将关联矩阵每一行减去本行的最小值,进入步骤二。
2.
将新的矩阵每一列减去本列的最小值,进入步骤三。
3.
用最少的行线和列线将新矩阵中的零全部穿起来,检查目前是否为最优分配。如果行线和列线没有将...
4.
将行线和列线没有穿起来的元素中找到最小元素,将剩余元素减去最小元素,对应行线

阅读全文

与匈牙利算法步骤相关的资料

热点内容
stata新命令 浏览:940
单调栈算法python 浏览:605
微信解压游戏怎么下载 浏览:961
忍三服务器不同如何登上账号 浏览:821
php求积 浏览:294
封面命令 浏览:879
手机复制文件夹到另一个文件夹 浏览:992
手游为什么不能统一下服务器 浏览:246
iphone上pdf 浏览:884
window定时python脚本 浏览:64
怎么运行cmd命令行 浏览:366
php中类的继承 浏览:228
openvpnlinux安装配置 浏览:463
PHP7从入门到精通 浏览:27
单片机生日 浏览:500
linux当前进程号 浏览:728
老死pdf 浏览:25
云服务器关机网址不见了 浏览:69
余冠英pdf 浏览:756
开发一个app上市需要什么步骤 浏览:28