生命游戏-JAVA语言代码-细胞自动机-毕业论文.doc_第1页
生命游戏-JAVA语言代码-细胞自动机-毕业论文.doc_第2页
生命游戏-JAVA语言代码-细胞自动机-毕业论文.doc_第3页
生命游戏-JAVA语言代码-细胞自动机-毕业论文.doc_第4页
生命游戏-JAVA语言代码-细胞自动机-毕业论文.doc_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙 江 理 工 大 学毕业论文(设计)诚信声明我谨在此保证:本人所写的毕业论文(设计),凡引用他人的研究成果均已在参考文献或注释中列出。论文(设计)主体均由本人独立完成,没有抄袭、剽窃他人已经发表或未发表的研究成果行为。如出现以上违反知识产权的情况,本人愿意承担相应的责任。声明人(签名):年 月 日摘 要本文利用Java 作为编程语言,Java swing编写图形界面实现了生命游戏的可视化编程,并且在生命游戏的基础上进行了一定的扩展,增加了系统复杂性,给定了简单的初始状态以此进一步研究细胞自动机在复杂系统中所表现的能力,为细胞自动机及生命游戏的后续研究奠定基础。结论:计算机实现的细胞自动机在计算机模拟的复杂系统中确实拥有复杂系统所表现出来的自适应性,不确定性等特性关键词:生命游戏;细胞自动机;复杂系统ABSTRACTUsing Java as a programming language, Java Swing as graphical interface to achieve a visual programming of the Game of Life. Expand the basis of the game of life, increased system complexity, given the simple initial state in order to further studythe demonstrated ability of cellular automata in a complex system, lay the foundation for the follow-up study of cellular automata and the Game of Life. Conclusion: The computer-implemented cellular automaton computer simulation of complex systems do have complex systems demonstrated by the self-adaptive, uncertainties and other characteristicsKeywords: Game of Life; Cellular Automata;Complex System目 录摘 要Abstract第一章 绪论11.1引言11.2生命游戏21.2.1什么是生命游戏21.2.2生命游戏、细胞自动机的研究意义2第二章 细胞自动机、生命游戏与复杂系统32.1复杂系统32.2细胞自动机4第三章 我的生命游戏的实现43.1 我的生命游戏与传统生命游戏的区别43.1.1传统生命游戏43.1.2我的生命游戏43.2 基本思想53.3 基本概念63.3.1系统基本概念63.3.2个体基本属性73.3.3环境基本定义73.4 程序主流程83.5 核心算法介绍93.6 生物个体方法103.6.1生长103.6.2获取竞争力(竞争力基于个体所处环境)103.6.3繁殖(变异,进化)103.6.4获取所需食物量113.7 环境规则113.8 关键参数设置113.9 预测结果及理论分析123.10 运行结果及结论分析133.11 本文尚未完成部分17致 谢18参考文献19浙江理工大学本科毕业设计(论文)第一章 绪论1.1引言系统是由相互关联,相互制约,相互作用的部分所组成的具有某种功能的有机整体。按照系统的复杂程度,系统可分为简单系统和复杂系统。我们平常大多研究的都是简单系统,因为简单系统一般可以被数学模型套用,从而进行研究,而复杂系统都难以用数学模型所表示。复杂系统是由具有许多不同状态的大量基本单元在非线性作用下形成的有机整体,其最大的特点是“复杂性”。复杂系统涵盖极广,几乎无处不在,如:生物系统、交通系统、经济系统、环境系统、生态系统、工程系统、社会系统和复杂工业生产系统等等。目前对于简单系统已有相应的研究方法,而且理论上也有了很大的进展。但由于复杂系统是涉及多个学科的一门崭新的科学,在20 世纪从未对其复杂性进行过系统深入的研究。研究复杂性的科学方法到底是什么,目前仍处于探索和研究之中。所以,复杂性科学将是21世纪的科学,是一门具有重大理论及实际意义并亟待开展研究的崭新科学。至今,研究复杂系统常用的方法有试验数学方法、重正比群方法、散射反演方法、役使原理及细胞自动机方法。而细胞自动机方法是唯一一种根据复杂系统特点而设计出来的可在计算机上模拟的特殊方法。细胞自动机空间是离散的、时间是离散的、系统状态也是离散的,可以说细胞自动机是一种布尔化的离散的动力学系统。目前,细胞自动机已在复杂系统的研究中得到广泛应用,已成为以离散行为特点描述复杂系统行为的一种具有广阔发展前景的方法1。生命游戏是J.H.Conway 在20 世纪60 年代末设计的一种计算机游戏,是一个典型的细胞自动机模型,其演化规律近似地描述了生物群体的生存繁殖规律,吸引了大量学者进行研究。如A.C. de la Torre4等研究了在周期型边界条件下,置入不同初始密度的活细胞时的演化规律;吴迪等从生命游戏的基本单元的演化着手,研究其复杂性2。生命游戏模型已在多方面得到应用。它的演化规则近似地描述了生物群体的生存繁殖规律:在生命密度过小(相邻细胞数3时),由于环境恶化、资源短缺以及相互竞争而出现生存危急,细胞状态值由1变为0;只有处于个体适中(相邻细胞数为2或3)位置的生物才能生存(保持细胞的状态为1)和繁衍后代(细胞状态值由0变为1)。正由于它能够模拟生命活动中的生存、灭绝、竞争等等复杂现象,因为得名“生命游戏”。J.H.Conway还证明,这个细胞自动机具有通用图灵机的计算能力,与图灵机等价,也就是说给定适当的初始条件,生命游戏模型能够模拟任何一种计算机。1.2生命游戏1.2.1什么是生命游戏生命游戏其实是一个零玩家游戏。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。实际中,你可以设定周围活细胞的数目怎样时才适宜该细胞的生存。如果这个数目设定过高,世界中的大部分细胞会因为找不到太多的活的邻居而死去,直到整个世界都没有生命;如果这个数目设定过低,世界中又会被生命充满而没有什么变化。实际中,这个数目一般选取2或者3;这样整个生命世界才不至于太过荒凉或拥挤,而是一种动态的平衡。这样的话,游戏的规则就是:当一个方格周围有2或3个活细胞时,方格中的活细胞在下一个时刻继续存活;即使这个时刻方格中没有活细胞,在下一个时刻也会“诞生”活细胞。在这个游戏中,还可以设定一些更加复杂的规则,例如当前方格的状况不仅由父一代决定,而且还考虑祖父一代的情况。你还可以作为这个世界的上帝,随意设定某个方格细胞的死活,以观察对世界的影响。生命游戏就是典型的二维细胞自动机。1.2.2生命游戏、细胞自动机的研究意义细胞自动机不仅可以在形式上作为并行计算机的理论模型来研究,而且还可以作为语言(被机器接受的输入字的集合)识别器。一个语言被某种识别器所识别是指:识别器不仅接受该语言中的字,而且拒绝不属于该语言中的字。在维数高于1时,语言识别有时被看作模式识别。对于迭合自动机,如果每一时间步只输入一个字母,当字全部输完之后,如果输入输出细胞进入一个特别设计的接受状态,就认为它接受了这个字。语言的所有的字都被接受时就称为迭合自动机语言。类似地,棋盘格自动机和一维细胞自动机也可以用作语言接受器。用细胞自动机的并行计算方式可实现一些并行计算机和识别器的设计。细胞自动机对于集成电路的设计方法具有重要意义。大规模集成电路采用细胞阵列形式具有明显的优点。生物学推动了有关自动机的理论研究。反过来,有关自动机理论的发展为生物发育学提供了一种数学模型和方法。细胞自动机论的研究与形式语言的研究更是息息相关,各种细胞自动机的识别能力,以及它们所能识别的各种语言类与各类形式语言之间的关系都还处于探讨中。另外,各种类型细胞自动机的性质,以及它们彼此之间的关系也都是人们关心的课题。第二章 细胞自动机、生命游戏与复杂系统2.1复杂系统 复杂系统是具有中等数目基于局部信息做出行动的智能性、自适应性主体的系统。复杂系统是相对牛顿时代以来构成科学事业焦点的简单系统相比而言的,具有根本性的不同。简单系统它们之间的相互作用比较弱,比如封闭的气体或遥远的星系,以至于我们能够应用简单的统计平均的方法来研究它们的行为。而复杂并不一定与系统的规模成正比,复杂系统要有一定的规模,复杂系统中的个体一般来讲具有一定的智能性,例如组织中的细胞、股市中的股民、城市交通系统中的司机,这些个体都可以根据自身所处的部分环境通过自己的规则进行智能的判断或决策。复杂系统的特性:1. 智能性和自适应性这意味着系统内的元素或主体的行为遵循一定的规则,根据“环境”和接收信息来调整自身的状态和行为,并且主体通常有能力来根据各种信息调整规则,产生以前从未有过的新规则。通过系统主体的相对低等的智能行为,系统在整体上显现出更高层次、更加复杂、更加协调职能的有序性。2. 局部信息没有中央控制在复杂系统中,没有哪个主体能够知道其他所有主体的状态和行为,每个主题只可以从个体集合的一个相对较小的集合中获取信息,处理“局部信息”,做出相应的决策。系统的整体行为是通过个体之间的相互竞争、协作等局部相互作用而涌现出来的。最新研究表明,在一个蚂蚁王国中,每一个蚂蚁并不是根据“国王”的命令来统一行动,而是根据同伴的行为以及环境调整自身行为,而实现一个有机的群体行为。另外,复杂系统还具有突现性、不稳性、非线性、不确定性、不可预测性等等特征。2.2细胞自动机细胞自动机的思想来源于生物发育过程中细胞的自我复制。50年代初,计算机创始人冯诺伊曼提出自生殖自动机,奠定了人工细胞自动机的理论基础;60年代后期,Conway构造的能在个人家用电脑上运行的“生命游戏(LifeGame)”引起了人们对人工细胞自动机的关注。细胞自动机是由分布在规则网格中的每一个细胞取有限的离散状态,遵循确定的局部规则做出同步更新,即大量细胞通过简单的局部相互作用而构成的动力系统。不同于一般的动力学模型,细胞自动机不是由严格的物理方程确定,而是通过构造一系列模型的规则来实现的,这恰恰增强了其表达复杂关系的能力,为其在复杂性领域的应用奠定了基础1。细胞自动机的基本模型具有三个主要特点:(1)细胞自动机的高度离散性.(2)细胞自动机状态演化的同步性.(3)细胞自动机细胞相互作用的局部性.细胞自动机(cellular automata)为模拟包括自组织结构在内的复杂现象提供了一个强有力的方法。细胞自动机模型的基本思想是:自然界里许多复杂结构和过程,归根到底只是由大量基本组成单元的简单相互作用所引起。因此,利用各种细胞自动机有可能模拟任何复杂事物的演化过程。第三章 我的生命游戏的实现3.1 我的生命游戏与传统生命游戏的区别3.1.1传统生命游戏1.生死完全由周围8个格子决定,甚至与自身无关。2.虽然结果是不可逆的,即同样的结果可由不同的初始状态产生,但是同一个初始状态运行的结果一定相同。3.个体等价,每个个体本身完全相同4.环境无关,只有个体与个体之间的相互影响,生死完全由周围八个个体决定3.1.2我的生命游戏以传统的生命游戏为原型,加入了环境,每个生物个体增加了多种属性,增加了进化,变异,竞争,等元素。即该生命游戏-生物为了生存竞争食物以及地盘,在这过程中进行斗争,进化的过程。改动后增加了系统的复杂度,增强个体与个体之间的,增加环境与个体的影响。变化1:个体不等价,每个个体拥有自己独特的属性去适应,生存,竞争。变化2:环境相关,个体需要依赖环境,个体与环境也相互影响。变化3:了增加生物的适应性而加入的进化/变异,以及个体移动方向具有的一定程度上的随意性导致了相同的初始状态不能产生唯一的结果。变化4:个体的视野仍然为周围8个单元格,不过与传统的生命游戏的区别是一个单元格可以有多个个体同时在内。3.2 基本思想在一定程度上,以生命游戏为原型,构建类似现实世界生物圈的复杂系统,让个体处于环境资源生长速度一定,空间大小一定的情况下,相互影响,争夺空间和资源。开始于几个固定位置投放1个以上(本文所得数据都以4个为初始个数)具有一定初始状态的个体,个体需要依靠环境进食,并且与同时处在同一位置的其他个体竞争食物,竞争力强者更容易获得食物,生存下去的个体能得到繁殖的机会,保留良好的属性给下一代,以此让个体与个体,以及个体与环境之间相互影响,从宏观观察整个系统的变化状态。图3-1 程序运行界面3.3 基本概念3.3.1系统基本概念个体:在我的生命游戏中每一个生物个体,我简称为个体。单元格:由于我的生命游戏没有改变传统生命游戏环境最基本的特征,即世界在网状格子中进行,每一个单元我称为单元格,每个单元格会拥有自己的环境。环境:每个单元格上表现出环境的不同种类及状态。环境类型:环境分为土地、草地、林地、水。环境肥沃度:即一种环境资源量的多少,肥沃度高则能提供更多资源,表现为颜色更深。时间周期:因为系统在时间上表现为离散,与生命游戏原型相同,以环境生长一步,生物行动一步为一个单元,我称为一个时间周期。个体竞争:生命游戏原型中个体的竞争没有具体的表现出来,而是从抽象层面上分析了,生物过于密集会导致个体死亡,在我的生命游戏中,个体需要实实在在地根据自己“能力”与其他个体展开竞争,这是弱肉强食的过程,弱者死亡。个体生长:每个生物个体经过一个时间周期,其年龄为增加一个单位。个体行动:生物个体需要在每一个时间周期内在自身位置,及周围八个单元格内寻找最适合自己生存的位置并向该方向移动,称为个体行动。生物行动:一个时间周期内个体竞争、个体生长、个体行动三步的合并,称为生物行动。3.3.2个体基本属性生物个体拥有寿命、体型、速度、力量、年龄、成年年龄、草食性、状态、饱食度、繁殖状态及繁殖周期几个属性,具体含义如下。寿命:即该个体所能所能存活的最长时间周期。速度、体型、力量:个体竞争的核心属性,下面做详细介绍年龄:年龄为该个体当前已经存活的时间周期数量,。成年年龄:成年年龄表示该个体达到成年所需经历的时间周期个数,成年之后个体才能进入繁殖状态。注:在设计时我特意的没有对该属性进行限制,即该属性会纯粹降低个体的竞争能力。草食性:为0-1之间,初始生物为1,表示该个体只拥有草食性,0表示该个体只拥有肉食性,草食性越强的动物在获取草食时更具有竞争力,同理肉食性更强的个体在获取肉食更具有竞争力。状态:为0-100之间,表示了该个体当前的状态指数,100表示生存良好,降到0时死亡。饱食度:个体每一个周期都需要一定量的进食(下面详细解释),当进食达到该生物所需要求时,该生物状态得以增加,反之减少。繁殖状态、繁殖周期:繁殖周期表示该生物两次生育之间的间隔,繁殖状态表示目前该个体属于繁殖周期的哪个阶段。3.3.3环境基本定义环境分为4种,土地,草地,林地,水(暂未加入算法中,只用于展现,增加美观度)土地,草地,林地以每天固定百分比增长肥沃度,即土地越来越湿润,最后会长出草,草地越来越茂密,最后会长出树同一种环境类型以20%肥沃度为间隔增长一个等级(即颜色变深一级)图3-2 环境种类及肥沃度从上到下分别为土地,草地,林地,水。从左到右为肥沃度从低到高。3.4 程序主流程1. 环境生长,根据一定的环境增长速度,使环境自增长。2. 个体竞争,每个个体在所在的单元格上进行竞争,以此判断生死3. 个体生长,在竞争环节存活下来的个体,年龄增长一个单位。4. 个体行动,个体在周围环境寻找最适合生存的地点,往该方向移动5. 加载环境,根据环境生长情况将环境转换成颜色绘制到各个方块上6. 加载生物,将后台运行结果绘制到显示层的各个方块上图3-3 程序主流程图生物行动的三步顺序如下,个体竞争。在原来的方格上进行竞争,争取食物。个体生长。成功存活下来的个体年龄加1个时间周期。个体移动。在个体的有效视野内(默认为1)寻找最优的方向,即最适合生存的方向移动。3.5 核心算法介绍3.5.1个体竞争1. 遍历整个地图,找到地图中每个坐标中存在的生物,并遍历其中每个生物2. 获取该坐标中所有生物共需要的消耗的植物数量(食草),以及动物数量(食肉)3. 草食若足够多,则每个食草动物都能得到足够的草食,生物良好发展4. 草若不够,则获得该坐标中共有的草食量,并按各个生物的竞争力分配,竞争力弱的分配到的肉就较少,生物状态也许会下降5. 肉食按该坐标中生物的平均竞争力以下的动物计算,即最弱的生物容易被吃6. 若肉食数目足够,则从竞争力最弱的开始死,需要肉食的动物得到足够肉食,良好发展7. 若肉食数目不够(即平均竞争力以下的生物不足以共给肉食动物足够的肉食量),则平均竞争力以下的生物全部死亡,肉食按肉食动物竞争力分配给肉食动物,同植物分配。3.5.2个体生长遍历整个地图,找到地图中每个坐标中存在的生物,并遍历其中每个生物并调用生物的grow()方法,每个生物生长一步,根据返回值进行区分操作。见下1.若生物在之前的竞争中得到足够的食物,则生物的状态值会上升,否则下降,下降到0则在生长流程中被判断为死亡。2.生物年龄达到寿命,死亡。3.生物若达到成年年龄,则会增加繁殖状态,繁殖状态达到繁殖的阈值,就会进行繁殖。4.生物年龄+13.5.3个体行动1. 行动的主要目的是生物为了自己的生存更适合发展的地方。2. 遍历整个地图的每个生物。3. 获得生物在自己有效视野内所有坐标上的适应力(每个生物的竞争力在不同的地形上不同),在适应力较强的方向上优先移动。4. 获得视野内所有坐标上的总计资源及生物总共需要资源,想减得到该坐标上还有剩余的资源,剩余资源较多的方向优先移动。5. 移动方向优先度计算公式(生物竞争力/该地平均竞争)*(草食物量-草食需求)*该生物草食性+(肉食物量-肉食需求)*该生物肉食性)6. 若该地没有生物,则第一项系数为1,即生物竞争力/该地平均竞争=13.6 生物个体方法3.6.1生长1. 若饱食度达到90%,状态+30,饱食度达到80%,状态+20,饱食度达到70%,状态+10,饱食度达到60%,状态不变,饱食度为50%-60%,状态-10,饱食度为40%-50%,状态-20,饱食度为40%以下,状态-30.2. 个体年龄达到成年阶段,则个体进入繁殖状态,繁殖状态+1,若繁殖状态达到繁殖周期,则该个体得以进行繁殖,但若在繁殖时该个体状态不足60,则返回该个体死亡。3. 若该个体年龄达到寿命,或该个体状态降到0以下,返回该个体死亡。4. 个体年龄+1,若个体既无死亡,又无繁殖,则返回个体状态为正常3.6.2获取竞争力(竞争力基于个体所处环境)1. 个体竞争力会根据年龄以及寿命得到一个缩减,个体在寿命的前20%以及后20%竞争力成线性上升/下降,在其他时间为100%2. 在土地中,体型单位小于5,或大于45的个体竞争力更强,在草地中,体型小于25,或大于80的个体竞争力更强,在树林中,体型小于45或大于150的个体竞争力更强,3. 速度、力量为基础属性(力量*3+速度*7*1.2),以一定比率得到基础竞争力,乘以以上两步中得到的系数得到最终竞争力,两项属性并没有什么具体的现实意义,可以简单的当做有两个属性A、B,分别对个体的竞争力产生影响,他们的影响程度不同,。3.6.3繁殖(变异,进化)1. 变异时,个体随机一项属性得到大幅度变化(现取比率为80%,变异概率为3%)2. 其他情况均视为进化,即正常繁殖,个体随机一项属性能得到10%的变化3.6.4获取所需食物量1. 个体所需食物量与个体体型成正比,与个体力量、速度乘一定系数之后之和成正比。2. 个体所需草食/肉食量按个体所需食量与个体食性相乘得到具体公式:LifeGameCommon.FOODMULTIPLE*getWeakPercentByAge()*beEatedToMeat()*(0.3+speed/70.0/bodySize+strength/30.0/bodySize);LifeGameCommon.FOODMULTIPLE为程序设定的倍数,用于控制个体所需食物量从而达到控制个体数量的效果。getWeakPercentByAge()返回的是一个削弱值,表现为个体在寿命的前20%以及后20%竞争力会按一定比例上升/下降.beEatedToMeat()返回该生物被吃掉时产生的肉食数量,与个体体积成正比(0.3+speed/70.0/bodySize+strength/30.0/bodySize)表示个体需要的食物量至少需要自身体型的0.3倍,当速度/力量高时,也会提高这个数值,显然速度的提升对食物的消耗更少。3.7 环境规则根据LifeGameCommon中定义的环境自增长比率(下一节中有介绍),每一个周期每一格环境自增长,每当比率达到下一个等级,曾颜色变深一级,土地,草地,每当比率达到100%,则环境变换成下一种类型(土-草,草-树),草地,树林,每到比率降到0%以下,则环境变换成上一种类型(树-草,草-土)。3.8 关键参数设置PAM = 0.03 突变概率为0.03,该值应取尽量接近于0,但由于过小的突变概率会导致想要得到较好的结果需要大量的运行时间,而过大的突变概率会导致个体的不确定性太大,就算个体已经往适应环境的方向发展了很长时间,也有可能因为突然的变化而导致个体大幅度变化,最终大幅影响系统的稳定性。所以需要折中考虑该值对程序运行时间与系统稳定性的影响,若想在1个小时内得到结果,那么该值取0.005-0.05都是合理的。当该值大于0.05时,个体会有较大的几率完全灭亡,而该值小于0.005时,程序的运行效率大幅降低,需要运行很长时间才能得到该有的结果,这不是我们想要看到的。PAMPercent = 0.8突变时某项属性得到80%的变化,同样,该属性需要折中考虑对程序运行时间与系统稳定性的影响,需要更加稳定时需要减少该值但是对计算机性能要求更大。该值80%的设定,已经比较大(原则上这样的设置会导致个体属性达到80%的变化幅度),但是突变的属性仍然会在080%之间取得随机值,所以平均40%的变化幅度还是可以接受的,若想在一个小时内得到较好的结果,那么该值平均变化幅度在30%50%之间都是合理的。当该值大于50%时,个体会有很大的几率完全灭亡,而该值小于30%时,程序的运行效率大幅降低,需要运行很长时间才能得到该有的结果。FOODMULTIPLE = 5食物消耗倍率,由于系统中个体所系食物通过个体属性经过一定计算得到,并没有实际单位,通过最后乘以该系数调整与环境生长之间的关系。PLANTGROWSPEED = 0.003植物生长速率,每一个时间周期环境的肥沃度增加0.3%以上两个属性需要一起考虑,由于系统设定中,每个单元格的资源是有上限的,那么就意味着,如果有一个个体的所需资源已经超过了这个上限,那么这个个体必然无法生存,如果个体所需的食物量太少,则每个单元格上会出现非常多数目的个体,现在在程序中,世界的大小被设定为2500个单元格的大小,若每个单元格出现太多的个体,单台电脑的CPU和内存是无法承受的,所以将食物消耗倍率调到了5倍,即理论上减少单个单元格所能容纳的个体数目到原来的1/5,即系统中总共个体数目较少为正常情况的1/5。PAM与PAMPercent控制了系统达到稳定/灭亡的速度,FOODMULTIPLE与PLANTGROWSPEED用于平衡个体数目。3.9 预测结果及理论分析1. 在设计时个体属性中刻意加入了成年年龄这个属性,但未对该属性加以限制,该属性只对个体造成负面影响,个体在进化过程中应该使该值向趋于0的方向发展。2. 个体的数量会从0增加到一个非常大的数目,然后因为匮乏资源,大部分死亡。3. 步骤2的过程会不停的发生,再重复该过程中生物会不停的往不同方向进化,当然适应能力差的个体会优先死亡。4. 系统的运行结果基本有2种,全部灭绝或者趋于稳定,由于系统中进化/突变的概率非常高,系统并不可能显得每一次都能达到稳状态,变异也具有一定不稳定性。但是如果系统能趋于稳定(即在不停的重复2的过程中,越来越适应环境),个体数量的震幅应该会变得越来越小。5. 加入了肉食性的系统后,由于算法过于复杂,十分影响运行速度(没有加入时我的CPU能在系统有10000个以下个体时运行,加入肉食性后,1000个个体的运算CPU已难以承受),运行时去掉了肉食性,去掉后势必带来一个严重的后果,参考现实世界,在一开始资源较少,个体较容易变异时,虽然竞争力其实不强,但是由于个体小,消耗资源少,非常容易存活下来,所以这样的生物会猛涨,并且无法得到控制,系统的平稳阶段会停留在低级生物的阶段。如果加入肉食性系统,则当该种生物爆发到一定阶段时,植食性动物资源大量减少而具有一定肉食性动物就容易生存,系统容易达到高级生物阶段。6. 在设定中,刻意将速度对生物的提升设置为高于力量的提升,最终结果应当表现为速度对生物更有价值,会比较高,而力量值会较低。3.10 运行结果及结论分析以下图都为程序运行半小时左右得到的结果图3-4 程序运行半小时后结果图由于系统运行时间不够长,不能非常好的看出结果,但是可以看到在横坐标300左右开始有平衡在5000左右的趋势,个体数量一开始会震荡的比较厉害,可以看到有几次几乎将要灭绝,但是又会马上增长回来,原因是初始的个体的各项属性设置的较高,需求的食物量较多,所以在没有肉食的情况下,非常容易因缺乏资源而死去,个体数量非常少,很长一段时间都保持在1500以下,每次在生物爆发后,资源量非常小的情况下,能生存下去的个体一定是食物需求量非常小的,之后由于长时间的变异,变异出的个体势必会往小型发展,所以个体数量会不停上升,到个体体型小到一定程度后,由于体型小带来的竞争力下降会使个体在较稳定的环境中更难生存,所以个体会趋于稳定,表现为整个系统处于较稳定状态,个体数目趋于稳定(当然由于不确定性,突然的变异就有可能导致所有个体的灭亡)如预测,成年年龄由于未加入限制,生物在进化过程中趋向于0,因为该属性设置为越小对个体越有利(在未成年时竞争力按百分比下降),并为加入限制,结果也确实说明个体在系统中的进化结果基本废弃了该属性。因为时间越长越趋于零,到200个时间周期之后几乎就与x轴重合了,所以图中取了较短的时间的横坐标,更好的反应结果曲线。图3-5 成年年龄随时间变化图3-6 个体平均速度变化图图3-7 个体平均力量变化图图3-8 个体平均体型变化图可以看到力量,体型,由于肉食性的取消,不断的往小型生物方向发展,而速度由于拥有更高的性价比,个体在进化时任然保留了该属性,这个结果非常的说明问题,速度一直保持在较高的水平,个体一直没有放弃这个属性,而力量对个体的收益远没有速度大,因为几乎在个体的进化中完全消失(当然不能保证每一次运行结果生物都一定会往这个方向发展,这只是一个更高概率的合理解释),显然这也是在这样的系统中趋于稳定的个体自适应过程的结果。寿命并不能直接影响个体的竞争力,因为在达到基本稳定之前,大部分个体在竞争中已死亡,并非达到寿命再死亡,这个属性需要程序运行时间达到一定长度才能反映出一定问题,在这里并不能说明什么问题。寿命的结果曲线并为给出,但是数据上结果是寿命几乎是一个无序状态,个体的寿命时高时低,系统的平均寿命表现出随机性,无法预测(这只是短时间的运行结果,长时间的运行由于性能限制无法进行)。由于本人在设计系统时并未考虑计算机性能,导致在实际运行中,由于算法过于庞大,导致计算机在个体数量达到1000左右的时候已经无法流畅运行,所以最终修改了一定参数,简化了程序算法以控制个体数量。原本打算加入的智力/天敌由于算法过于复杂严重影响运行效果,没有加入系统。原本打算加入的飞行/游泳能力的进化由于在用较简单的方法无法模拟,没用加入系统。原本已经加入的食性,即食肉/食草由于严重影响运行效率,在结果分析时并没有加入程序运行。由于人为限制了单个单元格中最大的食物量,又去掉了肉食的可能性,人为减少了系统的稳定性,所以事实上体型大,力量、速度强的个体无法表现出更强的竞争力,系统的运行结果并不是每次都很理想。由于肉食性的取消,每次生物爆发完之后,有可能生存下来的必然是食物需求量小的那部分(本来会有以这些生物为食的个体出现,因为资源充分而大量繁殖),所以个体确实往体型,力量,速度越来越小的方向发展,大型个体根本无法生存。如果要达到理论理想状态需要将程序进行适当修改,并分布式部署程序,增加植物的生长速率,减少个体消耗食物的倍率。在一个计算机群上运行,预计将会达到更好的效果。由于计算性能限制,生物的初始状态已被设置为固定,而初始位置,对运行的结果并没有决定性作用,故选了几个简单的初始状况仿真生命演变过程。总结:1. 个体初始状态是由人为初始设定的,并不能非常好的适应环境。如果个体没有去适应环境,所有属性不会变化,个体将会在非常短的时间内就死亡。2. 力量、速度两属性对个体的影响是近似的,只是设定上速度优于力量,结果个体进化过程中确实优先保留了速度属性,而很大程度上放弃了力量。3. 虽然个体随着进化,增强了适应性,理论上应该会使系统稳定度不断的上升,直到个体数目曲线基本持平,但是从图3-4可以切实的看到虽然会有很多时间系统是稳定的,但是由于整个系统的稳定是依靠个体之间的相互作用共同达到的,所以个体突如其来的变化仍然会表现出系统的不确定性。4. 由于肉食性的取消(个体只有争夺资源时竞争,没有相互生死搏斗),个体体型的不断的变小并不会导致生存能力下降(虽然竞争力下降了,但是所需资源少了),所以个体不断的往体型小的方向发展,这也是个体适应环境的表现。5. 成年年龄作为我特意加入的属性,就是为了观察个体在复杂系统中的适应性,因为该属性只对个体产生负面影响,而进化的结果确实是该属性被完全抛弃,无限趋于0.结果表明:生命游戏的演变过程是及其复杂化的。真实的世界要比我的生命游戏复杂的多,但是有一点是肯定的,个体会朝更适合自己生存的方向发展,计算机模拟的细胞自动机在复杂系统中确实拥有一定的适应性,不确定性等。3.11 本文尚未完成部分1本文只是从一个生命游戏的特例对细胞自动机在复杂系统中的行为进行分析,无法从理论上证明其在每一个计算机模拟的复杂系统中都能表现出各种特性。2. 本文在系统设计时由于过于理想化,并未考虑计算机性能,导致最终进行了大量改动,从很大程度上影响了结果。需要简化算法或并部署为分布式结构进一步进行研究分析。3. 由于本人能力有限,对复杂系统的理解尚浅,所以本文中对其特性的理解也许会有错误,本文只是最大限度的从实际运行结果对理论进行一定的验证及分析。致 谢本文是在王老师的悉心指导下完成的。王老师为论文研究思路的设计和文献资料的选择提供了非常有益的指导,使得研究和论文走向了正确的方向,避免了许多不必要的麻烦。同时王老师在复杂系统方面的丰厚的知识量也极大的帮助了我。在论文完成之际,谨向王老师致以衷心的感谢!最后感谢所有关心、支持和帮助我的朋友和老师!参考文献1 细胞自动机及其在复杂系统研究中的应用J. 计算机工程与应用,2004,122 周俊波,陈娅妮.基于Matlab的生命游戏仿真设计J.研究与设计,2011,27(3):P7-P9.3 李建会.人工生命-探索新的生命形式J.自然辩证法研究,2001,17(7).4 杨晓利.一种混沌细胞自动机的特性研究D.华北师范大学,2009:P1-P29.5 晓东.生命游戏J.软件,1998:P1-P15.6 吴大鹏,李炳新,张汉卿,孙长伟.基于元细胞自动机的生命游戏硬件以及软件实现J.电子技术,2007,(Z2):P1-P3.7 黄文高,吴自立.混沌边缘的生命和艺术J.美术观察,2001(9):P44-P47.8 闫广武,元胞自动机与人工生命研究进展J.吉林大学学报,2003,41(1):P40-P44.9沃尔德罗普. 复杂:诞生于秩序和混沌边缘的科学M. 北京:三联书店,1997: P398-P399.10 赵海英,车跃跃,徐正光.基于摩尔奇偶性CA与生命游戏演化的组合模型J.计算机应用研究,2011,28(12):P4734-P4737.11Heudin J C. A new candidate rule for the game of two-dimensional life J.Complex Systems,1996,10(5):P367-P381.12Javid M.A.J. Boekhost R. Cell dormancy in cellular automata C.Proc Of ICCS.2006:367-374.13 任晓明,数字生命的本质和意义J.自然辩证法通讯,2003,25(4):P104-P107.14 徐迎庆,刘慎权,齐东旭.织物纹理的计算机生成技术J.软件学报,1998,9(6):P409-P413.15 刘稚洁,刘延申.基于矩阵置乱的自适应视频水印算法J.中国图像图形学报,2005,10(11):P1471-P1475.16郭娟,吴迪,赵宪明.生命游戏复杂性的模拟研究J.计算机伪真,2007,24(10):P285-P289.17李建会.人工生命:探索新的生命形式J.自然辨证法研究,2001,17(7):P1P-5.18 刘健勤.人工生命的理论及其应用M. 北京:冶金工业出版社,1997: P23-P32.19 张焘.关于促进复杂性科学研究的考虑(复杂性研究)M.科学出版社,1993:P20-P21.20 戴燕红.初等元细胞自动机的复杂性研究D.苏州大学,2008:P1-P35.21 王寿云.开放的复杂巨系统M.浙江科技出版社,1996:P56.22 约翰L卡斯蒂. 虚实世界M. 上海: 上海科技教育出版社, 1998: P33-P52.23 张传武.细胞自动机及其理论研究进展J.贵州大学学报,2004,21(3):P289-P29224Wolfram, S. Universality and Complexity in Cellular Automata J. Physica D, 1984, 16 (10): P1-P35.25Langton, C. G. Studying Artificial Life with Cellular AutomataJ. Physica D, 1986, 23 (10): P120-P1426Bays C. Candidates for the game of life in three dimensions J.Complex Systems,1987,1(2):P373-P400.81附录1.生物个体类package anism;import com.apei.lifegame.LifeGameCommon;import com.apei.lifegame.model.condition.GroundUnit;public class Organism / 寿命private double lifeTime;/ 体型private double bodySize;/ 速度private double speed;/ 力量private double strength;/ 智力,太复杂 / private double intelligence;/ 年龄private double age;/ 发育年龄private double adulthoodAge;/ 状态0-100private int condition;/ 饱食度private double foodCondition;/ 繁殖状态private int reproduceState;/ 繁殖周期private double reproduceblank;private int x;private int y;public Organism(int x,int y) this();this.x = x;this.y = y;public Organism() this.lifeTime = 80 ;this.bodySize = 10.0;this.speed = 5.0;this.strength = 5.0;this.age = 0;this.adulthoodAge = 20;this.condition = 60;this.reproduceblank=15.0;this.reproduceState = 0;this.foodCondition=1;public boolean getBirthFromOrganism(Organism organism) double percent=0;if(Math.random()LifeGameCommon.PAM)percent = Math.random()*0.2-0.1;elseif(Math.random()=0.5)percent = LifeGameCommon.PAMPercent;elsepercent = -LifeGameCommon.PAMPercent;/TODOdouble randomNum=Math.random()*6;this.lifeTime = organism.getLifeTime();this.bodySize = organism.getBodySize();this.speed = organism.getSpeed();this.strength = org

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论