数学思想——2.该模拟游戏基于SEIR模型的改进模型

目录
1.基于SEIR模型的改进模型简介
2.改进的模型的效果展示
3.部分代码展示

一、基于SEIR模型的改进模型简介

数学思想——2.该模拟游戏基于SEIR模型的改进模型_第1张图片

1.增加了隔离治疗选项
因为我们的模拟游戏中,玩家可以进行“新建医院等”操作。而新建医院能够将一批人隔离开来进行集中的治疗,那么将会影响一些比率:

  • 感染者转换为死亡者的死亡率降低
  • 感染者转换为治愈者的治愈率提升
  • 潜伏者转换为感染者的比率降低

2.增加了戴口罩、勤洗手的选项
戴口罩,勤洗手是本次“新冠”疫情中国家普遍提出的号召,我们也将这个号召运用到了该模拟游戏中。这两个选项主要影响的是以下几个方面:

  • 感染者将易感者转换为潜伏者的比率降低
  • 潜伏者将感染者转换为潜伏者的比率降低(因为本次疫情中还有一个最重要的点就是潜伏期患者也具有传染性,所以我们也需要将这个考虑在其中)

3.增加了研发疫苗的选项

  • 增加研发疫苗的选项对于治愈率的影响最大,能够改变感染者转换为治愈者的比率。

二、改进的模型的效果展示

三、部分代码展示

 void Update()
    {
        if (!flag)
        {
            flag = true;
            day++;
            changeDay();//改变天数
            changeDetail();//改变详情显示
            Invoke("findInfected", 2f);
        }
        //判断当前下达命令的操作
        //command=1新建医院
        //command=2研发疫苗
        //command=3强制隔离
        //command=4禁止聚众
        switch (MenuController.command)
        {
            case 1:
                float step = (float)(0.25 * Time.deltaTime);
                //找到所有的感染者
                for (int i = 0; i < inum; i++)
                {
                    //移动所有的感染者到医院这块指定的区域
                    iPerson[i].transform.position = new Vector3(Mathf.Lerp(iPerson[i].transform.position.x, hosx[i], step), iPerson[i].transform.position.y, Mathf.Lerp(iPerson[i].transform.position.z, hosz[i], step));
                }
                break;
            case 2:
                i_r = 0.9441f;//改变治愈率
                i_d = 0.005f;//改变死亡率
                break;
            case 3:
                s_e =3;//减少传播率
                s_e_2 = 0;
                break;
            case 4:
                s_e = 5;
                s_e_2 = 2;
                break;
                 }
        //判断当前发出号召的操作
        //appeal=1居家少外出
        //appeal=2洗手
        //appeal=3戴口罩
        //appeal=4捐赠物资
        switch (MenuController.appeal)
        {
            case 1:
                s_e = 8;
                s_e_2 = 2;
                break;
            case 2:
                s_e = 9;
                s_e_2 = 2;
                break;
            case 3:
                s_e = 2;
                s_e_2 = 0;
                break;
            case 4:
                s_e = 4;
                s_e_2 = 1;
                break;
        }
     }
      //----------------------4.每天以一定概率死掉一批感染者,产生死亡者,死亡者为黑色-------------------------
        tempdead = (int)(inum * i_d);
        for(int j = 0; j < tempdead; j++)
        {
            randdead[j]= (int)UnityEngine.Random.Range(0, inum);
        }
        //找到要死的感染者
        for (int i = 0; i < tempdead; i++)
        {
            iPerson[randdead[i]].GetComponent<MeshRenderer>().material.color = Color.black;
        }
        //----------------------5.如果已经建立好了医院,那么将会有一部分以一定的概率转换为治愈者----------------
        //------------------------如果没有建立好医院,那么有的人有可能自身免疫能够抵抗住-----------------------
        tempcover = (int)(inum * i_r);
        for(int j = 0; j < tempcover; j++)
        {
            randcover[j] = (int)UnityEngine.Random.Range(0, inum);
        }
        for(int i = 0; i < tempcover; i++)
        {
            iPerson[randcover[i]].GetComponent<MeshRenderer>().material.color = Color.cyan;
        }
        //如果建立好了医院的话,改变治愈率
        if (MenuController.hasHosipital)
        {
            i_r = 0.85f;
        }

你可能感兴趣的:(交互媒体技术)