| Literature DB >> 35185262 |
Lianhua Tang1, Yantong Li2, Danyu Bai2, Tao Liu3, Leandro C Coelho4.
Abstract
This work investigates a new multi-period vaccination planning problem that simultaneously optimizes the total travel distance of vaccination recipients (service level) and the operational cost. An optimal plan determines, for each period, which vaccination sites to open, how many vaccination stations to launch at each site, how to assign recipients from different locations to opened sites, and the replenishment quantity of each site. We formulate this new problem as a bi-objective mixed-integer linear program (MILP). We first propose a weighted-sum and an ϵ -constraint methods, which rely on solving many single-objective MILPs and thus lose efficiency for practical-sized instances. To this end, we further develop a tailored genetic algorithm where an improved assignment strategy and a new dynamic programming method are designed to obtain good feasible solutions. Results from a case study indicate that our methods reduce the operational cost and the total travel distance by up to 9.3% and 36.6%, respectively. Managerial implications suggest enlarging the service capacity of vaccination sites can help improve the performance of the vaccination program. The enhanced performance of our heuristic is due to the newly proposed assignment strategy and dynamic programming method. Our findings demonstrate that vaccination programs during pandemics can significantly benefit from formal methods, drastically improving service levels and decreasing operational costs.Entities:
Keywords: COVID-19; Mixed-integer linear programming; Multi-objective optimization; Multi-period location-allocation; Vaccination planning
Year: 2022 PMID: 35185262 PMCID: PMC8848572 DOI: 10.1016/j.omega.2022.102617
Source DB: PubMed Journal: Omega ISSN: 0305-0483 Impact factor: 8.673
Algorithm 1Weighted-sum method.
Algorithm 2-constraint method.
Fig. 1Flow chart of NSGA-II.
Fig. 2Chromosome illustration.
Algorithm 3Chromosome initialization.
Algorithm 4Determine the opened vaccination sites.
Algorithm 5Assign recipients with an improved strategy.
Algorithm 6Determine , , and with a DP method.
Information of vaccination sites in Tongzhou district.
| No. | Name | Latitude | Longitude | Capacity/d | # of recipients |
|---|---|---|---|---|---|
| 1 | Yangzhuang Street | 39.91143 | 116.63804 | 840 | 5930 |
| 2 | Beiyuan Street | 39.91414 | 116.65996 | 780 | 8111 |
| 3 | People Mall | 39.91425 | 116.67745 | 2960 | 31546 |
| 4 | Tongyun Street | 39.91899 | 116.70526 | 700 | 4225 |
| 5 | Jiukeshu Street | 39.90094 | 116.65871 | 1120 | 9487 |
| 6 | Yuqiao Street | 39.89856 | 116.69962 | 1120 | 12340 |
| 7 | Yongshun Town | 39.95379 | 116.68951 | 1400 | 14200 |
| 8 | Songzhuang Town | 39.95223 | 116.73489 | 1680 | 18195 |
| 9 | Liyuan Town | 39.87097 | 116.65589 | 1950 | 18249 |
| 10 | Zhangjiawan Town | 39.86281 | 116.74197 | 960 | 10215 |
| 11 | Lucheng Town | 39.86046 | 116.82250 | 840 | 9080 |
| 12 | Taihu Town | 39.82754 | 116.64454 | 1560 | 13190 |
| 13 | Xiji Town | 39.80478 | 116.83826 | 840 | 8830 |
| 14 | Huoxian Town | 39.78210 | 116.80376 | 720 | 7290 |
| 15 | Majuqiao Town | 39.74870 | 116.57271 | 1680 | 13583 |
| 16 | Yujiawuxiang Town | 39.72415 | 116.71123 | 1120 | 7432 |
| 17 | Yongledian Town | 39.72156 | 116.80356 | 1120 | 10692 |
| Total | 21390 | 202595 | |||
Fig. 3The location of vaccination sites in Tongzhou District.
Values for the model parameters.
| PAR. | Description | Value |
|---|---|---|
| # of recipients | 202595 | |
| # of sites | 17 | |
| # of days | 12 | |
| Setup cost | [2380 2795 2418 2688 2272 2872 2823 2966 2402 2692 2553 2183 2007 2553 2398 2724 2668] | |
| Replenishment cost | [1989 1358 1910 1622 1080 1334 1518 1067 1767 1539 1622 1942 1771 1070 1827 1694 1047] | |
| Inventory holding cost | [0.30 0.23 0.49 0.33 0.38 0.29 0.47 0.45 0.42 0.43 0.25 0.22 0.33 0.26 0.44 0.33 0.31] | |
| Maximum number of vaccination stations | [9 8 30 7 12 12 14 17 20 10 9 16 9 8 17 12 12] | |
| Maximum replenishment quantity | [16883 16883 33766 33766 33766 50649 50649 16883 50649 50649 50649 33766 50649 33766 50649 33766 16883 ] | |
| Maximum inventory quantity | [16883 33766 50649 50649 50649 33766 50649 16883 33766 33766 33766 16883 50649 50649 16883 33766 50649] |
Fig. 4Pareto front and solutions obtained by experience-based methods.
Fig. 5Results obtained from the trade-off analysis.
Fig. 6Effect of changing service capacity.
Comparison results for small-sized instances.
| # | Weighted-sum | NSGA-II | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #Nd | Hv | Time (s) | #Nd | Hv | Time (s) | #Nd | Hv | Time (s) | |||||||
| 1 | 5 | 13 | 0.958 | 1.023 | 58 | 14 | 0.977 | 1.011 | 24 | 8 | 0.999 | 1.001 | 818 | ||
| 2 | 5 | 10 | 16 | 0.967 | 1.012 | 360 | 9 | 0.968 | 1.009 | 336 | 68 | 0.997 | 1.001 | 908 | |
| 3 | 5 | 16 | 0.977 | 1.016 | 70 | 18 | 0.977 | 1.014 | 51 | 77 | 0.998 | 1.001 | 673 | ||
| 4 | 200 | 10 | 10 | 18 | 0.991 | 1.008 | 1411 | 20 | 0.978 | 1.008 | 628 | 117 | 0.980 | 1.005 | 1514 |
| 5 | 5 | 13 | 0.947 | 1.029 | 215 | 17 | 0.968 | 1.012 | 267 | 16 | 0.996 | 1.003 | 973 | ||
| 6 | 5 | 10 | 13 | 0.930 | 1.025 | 1388 | 19 | 0.981 | 1.009 | 2767 | 91 | 0.994 | 1.002 | 1646 | |
| 7 | 5 | 16 | 0.981 | 1.022 | 1286 | 13 | 0.977 | 1.017 | 1070 | 145 | 0.998 | 1.001 | 1477 | ||
| 8 | 400 | 10 | 10 | 19 | 0.990 | 1.014 | 3591 | 18 | 0.978 | 1.010 | 813 | 195 | 0.987 | 1.003 | 2258 |
| 9 | 5 | 12 | 0.944 | 1.019 | 174 | 12 | 0.969 | 1.009 | 248 | 19 | 0.997 | 1.001 | 1662 | ||
| 10 | 5 | 10 | 8 | 0.769 | 1.052 | 3642 | 12 | 0.996 | 1.005 | 2833 | 40 | 0.981 | 1.004 | 2085 | |
| 11 | 5 | 15 | 0.977 | 1.024 | 3252 | 17 | 0.978 | 1.015 | 1472 | 144 | 0.996 | 1.002 | 2313 | ||
| 12 | 600 | 10 | 10 | 16 | 0.967 | 1.016 | 3275 | 21 | 0.982 | 1.009 | 3178 | 167 | 0.990 | 1.003 | 2966 |
| 13 | 5 | 10 | 0.963 | 1.014 | 244 | 13 | 0.974 | 1.006 | 756 | 14 | 0.992 | 1.002 | 1740 | ||
| 14 | 5 | 10 | 15 | 0.978 | 1.026 | 2796 | 15 | 0.989 | 1.008 | 2737 | 91 | 0.994 | 1.001 | 1640 | |
| 15 | 5 | 17 | 0.957 | 1.031 | 3969 | 16 | 0.972 | 1.018 | 2861 | 171 | 0.999 | 1.001 | 1961 | ||
| 16 | 800 | 10 | 10 | 12 | 0.874 | 1.068 | 4131 | 21 | 0.989 | 1.010 | 3644 | 165 | 0.995 | 1.003 | 3268 |
| 17 | 5 | 15 | 0.989 | 1.014 | 1956 | 18 | 0.988 | 1.006 | 3367 | 6 | 0.913 | 1.019 | 2393 | ||
| 18 | 5 | 10 | 14 | 0.927 | 1.023 | 3615 | 17 | 0.942 | 1.017 | 4123 | 119 | 0.995 | 1.002 | 2829 | |
| 15 | 0.975 | 1.020 | 4108 | 15 | 0.966 | 1.015 | 2959 | 79 | 0.988 | 1.008 | 1668 | ||||
| 20 | 1000 | 10 | 10 | 12 | 0.926 | 1.038 | 4027 | 16 | 0.871 | 1.092 | 4126 | 266 | 0.997 | 1.002 | 3612 |
Comparison results for medium-sized instances.
| # | Weighted-sum | NSGA-II | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #Nd | Hv | Time (s) | #Nd | Hv | Time (s) | #Nd | Hv | Time (s) | |||||||
| 21 | 5 | 15 | 0.977 | 1.016 | 3586 | 10 | 0.839 | 1.066 | 3901 | 15 | 0.983 | 1.007 | 3608 | ||
| 22 | 5 | 10 | 10 | 0.844 | 1.035 | 4147 | 6 | 0.388 | 1.232 | 3973 | 242 | 0.999 | 1.001 | 3621 | |
| 23 | 5 | 8 | 0.718 | 1.177 | 3604 | 13 | 0.901 | 1.046 | 4196 | 100 | 0.999 | 1.001 | 3620 | ||
| 24 | 2000 | 10 | 10 | 11 | 0.825 | 1.117 | 4180 | 12 | 0.663 | 1.406 | 3831 | 191 | 0.997 | 1.002 | 3615 |
| 25 | 5 | 7 | 0.417 | 1.118 | 3610 | 12 | 0.708 | 1.046 | 3760 | 27 | 0.994 | 1.002 | 3613 | ||
| 26 | 5 | 10 | 9 | 0.770 | 1.105 | 3932 | 10 | 0.565 | 1.169 | 4055 | 69 | 0.996 | 1.002 | 3626 | |
| 27 | 5 | 8 | 0.789 | 1.093 | 4193 | 13 | 0.844 | 1.084 | 3732 | 122 | 0.999 | 1.001 | 3614 | ||
| 28 | 3000 | 10 | 10 | 11 | 0.849 | 1.082 | 4148 | 10 | 0.558 | 1.443 | 3913 | 235 | 0.999 | 1.001 | 3619 |
| 29 | 5 | 6 | 0.516 | 1.094 | 3888 | 9 | 0.588 | 1.100 | 4012 | 27 | 0.981 | 1.005 | 3602 | ||
| 30 | 5 | 10 | 7 | 0.839 | 1.035 | 3685 | 13 | 0.754 | 1.065 | 4138 | 54 | 0.998 | 1.003 | 3624 | |
| 31 | 5 | 8 | 0.782 | 1.075 | 3733 | 13 | 0.788 | 1.074 | 4060 | 154 | 0.999 | 1.002 | 3606 | ||
| 32 | 4000 | 10 | 10 | 7 | 0.761 | 1.098 | 3791 | 11 | 0.583 | 1.224 | 3733 | 175 | 0.998 | 1.001 | 3618 |
| 33 | 5 | 7 | 0.844 | 1.023 | 3755 | 15 | 0.973 | 1.009 | 4117 | 16 | 0.963 | 1.006 | 3609 | ||
| 34 | 5 | 10 | 7 | 0.533 | 1.117 | 3931 | 7 | 0.417 | 1.182 | 4115 | 96 | 0.997 | 1.002 | 3643 | |
| 35 | 5 | 9 | 0.668 | 1.103 | 4074 | 9 | 0.603 | 1.196 | 3644 | 66 | 0.995 | 1.003 | 3628 | ||
| 36 | 5000 | 10 | 10 | 7 | 0.678 | 1.216 | 3662 | 8 | 0.431 | 1.583 | 3707 | 170 | 0.996 | 1.002 | 3615 |
| 37 | 5 | 6 | 0.984 | 1.004 | 3687 | 10 | 0.609 | 1.010 | 4149 | 0 | 0.839 | 1.009 | 3643 | ||
| 38 | 5 | 10 | 9 | 0.533 | 1.054 | 4036 | 8 | 0.623 | 1.062 | 3892 | 124 | 0.860 | 1.008 | 3708 | |
| 39 | 5 | 8 | 0.788 | 1.028 | 3691 | 10 | 0.514 | 1.101 | 4135 | 26 | 0.996 | 1.002 | 3691 | ||
| 40 | 10,000 | 10 | 10 | 7 | 0.792 | 1.068 | 3615 | 6 | 0.308 | 1.338 | 4100 | 47 | 0.991 | 1.006 | 3690 |
Comparison results for large-sized instances.
| # | Weighted-sum | NSGA-II | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #Nd | Hv | Time (s) | #Nd | Hv | Time (s) | #Nd | Hv | Time (s) | |||||||
| 41 | 5 | 4 | 0.402 | 1.404 | 7326 | 1 | 0.000 | 1.856 | 7200 | 129 | 0.999 | 1.000 | 5548 | ||
| 42 | 30 | 10 | 4 | 0.519 | 1.374 | 7289 | 1 | 0.000 | 2.740 | 7200 | 138 | 0.998 | 1.000 | 5578 | |
| 43 | 5 | 5 | 0.380 | 1.521 | 7449 | 1 | 0.000 | 2.562 | 7200 | 148 | 0.998 | 1.001 | 4926 | ||
| 44 | 20,000 | 50 | 10 | 5 | 0.481 | 1.568 | 7407 | 1 | 0.000 | 3.882 | 7200 | 148 | 0.997 | 1.001 | 5663 |
| 45 | 5 | 5 | 0.423 | 1.270 | 7467 | 1 | 0.000 | 1.623 | 7200 | 113 | 0.998 | 1.001 | 6494 | ||
| 46 | 30 | 10 | 5 | 0.465 | 1.357 | 7324 | 1 | 0.000 | 2.127 | 7200 | 143 | 0.998 | 1.001 | 6395 | |
| 47 | 5 | 3 | 0.313 | 1.455 | 7428 | 1 | 0.000 | 2.079 | 7200 | 142 | 0.997 | 1.000 | 6900 | ||
| 48 | 30,000 | 50 | 10 | 5 | 0.448 | 1.365 | 7424 | 1 | 0.000 | 2.812 | 7200 | 120 | 0.995 | 1.001 | 7218 |
| 49 | 5 | 4 | 0.388 | 1.197 | 7716 | 1 | 0.000 | 1.426 | 7200 | 132 | 0.999 | 1.000 | 7240 | ||
| 50 | 30 | 10 | 4 | 0.647 | 1.259 | 7528 | 1 | 0.000 | 1.980 | 7200 | 125 | 0.997 | 1.001 | 7286 | |
| 51 | 5 | 3 | 0.232 | 1.407 | 7945 | 1 | 0.000 | 1.835 | 7200 | 123 | 0.999 | 1.000 | 7218 | ||
| 52 | 40,000 | 50 | 10 | 4 | 0.299 | 1.462 | 7669 | 1 | 0.000 | 2.407 | 7200 | 141 | 0.998 | 1.001 | 7255 |
| 53 | 5 | 5 | 0.384 | 1.141 | 7688 | 0 | 0.000 | 3.021 | 7200 | 67 | 0.995 | 1.001 | 7291 | ||
| 54 | 30 | 10 | 3 | 0.284 | 1.347 | 7483 | 1 | 0.000 | 1.788 | 7200 | 129 | 0.999 | 1.000 | 7319 | |
| 55 | 5 | 5 | 0.695 | 1.188 | 8101 | 0 | 0.000 | 3.906 | 7200 | 97 | 0.996 | 1.001 | 7275 | ||
| 56 | 50,000 | 50 | 10 | 3 | 0.261 | 1.524 | 7882 | – | – | – | 7200 | 139 | 0.998 | 1.000 | 7279 |
| 57 | 5 | 1 | 0.190 | 1.136 | 7262 | – | – | – | 7200 | 53 | 1.000 | 1.000 | 7587 | ||
| 58 | 30 | 10 | 3 | 0.402 | 1.126 | 7404 | – | – | – | 7200 | 62 | 0.998 | 1.000 | 7353 | |
| 59 | 5 | 3 | 0.246 | 1.193 | 7663 | – | – | – | 7200 | 45 | 1.000 | 1.000 | 7782 | ||
| 60 | 100,000 | 50 | 10 | 2 | 0.295 | 1.256 | 7670 | – | – | – | 7200 | 95 | 0.996 | 1.000 | 7308 |
| 61 | 30 | 0 | 0.212 | 1.187 | 8245 | – | – | – | 7200 | 23 | 1.000 | 1.000 | 7755 | ||
| 62 | 150,000 | 50 | 10 | – | – | – | 7200 | – | – | – | 7200 | 35 | 1.000 | 1.000 | 7587 |
| 63 | 30 | – | – | – | 7200 | – | – | – | 7200 | 11 | 1.000 | 1.000 | 8963 | ||
| 64 | 200,000 | 50 | 10 | – | – | – | 7200 | – | – | – | 7200 | 19 | 1.000 | 1.000 | 13858 |
Comparison results of different objective functions used as -constraint.
| # | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| #Nd | Hv | Time (s) | #Nd | Hv | Time (s) | ||||
| 1–4 | 200 | 19.00 | 0.990 | 1.006 | 735 | 20.00 | 0.986 | 1.010 | 260 |
| 5–8 | 400 | 19.00 | 0.971 | 1.025 | 2410 | 19.25 | 0.987 | 1.015 | 1229 |
| 9–12 | 600 | 13.00 | 0.660 | 1.109 | 3094 | 18.75 | 0.990 | 1.008 | 1933 |
| 13–16 | 800 | 10.75 | 0.714 | 1.183 | 3287 | 19.25 | 0.987 | 1.013 | 2500 |
| 17–20 | 1000 | 7.75 | 0.454 | 1.245 | 3773 | 17.00 | 0.949 | 1.057 | 3644 |
| 21–24 | 2000 | 5.25 | 0.332 | 1.315 | 3886 | 12.50 | 0.720 | 1.190 | 3975 |
| 25–28 | 4000 | 6.50 | 0.347 | 1.213 | 3741 | 11.25 | 0.716 | 1.140 | 3865 |
| 29–32 | 6000 | 4.50 | 0.307 | 1.258 | 3669 | 11.50 | 0.797 | 1.121 | 3986 |
| 33–36 | 8000 | 4.75 | 0.155 | 1.219 | 3669 | 10.00 | 0.662 | 1.180 | 3896 |
| 36–40 | 10000 | 3.25 | 0.286 | 1.123 | 3704 | 10.50 | 0.759 | 1.060 | 4047 |
Fig. 7The Effect of different strategies for assigning the recipients.
Algorithm 7Determine the replenishment quantity without the dynamic programming method.
Fig. 8Effect of a random replenishment strategy instead of our DP.
| Sets: | |
| set of vaccination recipients, indexed by | |
| set of vaccination sites, indexed by | |
| planning horizon, indexed by | |
| Parameters: | |
| distance between recipient | |
| equal to 1 if recipient | |
| fixed cost for replenishing vaccination site | |
| opening cost for vaccination site | |
| unit cost for launching a vaccination station at vaccination site | |
| unit inventory holding cost at vaccination site | |
| maximum number of vaccination stations at vaccination site | |
| maximum replenishment quantity at vaccination site | |
| maximum number of recipients that can be served by a station per day; | |
| maximum inventory capacity at vaccination site | |
| Decision variables: | |
| equal to 1 if recipient | |
| equal to 1 if vaccination site | |
| equal to 1 if vaccination site | |
| replenishment quantity of vaccine at site | |
| number of launched vaccination stations at vaccination site | |
| inventory quantity at vaccination site | |