1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 新冠病毒核酸检测点建模分析

新冠病毒核酸检测点建模分析

时间:2019-11-25 13:59:16

相关推荐

新冠病毒核酸检测点建模分析

新冠病毒核酸检测点建模分析

随着全球新冠肺炎疫情的大流行,对个人生命健康及经济都产生了极大影响,新冠病毒经常出现多点散发,新冠核酸检测成为了常规手段。检测点的设置及排队情况是其中非常重要的问题。按照建模要求,解决如下问题:

1. 如示意图所示,这里表示有3个大的区域A,B,C。其中标号的点代表人员聚集小区(这里把1个小区假设为一个点),边上的数值代表两点的距离(单位公里)。假设我们要在这些人员聚集区建设4个核酸检测点,请建立数学模型分析,4个核酸检测点应该设置在什么地方是最好的,并说明理由。

2.假设只考虑C区域,其中的16号和18号小区建设有核酸检测点,请问这两个点建设是否合理?若不合理,应该如何建在哪里?

3.假设只考虑C区域的18号聚集区,小区监测点有6个检测台,有6000人,1个人的检测时间为15秒,从12:00开始到17:00结束,求排队的平均等待时间及平均队长。

# -*- coding: utf-8 -*-import numpy as npimport pandas as pdpoint=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]power=[[1,2,3.1],[1,4,3.2],[2,3,2.5],[2,4,2.6],[3,4,2.7],[4,5,11],[5,8,2.8],[5,10,2.9],[6,7,2.6],[6,8,2.5],[7,9,2.4],[8,10,2.3],[9,10,2.7],[9,11,12],[11,12,2.8],[11,17,2.7],[11,18,2.6],[12,13,3],[12,15,2.1],[14,15,2.2],[15,16,2.5],[15,17,2.4],[17,18,2.9]]length=[[0]*len(point)]*len(point)#最短路程road=[[0]*len(point)]*len(point)#最短结点power_power=[[0]*len(point)]*len(point)#图power=np.array(power)length=np.array(length)road=np.array(road)power_power=np.array(power_power)for i in range(0,len(power)):#转化为图#print(power[i,2])power_power[int(power[i,0]-1),int(power[i,1]-1)]=power[i,2]*10power_power[int(power[i,1]-1),int(power[i,0]-1)]=power[i,2]*10for i in range(0,len(length)):for j in range(0, len(length)):if power_power[i,j]==0:power_power[i,j]=9999;#print(power_power)def creat(begin):#构建最短距离和结点网络begin=begin-1for i in range(0,18):length[begin][i]=9999length[begin][begin]=0point_list=[begin]#print(point_list)#print(type(point_list))#print(len(point_list))#start=beginwhile len(point_list)!=0:num=point_list[0]#print(num)#print(num)for i in range(0,18):if length[begin,i]>(length[begin,num]+power_power[num,i]):length[begin,i]=(length[begin,num]+power_power[num,i])road[begin,i]=num+1;#road[i,begin]=num+1;point_list.append(i);#print(point_list)#print(13421)point_list.pop(0)#print(point_list)#print(a)#print(length[begin])#print(point_list)#print(road[begin])#print(length)#print(road)def find_min_point(a,b,c,d,num):#给4个点,找出和指定点最近的点point=amin=length[a,num]if(length[b,num]<min):min=length[b,num]point=bif(length[c,num]<min):min=length[c,num]point=cif(length[d,num]<min):min=length[d,num]point=dreturn pointdef find_min_point2(a,b,num):#给2个点,找出和指定点最近的点point=amin=length[a,num]if(length[b,num]<min):min=length[b,num]point=breturn pointdef find_line(begin,end):#根据起点和终点回溯最短路径#print(begin,end)line_list=[]i=end+1line_list.append(i)#print(road[begin])#a=0#while a!=6:while i!=(begin+1): #print('num+',begin,end,i,road[begin,i-1])i=road[begin,i-1]line_list.append(i)#a=a+1line_list.reverse()print(line_list)def find_all_length11(a,b,c,d):#给4个点,找出所有点到这四个点的最短距离sum=0for i in range(0,18):point=find_min_point(a,b,c,d,i)#print(i,point,length[i,point])sum=sum+length[i,point]return sumdef find_all_length12(a,b,c,d):#给4个点,找出所有点到这四个点的最短距离#答案特供版for i in range(0,18):point=find_min_point(a,b,c,d,i)print(i+1,point+1,length[i,point]/10)#find_line(i,point)print('\n每个小区的目标核酸检测点的路径') for i in range(0,18):point=find_min_point(a,b,c,d,i)find_line(i, point)def find_all_length21(a,b):#给2个点,找出C到这2个点的最短距离sum=0for i in range(10,18):point=find_min_point2(a,b,i)#print(i,point,length[i,point])sum=sum+length[i,point]return sumdef find_all_length22(a,b):#给2个点,找出C所有点到这2个点的最短距离#答案特供版for i in range(10,18):point=find_min_point2(a,b,i)print(i+1,point+1,length[i,point]/10)#find_line(i,point)print('\n每个小区的目标核酸检测点的路径') for i in range(10,18):point=find_min_point2(a,b,i)find_line(i, point)def find_sum_min(a,b,c,d):#找和所有点最近的四个点a=1b=2c=3d=4minlength=99999for i in range(0,18):for j in range(i+1,18):#print(i,j)for k in range(j+1,18):for l in range(k+1,18):e=find_all_length11(i,j,k,l)if e<minlength:minlength=ea=ib=jc=kd=l#print(i,j,k,l)print('\n最短总距离:')print(minlength/10)return a,b,c,ddef find_sum_min2(a,b):#找和C所有点最近的两个点a=1b=2minlength=99999for i in range(10,18):for j in range(i+1,18):e=find_all_length21(i,j)if e<minlength:minlength=ea=ib=jprint('\n最优最短总距离:')print(minlength/10)return a,bdef main():for i in range(1,19):creat(i)#print(type(point))print(length)print(road)print(power_power)pd.DataFrame(length).to_excel("length.xls","Sheet1")pd.DataFrame(road).to_excel("road.xls","Sheet1")pd.DataFrame(power_power).to_excel("power.xls","Sheet1")a=0b=0c=0d=0a,b,c,d=find_sum_min(a,b,c,d)print('\n4个核酸检测点:')print(a+1,b+1,c+1,d+1)print('\n每个小区的目标核酸检测点和最短距离:')find_all_length12(a,b,c,d)print('\n第二题')print('\n设置在16和18时') print('\n最短总距离:')print(find_all_length21(15, 17)/10)print('\n每个小区的目标核酸检测点和最短距离:')find_all_length22(15,17)a,b=find_sum_min2(a, b)print('\n2个核酸检测点:')print(a+1,b+1)print('\n每个小区的目标核酸检测点和最短距离:')find_all_length22(a,b)if __name__ == '__main__':main()

