3

現在、現在の割り当てで numpy に奇妙な問題が発生しています。私はクラスのアリコロニー AI を作成しています (Google AI Ants Challenge に基づいています)。拡散ベースのアプローチを使用しており、基本的に各ターンで食べ物/敵の丘から香りを拡散させています。各ターンは基本的に多くの行列操作を行うことで構成されているため、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

2 つの for ループの間でランダムにスカラーに変わるように見えself.hills_lますが、これは私には意味がありません。また、これまでクラッシュしない食品の香りの同様のコードがあり、この問題が非常に非決定論的に現れるのも奇妙です。

必要に応じてさらにコードを投稿できますが、特に for ループ間で問題が発生しているように見えるため、すべてがそこにあるはずです。

ありがとう!

4

0 に答える 0