您当前的位置: 首页 > 

川川菜鸟

暂无认证

  • 3浏览

    0关注

    969博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

2022华东杯A题核酸检测问题思路讲解

川川菜鸟 发布时间:2022-04-30 21:31:16 ,浏览量:3

一、题目

重点画出来了: 在这里插入图片描述

二、问题 2.1 第一问

请建立数学模型,分析说明多少人一组进行混检是比较理想的。 首先经验值告诉我,五到十人。

以上海为例: 在这里插入图片描述

这里以香港为例:混合核酸检测可同时化验多个样本,惟当感染率上升,便需采用较小的检测池进行。港大副校长(研究)申作军建议,全民检测可5人一组化验,每人采集2个样本,1份用于混合测试,另1份留作单独覆检,以2%至5%感染率估算,约4至5日可完成首轮检测;若感染率在2%以下,更可改10人一组检测,花2、3日便能完成一轮。

以武汉为例,请参考:http://rs.yiigle.com/CN112137202032/1225056.htm

火眼实验室:https://huoyan.bgi.com/#/ 在这里插入图片描述

2.2 第二问

要求:收集相关数据,利用问题 1 的数学模型给出相应的混检方案

数据收集网站推荐:http://ncov.dxy.cn/ncovh5/view/pneumonia?from=singlemessage&isappinstalled=0

参考我专栏的这篇文章:https://chuanchuan.blog.csdn.net/article/details/124430865 你可以对获取的数据进行绘制如下: 在这里插入图片描述

2.3 第三问

调整应该是调整频率(多久一次),调整混合比例(多少人一组)。

三、总结

总体比华中杯简单,以上就是我读题的第一次思路,后续更新见知乎:川川菜鸟。

第一问程序

这里以简单,由于计算量,我这里把人口为2500,修改率设置为0.03%

clear
clc
person=2500;%地区人数,具体自行去查一下
q=0.003;%阳性占比,具体自行去查一下
%生成序列
P=[1:person,zeros(1,person)];%第一行为编号,第二行1为阳性
g=fix(person*q);
%将病例加入到序列中
a=randperm(person);
P(2,a(1:g))=1;
u=[5,30];%混采人数,自变量
x=[];
F=[];
m=0;
for i=u(1):u(2)
    m=m+1;
    x(m,1)=i;
    %产生随机序列
    f=[];
    for j=1:100
        p=P(:,randperm(person));
        z=[];
        n=0;
        y=0;
        while size(p,2)>=0
            if fix(size(p,2)/x(m))>0
                n=n+1;
                z{n,1}=p(:,1:x(m));
                if sum(z{n,1}(2,:))>0
                    y=y+x(m);
                else
                    y=y+1;
                end
                p(:,1:x(m))=[];
            elseif fix(size(p,2)/x(m))==0
                break
            else
                n=n+1;
                z{n,1}=p;
                if sum(z{n,1}(2,:))>0
                    y=y+size(p,2);
                else
                    y=y+1;
                end
                p=[];
            end
        end
        f=[f;y];
    end
    F(m,1)=fix(mean(f));
end

结果如下:由此可得在sh感染率为0.03%:,人口为2500条件下,混合比例为19一组最为合理。至于真实感染率,用我给的网址去爬取感染人数除以城市总人数即可,或者百度可能也直接有人算过感染率。 注意:第一问是没有具体比例值,而应该是对应一个公式,仔细看看题目,第二问才会算出具体比例值,这里仅仅是个例子。 在这里插入图片描述

第二问程序

换一个城市地区计算,具体数据要么爬取,要么政府报告查找,然后像我那样搞个地图,花里胡哨一下。

第三问程序

clear
clc
person=1000;%地区人数
q=0.01;%阳性占比
r=0.5;%假设每轮筛出50%的阳性占比人数
%生成序列
P=[1:person,zeros(1,person)];%第一行为编号,第二行1为阳性
g=fix(person*q);
%将病例加入到序列中
a=randperm(person);
P(2,a(1:g))=1;
u=[5,30];%混采人数,自变量
xx=[];
FF=[];
for ii=1:3%假定进行三轮筛查
x=[];
F=[];
m=0;
for i=u(1):u(2)
    m=m+1;
    x(m,1)=i;
    %产生随机序列
    f=[];
    for j=1:100
        p=P(:,randperm(person));
        z=[];
        n=0;
        y=0;
        while size(p,2)>=0
            if fix(size(p,2)/x(m))>0
                n=n+1;
                z{n,1}=p(:,1:x(m));
                if sum(z{n,1}(2,:))>0
                    y=y+x(m);
                else
                    y=y+1;
                end
                p(:,1:x(m))=[];
            elseif fix(size(p,2)/x(m))==0
                break
            else
                n=n+1;
                z{n,1}=p;
                if sum(z{n,1}(2,:))>0
                    y=y+size(p,2);
                else
                    y=y+1;
                end
                p=[];
            end
        end
        f=[f;y];
    end
    F(m,1)=fix(mean(f));
end
%每轮核酸会剔除一部分感染者
b=find(P(2,:)==1);
if length(b)>0
    c=randperm(length(b));
    if fix(length(c)*r)>0
        P(:,b(c(1:fix(length(c)*r))))=[];
    end
end
%记录每轮结果
xx{ii,1}=x;
FF{ii,1}=F;
end

第三问结果,假定三轮核酸,结果数据在xx和FF矩阵汇总,以下结果我们可以看出,第一轮核酸可采用11人混检,第二轮15人混检,第三轮26人混检,效率最高。

关注
打赏
1665165634
查看更多评论
立即登录/注册

微信扫码登录

0.1516s