[[ 0 31 56 32 142 195 221 170 198 171 318 346 376 389 367 392 345 344]

[ 31 0 25 26 136 189 215 164 192 165 312 340 370 383 361 386 339 338]

[ 56 25 0 27 137 190 216 165 193 166 313 341 371 384 362 387 340 339]

[ 32 26 27 0 110 163 189 138 166 139 286 314 344 357 335 360 313 312]

[142 136 137 110 0 53 79 28 56 29 176 204 234 247 225 250 203 202]

[195 189 190 163 53 0 26 25 50 48 170 198 228 241 219 244 197 196]

[221 215 216 189 79 26 0 51 24 51 144 172 202 215 193 218 171 170]

[170 164 165 138 28 25 51 0 50 23 170 198 228 241 219 244 197 196]

[198 192 193 166 56 50 24 50 0 27 120 148 178 191 169 194 147 146]

[171 165 166 139 29 48 51 23 27 0 147 175 205 218 196 221 174 173]

[318 312 313 286 176 170 144 170 120 147 0 28 58 71 49 74 27 26]

[346 340 341 314 204 198 172 198 148 175 28 0 30 43 21 46 45 54]

[376 370 371 344 234 228 202 228 178 205 58 30 0 73 51 76 75 84]

[389 383 384 357 247 241 215 241 191 218 71 43 73 0 22 47 46 75]

[367 361 362 335 225 219 193 219 169 196 49 21 51 22 0 25 24 53]

[392 386 387 360 250 244 218 244 194 221 74 46 76 47 25 0 49 78]

[345 339 340 313 203 197 171 197 147 174 27 45 75 46 24 49 0 29]

[344 338 339 312 202 196 170 196 146 173 26 54 84 75 53 78 29 0]]

