馮諾依曼最偉大的發現?----元胞自動機

有人說,元胞自動機是馮諾依曼最偉大的發現。那麼它到底是一種什麼,有興趣瞭解更深入的歡迎去網上查。我對它的理解就是它可以很好的模擬羣體的運動規律,僅僅只通過簡單的幾條法則就可以讓羣體的運動是那麼的貼近自然。
從中或許我們也可以說,日常生活中的羣體運動其實就是在遵循着這幾條簡單的法則的。
那麼我有時會在想,未來會不會出現由人工智能模仿個體運動,元胞自動機模仿羣體的運動,從而產生類似自然界中各種羣體呢?

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)

這次博客有點水,最近事情真的多,寫篇簡短博客放鬆一下!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章