Introduction
-
We define a street patrol districting problem (SPDP) and use a mixed integer programming model (MIP) to represent the problem (SPDP). The model uses workload attributes as important criteria to produce a balanced and efficient districting design in the street network.
-
We develop a hybrid spectral clustering-simulated annealing algorithm (SCRn-SA) that can generate optimal districting results. This algorithm improves on the spectral clustering algorithm and combines it with the simulated annealing algorithm to make it more suitable for solving SPDP.
-
Two different road network scenarios are selected for testing, and the experimental results indicate that the proposed algorithm is more advantageous than the other advanced algorithms in solving SPDP.
Literature review
Description and modelling
Problem description
-
A patrol district covers the entire patrolled street network. The district must not overlap with another district or be empty.
-
A patrol officer cannot be assigned to two or more patrol districts.
-
A patrol district contains connected patrol units. The patrol district is made up of at least one patrol unit.
Problem modelling
Parameters | |
---|---|
\({\varvec{K}}\) | Set of patrol districts |
\({\varvec{k}}\) | Index of patrol district |
\({\varvec{m}}\) | Number of patrol districts |
\({\varvec{I}}\) | Set of patrol units |
\({\varvec{i}}\) | Index of patrol units |
\({\varvec{j}}\) | Index of patrol units |
\({\varvec{n}}\) | Number of patrol units |
\({{\varvec{H}}}_{{\varvec{i}}}\) | The patrol units that are adjacent to unit \(i\) |
\({{\varvec{R}}}_{{\varvec{k}}}\) | Risk factor in district \(k\) |
\({{\varvec{L}}}_{{\varvec{k}}}\) | Workload of district \(k\) |
\({{\varvec{D}}}_{{\varvec{m}}{\varvec{k}}}\) | The diameter distance in district k |
\({{\varvec{D}}}_{{{\varvec{L}}}_{{\varvec{k}}}}\) | Workload deviation of district \(k\) |
\({{\varvec{l}}}_{{\varvec{i}}}\) | Length of road in unit \(i\) |
\({{\varvec{c}}}_{{\varvec{i}}}\) | Road congestion factor in unit \(i\) |
\({{\varvec{d}}}_{{\varvec{i}}{\varvec{j}}}\) | The shortest distance between unit i and unit \(j\) |
\({{\varvec{w}}}_{1}\),\({{\varvec{w}}}_{2}\) | Weighting of the objective function |
\(\boldsymbol{\alpha },{\varvec{\beta}},{\varvec{\gamma}},{\varvec{\delta}}\) | Weighting of the workload in the objective function |
Decision variables | |
\({{\varvec{x}}}_{{\varvec{i}}{\varvec{k}}}\) | Binary variable which is 1 if unit \(i\) is assigned to district \(k\) |
\({{\varvec{y}}}_{{\varvec{i}}{\varvec{j}}{\varvec{k}}}\) | Binary variable which is 1 if both units \(i\) and \(j\) belong to district \(k\) |
Proposed algorithm
Framework of the RSCn-SA algorithm
Spectral clustering algorithm
Simulated annealing algorithm
-
The initial solution is randomly generated in the traditional simulated annealing algorithm. The initial solution in this paper is determined by the result of the spectral clustering algorithm introduced in the previous section. This can reduce computing time.
-
The boundary segments between different patrol units are selected during the process of generating a new solution. A disturbance process randomly selects one of the road sections, and then the selected segment is taken out of the original district and arranged in the other district which is close. During the disturbance, the connectivity of the altered section needs to be verified. If there is partitioning of the area, both the changed districts need to be analysed, and the perturbation is completed when justified.
-
In the process of generating the new solution, length data from all sections of the road network are used to construct a length matrix to find the furthest distance of the road between two road segments and calculate the increment of the objective function.
Numerical experiments
Experimental description
Parameters | Values |
---|---|
Number of districts | 1–10 |
Initial temperature | 1 |
Number of iterations | 100 |
Temperature drop rate | 0.9 |
Stop iteration temperature | 0.000001 |
\({w}_{1}\) | 0.5 |
\({w}_{2}\) | 0.5 |
Performance comparison in small instances
Scene number | Total length of road segment | The furthest distance of the road | Risk factor for the district | Road congestion factor |
---|---|---|---|---|
1 | 89.8842 | 8.7328 | 0.1345 | 0.1310 |
2 | 88.8571 | 8.9837 | 0.1103 | 0.1414 |
3 | 95.3991 | 8.6756 | 0.1448 | 0.1034 |
4 | 89.9570 | 10.0663 | 0.1069 | 0.1379 |
5 | 90.0314 | 8.9580 | 0.1345 | 0.1793 |
6 | 83.7805 | 7.0994 | 0.1448 | 0.1207 |
7 | 93.1416 | 8.3429 | 0.0931 | 0.1172 |
8 | 89.1404 | 8.2132 | 0.1241 | 0.1207 |
9 | 95.1825 | 9.3844 | 0.1034 | 0.1276 |
10 | 94.9142 | 8.1043 | 0.1414 | 0.1241 |
SCRn-SA | SCRn | SA | G | TS | G-TS | DOA | |
---|---|---|---|---|---|---|---|
\({{\varvec{f}}}_{1}\) | |||||||
Ave | 0.000174 | 0.024276 | 0.000396 | 0.101358 | 0.000658 | 0.000354 | 0.000284 |
Std | 0.000057 | 0 | 0.000095 | 0.031839 | 0.000068 | 0.000048 | 0.000067 |
\({{\varvec{f}}}_{2}\) | |||||||
Ave | 0.000114 | 0.016767 | 0.000312 | 0.087511 | 0.000845 | 0.000324 | 0.000224 |
Std | 0.000041 | 0 | 0.000085 | 0.015985 | 0.000061 | 0.000034 | 0.000059 |
\({{\varvec{f}}}_{3}\) | |||||||
Ave | 0.000189 | 0.027442 | 0.000425 | 0.047807 | 0.000612 | 0.000415 | 0.000193 |
Std | 0.000051 | 0 | 0.000062 | 0.015478 | 0.000058 | 0.000025 | 0.000071 |
\({{\varvec{f}}}_{4}\) | |||||||
Ave | 0.000212 | 0.016544 | 0.000356 | 0.140458 | 0.000945 | 0.000587 | 0.000314 |
Std | 0.000068 | 0 | 0.000067 | 0.059847 | 0.000075 | 0.000067 | 0.000098 |
\({{\varvec{f}}}_{5}\) | |||||||
Ave | 0.000195 | 0.032204 | 0.000268 | 0.113352 | 0.000689 | 0.000368 | 0.000395 |
Std | 0.000062 | 0 | 0.000051 | 0.048792 | 0.000074 | 0.000045 | 0.000072 |
\({{\varvec{f}}}_{6}\) | |||||||
Ave | 0.000265 | 0.014899 | 0.000378 | 0.043851 | 0.001305 | 0.000468 | 0.000465 |
Std | 0.000075 | 0 | 0.000046 | 0.012568 | 0.000156 | 0.000062 | 0.000085 |
\({{\varvec{f}}}_{7}\) | |||||||
Ave | 0.000364 | 0.022584 | 0.000654 | 0.050702 | 0.000729 | 0.000489 | 0.000384 |
Std | 0.000064 | 0 | 0.000078 | 0.025864 | 0.000061 | 0.000051 | 0.000079 |
\({{\varvec{f}}}_{8}\) | |||||||
Ave | 0.000315 | 0.027470 | 0.000498 | 0.041881 | 0.000696 | 0.000658 | 0.000532 |
Std | 0.000055 | 0 | 0.000084 | 0.015526 | 0.000066 | 0.000039 | 0.000125 |
\({{\varvec{f}}}_{9}\) | |||||||
Ave | 0.000451 | 0.033509 | 0.000512 | 0.075313 | 0.000754 | 0.000548 | 0.000589 |
Std | 0.000065 | 0 | 0.000061 | 0.025478 | 0.000051 | 0.000042 | 0.000065 |
\({{\varvec{f}}}_{10}\) | |||||||
Ave | 0.000389 | 0.022046 | 0.000475 | 0.086464 | 0.000846 | 0.000658 | 0.000477 |
Std | 0.000071 | 0 | 0.000058 | 0.247554 | 0.000068 | 0.000068 | 0.000078 |
Performance comparison in real scenes
Workload attributes | Value |
---|---|
Total length of road segment | 269.4 |
The furthest distance of the road | 21.6867 |
Risk factor for the district | 0.2034 |
Road congestion factor | 0.2310 |
SCRn-SA | SCRn | SA | G | TS | G-TS | DOA | |
---|---|---|---|---|---|---|---|
\({{\varvec{F}}}_{1}\) | |||||||
Ave | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Std | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
\({{\varvec{F}}}_{2}\) | |||||||
Ave | 0.000224 | 0.003917 | 0.000242 | 0.042905 | 0.000464 | 0.000313 | 0.000274 |
Std | 0.000043 | 0 | 0.000065 | 0.025826 | 0.000065 | 0.000095 | 0.000093 |
\({{\varvec{F}}}_{3}\) | |||||||
Ave | 0.000103 | 0.011009 | 0.000258 | 0.029663 | 0.000428 | 0.000315 | 0.000336 |
Std | 0.000047 | 0 | 0.000074 | 0.019839 | 0.000045 | 0.000087 | 0.000067 |
\({{\varvec{F}}}_{4}\) | |||||||
Ave | 0.000204 | 0.031531 | 0.000331 | 0.041212 | 0.000483 | 0.019201 | 0.000384 |
Std | 0.000045 | 0 | 0.000095 | 0.015713 | 0.000066 | 0.032735 | 0.000125 |
\({{\varvec{F}}}_{5}\) | |||||||
Ave | 0.000226 | 0.054419 | 0.000264 | 0.115030 | 0.000613 | 0.000728 | 0.000376 |
Std | 0.000064 | 0 | 0.000078 | 0.031242 | 0.000032 | 0.000084 | 0.000084 |
\({{\varvec{F}}}_{6}\) | |||||||
Ave | 0.000239 | 0.023163 | 0.000298 | 0.073448 | 0.000774 | 0.000516 | 0.000269 |
Std | 0.000051 | 0 | 0.000054 | 0.021514 | 0.000051 | 0.000078 | 0.000061 |
\({{\varvec{F}}}_{7}\) | |||||||
Ave | 0.000361 | 0.037532 | 0.000474 | 0.078305 | 0.000515 | 0.000478 | 0.000371 |
Std | 0.000057 | 0 | 0.000052 | 0.024551 | 0.000043 | 0.000057 | 0.000077 |
\({{\varvec{F}}}_{8}\) | |||||||
Ave | 0.000241 | 0.037532 | 0.000365 | 0.057544 | 0.000461 | 0.000403 | 0.000441 |
Std | 0.000065 | 0 | 0.000061 | 0.039584 | 0.000039 | 0.000068 | 0.000085 |
\({{\varvec{F}}}_{9}\) | |||||||
Ave | 0.000367 | 0.069643 | 0.000455 | 0.068571 | 0.000561 | 0.000412 | 0.000567 |
Std | 0.000048 | 0 | 0.000049 | 0.048445 | 0.000048 | 0.000079 | 0.000128 |
\({{\varvec{F}}}_{10}\) | |||||||
Ave | 0.000326 | 0.039556 | 0.000514 | 0.068226 | 0.000657 | 0.000468 | 0.000436 |
Std | 0.000074 | 0 | 0.000084 | 0.036958 | 0.000065 | 0.000088 | 0.000087 |
Performance comparison in public datasets
Workload attributes | Value |
---|---|
Total length of road segment | 406.9 |
The furthest distance of the road | 36.7328 |
Risk factor for the district | 0.1096 |
Road congestion factor | 0.1393 |
SCRn-SA | SCRn | SA | G | TS | G-TS | DOA | |
---|---|---|---|---|---|---|---|
\({{\varvec{D}}}_{1}\) | |||||||
Ave | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Std | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
\({{\varvec{D}}}_{2}\) | |||||||
Ave | 0.000144 | 0.014923 | 0.000297 | 0.090524 | 0.000311 | 0.000204 | 0.001631 |
Std | 0.000021 | 0 | 0.000075 | 0.027307 | 0.000034 | 0.000065 | 0.000011 |
\({{\varvec{D}}}_{3}\) | |||||||
Ave | 0.000196 | 0.039524 | 0.000236 | 0.063078 | 0.000396 | 0.000401 | 0.001740 |
Std | 0.000032 | 0 | 0.000037 | 0.039055 | 0.000021 | 0.000056 | 0.000024 |
\({{\varvec{D}}}_{4}\) | |||||||
Ave | 0.000136 | 0.022946 | 0.000330 | 0.061320 | 0.005985 | 0.000682 | 0.001523 |
Std | 0.000069 | 0 | 0.000038 | 0.035483 | 0.000037 | 0.000080 | 0.000016 |
\({{\varvec{D}}}_{5}\) | |||||||
Ave | 0.000289 | 0.021370 | 0.000303 | 0.094069 | 0.004263 | 0.000401 | 0.002301 |
Std | 0.000036 | 0 | 0.000052 | 0.041062 | 0.000232 | 0.000084 | 0.000015 |
\({{\varvec{D}}}_{6}\) | |||||||
Ave | 0.000220 | 0.022421 | 0.000249 | 0.096941 | 0.003213 | 0.000314 | 0.001410 |
Std | 0.000043 | 0 | 0.000034 | 0.043062 | 0.000268 | 0.000069 | 0.000026 |
\({{\varvec{D}}}_{7}\) | |||||||
Ave | 0.000246 | 0.025627 | 0.000475 | 0.090200 | 0.000569 | 0.000451 | 0.001995 |
Std | 0.000058 | 0 | 0.000061 | 0.048182 | 0.000036 | 0.000094 | 0.000038 |
\({{\varvec{D}}}_{8}\) | |||||||
Ave | 0.000266 | 0.028938 | 0.000362 | 0.077805 | 0.000682 | 0.000389 | 0.001640 |
Std | 0.000063 | 0 | 0.000045 | 0.024219 | 0.000028 | 0.000064 | 0.000033 |
\({{\varvec{D}}}_{9}\) | |||||||
Ave | 0.000341 | 0.032796 | 0.000279 | 0.067289 | 0.003581 | 0.000561 | 0.001416 |
Std | 0.000049 | 0 | 0.000062 | 0.023783 | 0.000215 | 0.000081 | 0.000021 |
\({{\varvec{D}}}_{10}\) | |||||||
Ave | 0.000280 | 0.030209 | 0.000204 | 0.109079 | 0.006490 | 0.000307 | 0.002441 |
Std | 0.000043 | 0 | 0.000054 | 0.051841 | 0.000268 | 0.000048 | 0.000027 |