[[ 0 1 2 1 4 8 6 5 10 5 9 11 12 15 12 15 11 11]

[ 2 0 2 2 4 8 6 5 10 5 9 11 12 15 12 15 11 11]

[ 2 3 0 3 4 8 6 5 10 5 9 11 12 15 12 15 11 11]

[ 4 4 4 0 4 8 6 5 10 5 9 11 12 15 12 15 11 11]

[ 4 4 4 5 0 8 6 5 10 5 9 11 12 15 12 15 11 11]

[ 4 4 4 5 8 0 6 6 7 8 9 11 12 15 12 15 11 11]

[ 4 4 4 5 8 7 0 6 7 9 9 11 12 15 12 15 11 11]

[ 4 4 4 5 8 8 6 0 10 8 9 11 12 15 12 15 11 11]

[ 4 4 4 5 10 7 9 10 0 9 9 11 12 15 12 15 11 11]

[ 4 4 4 5 10 8 9 10 10 0 9 11 12 15 12 15 11 11]

[ 4 4 4 5 10 7 9 10 11 9 0 11 12 15 12 15 11 11]

[ 4 4 4 5 10 7 9 10 11 9 12 0 12 15 12 15 15 11]

[ 4 4 4 5 10 7 9 10 11 9 12 13 0 15 12 15 15 11]

[ 4 4 4 5 10 7 9 10 11 9 12 15 12 0 14 15 15 17]

[ 4 4 4 5 10 7 9 10 11 9 12 15 12 15 0 15 15 17]

[ 4 4 4 5 10 7 9 10 11 9 12 15 12 15 16 0 15 17]

[ 4 4 4 5 10 7 9 10 11 9 17 15 12 15 17 15 0 17]

[ 4 4 4 5 10 7 9 10 11 9 18 11 12 15 17 15 18 0]]

[[9999 31 9999 32 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999

9999 9999 9999 9999]

[ 31 9999 25 26 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999

9999 9999 9999 9999]

[9999 25 9999 27 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999

9999 9999 9999 9999]

[ 32 26 27 9999 110 9999 9999 9999 9999 9999 9999 9999 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 110 9999 9999 9999 28 9999 29 9999 9999 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 9999 9999 9999 26 25 9999 9999 9999 9999 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 9999 9999 26 9999 9999 24 9999 9999 9999 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 9999 28 25 9999 9999 9999 23 9999 9999 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 9999 9999 9999 24 9999 9999 27 120 9999 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 9999 29 9999 9999 23 27 9999 9999 9999 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 9999 9999 9999 9999 9999 120 9999 9999 28 9999 9999

9999 9999 27 26]

[9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 28 9999 30 9999

21 9999 9999 9999]

[9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 30 9999 9999

9999 9999 9999 9999]

[9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999

22 9999 9999 9999]

[9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 21 9999 22

9999 25 24 9999]

[9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999

25 9999 9999 9999]

[9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 27 9999 9999 9999

24 9999 9999 29]

[9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 26 9999 9999 9999

9999 9999 29 9999]]

最短总距离:

42.7

4个核酸检测点:

2 7 8 15

每个小区的目标核酸检测点和最短距离:

1 2 3.1

2 2 0.0

3 2 2.5

4 2 2.6

5 8 2.8

6 8 2.5

7 7 0.0

8 8 0.0

9 7 2.4

10 8 2.3

11 15 4.9

12 15 2.1

13 15 5.1

14 15 2.2

15 15 0.0

16 15 2.5

17 15 2.4

18 15 5.3

每个小区的目标核酸检测点的路径

[1, 2]

[2]

[3, 2]

[4, 2]

[5, 8]

[6, 8]

[7]

[8]

[9, 7]

[10, 8]

[11, 12, 15]

[12, 15]

[13, 12, 15]

[14, 15]

[15]

[16, 15]

[17, 15]

[18, 17, 15]

第二题

设置在16和18时

最短总距离:

24.9

每个小区的目标核酸检测点和最短距离:

11 18 2.6

12 16 4.6

13 16 7.6

14 16 4.7

15 16 2.5

16 16 0.0

17 18 2.9

18 18 0.0

每个小区的目标核酸检测点的路径

[11, 18]

[12, 15, 16]

[13, 12, 15, 16]

[14, 15, 16]

[15, 16]

[16]

[17, 18]

[18]

最优最短总距离:

16.9

2个核酸检测点:

11 15

每个小区的目标核酸检测点和最短距离:

11 11 0.0

12 15 2.1

13 15 5.1

14 15 2.2

15 15 0.0

16 15 2.5

17 15 2.4

18 11 2.6

每个小区的目标核酸检测点的路径

[11]

[12, 15]

[13, 12, 15]

[14, 15]

[15]

[16, 15]

[17, 15]

[18, 11]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。