冯诺依曼最伟大的发现?----元胞自动机

有人说,元胞自动机是冯诺依曼最伟大的发现。那么它到底是一种什么,有兴趣了解更深入的欢迎去网上查。我对它的理解就是它可以很好的模拟群体的运动规律,仅仅只通过简单的几条法则就可以让群体的运动是那么的贴近自然。
从中或许我们也可以说,日常生活中的群体运动其实就是在遵循着这几条简单的法则的。
那么我有时会在想,未来会不会出现由人工智能模仿个体运动,元胞自动机模仿群体的运动,从而产生类似自然界中各种群体呢?

import numpy as np
import matplotlib.pyplot as plt
import imageio
import os
a = np.zeros((100, 136))
u, v = a.shape
for i in range(u):
    for j in range(v):
        # 下面三个公式不一样结果不一样,也可自己更改
        #if (i + j) % 10 < 2 or (i - j) % 10 < 2:
        #if (i+j) % 10 < 2 or (i-j) % 10 < 3:
        if(i + j ) % 9 < 3 or (i - j) % 9 < 2:
            a[i, j] = 1


def ner(i, j, a):
    k = a[i - 1:i + 2, j - 1:j + 2]
    k = k.reshape((-1,))
    k = sum(k) - a[i, j]
    return k


def chg(a):
    b = a * 1
    for i in range(1, u - 1):
        for j in range(1, v - 1):
            k = ner(i, j, a)
            if k > 3 or k < 2:
                b[i, j] = 0
            elif k == 3:
                b[i, j] = 1
            elif k == 2:
                b[i, j] = 1 - a[i, j]
    return b


def creat_gif(image_list, gif_name, duration):
    """
    生成gif文件,原始图像仅仅支持png格式;
    gif_name : 字符串,所生成的gif文件名,带.gif文件名后缀;
    path : 输入图像的路径;
    duration : gif图像时间间隔,这里默认设置为1s,当然你喜欢可以设置其他;
    """
    # 创建一个空列表,用来存源图像
    frames = []

    # 利用方法append把图片挨个存进列表

    for image_name in image_list:
        frames.append(imageio.imread(image_name))

    # 保存为gif格式的图
    imageio.mimsave(gif_name, frames, 'GIF', duration=duration)

    return


image_list = []
for i in range(80):
    b = np.zeros((u, v, 3))
    for j in range(3):
        b[:, :, j] = a
    a = chg(a)
    plt.imsave(str(i) + '.png', b)
    image_list.append(str(i) + '.png')

gif_name = 'new.gif'
duration = 0.2
creat_gif(image_list, gif_name, duration)
for i in range(80):
    # 可以自己修改路径
    path = str(i) + '.png'
    if os.path.exists(path):  # 如果文件存在
        os.remove(path)

这次博客有点水,最近事情真的多,写篇简短博客放松一下!!!

发布了17 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44307764/article/details/103032962