元胞自动机模型&&病毒传播机制
想必最近备受关注的肯定是新型肺炎疫情的状况,想必大家也时刻关注。作为一位编程小白,我最近也上手了一些关于疫情的一些可实现编程。想必大家应该非常感兴趣🤣🤣🤣。
元胞自动机模型
那大家想问什么叫元胞自动机?简单来说,元胞自动机是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟复杂系统时空演化过程的能力。由于具体来说比较忙复杂,我这里就简单化了。它可以模拟病菌病毒的一个生存和繁衍,由于个体的演变会影响整体的演变,它呈现的是一个生命的演替,就如同一个生命系统。结合当前它可以模拟新型冠状病毒的繁衍。
不同于一般的动力学模型,元胞自动机不是由严格定义的物理方程或函数确定,而是用一系列模型构造的规则构成。凡是满足这些规则的模型都可以算作是元胞自动机模型。因此,元胞自动机是一类模型的总称,或者说是一个方法框架。其特点是时间、空间、状态都离散,每个变量只取有限多个状态,且其状态改变的规则在时间和空间上都是局部的。
既然是演化,对于一个程序而言,这个生命系统是不是要遵循一个共有的规则呢。规则如下:
- 生存:如果该元胞的邻居有2个或者3个元胞是活的,那么它将继续生存下去;
- 死亡:如果它的邻居有4个及以上的元胞是活的,那么它将死去;如果它的邻居只有一个或者没有活的元胞,那么它将死去;
- 繁殖:如果它的邻居有3个元胞是活的,那么它将变成活的元胞;
//元胞就是生命系统的每一个个体,它可以代表自然界任何具有群落性质的一个群体中的个体。
下面是些代码实现的过程
- 首先我们要创建一个空间给元胞群落生存,并且随机在格子里产生第一代元胞,同时在启动生命演化后,还可通过鼠标拖拽投掷元胞。
/**
* 生命游戏--元胞自动机模型
* @author 梦想少年
* 生命游戏演化规则:
*(1)生存:如果该元胞的邻居有2个或者3个元胞是活的,那么它将继续生存下去;
*(2)死亡:如果它的邻居有4个及以上的元胞是活的,那么它将死去;如果它的邻居只有一个或者没有活的元胞,那么它将死去;
*(3)繁殖:如果它的邻居有3个元胞是活的,那么它将变成活的元胞;
*/
public void init(){
//界面显示
this.setSize(1800, 1000);//总界面
this.setLocationRelativeTo(null);
this.setLayout(new FlowLayout());//流式结构对组件排列
this.setTitle("-------极简元胞演化");
JButton button=new JButton("启动");
this.add(button);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
running=!running;//启动生命演化开关打开
}
});
//初始化格子
Random ran=new Random();//创建随机数
for(int x=1;x<SIZE_X;x++){
for(int y=1;y<SIZE_Y;y++){
table[x][y]=ran.nextInt(10)<1?true:false;//随机置入&&&一定量&&&的活元胞
//if(x%10==0){
//table[x][y]=true;
//}
}
}
this.setVisible(true);
this.addMouseMotionListener(</