其他分享
首页 > 其他分享> > 元胞自动机

元胞自动机

作者:互联网

应用案例

通过对事物形态生成机制的抽象,建立各种规则模拟事物的空间形态和行为:表面生长模型的规则、概率元胞自动机规则、Q2R规则、退火规则、HPP规则、蚂蚁规则、道路交通规则、固体运动规则等。

生命游戏

点击查看代码

import sys
import argparse
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
from matplotlib.colors import ListedColormap

yeah = ["black", "yellow"]
cmap = ListedColormap(yeah)
ON = 255
OFF = 0
vals = [ON, OFF]

def randomGrid(N):
return np.random.choice(vals, N*N, p=[0.2, 0.8]).reshape(N, N)

def addGrider(i, j, grid):
glider = np.array([[0, 0, 255], [255, 0, 255], [0, 255, 255]])
grid[i:i+3, j:j+3] = glider

def update(frameNum, img, grid, N):
newGrid = grid.copy()
for i in range(N):
for j in range(N):
total = int((grid[i, (j-1)%N] + grid[i, (j+1)%N] +
grid[(i-1)%N, j] + grid[(i+1)%N, j] +
grid[(i-1)%N, (j-1)%N] + grid[(i-1)%N, (j+1)%N] +
grid[(i+1)%N, (j-1)%N] + grid[(i+1)%N, (j+1)%N])/255)
if grid[i, j] == ON:
if total < 2 or total > 3:
newGrid[i, j] = OFF
else:
if total == 3:
newGrid[i, j] = OFF
img.set_data(newGrid)
grid[:] = newGrid[:]
return img

def run():
parser = argparse.ArgumentParser(description="Run's Conway's Game of Life simulation")
parser.add_argument("--grid-size", dest="N", required=False)
parser.add_argument("--mov-file", dest="movfile", required=False)
parser.add_argument("--interval", dest="interval", required=False)
parser.add_argument("--glider", action="store_true", required=False)
parser.add_argument("--gosper", action="store_true", required=False)
args = parser.parse_args()
N = 10
if args.N and int(args.N) > 8:
N = int(args.N)
updateInterval = 50
if args.interval:
updateInterval = int(args.interval)
grid = np.array([])
if args.glider:
grid = np.zeros(N*N).reshape(N, N)
addGrider(1, 1, grid)
else:
grid = randomGrid(N)
fig, ax = plt.subplots(facecolor="pink")
img = ax.imshow(grid, cmap=cmap, interpolation="nearest")
ani = animation.FuncAnimation(fig, update, fargs=(img, grid, N, ), frames=10, interval=updateInterval, save_count=50)
if args.movfile:
ani.save(args.movfile, fps=30, extra_args=["-vcodec", "libx264"])
plt.show()

run()

格子气体模拟

HPP模型可作为气体和流体运动的简单模型。

演化规则如下:
迭代更新过程如下:

1.碰撞阶段
在此阶段中如果发生任何碰撞,则检查并应用上述规则(2)(3)和(4)。这将导致正面碰撞粒子改变方向,非正面碰撞粒子运动方向保持不变,或者非碰撞粒子运动方向保持不变。
2.运动阶段
在此阶段,每个粒子沿着它们当前行进的方向移动一个格子,遵循HPP模型演化规则(1)。

表决与退火模型

很多人会根据周围人的意见做出自己的判断,以此建立表决模型的基本规则。表决模型的规则与微观结构中分子之间的动能传递非常类似,所以与退货现象也是一致的。

模型规则如下:

这类模型可以用来研究物质的热传导和渗漏现象。

标签:parser,粒子,args,grid,元胞,规则,自动机,255
来源: https://www.cnblogs.com/fqlqiqi/p/15859605.html