新冠病毒核酸检测点建模分析
新冠病毒核酸检测点建模分析
随着全球新冠肺炎疫情的大流行,对个人生命健康及经济都产生了极大影响,新冠病毒经常出现多点散发,新冠核酸检测成为了常规手段。检测点的设置及排队情况是其中非常重要的问题。按照建模要求,解决如下问题:
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 np
import 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]
新冠病毒核酸检测点建模分析相关推荐
- qPCR与新冠病毒核酸检测
qPCR与新冠病毒核酸检测 这篇文章简单记录一下qPCR核酸定量的原理以及它在新型冠状病毒检测中的应用,分享给身边好奇核酸检测的朋友,参考视频链接:https://www.bilibili.com/v ...
- 京东健康上线“新冠病毒”核酸检测 在线预约服务
近日,京东健康与北京金域医学实验室达成合作,上线"新冠病毒"核酸检测的在线预约服务,成为全国首个提供核酸检测服务在线下单及预约的平台. 据介绍,用户通过京东APP搜索"核 ...
- 新冠病毒分型和突变分析(SARS-CoV2_ARTIC_Nanopore)
新冠病毒分型和突变分析(SARS-CoV2_ARTIC_Nanopore) 一. 本文使用Artic官方提供环境对Nanopore minion SARS-Cov-2测序数据,对新冠病毒突变及分型鉴定 ...
- 实验一 词法分析程序设计_重庆新增一生物2级安全实验室,将着眼新冠病毒等药物检测分析...
5月12日,上游新闻·重庆商报记者获悉,位于两江新区的迪纳利医药科技有限责任公司(下简称"迪纳利")将建立生物2级安全实验室(简称"BSL-2"),该实验室主要 ...
- 最快60秒完成新冠病毒核酸对比 阿里云向社会免费开放基因计算服务
全球疫情肆虐,各大科技公司都在竭尽全力抗击疫情.3月13日,阿里云对外宣布,将向医疗科研机构.疾控中心等一线病毒研究机构免费开放基因计算服务,可大幅提升宏基因组测序.疫苗研发相关的处理效率,最快只需6 ...
- 使用NCBI数据库查询并使用BLAST比对新冠病毒及九种变种的核酸序列
一.实验目的 学会使用NCBI这一常见生物数据库 学会使用比对分析工具BLAST分析核酸或氨基酸序列. 二.实验内容 登录NCBI生物信息站点,查找新冠病毒(COVID-19)和其他几个变种的核酸序列 ...
- 新冠病毒是人造?科学解释为何阴谋论错得离谱
乾明 鱼羊 赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI 新冠肺炎病毒,人造的? 先是2015年发表于Nature论文被扒出:称中美科学家5年前,就曾制造出类SARS新冠病毒. 又有印 ...
- 中国团队在精液中发现新冠病毒,“蛋疼”且“不行”:新冠可能对男性威胁更大...
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 新冠疫情下,男人不好当. 5月7日,中国的研究人员发布结果称,在中国本土的病中.愈后男性病例精液样本里,都检出新冠病毒. 这也进一步印证了 ...
- 基于改进SEIR模型的病毒传播动力学建模与疫情预测分析(以COVID-19新冠病毒为例,超详细,带matlab源码)
文章目录 前言 一.数学基础知识 符号定义 二.传统SEIR模型的建立与求解 1.经典的SEIR传播动力学模型建立 2.根据经典的SEIR模型列出微分方程并求解 三.SEIR模型第一次修正 1.模型建 ...
最新文章
- SQL创建linkserver
- showSoftInput不起作用
- 160329(二)、web.xml配置详解
- android studio 引入arr的问题
- el table 固定表头和首行_el-table表头根据内容自适应,解决表头错位和固定列错位(完美解决)...
- Base PyQt4, Simple Web APP Framwork
- python实训名片管理程序_python3学生名片管理v2.0版
- Navicat for MySQL 使用SSH方式链接远程数据库
- java jint_Android使用JNI实现Java与C之间传递数据
- android 图库分析,Android开发之ImageSwitcher相册功能实例分析
- java 日期年度 35变2035_连接IBM MQ原因码报2035的错误解决办法
- 雷达发现 |最新教育行业数据报告
- ps入门第17天_模糊与锐化 案例:基础磨皮效果_ps修图_ps磨皮_ps高低频修图
- 关于vue-drag-resize的拖拽
- 1032: 员工薪水 Python
- 量化——【01】你不得不知道的金融量化基础知识
- 元宇宙链游OAS即将正式上线,社区热度只增不减
- Lect5_Model_free_Control
- Linux查看进程信息相关(Ubuntu)
- Cocos2d-x游戏开发之Lua 5.1 参考手册