摘 要
本文针对交巡警服务平台的设置与调度问题,建立了双目标优化模型,解决了交巡警服务平台管辖范围问题;建立了双目标优化模型,解决了交巡警服务平台警力合理的调度方案问题;建立了单目标优化模型,解决了确定需要增加平台的具体个数和位置问题;建立了基于层次分析法和熵权法的综合评价模型,解决了分析交巡警服务平台设置方案的合理性问题;建立了双目标优化模型,解决了交巡警服务平台警力资源的最佳围堵问题。
针对问题一第一小问,建立了双目标优化模型,解决了为各平台分配管辖范围问题。首先,运用Floyd算法,得到平台与各路口节点的最短时间矩阵。其次,以平台到达其管辖范围的不同节点的最长时间最小和各平台发案率的方差最小为目标, 尽量能在3分钟内到达和一个平台封锁一个路口为约束条件,引入0-1决策变量,建立双目标优化模型。然后, 以最长时间最小小于三分钟,将第一个目标函数做为时间约束条件,将双目标优化模型转化为单目标优化模型。再运用遗传算法进行求解,采用轮盘赌法选择淘汰,得到案发率的方差最优值为58.218,最大出警时间为5.7min,相应的节点为29号节点。以8号平台为例,其管辖的节点为8,33,46。最后,采用灵敏度分析对模型进行分析, 案发率以步长为0.1,向上浮动0.5,得到案发率对工作均衡度灵敏度为1.029,较为灵敏。
针对问题一第二小问,建立了基于粒子群算法的双目标优化模型,解决了警力合理调度问题。首先,以封锁方案最长时间最小和各平台完成总调度距离最短为目标,一个平台封锁一个路口为约束条件,引入0-1决策变量,建立了双目标优化模型,以各平台到各路口的距离小于等于最远的平台到路口为约束条件,将双目标优化模型转化为单目标优化模型。再运用粒子群算法进行求解,得到封锁最长时间为8.015分钟,总调度距离最优值为47.779km,封锁的13个节点为12、16、2、14、10、13、11、15、7、9、3、4、1。最后采用贪心算法进行对比检验,得到封锁最长时间为8.7min,与原模型误差较小,验证了结论的合理性。
针对问题一第三小问,建立了基于遗传算法的单目标优化模型,解决了增设平台个数和位置问题。首先,用最大出警时间和工作均衡度定义产出变量,以产出变量最大为目标,建立单目标优化模型。采用问题一第一小问的模型和算法,依次考虑增加1至5个平台的情况,得到最优增设平台个数为4,分别在28,48,90,40号节点。最后采用灵敏度分析对模型进行分析,依次考虑增加1至4个平台后的情况, 案发率以步长为0.1,向上浮动0.5,得到4个案发率对产出的灵敏度为1.124、1.238、1.266和1.307,较为灵敏。
针对问题二第一小问,建立了基于层次分析法和熵权法的综合评价模型,解决了平台方案是否合理问题。首先,以层次分析法和熵权法分别确定主客观权重,以拉格朗日乘子法得到组合权重为0.267等。再以最大出警时间、工作均衡度、平均人口密度、平均发案率、覆盖率和最大出警率6个指标的值计算6个区的综合评分,得到A区和B区评分为7.782和6.766,明显高于其余4区,说明其余4区不合理。基于问题一第三小问,以C区为例,增设2个平台后两最优值依次从12.68变为8.12,4.49变为3.87,增设3个平台后,变化较小,故在C区增设2个平台,分别为288和314。最后,将六区作为整体考虑,定义需求量变量,进行对比检验,得到平台增设数为5,编号为314、517、388、330和288,结果与原模型一致,验证了结论的合理性。
针对问题二第二小问,建立了双目标优化模型,解决了最佳围堵问题。首先以封锁路口节点数尽量少和封锁时间最小为目标,建立了双目标优化模型。再采用遗传算法求解得到需要对22个路口进行封锁,最长封锁时间为8.980min。最后,采用模拟退火法对模型进行对比检验,得到封锁的路口节点与原模型有81.8%的重合度,验证了结论的合理性。
关键词:双目标优化,遗传算法,粒子群算法,贪心算法,熵权法,模拟退火法
一、问题重述
1.1 问题背景
“有困难找警察”,是家喻户晓的一句流行语。警察肩负着刑事执法、治安管理、交通管理、服务群众四大职能。为了更有效地贯彻实施这些职能,需要在市区的一些交通要道和重要部位设置交巡警服务平台。每个交巡警服务平台的职能和警力配备基本相同。由于警务资源是有限的,如何根据城市的实际情况与需求合理地设置交巡警服务平台、分配各平台的管辖范围、调度警务资源是警务部门面临的一个实际课题。
1.2 问题重述
试就某市设置交巡警服务平台的相关情况,建立数学模型分析研究下面的问题:
(1)附件1中的附图1给出了该市中心城区A的交通网络和现有的20个交巡警服务平台的设置情况示意图,相关的数据信息见附件2。请为各交巡警服务平台分配管辖范围,使其在所管辖的范围内出现突发事件时,尽量能在3分钟内有交巡警(警车的时速为60km/h)到达事发地。
对于重大突发事件,需要调度全区20个交巡警服务平台的警力资源,对进出该区的13条交通要道实现快速全封锁。实际中一个平台的警力最多封锁一个路口,请给出该区交巡警服务平台警力合理的调度方案。
根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,拟在该区内再增加2至5个平台,请确定需要增加平台的具体个数和位置。
(2)针对全市(主城六区A,B,C,D,E,F)的具体情况,按照设置交巡警服务平台的原则和任务,分析研究该市现有交巡警服务平台设置方案(参见附件)的合理性。如果有明显不合理,请给出解决方案。
如果该市地点P(第32个节点)处发生了重大刑事案件,在案发3分钟后接到报警,犯罪嫌疑人已驾车逃跑。为了快速搜捕嫌疑犯,请给出调度全市交巡警服务平台警力资源的最佳围堵方案。
问题整体思路较为清晰,关联性较强。问题一第一小问是一个典型的双目标优化的问题,要综合考虑平台到达其管辖范围的不同路口节点和各交巡警平台的工作量[1]。问题一第二小问同样是一个典型的双目标优化的问题,要综合考虑封锁方案最长时间和各平台完成总调度的距离;问题一第三小问建立在问题一第一小问双目标优化模型的基础之上,可将其转化为一个单目标优化的问题。该问题需要依次考虑增加2至5个平台的情况,可运用问题一第一小问的双目标优化模型,得到各平台的出警时间和工作量均衡度的变化值,以上述两个变量构造产出变量,以产出变量的最大值为目标,建立单目标优化模型。问题二第一小问建立在问题一第一小问双目标优化模型的基础之上,运用问题一第一小问双目标优化模型,可以得到全市六区的分配方案和合理性的评价结果, 可采用基于熵权法的模糊综合评价模型重新划分各平台的管辖范围。问题二第二小问,是一个确定封锁方案的问题,要求确定封锁方案, 就是以封锁区域最小或需要封锁区域内的路口节点数最小为目标, 建立实现全封锁方案的优化模型。
2.1 问题一的分析
问题一第一小问要求为各交巡警服务平台分配管辖范围,尽量能在3分钟内有交巡警到达事发地。要求为20个交巡警服务平台分配管辖范围, 就是要在交通网络赋权图中优化配置各个平台所在节点的辐射范围, 即使得所分配的管辖范围具有合理性。而合理性体现在以下两点:一是让各个平台到各管辖路口的出警时间尽量短,二是让各个交巡警平台的工作量尽量均衡[1], 即使得每个平台所管辖的范围内各路口发生报警案件的次数, 也就是每个平台每天平均出警的总次数尽量均衡。为了解决这个问题, 首先要根据原始数据, 计算出各路口节点的邻接矩阵和节点间的最短路矩阵[2]。以每个平台到所管辖路口节点的最长时间最小为主要目标, 兼顾各平台的工作量 (即出警次数) 尽量均衡的目标, 均衡性指标采用方差来度量。这样就可以建立一个这样就可以建立一个双目标优化模型,通过遗传算法求解该双目标优化模型,即可解决交巡警服务平台分配管辖范围问题[4]。
问题一第二小问要求给出交巡警服务平台警力合理的调度方案,完成对13个目标路口的全封锁。要解决这个问题,即要在交通网络赋权图中选择恰当的交巡警服务平台 (对应的节点) , 对目标节点进行封锁, 使得全封锁完成的时间最短, 让完成全封锁的时间最小化就是这个问题的优化目标[4]。全封锁的时间最短可以从以下两点来衡量: 一是让实现全封锁可能方案的最长时间最小, 二是在保证实现全封锁可能方案的最长时间最小的条件下, 优化调度方案, 使得各个平台完成各自封锁任务的平均时间或总时间最短[3]。首先以可能方案的最长时间最小为目标建立单目标模型, 按要求每个平台最多封锁一个路口, 13个路口的每一个有且仅有一个平台封锁。求解得到封锁方案的最长时间作为一个时间约束, 然后再建立以各个平台完成各自封锁任务的平均时间或总时间最短为目标的指派模型, 求解得到全封锁的最优方案。
问题一第三小问要求根据现有交巡警服务平台的工作量不均衡和有些地方出警时间过长的实际情况,在该区内再增加2至5个平台,确定需要增加平台的具体个数和位置。要求合理地增设2至5个交巡警服务平台, 即在对应的交通网络赋权图上恰当选择原本没有交巡警服务平台的节点, 将其设置为交巡警服务平台, 并重新对整个A区的平台管辖范围进行再分配。要增设新的交巡警服务平台, 必然会改变原来的交通网络赋权图, 形成一个新的赋权图[5]。该问题就是要选择最优的平台增设方案, 得到一个新的交通网络赋权图, 这也是一个网络优化问题。
2.2 问题二的分析
问题二第一小问要求分析研究该市现有交巡警服务平台设置方案的合理性。如果有明显不合理,请给出解决方案。要解决这个问题,可将全市六区分区管理, 即分别视为六个独立的交通网络图, 采用A区分配管辖范围的方法, 分别给出各区的分配方案和合理性的评价结果, 其合理性指标主要考虑最长出警时间、最大出警工作量和工作量的标准差 (均衡性) [6], 从评价指标分析, 找出全市六区明显不合理的区域,对几个不合理的区域按A区增设平台的原则和方法增设交巡警服务平台, 并重新划分各平台的管辖范围。
问题二第二小问要求给出调度全市交巡警服务平台警力资源的最佳围堵方案。考虑到案发后3min接到报警, 同时注意到制定调度方案和实施封锁相应路口也都需要一定的时间[7]。为此, 首先要确定在这段时间内嫌疑人可能逃跑的最大区域, 针对这个区域找出需要封锁的目标路口节点。再利用对A区全封锁问题的解决方法, 合理调度全市的80个平台的警力 (不受区的限制) , 对可能逃跑的区域范围的目标路口进行全封锁即可。
三、基本假设
1、每个交巡警服务平台的警力、职能和基本设施相同;
2、所有交巡警出警的行驶速度都为60 km/h;
3、一个交通路口节点必须且只能被一个交巡警服务平台管辖;
4、每个交巡警平台能且只能封锁一个路口
四、符号说明
表示节点i与节点j之间的最短距离
表示从平台i到节点j的最短时间
表示不大于
的最短路径长度
表示各顶点之间的最短距离值
表示顶点
到
最短路的中间点
表示第j个平台到第k个出口的距离
表示平台的最大出警时间
表示六个指标对应的综合评价值
表示六个指标的数值
表示综合评价值
表示所有平台最大工作量
五、模型建立与求解
5.1 问题一管辖范围问题的模型建立与求解
问题一管辖范围问题以平台到达其管辖范围的不同节点的最长时间最小值和各平台发案率的方差最小值为目标建立了双目标优化模型,采用遗传算法进行求解,最后做发案率均值与各平台的发案率的方差的灵敏度分析,对原模型进行检验。
5.1.1模型建立
5.1.1.1 建立最短时间矩阵
该市中心城区A区的交通网络图(图1,比例为:1︰100000)中:共92个交通路口节点,设置了20个交巡警服务平台。利用A区各节点的坐标,使用图论中Floyd算法,计算节点i与节点j之间的最短距离
,建立距离矩阵
;计算从平台i到节点j的最短时间
,建立最短时间矩阵
。
5.1.1.2 A区交巡警服务平台划分管辖范围的双目标0-1规划模型
问题一第一小问要求为20个交巡警服务平台分配管辖范围, 就是要在交通网络赋权图中优化配置各个平台所在节点的辐射范围, 即使得所分配的管辖范围是“合理”的。所谓的合理性应该体现在以下两个方面: 一是让各个平台到各管辖路口的出警时间尽量短, 出警时间反映的是平台的快速反应能力, 它是衡量交巡警平台的工作效率、反映交巡警服务平台设置合理性的最重要的因素; 二是让各个交巡警平台的工作量尽量均衡, 即使得每个平台所管辖的范围内各路口发生报警案件的次数, 也就是每个平台每天平均出警的总次数尽量均衡,本文的均衡性指标采用方差来度量。
结合实际情况,以各平台到达管辖节点的时间最短和各平台管辖的节点发案数之和尽量均衡为目标,建立双目标0-1规划模型。引入0-1变量
,用来描述路口节点j是否划归平台i管辖的情况,即:
因为每个交通路口节点只能被一个交巡警服务平台管辖,则有:
为了尽量能在最短的时间内有交巡警到达,用所有平台到达其管辖范围的不同路口节点的最长时间最小值为目标,即第一个目标函数为:
(1)
记节点
的发案率为
,则交巡警服务平台管辖范围总发案率的平均值为
(2)
考虑到各平台管辖范围的总发案率要基本均衡,以各平台的发案率的方差为第二个目标函数,即:
(3)
综上所述,以平台到达其管辖范围的不同节点的最长时间最小值和各平台发案率的方差最小值为目标函数,建立各交巡警服务平台分配管辖范围的双目标优化模型如下:
,
(4)
根据题目要求各交巡警服务平台尽量能在3分钟内有交巡警到达事发地,将第一个目标函数作为新的约束条件,将双目标规划模型转化为单目标规划模型。再根据每个交通路口节点只能被一个交巡警服务平台管辖等约束条件建立单目标规划模型,模型如下:
(5)
5.1.2模型求解
5.1.2.1 Floyd算法求解最短时间矩阵
Floyd算法允许赋权图中包含负权的边或弧,但是,对于赋权图中的每个圈C,要求圈C上所有弧的权总和为非负。而Dijkstra算法要求所有边或孤的权都是非负的。Floyd 算法包含三个关键算法;求距离矩阵、求路径短阵、最短路查找算法。
设所考虑的赋权图
,其中顶点集
,邻接矩阵
这里
对于无向图,
是对称矩阵,
。
(一)求距离矩阵的算法
通常所说的Floyd算法,一般是指求距离矩阵的算法,实际是一个经典的动态规划算法,其思想是递推产生的一个矩阵序列
,其中矩阵
,其第
行第
列元素
表示从顶点
到顶点
的路径上所经过的顶点序号不大于
的最短路径长度。
计算时用迭代公式
,
是迭代次数,
。最后,当
时,
即是各顶点之间的最短距离值。
(二)建立路径矩阵的算法
如果在求得两点间的最短距离时还需要求得两点间的最短路径,则需要在上面距离矩阵
的迭代过程中引入一个路由矩阵
来记录两点间路径的前驱后继关系,其中
表示从顶点
到
的路径经过编号为
的顶点。
路径矩阵的迭代过程如下:
(1)初始时
(6)
(2)迭代公式为
(7)
其中
直到迭代到
,算法终止。
(三)最短路的路径查找算法
查找
到
最短路径的方法如下:
若
,则顶点
是顶点
到
最短路的中间点,然后用同样的方法再分头查找。若向顶点
反向追踪得
,向顶点
正向追踪得
,则由点
到
的最短路径为
。
综上所述,求距离矩阵
和路径矩阵
的Floyd算法如下:
第一步,初始化,
对
,令
。
第二步,迭代
,对
,若
,则令
;否则
和
不更新。
第三步,算法终止条件,如果
,则算法终止;否则,转第二步。
Floyd算法的时间复杂度为
,空间复杂度为
。求解得到最短时间矩阵(见附录)。
基于模型求解的速度和计算量的考虑,我们在这里,再利用遗传算法对上达的模型寻求更好的可行解,希望能我到更好的对现有平台的管辖范围的分配方案。根据遗传算法的特点求解步骤如下:
(1)根据“尽可能在三分钟内有交巡警到达事发地”的要求,建立一个长度为582的规划状态空间数据库中的结构向量
。此时要求满足:
1. 对于三分钟的警车车程范围内有平合的节点
,将所有在其三分钟内可以到达的节点标号列入
之中;
2. 对于三分钟车程范围内没有平合的节点
,将距离其最近的两个平台的标号列入
之中;
3. 对于设有平台的节点之,仅將本节点(或者本平台)的标号记入
之中.
(2)初始化(编码)。设置基因编码的长度为582,即设置一个长度为582的向量,每一项标识一个路口节点,每一项的内容记录节点所归属的平台标号。根据规则库
随机生成若干个初始群体。
(3)计算目标函数。目标函数即为在全市现有交巡警服务平台的设置情况下,各个平台工作量的均衡程度:
(8)
其中
是0-1变量,表示第
个平台是否管辖第
个节点;
为第
个节点的案发率;
(4)计算个体适应度。个体适应度函数即取模型的目标函数,由于软件中的策略是个体适应度越小越符合要求,所以直接令个体适应度等于目标函数。
(5)进行选择淘汰。采用赌轮盘选择法选择,因为这种方法较易实现。
(6)个体交叉。群体中的每个个体之间都以一定的概率
交叉,即交换长为582的向量部分序列,从而得到新的向量。
(7)发生变异。每个个体向量基因的每一位都以一定的概率发生变异,在可能的规划空间里生成一种新的基因,
判断本次算法的目标函数值与上一次目标函数值的之差
当
小于
时,遗传不再进行,直至设置的循环次数结束:若
始终大于
时,则执行遗传过程直至循环次数结束。
采用遗传算法求解模型,求解可得各平台的发案率的方差最优值为58.2175,其最大出警时间
为5.7分钟,相应的节点为29号节点。
5.1.3 问题结论
根据求得的结果给出全区路口节点的分配方案如下表所示:
表1 20个交巡警服务平台的有效管辖分配方案
平台标号 | 该平台所管辖的节点个数 | 归属该平台的节点标号 | 平台到节点所用路程总和/km |
1 | 10 | 1,67,68,69,71,73,74,75,76,78 | 8.976919 |
2 | 7 | 2,39,40,43,44,70,72 | 9.811746 |
3 | 5 | 3,54,55,65,66 | 6.900963 |
4 | 6 | 4,57,60,62,63,64 | 6.924490 |
5 | 9 | 5,49,50,51,52,53,56,58,59 | 11.314550 |
6 | 1 | 6 | 0 |
7 | 6 | 7,30,32,47,48,61 | 8.484299 |
8 | 3 | 1.757701 | |
9 | 5 | 9,31,34,35,45 | 4.077559 |
10 | 1 | 10 | 0 |
11 | 3 | 11,26,27 | 2.543303 |
12 | 2 | 12,25 | 1.788854 |
13 | 5 | 13,21,22,23,24 | 6.499225 |
14 | 1 | 16 | 0 |
15 | 3 | 15,28,29 | 10.452370 |
16 | 4 | 16,36,37,38 | 5.132332 |
17 | 3 | 17,41,43 | 1.834886 |
18 | 4 | 18,81,82,83 | 3.094912 |
19 | 3 | 19,77,79 | 1.432099 |
20 | 10 | 20,84,85,86,87,88,89,90,91,92 | 12.193680 |
节点总数 | 92 |
从表1中可以看出,每个平台至少管辖一个路口节点,1,5,20号平台管辖的节点最多,分别达到了达到了10、9、10个。
由表1可以直观地反映出各交警平台所承担的工作量,而且20个平台所承担的工作量经过优化已经基本达到均衡,但仍然存在个别平台所承担的任务较少的情况.如平台6、平台10和平台14所负责的工作量明显小于其他平台的任务量,这个情况是由该区平台设置不合理造成的,因为这两个平台在3分钟警车车程内,没有其他的路口节点,所以根据尽量满足3分钟的要求,它们只能管辖自己所在的路口节点。
5.1.4灵敏度分析
为验证案发率对交巡警平台工作量的影响,将20个交巡警平台管辖范围案发率与A区92个路口平均案发率的方差作为交巡警平台工作量的一个指标,初始所得的该值作为初始值,将92个路口的案发率均依次提高0.1,0.2,0.3,0.4,0.5。通过观察案发率改变后20个交巡警平台管辖范围内案发率方差的改变来进行灵敏度分析。
表2 灵敏度分析表
案发率均值 | 6.225 | 6.325 | 6.425 | 6.525 | 6.625 | 6.725 |
交巡警平台管辖范围案发率方差 | 58.218 | 57.202 | 58.285 | 59.444 | 60.669 | 62.853 |
由下图可知,随着案发率的增加,20个交巡警平台的工作量变化越来越快,即20个交巡警平台的工作量对案发率敏感。
图1 20个交巡警平台工作量变化图
灵敏性数据转换成百分比公式如下:
计算可知,20个交巡警平台的工作量对案发率的灵敏度为1.029,较为灵敏。
5.1.5小结
针对问题一第一小问,首先,采用Floyd算法,得到各路口节点的邻接矩阵和节点间的最短时间矩阵。结合问题实际,从各个平台到各管辖路口的出警时间尽量短和各个交巡警平台的工作量尽量均衡两个层面建立双目标规划模型,根据
题目要求各交巡警服务平台尽量能在3分钟内有交巡警到达事发地,将第一个目标函数作为新的约束条件,将双目标规划模型转化为单目标规划模型。
再运用遗传算法求解得到各平台的发案率的方差最优值为58.2175,其最大出警时间
为5.7分钟。在此基础上,得到全区路口节点的分配方案。
5.2 问题一快速全封锁问题的模型建立与求解
问题一快速全封锁问题以封锁方案最长时间最小值和各平台完成总调度距离最短为目标建立了双目标优化模型,采用粒子群算法进行求解,最后,采用贪心算法进行遍历搜索,对原模型进行对比检验。
5.2.1模型建立
5.2.1.1 增设A区交巡警服务平台数目的双目标0-1规划模型
问题一第二小问要求给出一个合理的封锁方案, 完成对13个目标路口的全封锁, 即在交通网络赋权图中选择恰当的交巡警服务平台 (对应的节点) , 对目标节点进行封锁, 使得全封锁完成的时间最短, 让完成全封锁的时间最小化就是这个问题的优化目标。全封锁的时间最短可以从两个层面来衡量: 一是让实现全封锁可能方案的最长时间最小, 这是对封锁方案中所有交巡警平台的要求; 二是在保证实现全封锁可能方案的最长时间最小的条件下, 优化调度方案, 使得各个平台全部调度的距离总和最短。
结合实际情况,以封锁方案最长时间最小值和各平台完成总调度距离最短为目标,建立双目标0-1规划模型。
根据短板效应,一个水桶装的水量,取决于最短的木板。那么,全封锁完成的时间就取决于最长的一个“平台-出口”的封锁时间。以实现全封锁可能方案的最长时间最小为目标,建立最快实现全封锁的优化模型为:
(8)
其中,Z表示所有调度中的最远距离;
表示第j个平台到第k个出口的距离,该距离可由Floyd算法得出。
在这个“短板”确定后,依然存在多种调度方案。为了在优中选优,我们进一步以“全部调度的距离总和最短”为目标函数,建立优化模型:
(9)
5.2.1.2将双目标规划模型转化为单目标规划模型
根据模型(1),利用遗传算法和题目中给出的相关数据,最后可以得到若干组解。这些解的共同特点是最远的调度距离都是平台
至出口
的距离。所以完成该区全封锁的最短时间就由此决定,即以总调度距离最短为目标函数,对除平台
和出口
以外的出口和交巡警平台进一步作0-1规划,模型为:
(10)
5.2.2模型求解
本文采用粒子群算法,对原模型进行求解,具体步骤如下:
步骤1. 算法参数设定
假设有一组s参数
,共582个;
步骤2. 对粒子群的随机位置与速度进行初始化设置;
步骤3. 将整个粒子群均分为80个子群;
步骤4. 对所有子群分别按典型粒子群算法开始运行,其中第一个子群按
参数的惯性权重曲线运行,第i个子群按
参数的惯性权重曲线运行;
步骤5. 判断算法收敛准则是否满足,如果满足执行步骤8,否则执行步骤6
步骤6. 每间隔一定的迭代步数测出每个子群独立的全局极值并比较,把有最差全局极值的子群用有最好全局极值的子群替代,整个粒子群变为h-1个参数的惯性权重曲线运行;
步骤7. 判断算法收敛准则是否满足,如果满足执行步骤8,否则执行步骤6;
步骤8. 输出 及相应的全局极值,算法运行结束。
算法参数的设置是:
个体学习因子:
=2;
社会学习因子:
=2
迭代总次数:n=500
间隔迭代步数m=20
群体总粒子数为100个
参数为10个
每个子群粒子数为10个
粒子飞行速度及位置限制在函数的定义域内:取
,
,
,
函数表达式为适应值函数(注:适应值函数一般为目标函数,即
)
收缩因子:
(注:c为
+
)
到第d次迭代为止,第i个粒子经过的最好位置:
到第d次迭代为止,所有粒子经过的最好位置:
步骤9. 建立计算公式
计算公式为:
(11)
采用粒子群算法求解得到最远的调度距离为平台7至出口29的距离,最快实现封锁的时间为8.015min,全部调度的距离总和最优值为47.779km。
5.2.3问题结论
根据求得的结果给出全区路口节点的分配方案如下表所示。
表3 交巡警服务平台全封锁调度方案
需调用的平台编号 | 所需时间/min | |
12 | 12 | 0 |
14 | 16 | 6.741662 |
16 | 2 | 7.388063 |
21 | 14 | 3.264966 |
22 | 10 | 7.707918 |
23 | 13 | 0.500000 |
24 | 11 | 3.805274 |
28 | 15 | 4.751842 |
29 | 7 | 8.015457 |
30 | 9 | 3.492304 |
46 | 3 | 4.208687 |
48 | 4 | 7.395869 |
62 | 1 | 4.885217 |
封锁所需最短时间/min | 8.015 |
由表2可以直观地看出需封锁的节点编号所对应的平台编号,最远的调度距离为平台7至出口29的距离,最快实现封锁的时间为8.015min。
5.2.4检验分析
为检验原模型对该区交巡警服务平台调度方案的合理性,使用贪心算法对模型进行检验。
- 定义原问题与子问题
原问题:20个交巡警服务平台封锁13条交通要道
子问题:i个(i<=20)交巡警服务平台封锁j个(j<=13)条交通要道
- 求解子问题,得到子问题的局部最优解
计算第i个交巡警服务平台到13个封锁要道的距离,选取最短距离的交通要道作为第i个交巡警服务平台封锁的交通要道。
计算距离公式为:
- 把子问题的解局部最优解合成原来问题的一个解
贪心策略:从第20个交巡警服务平台开始,进行梯度下降
考虑一个交巡警服务平台最多封锁一个交通要道进行遍历搜索,求解得到最快实现封锁的时间为8.7min,20个交巡警服务平台封锁13条交通要道的调度方案与原模型一致,验证了原模型的合理性。
5.2.5小结
针对问题一第二小问,首先,结合问题实际,从实现全封锁可能方案的最长时间最小和各个平台全部调度的距离总和最短两个层面建立双目标规划模型。其次,在优中选优,以第一个优化模型求解得到封锁方案的最长时间 (应为8.015min) 作为一个新的约束条件,然后再建立以各个平台全部调度的距离总和最短为目标的指派模型, 求解得到全封锁的最优方案。
5.3 问题一平台增设问题的模型建立与求解
问题一平台增设问题,引入成本变量,将各平台的出警时间和相应工作量的均衡性指标的改变量视为“产出”, 那么这个问题就可视为一个“投入与产出”的单目标优化问题,采用遗传算法进行求解,最后做投入与产出的灵敏度分析,对原模型进行检验。
5.3.1模型建立
要求合理地增设2至5个交巡警服务平台, 即在对应的交通网络赋权图上恰当选择原本没有交巡警服务平台的节点,将其设置为交巡警服务平台, 并重新对整个A区的平台管辖范围进行再分配。实际中, 增设平台的目的是尽量实现交巡警在3min内到达所管辖的路口节点, 同时使得各平台的出警工作量尽量均衡。为此, 依据这两个目标, 首先需要制定一个判别增设平台的准则, 根据上述对问题的分析,定义一个变量
用来表示在第
个路口节点设置平台的必要性程度。
事实上, 新增一个交巡警服务平台是需要一定“成本”的,包括财力、物力和人力成本等, 虽然问题中没有明确给出成本的数据,但实际中成本是客观存在的, 在这里不妨设增设一个平台的成本为一个常量A, 故将这个成本视为投入。
同时, 由于增设平台必然会改变某些原有平台的管辖范围, 从而改变各平台的出警时间和相应工作量的均衡性指标, 我们将这种改变视为“产出”,必要性程度
可用出警时间和相应工作量的均衡性指标的变化量来衡量,考虑增加一个平台,则平台的个数由原来的
个变为
,由同题(1)的方法,对
个平台的管辖范围进行重新分配,并计算所有平台的最大出警时间,记为
,相应的工作量方差为
,记增设平台之前所有平台的最大出警时同为
和工作量的方差为
。增设一个平台后的产出值(增设效益)
为:
(12)
式中
取0.5,
为平台的最大出警时间。
对没有设平台的路口进行重新排序,并记为
,则可能要增设一个平台位置的决策变量记为
,其中
对于是否在第
个节点设置平台,要考虑第
个节点设置平台的必要性程度
的值,其值越大,说明在该节点设置平台的必要程度越高。故以第
个节点设置平台的必要性程度
的值最大化为目标,建立单目标优化模型如下:
(13)
5.3.2模型求解
先在现有的交巡警服务平台的基础上,考虑增设一个平台,问题是增设在何处为效益最佳。注意到,在没有平台的72个节点中筛选出可能增设平台的部分节点,根据问题一第一小问的方法,在这些可能的节点中任选一个设置平台,就可以确定出对应的最优管辖范围的分配方案,从这些方案里面选择一个效果最优的方案,即投入与产出效益之比最大的设置方案。这个最优方案就是对应了增设平台的最优设置点和新的平台设置后各平台的管辖范围的分配方案。在此基础之上,只需对是否有必要增加这个交巡警服务平台进行判断,即考虑投入与产出的效益之比。如果判断不必增加这个平台,那么就意味着该区不需再增加新的平台了;如果判断应该增加这个平台,那么这个平台的增设位置点就是前面确定的最优方案对应的节点。之后再考虑是否还需要增设下一个平台,研究过程与增设第一个平台的方法相同,直至判断出不再需要增设新平台为止。考虑在原有平台的基础上增加1个平台,平台增设的位置就是使得
的值最大的位置.根据模型1中给出了原有的平合管辖方案,则有
,
,相应的节点为29号。
(1)考虑增设1个平台的情况
在增设平台之前即有
.要在可能的72个节点寻找使
有最大值的节点,这是一个计算量很大的事,事实上,由于
与t的变化相关程度比较高,因此,在设置平台后使得t变化最显著的节点也就是使得
最大的节点.这样的节点应该从29号点附近去寻找,符合这一条件的节点只有28号和29号两个节点。如果在t的变化不品著的情况下,再考虑Y值的变化,使增加平台后其
值尽可能的变小,这样的节点应该从工作量大的区域中寻找,符合条件的节点有31~36,56~59,65~77,88~91号节点将这些符合条件的节点构成一个可行解集合
:
,(14)
从而缩小了遍历的范围,则可以在集合
中寻求使
:有最大值的节点.
利用软件求解得最大的
值为
(15)
经计算可得
,
对应节点为61号节点.于是可得
。此时增设平台的最优位置是28号或者29号节点。
事实上,在28号或者29号节增设点平台的方案是等效的,这里不妨考虑平台增设位置为28号书点处。
(2)考虑增设2个平台的情况
考虑增设两个平台的情况,也就是在增设28号平台的基础上再增设一个平台,采用如上同样的方法,则可以找出最佳的平台设置节点为48号节点,而且
,此时
,对应的节点为39号.即第二个平合增设在48号节点处。
(3)考虑增设了个平台的情况
考虑增设3个平台的情况,也就是在增设了上面两个平台之后再增设一个平台。同理可得,使得
最大的平台增设节点为90号节点,其中工
,则解得
,即增设第三个平台的最优位置为90号节点。
(4)考虑增设4个平合的情况
考虑增设4个平台的情况,也就是在增设了上面3个平台之后再增设一个平台。同理可得,使得
最大的平台增设点为40号节点.其中
,则解得
,即增设平台的最优位置为40号节点。
(5)考虑增设5个平台
考虑增设5个平台的情况,也就是在增设了上面4个平台之后再增设一个平台。同理可得,使得
最大的平台增设点为68号节点.其中
,则解得
,即增设平台的最优位置为68号节点。
5.3.3 问题结论
至此,模型讨论了增设平合数从1~5的各个情况,并得了最优平台的增设方案。接下来对具体增设平台的各数量作比较分析,综合考虑最大出警时间t,各平台的工作量均衡度Y,3分钟内不可到达节点的个数
,以及增设平合所需要的成本来确定最佳的增设平台的个数.根据上述讨论,增设2~5平台时,各个指标值比较如下表所示:
表4 增设平台后的各数量对比图
增设平台情况 | 所有平台最大出警时间/min | 工作量均衡度 |
增设平台之前 | 5.7005 | 58.2175 |
增设1个平台 | 4.1902 | 75.3 |
增设2个平台 | 3.6822 | 56.2 |
增设3个平台 | 3.6822 | 56.2 |
增设4个平台 | 3.6822 | 47.5 |
增设5个平台 | 3.6071 | 41.1 |
从上表可以看出,增设平台数由2增加到3时,均衡度指标降低显著,则说明增设第3个平台后,对整体平台的优化有较为的显著改变。当增设平台数由3增加到4时,其各项指标均有不同程度变化,尤其是最大出警时间明显滅小,则说明增设4个平台后,对整体的优化效果显著,但当增设平台数由4增加到5时仅有工作量均衡度有改变,并且变化并不明显,则说明增设第5个平台后,对整体的优化效果不明显.综合考虑平台的增设成本,则第5个平台不值得增设.因此,综合考虑各方面因素,确定给出最优的增设平台个数为4个,分别设置在28,48,90,40号节点处。
5.3.4灵敏度分析
为检验增设平台对的重要性,以20个平台时的平均案发率为初始值,依次增加0.1,通过观察各平台案发率对产出变量的改变来进行灵敏度分析。分别考虑增加1至4个平台的情况,以增设1个平台为例
表5 灵敏度分析表
平台案发率均值 | 6.130 | 6.230 | 6.330 | 6.430 |
产出 | 0.2790 | 0.2847 | 0.2913 | 0.2994 |
图2 交巡警平台数与平均出警时间关系图
由上图可知,随着案发率的增加,交巡警平台案发率的方差大大减少,即交巡警平台案发率的方差对案发率敏感。
灵敏性数据转换成百分比公式如下:
计算可知,交巡警平台案发率对案发率的4个灵敏度约为1.124、1.238、1.266、1.307,较为灵敏。
5.3.5小结
针对问题一第三小问,首先,考虑增设平台的成本,假设增设一个平台的成本固定为A,由于增设平台必然会改变某些原有平台的管辖范围, 从而改变各平台的出警时间和相应工作量的均衡性指标, 我们将这种改变视为“产出”,定义一个变量
用来表示在第
个路口节点设置平台的必要性程度,
可用出警时间和相应工作量的均衡性指标来表示。依次考虑增加2个、3个、4个和5个平台的情况, 然后对增加平台后的结果用问题一第一小问的方法重新做管辖范围的分配, 并检验3min内不能到达的平台个数和各平台出警工作量的均衡度指标, 从而可以选择最佳的增加平台的个数为4和具体的位置分别在28,48,90,40号节点处。
5.4 问题二平台设置问题的模型建立与求解
问题二平台设置问题,建立了基于层次分析法和熵权法的综合评价模型,定义出警相应时间等六个评价指标,利用层次分析法确定主观权重,利用熵权法确定客观权重,再利用拉格朗日乘子优化法得到组合权重,计算得到六个区的综合得分。在此基础上,利用问题一增设平台的模型和解法,得到合理的交巡警服务平台设置方案。
5.4.1模型建立
5.4.1.1交巡警平台设置方案合理性的综合评价模型
(一)建立评价因子
服务平台的设置应能充分保证案件处理效率和警务资源的利用效率都尽可能高。因此,将出警的响应时间和各个服务平台的工作均衡度作为评价服务平台设置合理与否的重要指标。同时,为了保证评价的科学性、合理性和全面性,还将平均人口密度、平均发案率、覆盖率和最大出警率等4个指标作为评价因子,用于对服务平台进行综合评价。各个评价因子的具体定义和计算公式如下:
1.平均人口密度:单位面积内的人口数。其计算公式为
注:式中
表示第i个城区的总面积
2.平均发案率:用来表示某一特定区域内突发事件发生的频率,本文用来定量评价该市各城区服务台设置的合理程度。其计算公式为
注:式中 n 表示第i个特定区域所包含的节点总数
3.覆盖率:在某一特定区域内,交巡警以一定的速度从某一服务平台出发,在指定的时间内所能到达的待服务点个数与总节点个数的比值。
其计算公式为
注:式中n 表示指定时间内交巡警能到达的服务点个数,m 表示该区域内的总节点数。
1. 问题分层
经分析,将本问题分解为3个层次,最上层为目标层,即为交巡警服务平台设置方案合理性的综合评估,最下层为方案层,表示服务平台设置合理性的综合评分的最终排序,中间层为准则层,即: 最大出警次数、出警的响应时间和各个服务平台的工作强度。
2. 构建成对比较矩阵
成对比较矩阵元素的数值反映了各元素的相对重要程度,采用1—10及其倒数来进行标度,如表5所示
表5 评价尺度赋值表
重要性 | 同等重要 | 过渡值 | 稍微重要 | 过渡值 | 明显重要 | 过渡值 | 重要得多 | 过渡值 | 绝对重要 | 过渡值 |
赋值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
- 计算和法求成对比较矩阵的最大特征值和特征向量
① 将成对比较矩阵 A 的每一列向量归一化得
(16)
② 对
按行求和得
(17)
③ 将
归一化
,
,即为近似特征向量
④ 计算
(18)
- 进行一致性检验
一致性指标
平均随机性指标RI可由表6得出
表6 多阶判断矩阵的 RI 值
阶数 | RI | 阶数 | RI | 阶数 | RI |
1 | 0.00 | 4 | 0.90 | 7 | 1.32 |
2 | 0.00 | 5 | 1.12 | 8 | 1.41 |
3 | 0.58 | 6 | 1.24 | 9 | 145 |
当随机一致性比率
时,认为层次分析法的结果有满意的一致性,即权重的分配是合理的。否则,要调整判断矩阵的元素取值,重新分配权重的值。
(三)熵权法确定客观权重
信息论中的熵值理论反映了信息的无序化程度,进行评价时,某项指标值的变异程度越大,信息熵越小,该指标提供的信息量越大,在综合评价中所起的作用也越大;若某项指标的变异程度越小,信息熵越大,该指标提供的信息量越小。
熵权法确定客观权重的具体步骤如下:
1.构建归一化评价矩阵。如果m个评价对象,n个评价指标,则构建原始评价矩阵:
按照下式
(19)
式中
表示
归一化后的数据,
表示第j个指标的最大值,
表示第j个指标的最小值。
对指标标数据进行标准化处理,得到判断矩阵:
2.计算第j项指标的输出熵。
(20)
3.计算效用值。
(21)
4.计算指标权重。
(22)
其中,
最小相对信息熵原理确定组合权重
综合指标的主观权重和客观权重
可得组合权重
。显然
与
和
都应尽可能接近,根据最小相对信息熵原理可知
用拉格朗日乘子法优化可得组合权重计算公式:
(23)
(四)评价结果计算
式中
为评价结果,
为综合权重,
为六个指标的得分。
5.4.1.2交巡警平台设置方案的优化模型
将全市六区分区管理, 即分别视为六个独立的交通网络图, 采用A区分配管辖范围的方法, 分别给出各区的分配方案和合理性的评价结果, 其合理性指标主要考虑最长出警时间、最大出警工作量和工作量的均衡度。由问题二第一小问可知,全市A区和B区的分配方案合理,而C区、D区、E区和F区分配方案不合理。与问题一第三小问类似,得到单目标优化模型如下:
(24)
先在现有的交巡警服务平台的基础上, 考虑增设一个平台, 根据问题一管辖范围问题的方法, 在可能的节点中任选一个设置平台, 就可以确定出对应的最优管辖范围的分配方案, 从这些方案里面选择一个效果最优的方案。这个最优方案就是对应了增设平台的最优设置点和新的平台设置后各平台的管辖范围的分配方案。在此基础之上, 只需对是否有必要增加这个交巡警服务平台进行判断, 即考虑投入与产出的效益之比。如果判断不必增加这个平台, 那么就意味着该区不需再增加新的平台了;如果判断应该增加这个平台, 那么这个平台的增设位置点就是前面确定的最优方案对应的节点。之后再考虑是否还需要增设下一个平台, 研究过程与增设第一个平台的方法相同, 直至判断出不再需要增设新平台为止。
5.4.2 模型求解
-
-
-
- 综合评价模型的求解
-
-
- 层次分析法确定主观权重
- 确定准则层对目标层的权重
构造准则层对目标层的成对比较矩阵A
求解构造的五阶正互反矩阵得到A的最大特征值为
,相应的特征向量做归一化有
,对应的随机一致性指标
,则一致性指标
,一致性比率指标
,于是
为准则层对目标层的权重。
- 确定方案层对准则层的权重
构造方案层对目标层的成对比较矩阵
限于篇幅,余下4个成对比较矩阵见附录。
求解构造的五个六阶正互反矩阵得到五组最大特征向量,将其归一化,得到方案层对准则层的权重
,如下:
最大特征值为6,一致性比率指标为0
- 确定方案层对目标层的组合权重
方案层对目标层的组合权重
(二)熵权法确定客观权重
根据附件2中的数据和所给的各指标公式,求解六个区六个指标的值,具体结果如下表所示:
表7 评价指标数值表
评价指标类型 | A区 | B区 | C区 | D区 | E区 | F区 | 全市平均 |
出警响应时间 | 5.70 | 4.47 | 6.86 | 16.06 | 19.10 | 8.40 | 12.68 |
工作量标准差 | 2.360 | 8.379 | 5.396 | 3.165 | 3.765 | 4.626 | 4.155 |
平均人口密度 | 2.727 | 0.204 | 0.222 | 0.191 | 0.176 | 0.193 | 0.619 |
平均发案率 | 1.353 | 0.910 | 1.216 | 1.304 | 1.159 | 1.012 | 1.159 |
覆盖率 | 0.934 | 0.917 | 0.694 | 0.769 | 0.689 | 0.675 | 0.780 |
最大出警工作量 | 11.50 | 12.70 | 24.60 | 13.20 | 14.20 | 16.70 | 16.10 |
经计算客观权重
(三)综合集成法确定评价指标的综合权重W
用拉格朗日乘子法优化可得组合权重计算公式:
(25)
计算得到
。
(四)计算六个评价对象的综合评价值
式中,
表示综合评价值,
表示六个指标对应的综合评价值,
表示六个指标的数值。
经计算六个评价对象的综合评价值如下表所示:
表8 六大城区服务平台设置方案合理性综合评分
城区 | A | B | C | D | E | F |
综合评分 | 7.782 | 6.766 | 4.184 | 4.544 | 4.564 | 4.373 |
由综合评分的结果可知,A、B 两区的服务平台设置得最为合理. 这两区的覆盖率非常高,出警的响应时间很小,设置无明显的缺陷。而C,D,E,F区设置均不合理,其中C区的设置最不合理,其覆盖率最低,最大出警工作量最大,出警响应时间也很大,因此C,D,E,F区现有服务平台的设置需改善。将模型得到的结果与实际情况进行比较,不难发现两者的情况相当吻合。
5.4.2.2 交巡警平台设置方案的优化模型
由六个评价对象的得分可以看出A区和B区的平台设置比较合理,而C,D,E,F区设置均不合理,故优化平台设置方案从C,D,E,F区入手。优化方法同问题一增设平台问题一致,以C区为例,计算增设平台后的最大出警时间和工作量均衡度,得到结果如下表所示:
表9 增设平台后的各数量对比图
增设平台情况 | 所有平台最大出警时间/min | 工作量均衡度 |
增设平台之前 | 12.6803 | 4.4946 |
增设1个平台 | 12.6803 | 4.1365 |
增设2个平台 | 8.1188 | 3.8794 |
增设3个平台 | 8.1188 | 3.8714 |
由表9可知,在增设平台之前,平台最大出警时间为12.6803,工作量均衡度为26.1,再增设一个平台后,平台最大出警时间不变,工作量均衡度下降,增设两个平台后,平台最大出警时间和工作量均衡度明显下降,当增设第三个平台是,平台最大出警时间和工作量均衡度下降幅度较小,说明C区应增设两个平台,对应的增加平台编号为288和314。类似的,得到D区增加一个平台,平台编号为330;得到E区增加一个平台,平台编号为388;得到F区增加一个平台,平台编号为517。
5.4.3问题结论
通过计算全市六区的综合评分得到A区和B区的交巡警服务平台设置方案具有合理性,C,D,E,F区设置方案不合理。给C,D,E,F四个区增设平台,C区应增设三个平台,对应的增加平台编号为206,288和314。类似的,得到D区增加一个平台,平台编号为330;得到E区增加一个平台,平台编号为388;得到F区增加一个平台,平台编号为517。
5.4.4检验分析
交巡警平合设置的合理性主要体现在两个方面:各平台的最大出警时间尽量和总工作量尽量均衡。解決该问题的方法与A区的解决方法不同,因为路口数量多,不能对所有路口进行全搜素实现。要对现有平台设置明显不合理的地方进行增设新平台,因此,在这里定义一个与平合的出警时间和工作量有关的指标,称为“需求度”,作为判断在一个路口是否需要增设平合的依据,从而找出最需要增设平台的路口。对于每个路口
定义需求度如下:
其中
为路口
到其所管辖平台的距离,即
其中
为所有出警时间的最大值:
,
为管辖路口
平台的工作量,
为所有平台最大工作量:
;
为权重。对每一个设有设平台的路口计算出相应的需求度值,如果需求度较大的路口比较集中在一个区域,则说明在该区域现有平合的设置有明显的不合理,从而应在该区域内增设新平合来降低需求度。根据上述的方法,取
,对比增设1个至6个平合的情況如下表所示。
表10 增设新平台的对应结果比较分析
增加平台个数 | 增加平台编号 | 最大出警时间/min | 最大工作量/(次.天-1) | 工作量标准差/(次.天-1) |
0 | 未增加 | 12.6803 | 26.1 | 4.4946 |
1 | 314 | 12.6803 | 18.4 | 4.1365 |
2 | 517 | 12.6803 | 18.4 | 3.9251 |
3 | 388 | 9.8992 | 18.4 | 3.9753 |
4 | 330 | 8.1188 | 18.4 | 3.9973 |
5 | 288 | 8.1188 | 15.9 | 3.8794 |
6 | 206 | 8.1188 | 15.9 | 3.8794 |
从上表可以看出;前5个平台的增设都对三个指标产生明显的改善效果,但是增加第6个平合后指标却没有产生明显的变化。故在全市范围内增设5个平合就可以改善现有平合设置明显不合理的状况。求解得到的增设平台的数量和其编号均与原模型一致,验证了模型的合理性。
5.4.5小结
问题二平台设置问题,建立了基于层次分析法和熵权法的综合评价模型,定义出警相应时间等六个评价指标,利用层次分析法确定主观权重
,利用熵权法确定客观权重
,再利用拉格朗日乘子优化法得到组合权重
,计算得到六个区的综合得分依次为7.782,6.766,4.184,4.544,4.564,4.373。在此基础上,利用问题一增设平台的模型和解法,得到合理的交巡警服务平台设置方案:C区增设三个平台,增加平台编号为206,288和314;D区增加一个平台,平台编号为330;得到E区增加一个平台,平台编号为388;得到F区增加一个平台,平台编号为517。
5.5 问题二最佳围堵问题的模型建立与求解
对于问题二围堵问题,首先以封锁区域尽量小,即封锁路口节点数尽量少为目标函数,以封锁时间小于嫌疑人逃出封锁区域的最短时间少三分钟为约束条件,建立优化模型,再以封锁时间尽量少为目标函数建立优化模型。最后采用遗传算法对模型进行求解。
5.5.1模型建立
将事发地点P到其他各路口节点的最短时间用矩阵
表示。J假设犯罪嫌疑人逃跑的车速为60km/h。在实际中,由于犯罪嫌疑人逃跑的时间不同,所以逃跑的区域范围也不同。其逃跑的区城范围可以看作以事发地P为中心沿交通网络向外辐射的一个区域。在时间t内将逃跑区域内所有路口节点的集合记为
,即为嫌疑人逃跑t时问后可能逃跑的区域范围,则有
要将犯罪嫌疑人封锁在
范围内,
的所有边界路口节点集合为
,即
中的任一节点都属于
,且与
之外的邻近节点邻接,故有
对于任一个路口节点
,需要封锁的时间为
。因此要全封锁区域
,即
内所有路口节点需要的最短时间为
,最长的时间为
。
在全市范围内最优的封锁方案应该是使得封锁区域尽量小,而封锁区域的大小可以由集合
的节点个数来表示,即
,要保证封锁范围的有效性,即确保封锁住的必要条件为
其中,
,即表示t时间内要平台
去封锁路口
取1,否则取0,
,于是则有最佳的围堵优化模型;
,
(26)
5.5.2模型求解
对于上面的复杂的模型采用遗传算法,可以得到一种有效的全封锁方案,具体结果如表所示.
表11 一种有效的全封锁方案和对应封锁时间
交巡警平台编号 | 目标节点编号 | 封锁时间 | 逃出封锁区域的最短逃跑时间/min | 交巡警平台编号 | 目标节点编号 | 封锁时间/min | 逃出封锁区域的最短逃跑时间/min |
A16(16) | 16 | 0 | 3.3016 | C5(170) | 243 | 5.0978 | 8.3009 |
A5(5) | 5 | 0 | 3.8768 | F1(475) | 561 | 4.3548 | 8.7969 |
A6(6) | 6 | 0 | 3.9074 | A4(4) | 60 | 1.7392 | 8.8017 |
C8(173) | 235 | 0.5315 | 4.1282 | C4(169) | 240 | 7.0474 | 10.1541 |
A15(15) | 15 | 0 | 4.1386 | A1(1) | 41 | 4.4412 | 10.5025 |
A3(3) | 55 | 1.2659 | 5.2104 | C3(168) | 4 | 3.6994 | 10.7557 |
C6(171) | 232 | 1.9064 | 5.7845 | C17(182) | 273 | 2.1024 | 12.8088 |
A10(10) | 10 | 0 | 6.1882 | C10(175) | 168 | 4.9779 | 13.3739 |
C7(172) | 244 | 3.5289 | 6.8121 | D1(320) | 370 | 7.8085 | 16.7721 |
A2(2) | 3 | 2.1117 | 7.1106 | D2(321) | 371 | 8.9798 | 17.1079 |
A17(17) | 40 | 2.6879 | 7.9625 | C2(167) | 248 | 3.6788 | 17.5237 |
从上表可以看出,当封锁时间小于嫌疑人逃出封锁区域的最短时间减去3min 时,即交巡警能在嫌疑人之丽到达要封锁的目标路口,实现对应路口的有效封锁。需要对22个路口进行封锁,最长的封锁时间为8.9798min,即调度全市的交巡營平合的警力,在9min 之内可以完成有效全封锁。从交巡警要封锁的时间和嫌疑人逃出区域的时间来看,该封锁方案是有效的,即确保将嫌疑人被封锁在该区域范围之内。
5.5.3问题结论
最佳围堵方案为对22个路口进行封锁,路口为A16(16),A5(5), A6(6),C8(173),
A15(15),A3(3),C6(171),A10(10),C7(172),A2(2),A17(17),最长的封锁时间为8.9798min,即调度全市的交巡營平合的警力,在9min 之内可以完成有效全封锁。从交巡警要封锁的时间和嫌疑人逃出区域的时间来看,该封锁方案是有效的,即确保将嫌疑人被封锁在该区域范围之内。
5.5.4检验分析
本文采用模拟退火法对原模型进行求解,具体步骤如下:
- 解的编码
求解TSP模型采用自然数编码,0节点代表案发地点P,1-480节点表示其他480个节点。
- 确定初始解
随机生成一个由数字1-7各出现一次的数列。
- 邻域新解的生成、
采用两点逆转的方法,即对数列设置两个点,然后数列在这两点中发生逆转,改变数列。逆转操作如下:假设数列为A=1,4,5,2,3,6,7,随机生成两个点2和6,那么
=4,5,2,3,6,逆转后
=6,3,2,5,4,A=1,6,3,2,5,4,7。
- 确定能量函数
优化模型以最短时间为目标函数,由于速度已知,因此直接以路径长度为能量函数即可。
- 新解接受准则
采用标准的Metropolis准则。
若
,接受新解作为当前解;否则,按照概率判断是否接受新解。
- 搜索最优解
根据已生成的所有解的能量,搜索能量最低的解,即为模拟退火算法的最优解。
求解思路如下:
步骤1 定义集合Q表示包围圈甲需要封锁的路口,O为平台的集合,初姶时O中包含市区中所有的平台。犯罪嫌疑人行驶 3min 后,根据犯罪嫌疑人到达各点时间
,搜索出将犯罪嫌疑人包围所需的最少节点:
。将
加人集合Q,其中犯罪嫌疑人到达
所需时间依次增大。定义变量i之,初始时i=1。
步骤2 计算O中各平合封锁节点
:所需最小时间
。
若
,我出封锁该路口时间为
的平合为
,将
从O中剔除,然后检测i是否小于n。
若i<n,i=i+1,重复步骤2;
若i=n,跳至步骤3。
若
,表示在该时间内犯罪嫌疑人可以越过节点
,记此节点为
,将 从集合 Q中剔除。然后从节点 开始向外延伸搜索,我出节点
使得这些新节点与Q中的元素一起可以将犯罪嫌疑人完全包围;然后将
加人集合Q,对集合中的元素依照犯罪嫌疑人到达时间升序排列,并重新统计Q中元素个数n;令
,转步骤2。
步骤3此时统计出集合Q中的元素
。那么这些路口便是我们所最终需要封锁的路口,然后寻找出封锁此路口对应的平合即可。
根据以上算法,我们对问题进行编程求解,结果如下表所示。
表12 围堵方案
交巡服务平台 被围堵路口 | 所需时间/min | 交巡服务平台 被围堵路口 | 所需时间/min |
(16 562) | 8.3100 | (170 215) | 7.6959 |
(476 558) | 4.1943 | (18 68) | 3.7717 |
(477 549) | 4.7305 | (17 76) | 4.6046 |
(14 487) | 9.6372 | (5 62) | 5.2551 |
(475 482) | 7.1337 | (2 17) | 2.5911 |
(174 273) | 5.7964 | (1 41) | 4.4412 |
(166 248) | 8.7093 | (167 371) | 10.1046 |
(169 240) | 7.0474 | (15 29) | 5.7005 |
(6 168) | 8.6867 | (13 14) | 5.9733 |
(173 227) | 4.5640 | (10 26) | 3.5384 |
(172 218) | 0.4717 | (4 70) | 4.9178 |
(171 217) | 2.2105 | (3 43) | 2.9117 |
5.5.5小结
对于问题二围堵问题,首先以封锁区域尽量小,即封锁路口节点数尽量少为目标函数,以封锁时间小于嫌疑人逃出封锁区域的最短时间少三分钟为约束条件,建立优化模型,再以封锁时间尽量少为目标函数建立优化模型。最后采用遗传算法对模型进行求解,得到最佳围堵方案为对22个路口进行封锁,路口为A16(16),A5(5),A6(6),C8(173),A15(15),A3(3),C6(171),A10(10),C7(172),A2(2),A17(17),最长的封锁时间为8.9798min,即调度全市的交巡營平合的警力,在9min 之内可以完成有效全封锁。
六、 模型评价与推广
6.1 模型评价
(1)模型从实际情况出发,给出了合理的假设,简化了问题的处理过程,使问题的解决过程更加简单清晰.
(2)各个模型由简到繁,各个模型层次感较强.
(3)在模型中使用了一些成熟的优化算法,如Folyd 算法、遗传算法等,有效地简化了问题的处理过程,使问题的求解更加快速准确。
(4)给出了各个模型的适用条件,更符合实际情况。
6.2 模型推广
对交巡警服务平台进行优化改进的过程中,在这里只考虑了增加平合的这种改进方式.事实上可以通过调查估算给出在不同位置节点上添加、删减或移动交巡警服务平台所耗成本费用,根据这些成本费用给出综合优化方案可能会更好。如果能够根据对策论的理论,充分考虑人的心理因素,提出相应的更高效的搜捕方案,则可能会更有实际意义. 在为交巡替服务平台分配管辖范国时,如果能综合考虑到达案发现场的时同和平台工作量的均衡性,尽量在满足了分钟到达的条件下,使各平台的工作量趋于均衡,其结果可能更好。
参考文献有点少,档次不够高
参考文献
[1] 唐爽权,张博峰,穆森等.基于Floyd算法的最优路径规划问题[J].科学技术创新, 2021(24) : 16-17.
[2] Kannan N,Umaamaheshvari A,Sira S J, et al. Floyd–Warshalls algorithm and modified advanced encryption standard for secured communication in VANET[J]. Measurement: Sensors,2023,27.
[3] 李晴文,裴华富,宋怀博等.基于熵权法优化组合的PSO-SVR-NGM边坡位移预测[J].工程地质学报,2023,31(03):949-958.DOI:10.13544/j.cnki.jeg.2021-0036.
[4] 刘双双,李军.基于模拟退火法的模拟预失真研究[J].数据通信,2023(02):42-45+54.
[5] 张霞,何南.综合评价方法分类及适用性研究[J].统计与决策,2022,38(06):31-36.DOI:10.13546/j.cnki.tjyjc.2022.06.006.
[6] Hua-Qiang X,Shuai G,Yu-Cheng F, et al. A strategy learning framework for particle swarm optimization algorithm[J]. Information Sciences,2023,619.
[7] Feng W,Xujie W,Shilei S. A reinforcement learning level-based particle swarm optimization algorithm for large-scale optimization[J]. Information Sciences,2022,602.
附 录
附录一 问题一的代码
%计算平台到路口的时间,距离矩阵
clc,clear
%读取路口的标号、x坐标、y坐标
lukou = xlsread("lukou.xlsx");
%读取平台的标号
pingtai = xlsread("pingtai.xlsx");
for i = 1 :582
for j = 1 : 20
if pingtai(j,1) == lukou(i,1)
% 得到平台的坐标
pingtai(j,2) = lukou(i,2);
pingtai(j,3) = lukou(i,3);
end
end
end
% 用来存储平台与路口的距离以及时间矩阵
dist = zeros(582,20);
time = zeros(582,20);
for i = 1 : 582
for j = 1 : 20
% 单位为地图距离毫米
dist(i,j) = sqrt((lukou(i,2) - pingtai(j,2))^2 + (lukou(i,3) - pingtai(j,3))^2);
% 单位为分
time(i,j) = dist(i,j) / 10;
end
end
xlswrite("路口与平台的距离矩阵.xlsx",dist);
xlswrite("路口到平台的时间矩阵.xlsx",time);
%交通巡警平台管辖A区路口以及A区出入口
clear;clc;
%读取数据
file = 'cumcm2011B附件2_全市六区交通网路和平台设置的数据表.xls';
%读取路口节点数据
jiedian= xlsread(file,1,'B2:C93');
%disp(Apoint);
%整数化
[row1,column1] = size(jiedian);
for i = 1 : row1
for j = 1 : column1
jiedian(i,j) = round(jiedian(i,j));%利用round函数将路口坐标整数化
end
end
%disp(JIEDIAN);
%巡警平台数据
pingtai = [20,2];
for i = 1 : 20
for j = 1 : column1
pingtai(i,j) =jiedian(i,j);
end
end
%disp(PINGTAI);
%路线数据
ROAD = xlsread(file,2,'A2:B144');
[row2,column2] = size(ROAD);
for i = 1 : row2
for j = 1 : column2
if(ROAD(i,j) > 92)
ROAD(i,1) = 0;
ROAD(i,2) = 0;
end
end
end
%disp(ROAD);
%求节点之间的直接距离
DISTANCE = zeros(92);
for i = 1 : 92
for j = 1 : 92
DISTANCE(i,j) = inf;
if(i == j)
DISTANCE(i,j) = 0;
end
end
end
%disp(DISTANCE);
for i = 1 : row2
for j = 1 : column2
x1 = ROAD(i,1);
x2 = ROAD(i,2);
if ((x1 == 0)&&(x2 == 0))
continue;
else
dis=sqrt((jiedian(x1,1)-jiedian(x2,1))^2+(jiedian(x1,2)-jiedian(x2,2))^2);
DISTANCE(x1,x2) = dis;
DISTANCE(x2,x1) = dis;
end
end
end
%disp(DISTANCE);
%FLOYD算法并写入文件dist中
Dist = floyd(DISTANCE);
%找出每个平台距离不大于30(换算后距离)的节点以及无法到达的节点
PT_y_JD = [];
PT_n_JD = 21:92;
for i = 1 : 20
k = 1;
PT_y_JD(i,k) = i;
for j =21 : 92
if(Dist(i,j)<=30)
k = k + 1;
PT_y_JD(i,k) = j;
PT_n_JD(PT_n_JD == j) = [];
end
end
end
%读取出入A区的节点
GATE = xlsread(file,4,'C2:C14');
%分别以到出入节点的距离和到平台的距离形成两个矩阵
%距离出入口节点最近的平台
PT_y1_GT = [];
%距离平台最近的出入口节点
PT_y2_GT = [];
column3 = length(GATE);
for j = 1 : 20
k = 1;
dis_to_GT2 = [];
for i = 1 : column3
PT_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;
end
end
k = 2;
mindis = min(dis_to_GT2);
for i = 1 : column3
if(Dist(j,GATE(i)) == mindis)
PT_y2_GT(j,k) = j;
k = k + 1;
end
end
end
%到平台的距离不用修改即可使用
PT_yy_GT = [];
for i = 1 : column3
for j = 1 : 20
if (j == PT_y2_GT(i,2))
PT_yy_GT(j,1) = j;
PT_yy_GT(j,2) = PT_y2_GT(i,1);
end
end
end
%把每个平台辖区的平台节点删去,优化范围辖区
%前面已优化
%求出优化范围辖区
%找出重复出现的节点
REPEATED_JD = [];
[row4,column4] = size(PT_y_JD);
UN_REPEATED_JD = [];
%定义计数变量
for k = 21 : 92
count = 0;
for i = 1 : row4
for j = 1 : column4
if(PT_y_JD(i,j)==k)
count = count + 1;
end
if((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;
end
end
end
end
end
%找出重复节点最近的交通平台,并记录在优化的巡警范围数组里面
PT_yy_JD = [];
dis_to_PT = [];
row5 = length(REPEATED_JD);
for j = 1 : 20
k = 1;
PT_yy_JD(j,k) = j;
for i = 1 : row5
dis_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);
end
end
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 : 20
k = 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);
end
end
end
fprintf('优化后的交通平台管辖范围\n');
disp(PT_yy_JD);
fprintf('交通平台及其负责的A区出入点\n');
disp(PT_yy_GT);
%构造floyd函数
function [Dist]=floyd(DISTANCE)
Dist = DISTANCE;
n = size(DISTANCE,1);
for k=1:n
for i=1:n
for j=1:n
if (Dist(i,k)+Dist(k,j)<Dist(i,j))
Dist(i,j)=Dist(i,k)+Dist(k,j);
end
end
end
end
%保存到文件
fid=fopen('Dist.txt','wt');
[m,n]=size(Dist);
for i=1:m
for j=1:n
if j==n
fprintf(fid,'%g\n',Dist(i,j));
else
fprintf(fid,'%g\t',Dist(i,j));
end
end
end
End
%% 遗传算法
clear
clc
%% 用户自定义变量
[customerPosition,distriCenterPosition,distriCenterConstantCost,distriCenterVolume,distriCenterManageCost,sendToDistriCenterPer,distriCenterToCustomerPer,customerRequirement] = DataFunction;
% probabilityMat = ones(1,20)/20;
probabilityMat = [0.01,0.05,0.1,0.1,0.05,0.2,0.1,0.04,0.02,0.05,0.04,0.01,0.05,0.03,0.01,0.05,0.01,0.03,0.01,0.04];
%% 用户不可修改参数
M = size(distriCenterPosition,1);
N = size(customerPosition,1);
if length(probabilityMat)~=M || abs(sum(probabilityMat)-1)>=1e-6
error('参数probabilityMat的大小与交巡警平台数目不一致或probabilityMat加和不为1')
end
%% 遗传算法数据
populationNumber = 50;
pro = 0.1;
populationMat = cell(populationNumber,4);
iter = 1;
iterMax = 1000;
bestValue = inf;
bestValueNow = inf;
bestValueMat = zeros(iterMax,4);
bestSolve = cell(1,4);
%% 初始化个体
populationMat = InitializeIndividuality(populationMat,populationNumber,M,N,probabilityMat,customerRequirement,distriCenterVolume,distriCenterPosition,customerPosition);
while iter<=iterMax
if iter<iterMax/2
pro = 0.5;
else
pro = 0.1;
end
%% 计算适应度函数
p = CalcuFitCapacity(populationMat,sendPosition,distriCenterPosition,customerPosition,distriCenterToCustomerPer,distriCenterConstantCost,distriCenterManageCost,populationNumber);
%% 选择
populationMat = SelectFunction(populationMat,populationNumber,p);
%% 交叉
populationMat = CrossFunction(populationMat,populationNumber,customerRequirement,distriCenterVolume,distriCenterPosition,customerPosition,N);
%% 变异
populationMat = HeteromorphosisFunction(populationMat,probabilityMat,pro,populationNumber,M,N,customerRequirement,distriCenterVolume,distriCenterPosition,customerPosition);
%% 寻找最优解
[bestValueNow,bestSolveNow] = CalcuBestIndividuiality(populationMat,populationNumber,sendPosition,distriCenterPosition,sendToDistriCenterPer,customerPosition,distriCenterToCustomerPer,distriCenterConstantCost,distriCenterManageCost);
if bestValueNow<bestValue
bestValueMat(iter) = bestValueNow;
bestValue = bestValueNow;
bestSolve = bestSolveNow;
else
bestValueMat(iter) = bestValue;
end
iter = iter+1;
end
%% 画图
DrawPicture(bestSolve,distriCenterPosition,customerPosition,sendPosition)
%% 输出结果
numberMat = cumsum(bestSolve{1,3});
for k1 = 1:bestSolve{1,1}
if k1 == 1
disp(['第',num2str(bestSolve{1,2}(k1)),'个交巡警平台对应的管辖路口为:',num2str(bestSolve{1,4}(1:numberMat(k1)))]);
else
disp(['第',num2str(bestSolve{1,2}(k1)),'个交巡警平台对应的管辖路口为:',num2str(bestSolve{1,4}(numberMat(k1-1)+1:numberMat(k1)))]);
end
end
%计算各交巡警平台未考虑工作均衡度时的出警时间
clc,clear;
load question4
o=question4;
a(1)=o(1,67)+o(1,68)+o(1,69)+o(1,71)+o(1,73)+o(1,74)+o(1,75)+o(1,76)+o(1,78);
a(2)=o(2,40)+o(2,43)+o(2,44)+o(2,70)+o(2,72)+o(2,39);
a(3)=o(3,54)+o(3,55)+o(3,65)+o(3,66);
a(4)=o(4,57)+o(4,60)+o(4,62)+o(4,63)+o(4,64);
a(5)=o(5,47)+o(5,49)+o(5,50)+o(5,51)+o(5,52)+o(5,53)+o(5,56);
a(6)=o(6,58)+o(6,59);
a(7)=o(7,30)+o(7,32)+o(7,48)+o(7,61);
a(8)=o(8,33)+o(8,46);
a(9)=o(9,31)+o(9,34)+o(9,35)+o(9,45);
a(10)=0;
a(11)=o(11,26)+o(11,27);
a(12)=o(12,25);
a(13)=o(13,21)+o(13,22)+o(13,23)+o(13,24);
a(14)=0;
a(15)=o(15,29);
a(16)=o(16,36)+o(16,37)+o(16,38);
a(17)=o(17,41)+o(17,42);
a(18)=o(18,80)+o(18,81)+o(18,82)+o(18,83);
a(19)=o(19,77)+o(19,79);
a(20)=o(20,84)+o(20,85)+o(20,86)+o(20,87)+o(20,88)+o(20,89)+o(20,90)+o(20,91)+o(20,92);
%时间 分钟
for i=1:20
time(i)=a(i)*100*3.6/3600;
end
Time=time';
%20个交巡警平台工作量变化图
clc,clear;
x=[0,0.1,0.2,0.3,0.4,0.5];
y=[13.221625,14.9521,17.186625,19.778125,22.775625,26.179125];
plot(x,y)
title('20个交巡警平台工作量变化图')
%交巡警平台与出警时间关系图
clc,clear;
x=[20 21 22 23 24];
y=[4.940397495 4.478862281 4.121541905 3.886248691 3.670378654];
plot(x,y)
title('交巡警平台数与平均出警时间关系图')
%构造权重邻接矩阵做出无向图函数
function [dist,path] = Floyd_algorithm(D)
%输入一个权重临接矩阵
% 输出的dist是最短距离矩阵,其元素dist_ij表示表示i,j两个节点的最短距离
% path是路径矩阵,其元素path_ij表示起点为i,终点为j的两个节点之间的最短路径要经过的节点
n = 5; % 计算邻接矩阵节点的个数
% 用权重邻接矩阵初始化dist矩阵
dist = [0 3 8 Inf -4
Inf 0 Inf 1 7
Inf 4 0 Inf Inf
2 Inf -5 0 Inf
Inf Inf Inf 6 0];
% 初始化path矩阵
path = zeros(n);
for j = 1:n
path(:,j) = j; % 将第j列的元素变为j
end
for i = 1:n
path(i,i) = -1; % 将主对角线元素变为-1
end
% 下面开始三个循环
for k=1:n % 中间节点k从1- n 循环
for i=1:n % 起始节点i从1- n 循环
for j=1:n % 终点节点j从1-n 循环
if dist(i,j)>dist(i,k)+dist(k,j) % 如果i,j两个节点间的最短距离大于i和k的最短距离+k和j的最短距离
dist(i,j)=dist(i,k)+dist(k,j); % 那么我们就令这两个较短的距离之和取代i,j两点之间的最短距离
path(i,j)=path(i,k); % 起点为i,终点为j的两个节点之间的最短路径要经过的节点更新为path(i,k)
end
end
end
end
end
附录二 问题二的代码
%B区打分
clc;clear
j=zeros(165,8);
for i=101:165
if dist(i,102)<30 || dist(i,103)<30 ||dist(i,104)<30 || dist(i,105)<30 || dist(i,106)<30||dist(i,112)<30||dist(i,113)<30||dist(i,114)<30
dist(i);
if dist(i,102)<30
fprintf('102属于第%d个平台服务节点;\n',i);
j(i,1)=1;
end
if dist(i,103)<30
fprintf('103属于第%d个平台服务节点;\n',i);
j(i,2)=1;
end
if dist(i,104)<30
fprintf('104属于第%d个平台服务节点;\n',i);
j(i,3)=1;
end
if dist(i,105)<30
fprintf('105属于第%d个平台服务节点;\n',i);
j(i,4)=1;
end
if dist(i,106)<30
fprintf('106属于第%d个平台服务节点;\n',i);
j(i,5)=1;
end
if dist(i,112)<30
fprintf('112属于第%d个平台服务节点;\n',i);
j(i,6)=1;
end
if dist(i,113)<30
fprintf('113属于第%d个平台服务节点;\n',i);
j(i,7)=1;
end
if dist(i,114)<30
fprintf('114属于第%d个平台服务节点;\n',i);
j(i,8)=1;
end
end
end
J=j;
% %去除量纲*********距离
for i=1:582
for j=1:582
Dist(i,j)=(dist(i,j)-min(dist, [], 'all'))/(max(dist, [], 'all')-min(dist, [], 'all'));
end
end
z=zeros(319,1);
for i=183:319
z(i,1)=0.5*(J(i,1)*dist(i,199)+J(i,2)*dist(i,200)+J(i,3)*Dist(i,202)*J(i,4)*dist(i,206)+J(i,5)*dist(i,207)+J(i,6)*dist(i,208)+J(i,7)*dist(i,239)+J(i,8)*dist(i,253)+J(i,9)*dist(i,263)+J(i,10)*dist(i,264)+J(i,11)*dist(i,287)+J(i,12)*dist(i,301)+J(i,13)*dist(i,316)+J(i,14)*dist(i,317)) +0.5*(J(i,1)*Anjian(1,199)+J(i,2)*Anjian(1,200)+J(i,3)*Anjian(1,202)+J(i,4)*Anjian(1,206)+J(i,5)*Anjian(1,207)+J(i,6)*Anjian(1,208)+J(i,7)*Anjian(1,239)+J(i,8)*Anjian(1,253)+J(i,9)*Anjian(1,263)+J(i,10)*Anjian(1,264)+J(i,11)*Anjian(1,287)+J(i,12)*Anjian(1,301)+J(i,13)*Anjian(1,316)+J(i,14)*Anjian(1,317));
end
%计算排名
[Y,I] = sort(z,1,'descend');
YY=Y';%z
II=I';%原序列排名
zong=[II;YY];
Zong=zong';
%排名的综合统计量
for i = 1:319
JJ(i)=sum(J(i,1:14));
end
JJJ=JJ';
%嫌疑犯拟逃跑路径图
clc
clear;
zuobiao2=xlsread("坐标.xlsx",1,'A1:B582');
xx=[zuobiao2(32,1),zuobiao2(33,1),zuobiao2(34,1),zuobiao2(9,1),zuobiao2(35,1)...
,zuobiao2(36,1),zuobiao2(38,1),zuobiao2(561,1) ];
yy=[zuobiao2(32,2),zuobiao2(33,2),zuobiao2(34,2),zuobiao2(9,2),zuobiao2(35,2)...
,zuobiao2(36,2),zuobiao2(38,2),zuobiao2(561,2)];
plot(xx,yy)
text()
title('嫌疑犯拟定最短逃跑路线图')
私信我发送原文档