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,超极限,完成三杀,而后功成身退,隐姓埋名!

二.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

别找了没有注释,本人也是略懂,不敢加注释,怕误人子弟,大家共同研究吧
———————————————————————————————————————————————————————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

———————————————————————————————————————————————————————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

———————————————————————————————————————————————————————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

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

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

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

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

  • 21
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值