实验二 自然及科学问题的细胞自动机模拟.docx
- 文档编号:10523519
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:10
- 大小:1MB
实验二 自然及科学问题的细胞自动机模拟.docx
《实验二 自然及科学问题的细胞自动机模拟.docx》由会员分享,可在线阅读,更多相关《实验二 自然及科学问题的细胞自动机模拟.docx(10页珍藏版)》请在冰豆网上搜索。
实验二自然及科学问题的细胞自动机模拟
《人工智能导论》
实验报告
自然及科学问题的细胞自动机模拟
班级:
计1103
学号:
201107010330
姓名:
贾梦洁
成绩评定:
评阅老师:
日期:
实验报告正文
一、实验目的
该游戏通过模拟生命,建立一个二维举行矩阵来模拟细胞的生命状态,在游戏的中,无序的细胞会逐渐演化出各种精致、有形的结构;有些形状每一代的细胞结构都在变化。
一些形状已经锁定,不会逐代变化。
从而清楚的了解细胞自动机的过程
二、实验内容 游戏要求:
1.建立一个二维矩阵,这个矩阵中的每个方格代表居住着一个活着的或死了的细胞。
一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。
2.如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;如果这个数目设定过高,世界中的大部分细胞会因为找不到太多的活的邻居而死去,直到整个世界都没有生命。
3.如果周围活细胞过少,这个细胞会因太孤单而死去。
如果这个数目设定过低,世界中又会被生命充满而没有什么变化。
(实际中,这个数目一般选取2或者3;这样整个生命世界才不至于太过荒凉或拥挤,而是一种动态的平衡。
这样的话,游戏的规则就是:
当一个方格周围有2或3个活细胞时,方格中的活细胞在下一个时刻继续存活;即使这个时刻方格中没有活细胞,在下一个时刻也会“诞生”活细胞。
)
三、实验所用智能算法基本原理与流程
细胞自动机(cellularautomata)为模拟包括自组织结构在内的复杂现象提供了一个强有力的方法。
细胞自动机模型的基本思想是:
自然界里许多复杂结构和过程,归根到底只是由大量基本组成单元的简单相互作用所引起。
因此,利用各种细胞自动机有可能模拟任何复杂事物的演化过程。
为了理解细胞自动机,可看一个简单例子:
找一张画有许多格子的图纸,用铅笔涂黑其中一些格子就可得到一个图案(样式)。
第一排也许有一个或几个格子被涂黑了,而一个简单的细胞自动机是确定某种简单的规则,从第二排开始往下画出新图案来。
具体到每一行中的每一个格子,要观察其上一行的对应格子及该对应格子两边的情况,然后根据这三个格子是否被涂黑,以及黑白格子如何相邻的已定规则(比如,当这三个格子从左至右分别为黑、黑、白时,其正下面的格子为白,否则为黑),确定当前的格子是涂黑还是留白。
如此反复进行下去。
一条或一组这样的简单规则及简单的初始条件就构成了一个细胞自动机。
细胞自动机论主要研究由小的计算机或部件,按邻域连接方式连接成较大的、并行工作的计算机或部件的理论模型。
诺伊曼细胞空间的所有细胞都在整数网格的结点上,细胞个数为无限。
它满足下列条件:
各个细胞都是确定的摩尔型有限自动机;采取五邻域一致连接模式(所有细胞有同样形状的邻域);不带外部输入,不向外部输出;并且是静态的(邻域不随时间改变)。
一般的细胞空间不必要这些条件限制,故此外还有非确定型细胞空间、米雷型细胞空间、连接模式非一致的细胞空间、带外部输入的细胞空间以及动态的细胞空间等。
棋盘格空间是细胞空间的一个直接推广。
它有分配到各个细胞的统一的外部输入。
或者说,棋盘格空间是一个程序控制的细胞空间。
棋盘格空间里的每一个细胞能够被想象为有一个局部转移函数的有限集合。
因此,棋盘格空间有一个全局转移函数的有限集合。
程序中的各个“指令”选择在该时刻的转移中所使用的全局转移函数。
绝大多数细胞自动机产生的都不过是乏味的单调图案,但有一些却大出人们的意料之外。
细胞自动机演示程序:
细胞自动机(又称元胞自动机),我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有N*N个格子。
而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该格子生就显示蓝色,死则显示白色。
每一个格子旁边都有邻居格子存在,如果我们把3*3的9个格子构成的正方形看成一个基本单位的话,那么这个正方形中心的格子的邻居就是它旁边的8个格子。
每个格子的生死遵循下面的原则:
1. 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。
2. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变; 3. 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)
四、系统构成与程序设计
程序设计流程图如下:
五、核心代码
void rule(int array[SIZE][SIZE]);//function prototype
void SetColor(unsigned short ForeColor=5,unsigned short BackGroundColor=2)
//change color
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,ForeColor|BackGroundColor);
}
int main()
{
int data[SIZE][SIZE]={0};//0->virus 1->cell 2->boundary
int i,j,instruct;
srand(time(NULL));//use the current time to seed the random number generator
for(i=0;i<=SIZE-1;i++)
{
for(j=0;j<=SIZE-1;j++)
{
if(i*j==0||i==SIZE-1||j==SIZE-1)
{
data[i][j]=22;
}//end if
else
data[i][j]=11*(rand()%2);
}//end for
}//end for
system("mode con cols=100 & color 0f");//to set the size and the color of the window
//input a random number except 0 to continue the game
while(scanf("%d",&instruct)!
=0)
{
system("cls");//clear the screen
for(i=0;i<=SIZE-1;i++)
{
for(j=0;j<=SIZE-1;j++)
{
if(data[i][j]%10==1)
{
SetColor(10);//function call
printf("%c ",6);//display the character
}
else if(data[i][j]%10==0)
{
SetColor(6);//function call
printf("%c ",4);//display the character
}
Else
{
SetColor(3);//function call
printf("%c ",3);//display the character
}
if(i*j==0||i==SIZE-1||j==SIZE-1)
{
}
else data[i][j]=(data[i][j]%10)*10;}
printf("\n");}
rule(data);//function call
printf("请输入1继续0结束\n");
}//end while
return 0;
}
六、结论分析
初始状态下:
最终结果:
(其中蓝色代表活着)
七、主要参考文献与网页
参考的网页有:
1.XX百科_细胞自动机
2.John Conway's Game of Life
3.Conway's Game of Life simulator for Microsoft Windows
4.Game of Life Applet
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 自然及科学问题的细胞自动机模拟 实验 自然 科学 问题 细胞 自动机 模拟