当前位置:   article > 正文

matlab代码运行元胞自动机实例,建模,美国_元胞自动机matlab例题

元胞自动机matlab例题

matlab代码运行元胞自动机实例,建模

一. 模型题目背景

话不多说,建模阿片海洛因内个题目,研究如图五个州吸毒的美国人民
题目背景:话不多说,建模阿片海洛因内个题目,研究如图五个州吸毒的美国人民。
故事如下(纯属娱乐,着急建模的直接跳过此部分)

		1、加密的数字虚拟货币被骇客攻破,因为骇客得到了2019美赛F题
		O奖论文真迹,导致货币被盗,全球经济混乱,引发恐慌(这是为了
		掩饰实体经济的暗箱操作);

		2、盗窃团队利用货币在黑市买了三个龙蛋化石给富豪,从而牟利。经过富豪的医
		学团队研发后,成功将蛋蛋孵化,幼龙很小,大约10公斤,一年后,大约30-40公斤。
		它们在一生中都在继续生长,这取决于它们所能获得的食物的条件和数量,
		嗯,还会飞,会喷火!

		→暗线(或称为伏笔):富豪只顾着养龙,没能合理规划龙的生存环境以及对龙本
		身安全性的评估失误,因为富豪看的是2019年美赛A题S奖,他以为是成功解决奖,
		但实际是成功参与奖;

		3、全球环境恶化加剧,生态环境骤变,三条龙习性大变,从北极南迁,到处
		搞破坏,势如破竹,直到抵达法国卢浮宫;

		4、在法国卢浮宫找到了上古龙巢,有了归属感,想要召唤所有沉睡的龙,
		就对卢浮宫发动袭击(最近法国恐怖袭击频发),要抢夺地盘。这时候卢浮宫
		紧急疏散措施启动,这个方案就是2019年美赛D题O奖论文。但是总有意外
		发生,喷火龙把出口融化了,里面有一部分人没能逃出,男主角的女朋友
		也在里面;

		5、法国巴黎重创,很多受伤的群众在街头,医院爆满,这时候全宇宙救世主
		美帝启动了无人机灾难响应系统,利用2019年美赛B题O奖的优化方案,迅速
		展开救援,并且派出了部队前往,代号屠龙计划;

		6、男主角不是部队成员,他的家族是中国古代龙族,是驯龙高手,但是随着
		时间的流逝,家族血脉的淡化,他已经没有驯龙特殊能力,他携带大量止痛类药物
		秘密潜入卢浮宫。

		7、逃离过程中,被龙发现,为了救女朋友和人民群众,他选择正面刚一下,
		但是高估自己,被猛龙摆尾甩出去,危在旦夕。

		8、为了延续生命,各种止痛类药物胡吃海塞,完全不顾2019年美赛C题的理论
		指导,最终药物引发变异,男主角血脉唤醒。

		9、1 V 3,超极限,完成三杀,而后功成身退,隐姓埋名!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

二.PS把刚才说的要研究的五个州抠出来

在这里插入图片描述

路人甲:非要显摆显摆自己是抠图白痴,这图扣的太烂了!还不如去百度抠图方法!!!

三.程序运行效果图

ps:密集恐惧症做不了这个题目,洗洗睡吧

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

啊!!!!!!麻麻!!!!!!!!!!鸡皮疙瘩抖一地
这么恶心的图,这题目不做了,模型不建了,比赛不参加了,我要改签回家!!!!!!!!!!!!!

代码如下

拿了快走人,别评论,别点赞,别收藏,别订阅

第一部分是名为‘Cell.m’的文件 代码片.

clear;close all
Img=imread('city2.png');
levels=graythresh(Img);
BW=im2bw(Img,levels);
Img=BW;
LittleCells=double(Img);
plotbutton=uicontrol('style','pushbutton',...
'string','GO',...
'fontsize',12,...
'position',[100,400,50,20],...
'callback','run=1;');
erasebutton=uicontrol('style','pushbutton',...
'string','Stop',...
'fontsize',12,...
'position',[300,400,50,20],...
'callback','freeze=1;');
number=uicontrol('style','text',...
'string','1',...
'fontsize',12,...
'position',[20,400,50,20]);

LittleCells(33,44)=2;
LittleCells(88,31)=2;
LittleCells(33,80)=2;

