代码如下(意见传播模型):#-*-coding:utf-8-*-"""CreatedonSunMar3020:19:562014@author:wangz"""importnumpyimportmatplotlib.pyplotaspyplotimportrandomL=100#格子大小为L我想让...
代码如下(意见传播模型):
# -*- coding: utf-8 -*-
"""
Created on Sun Mar 30 20:19:56 2014
@author: wangz
"""
import numpy
import matplotlib.pyplot as pyplot
import random
L = 100 #格子大小为 L 我想让time=1000
time = 100 # 迭代time时间步
"""
空间状态用一个二维数组表示,长度为L,高度为time
"""
state = numpy.zeros((L, time), dtype=numpy.int8)
def start_random():
state[0] = numpy.random.random( [1, L] ).round()
def plot():
pyplot.gray()
pyplot.pcolormesh(-numpy.flipud(state))
pyplot.axis([0, L, 0, time])
# empty lists draw no ticks
pyplot.xticks([])
pyplot.yticks([])
pyplot.show()
pyplot.pause(0.0000001)
def step():
"""
这里用的是固定边界
所以从1循环到L-2,两边的格子0和L-1两个格子的状态一直保持0不变
"""
for t in range(1,time,1):
j=random.randint(2, L-3)
for i in range(L):
state[t,i]=state[t-1,i]
if state[t-1,j]==state[t-1,j+1]:
state[t,j-1]=state[t-1,j]
state[t,j+2]=state[t-1,j]
elif state[t-1,j]!=state[t-1,j+1]:
state[t,j-1]=state[t-1,j]
state[t,j+2]=state[t-1,j+1]
plot()
def demo():
"""
首先给定规则,0到255之间的值
"""
"""
给定初始化方式,
也可以随机初始状态开始
"""
start_random()
"""
迭代循环,反复调用规则,将state数组充满
"""
step()
if __name__ == '__main__':
demo()
ValueError: could not broadcast input array from shape (100) into shape (1000)
这是错误
展开