新冠病毒核酸检测点建模分析
随着全球新冠肺炎疫情的大流行,对个人生命健康及经济都产生了极大影响,新冠病毒经常出现多点散发,新冠核酸检测成为了常规手段。检测点的设置及排队情况是其中非常重要的问题。按照建模要求,解决如下问题:
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 pd
point=[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]*10
power_power[int(power[i,1]-1),int(power[i,0]-1)]=power[i,2]*10
for 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-1
for i in range(0,18):
length[begin][i]=9999
length[begin][begin]=0
point_list=[begin]
#print(point_list)
#print(type(point_list))
#print(len(point_list))
#start=begin
while len(point_list)!=0:
num=point_list[0]
#print(num)
#print(num)
for i in range(0,18):
if