当前位置:文档之家› 毕业论文-JAVA语言设计细胞自动机的生命游戏

毕业论文-JAVA语言设计细胞自动机的生命游戏

_________________大学

毕业论文(设计)诚信声明

我谨在此保证:本人所写的毕业论文(设计),凡引用他人的研究成果均已在参考文献或注释中列出。论文(设计)主体均由本人独立完成,没有抄袭、剽窃他人已经发表或未发表的研究成果行为。如出现以上违反知识产权的情况,本人愿意承担相应的责任。

声明人(签名):

年月日

摘要

本文利用Java作为编程语言,Java swing编写图形界面实现了生命游戏的可视化编程,并且在生命游戏的基础上进行了一定的扩展,增加了系统复杂性,给定了简单的初始状态以此进一步研究细胞自动机在复杂系统中所表现的能力,为细胞自动机及生命游戏的后续研究奠定基础。结论:计算机实现的细胞自动机在计算机模拟的复杂系统中确实拥有复杂系统所表现出来的自适应性,不确定性等特性

关键词:生命游戏;细胞自动机;复杂系统

ABSTRACT

Using 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 characteristics

Keywords:Game of Life;Cellular Automata;Complex System

目录

摘要

Abstract

第一章绪论 (1)

1.1引言 (1)

1.2生命游戏 (2)

1.2.1什么是生命游戏 (2)

1.2.2生命游戏、细胞自动机的研究意义 (2)

第二章细胞自动机、生命游戏与复杂系统 (3)

2.1复杂系统 (3)

2.2细胞自动机 (4)

第三章我的生命游戏的实现 (4)

3.1我的生命游戏与传统生命游戏的区别 (4)

3.1.1传统生命游戏 (4)

3.1.2我的生命游戏 (4)

3.2基本思想 (5)

3.3基本概念 (6)

3.3.1系统基本概念 (6)

3.3.2个体基本属性 (7)

3.3.3环境基本定义 (7)

3.4程序主流程 (8)

3.5核心算法介绍 (9)

3.6生物个体方法 (10)

3.6.1生长 (10)

3.6.2获取竞争力(竞争力基于个体所处环境) (10)

3.6.3繁殖(变异,进化) (10)

3.6.4获取所需食物量 (11)

3.7环境规则 (11)

3.8关键参数设置 (11)

3.9预测结果及理论分析 (12)

3.10运行结果及结论分析 (13)

3.11本文尚未完成部分 (17)

致谢 (19)

参考文献 (20)

_______大学本科毕业设计(论文)

第一章绪论

1.1引言

系统是由相互关联,相互制约,相互作用的部分所组成的具有某种功能的有机整体。按照系统的复杂程度,系统可分为简单系统和复杂系统。我们平常大多研究的都是简单系统,因为简单系统一般可以被数学模型套用,从而进行研究,而复杂系统都难以用数学模型所表示。复杂系统是由具有许多不同状态的大量基本单元在非线性作用下形成的有机整体,其最大的特点是“复杂性”。复杂系统涵盖极广,几乎无处不在,如:生物系统、交通系统、经济系统、环境系统、生态系统、工程系统、社会系统和复杂工业生产系统等等。

目前对于简单系统已有相应的研究方法,而且理论上也有了很大的进展。但由于复杂系统是涉及多个学科的一门崭新的科学,在20世纪从未对其复杂性进行过系统深入的研究。研究复杂性的科学方法到底是什么,目前仍处于探索和研究之中。所以,复杂性科学将是21世纪的科学,是一门具有重大理论及实际意义并亟待开展研究的崭新科学。

至今,研究复杂系统常用的方法有试验数学方法、重正比群方法、散射反演方法、役使原理及细胞自动机方法。而细胞自动机方法是唯一一种根据复杂系统特点而设计出来的可在计算机上模拟的特殊方法。细胞自动机空间是离散的、时间是离散的、系统状态也是离散的,可以说细胞自动机是一种布尔化的离散的动力学系统。目前,细胞自动机已在复杂系统的研究中得到广泛应用,已成为以离散行为特点描述复杂系统行为的一种具有广阔发展前景的方法[1]。

生命游戏是J.H.Conway在20世纪60年代末设计的一种计算机游戏,是一个典型的细胞自动机模型,其演化规律近似地描述了生物群体的生存繁殖规律,吸引了大量学者进行研究。如A.C.de la Torre[4]等研究了在周期型边界条件下,置入不同初始密度的活细胞时的演化规律;吴迪等从生命游戏的基本单元的演化着手,研究其复杂性[2]。

生命游戏模型已在多方面得到应用。它的演化规则近似地描述了生物群体的生存繁殖规律:在生命密度过小(相邻细胞数<2)时,由于孤单、缺乏配种繁殖机会、缺乏互助也会出现生命危急,细胞状态由1变为0;在生命密度过大(相邻细胞数>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.生物年龄+1

3.5.3个体行动

1.行动的主要目的是生物为了自己的生存更适合发展的地方。

2.遍历整个地图的每个生物。

生命游戏的计算机模拟以及参数对运行结果的分析

3.获得生物在自己有效视野内所有坐标上的适应力(每个生物的竞争力在不同的地形上不同),在适应力较强的方向上优先移动。

4.获得视野内所有坐标上的总计资源及生物总共需要资源,想减得到该坐标上还有剩余的资源,剩余资源较多的方向优先移动。

5.移动方向优先度计算公式

(生物竞争力/该地平均竞争)*((草食物量-草食需求)*该生物草食性+(肉食物量-肉食需求)*该生物肉食性))

6.若该地没有生物,则第一项系数为1,即生物竞争力/该地平均竞争=1

3.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%的变化幅度),但是突变的属性仍然会在0~80%之间取得随机值,所以平均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成年年龄随时间变化

相关主题
文本预览
相关文档 最新文档