生命游戏(Anylogic实现)

生命游戏模型简介

生命游戏模型是一个二维的正交网络细胞模型,每一个细胞只有两种状态:
活着或者死亡。每个细胞和它相邻的八个细胞相互影响,在每一步智能体移动时:
 如果一个活着的细胞周围少于 2 个邻居,则因为孤单死亡
 如果一个活着的细胞周围有 2~3 个邻居,则存活到下一轮迭代
 如果一个活着的细胞周围多于 3 个邻居,则因为拥挤死亡
 任意一个死去的细胞周围正好有 3 个活着的细胞时,则会复活

阶段 1 :建立新的智能体人口

已知条件如下:
 智能体群名字为 cells,每个智能体名字为 Cell
 共有 10000 个细胞
 初始状态有 20%的细胞是活着的

阶段1 步骤1

 打开常规面板,拖动智能体到图中
 Step1 中选择“Population of agents”
 Step2 中命名智能体群为 cells,每个智能体为 Cell
 Step3 中选择 2D 为智能体的动画图形
 Step5 中设置智能体数量为 10000
 Step6 中选择离散的空间类型,空间为 500 * 500,Cells 为 100 * 100
 点击完成
在这里插入图片描述

阶段1 步骤2

 打开 Cell 智能体,从常规面板拖动一个变量到图中
 指定变量名称为 alive,类型为 boolean,初始值为 randomTrue(0.2)
 从演示面板拖动一个矩形到图中,位置在原点,按图示设置矩形的填充颜色为alive?mediumBlue:lavender,线条颜色设为无颜色,大小为 4*4

 randomTrue(0.2)
alive?mediumBlue:lavender

请添加图片描述

阶段1 步骤3

 回到 Main,打开 cells 的属性
 在“高级”选项卡中,选择“Show presentation”
在这里插入图片描述

阶段1 步骤4

 运行模型,查看智能体 Cell 的初始存活状态在这里插入图片描述

阶段 2 :添加生存规则

添加一个 naliveneighbors 变量来计算每个 Cell 周围的智能体数,通过邻居的数量来判断是否存活,间接改变该 Cell 的颜色。

阶段2 步骤1

 点击 Main,进入智能体类型界面
 在“空间和网络”选项中,勾选“启用分步”
请添加图片描述

阶段2 步骤2

 打开 Cell,拖动另一个变量到图中
 更改名称为 naliveneighbors,类型为 int
 打开 Cell 的智能体类型界面,在“每步前”键入:

naliveneighbors=0;
for(Agent a:getNeighbors())
	if(((Cell)a).alive)
		naliveneighbors++;

 在“每步时”键入:

alive = alive && ( 2 <= naliveneighbors && naliveneighbors <= 3 ) ||
naliveneighbors== 3;

在这里插入图片描述
在这里插入图片描述

阶段2 步骤3

 运行模型,查看 Cell 的生存过程
随着时间变化 有的细胞死亡 有的细胞复活

阶段3 : 加入鼠标操作

在这个模型里,细胞随着时间自己消亡或者存活。我们还可以加入人的操作,
增加趣味性。当鼠标点击细胞图形时,可以让它死亡。
 打开 Cell,点击矩形
在“高级”选项卡中,“点击时”输入“alive=!alive;” 再次运行模型,你会发现,鼠标点击的细胞会消失!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值