diffusion=0.2;
Reproduction=0.2;
Propagation=0.2;
CSH=0.0004;
cellX=[];
cellY=[];
time=1;
[a,b]=size(LittleCells);
run=0;
freeze=0;
stop=0;
while (stop==0)
    if(run==1)
    for i=2:a-1
        for j=2:b-1
            if(LittleCells(i,j)~=1)
                if(LittleCells(i,j)==0) 
                    if(rand<CSH)
                        LittleCells(i,j)=2;
                    end
                    if(aroundcenter(i,j,LittleCells))
                        if(rand<Propagation)
                            LittleCells(i,j)=2;
                        end
                    end
                end
                if(LittleCells(i,j)==2 && rand<diffusion)  
                    if(exist1(i,j,LittleCells))   
                        m=1+3*rand;
                        switch  m
                            case 1
                                ii=i-1;jj=j;
                            case 2
                                ii=i;jj=j-1;
                            case 3
                                ii=i;jj=j+1;
                            otherwise 4;
                                ii=i+1;jj=j;
                        end
                        if(cancity(ii,jj,LittleCells))  
                            LittleCells(ii,jj)=2;
                        end
                    end
                end
                if(LittleCells(i,j)==2 && exist1(i,j,LittleCells)) 
                    if(rand<Reproduction)
                        if(cancity(i,j,LittleCells))
                            LittleCells(i,j)=3;
                        end
                    end
                end
            end
        end
    end
    ch=0;
    kzch=0;
    for i=1:a
        for j=1:b
            if(LittleCells(i,j)==2) 
                ch=ch+1;
            end
            if(LittleCells(i,j)==3) 
                kzch=kzch+1;
            end
        end
    end
    cellX(time)=ch;
    cellY(time)=kzch;
    time=time+1;
    [A,B]=size(LittleCells);
    Area(1:A,1:B,1)=zeros(A,B);
    Area(1:A,1:B,2)=zeros(A,B);
    Area(1:A,1:B,3)=zeros(A,B);
 
    for i=1:A
        for j=1:B
            if LittleCells(i,j)==1
                Area(i,j,:)=[1,1,1];
            elseif LittleCells(i,j)==0
                Area(i,j,:)= [255, 255, 255];
            elseif LittleCells(i,j)==3
                Area(i,j,:)= [255,0,0];
            elseif LittleCells(i,j)==2
                Area(i,j,:)= [255,177,0];
            end
        end
    end
    pause(0.0005);
    Area=uint8(Area);
    imagesc(Area);
    axis equal;
    axis tight;
    stepnumber=1+str2num(get(number,'string'));
    set(number,'string',num2str(stepnumber));
    end
    if freeze==1
        run=0;
        freeze=0;
    end
    drawnow
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126

别找了没有注释,本人也是略懂,不敢加注释,怕误人子弟,大家共同研究吧
———————————————————————————————————————————————————————aroundcenter.m文件如下:

function a=aroundcenter(i,j,cells)
a=0;
if(cells(i-1,j)==3)  a=1; end
if(cells(i,j-1)==3)  a=1;end
if(cells(i,j+1)==3)  a=1;end
if(cells(i+1,j)==3)  a=1;end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

———————————————————————————————————————————————————————cancity.m

function result=cancity(i,j,cells)
    s=0
    if(cells(i-1,j-1)==1)   s=s+1;end
    if(cells(i-1,j)==1)   s=s+1;end
    if(cells(i-1,j+1)==1)   s=s+1;end
    if(cells(i,j-1)==1)   s=s+1;end
    if(cells(i,j+1)==1)   s=s+1;end
    if(cells(i+1,j-1)==1)   s=s+1;end
    if(cells(i+1,j)==1)   s=s+1;end
    if(cells(i+1,j+1)==1)   s=s+1;end
    if(s>=4)
        result=0;
    else 
        result=1;
    end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

———————————————————————————————————————————————————————exist1.m

function result= exist1(i,j,cells)
a=0;
if(cells(i-1,j)==2)  a=a+1; end
if(cells(i,j-1)==2)  a=a+1;end
if(cells(i,j+1)==2)  a=a+1;end
if(cells(i+1,j)==2)  a=a+1;end
if(a>=2)
    result=1;
else
    result=0;
end
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

以下是五星级国家保密内容,未成年慎入

程序给你了,能运行出来吗,没错,学过Java EE的童鞋都知道,给我了个程序我也运行不出来,这破日子不过了!啊啊啊啊啊啊啊啊!!!
运行出来是这样的(图1):
在这里插入图片描述
别急,现在能用到一开始扣的那张图了(别用那张卫星图哦,我不是用那张图运行的,是下图(图2))
1.把下图下载并且要与程序放到同一文件夹内
在这里插入图片描述
2.运行–>弹出figure–>打开文件–>所有文件类型,不要选fig(图3)
在这里插入图片描述
找到city2.png并打开自动弹出如下图——>导入向导
在这里插入图片描述
点击GO。
在这里插入图片描述
在这里插入图片描述

搞定收工!!!这是本人的处女作,建模期间太无敌做滴,希望对诸君有帮助

参考文献:https://blog.csdn.net/SoaringLee_fighting/article/details/79327779

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/177436
推荐阅读
相关标签
  

闽ICP备14008679号