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;” 再次运行模型,你会发现,鼠标点击的细胞会消失!