请注意,我对stack overflow还不熟悉,可能会在技术上有点错误。如果有,请指出
我一直在写一个计划,旨在模拟一种疾病(流感)将如何通过我的a级NEA的人口传播。很多都是围绕着一个3D数组构建的,这个数组代表了一个城镇的许多部分,二维像网格视图(类似于象棋或文明4等),第三个数组存储着关于2D单元格的信息(例如每个2D单元格的第一个值是人口,第二个值是区域类型,第三个值是感染量等)。代码的一部分表示从一个单元格移动到另一个单元格的人,需要知道最近的二维单元格在哪里,该单元格的第三维中包含某个值。实际上,这基本上会告诉计算机最近的工作/娱乐场所在哪里
例如,在一个数组(如4x4x4数组)中,除了随机的1之外,所有的数组都有0(我在程序中使用整数,因为它们在最终乘积中有2种以上的可能性),它会遍历每个二维单元格,在第三维的第二个值中找到最接近它当前所在的二维单元格的1,并将其存储在数组中,然后转到下一个
这是我迄今为止的代码:(子例程之前的所有内容在final中都会有所不同)
townLayout=[[[],[],[],[],[]],[[],[],[],[],[]],[[],[],[],[],[]],[[],[],[],[],[]],[[],[],[],[],[]]]
import random
b=0
while b<5:
i=0
while i<5:#double loop to create 2 dimentions
townLayout[b][i]=[0,ran.ranint(1,4),0,0,0,15,15,0,15,15,0]
i+=1
b+=1
def nearestWork(townLayout):#anitate
b=0
isThere=True
while b<5 and isThere==True:
i=0
xc=15
yc=15
dxc=15
dx=15
dyc=15
dy=15
while i<5 and isThere=True:
multiple=False
x=0
isThere=False
while x<5:
y=0
while y<5:
if townLayout[b][i][1]==4:
isThere=True
if xc>=b:
dxc=xc-b
else:
dxc=b-xc
if yc>=i:
dyc=yc-b
else:
dyc=b-yc
if x>=b:
dx=x-b
else:
dx=b-x
if y>=b:
dy=y-b
else:
dy=b-y
if (dx+dy)<(dxc+dyc):
xc=x
yc=y
elif (dx+dy)==(dxc+dyc):
Multiple=True
y+=1
x+=1
if isThere==True:
townLayout[b][i][8]=xc
townLayout[b][i][9]=yc
else:
print('no places of work detected')
break
if Multiple==True:
townLayout[b][i][10]=1
i+=1
b+=1
return townLayout
有没有办法提高效率?行吗
目前没有回答
相关问题 更多 >
编程相关推荐