Numpy中的TypeError随机发生

时间:2013-04-30 04:40:46

标签: python numpy typeerror

我现在在当前任务中遇到了一个奇怪的问题。我正在为一个班级制作一个蚁群AI(基于谷歌AI蚂蚁挑战赛),我正在使用基于扩散的方法,我在每个回合中基本上从食物/敌人的山丘中散发出气味。我一直在使用numpy,因为每个回合基本上都是做了很多矩阵操作,但我最近得到了一个奇怪的错误,我无法弄清楚。

在每个回合的开始,我在运行扩散迭代之前更新与每个气味相关的字段:

# Here I update the "potential" field (hills_f) and the
# diffusion values (hills_l) for the hills scent. Diffusion values
# (lambda values) are 1 except for on ants, where they are higher
# or lower depending on their colony.
self.hills_f *= TURN_DECAY
self.hills_l = np.ones_like(self.hills_l)

# Update the lambda matrix                                                                                                           
for r,c in ants.my_ants():
    self.hills_l[r][c] = MY_HILLS_LAMBDA

for r,c in ants.enemy_ants():
    self.hills_l[r][c] = ENEMY_HILLS_LAMBDA

因此,此代码在每个回合开始时运行(以及类似的食物香味片段),但随机转弯(范围从10到40),我收到以下错误:

Traceback (most recent call last):
  File "long_file_path...", line 167, in run
    bot.do_turn(ants)
  File "MyBot.py", line 137, in do_turn
    self.hills_l[r][c] = ENEMY_HILLS_LAMBDA
TypeError: 'numpy.float64' object does not support item assignment

它似乎随机地将self.hills_l变成两个for循环之间的标量,这对我没有任何意义。同样奇怪的是,食品香味有类似的代码,它不会崩溃,并且这个问题不确定地显示出来。

如果有必要,我可以发布更多代码,但我认为一切都应该存在,特别是因为问题似乎发生在for循环之间。

谢谢!

0 个答案:

没有答案