资源简介

数学建模2019美赛D题 逃离卢浮宫 代码 模型考虑要素:最短路径,毒气扩散,拥挤度,5层地图,秘密通道,伤亡程度 考虑到知识产权,代码中的数据没有提供,可以提供思路,或作为模板自行编写,代码有足够注释,可以根据Main函数调用不同函数实现不同的模型,代码加注释的总行数大于1200行

资源截图

代码片段和文件信息

#include 
#include 
#include 

using namespace std;

//元胞自动机

int main()
{
    //逃亡人数
    int numOfPeople = 30000;
    //模拟5层卢浮宫地图
    vector > > maps;
    //模拟逃亡者
    vector people;

    //初始化卢浮宫地图
    Floor::LoadMapsFromFile(maps);

    //初始化第二层的馆号
    Floor::IntializeShopId(maps[2]);

    //初始化每一个人的初始位置
    Person::IntializePosition(people maps numOfPeople);
    //根据不同指标计算每块地板的权值
    Floor::ComputeFloorWeightByShortestPath(maps);
    //初始化毒雾区域
    Point p = Floor::IntializeToxicArea(maps);
//    Person::IntializeCrowd(maps people);

    //得到目前存活的人数
    numOfPeople = people.size();

    //记录秘密通道有没有开启,模型中设定为三个
    bool hasSecretDoors[3] = {false false false};
    //2层每个馆开启秘密通道时人数所需达到的阈值
    int thresholds[3] = {100 3000 4000};
    //steps 目前走的步数
    //tempSteps 前后逃离卢浮宫两人之间相隔的步数
    int steps = 0 tempSteps = 0;
    //left 剩余未逃离人数
    int left = numOfPeople;
    int numOfDeath = 0;
    int numOfSevereInjury = 0;
    int numOfSlightInjury = 0;
    do
    {
        for(int i = 0; i < 3; ++i)
        {
            //如果2层的某个馆达到人数阈值,并且还没有开启秘密通道,就打开秘密通道
            if(Floor::shopNum[i] >= thresholds[i] && !hasSecretDoors[i])
            {
                Floor::ShowSecretDoor(maps i);
                //由于有了新的出口,需要重新计算2层没个地板的阈值
                Floor::ComputeFloorWeightByShortestPath(maps);
                //打开对应秘密通道
                hasSecretDoors[i] = true;
            }
        }
        //毒气会扩散
        Floor::UpdateToxicArea(maps (steps+1)*0.625 p);
        vector::iterator it = people.end();
        --it;
        left = people.size();
        //如果走了30步,还没有新的一个人逃离卢浮宫,认为陷入了某种死循环
        if(tempSteps >= 30)
        {
            //计算当前人员受伤情况,退出循环
            for(int i = 0; i < people.size(); ++i)
            {
                if(people[i].injure == 2)
                {
                    numOfSevereInjury++;
                }
                else if(people[i].injure == 1)
                {
                    numOfSlightInjury++;
                }
            }
            break;
        }
        for(int i = left-1; i >= 0; --i--it)
        {
            //计算新一轮人员受伤死亡情况
            if(people[i].isExited)
            {
                if(people[i].injure == 2)
                {
                    numOfSevereInjury++;
                }
                else if(people[i].injure == 1)
                {
                    numOfSlightInjury++;
                }
                it = people.erase(it);
                //如果有人逃离卢浮宫,tempSteps=0,继续计数
                tempSteps = 0;
            }
            else if(people[i].injure == 3)
            {
                it = people.erase(it);
                numOfDeath++;
            }
            else
            {
                //更新每一个存活的人的位置
                people[i].MoveToNextFloor(maps 0);
            }
        }
        tempS

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1564656  2019-01-29 05:57  MathModel.Simulation\bin\Debug\MathModel.exe

     文件     970289  2019-01-25 14:16  MathModel.Simulation\bin\Debug\MathModel.Simulation.exe

     文件       1411  2019-03-07 18:35  MathModel.Simulation\include\Floor.h

     文件       3133  2019-03-07 18:35  MathModel.Simulation\include\Person.h

     文件        171  2019-01-25 15:31  MathModel.Simulation\include\Point.h

     文件       3711  2019-03-07 18:44  MathModel.Simulation\main.cpp

     文件       1339  2019-01-25 22:46  MathModel.Simulation\MathModel.Simulation.cbp

     文件        612  2019-01-29 05:58  MathModel.Simulation\MathModel.Simulation.depend

     文件       1357  2019-03-07 18:56  MathModel.Simulation\MathModel.Simulation.layout

     文件     190521  2019-01-29 05:57  MathModel.Simulation\obj\Debug\main.o

     文件     479028  2019-01-28 16:10  MathModel.Simulation\obj\Debug\src\Floor.o

     文件     230979  2019-01-28 13:15  MathModel.Simulation\obj\Debug\src\Person.o

     文件       8049  2019-03-07 18:44  MathModel.Simulation\src\Floor.cpp

     文件      18392  2019-01-28 12:55  MathModel.Simulation\src\Person.cpp

     文件         93  2019-01-25 15:31  MathModel.Simulation\src\Point.cpp

     目录          0  2019-01-28 16:10  MathModel.Simulation\obj\Debug\src

     目录          0  2019-01-29 05:57  MathModel.Simulation\bin\Debug

     目录          0  2019-01-29 05:57  MathModel.Simulation\obj\Debug

     目录          0  2019-01-25 13:17  MathModel.Simulation\bin

     目录          0  2019-03-07 18:35  MathModel.Simulation\include

     目录          0  2019-01-25 13:17  MathModel.Simulation\obj

     目录          0  2019-03-07 18:44  MathModel.Simulation\src

     目录          0  2019-03-07 18:56  MathModel.Simulation

----------- ---------  ---------- -----  ----

              3473741                    23


评论

共有 条评论