0

スネーク AI を作成しようとすると、NEAT で TypeError が発生します。

node_inputs.append(self.values[i] * w)
TypeError: can't multiply sequence by non-int of type 'float'

コード

class SnakeGame(object):
    def __init__(self, genomes, config):
    self.genomes = genomes
        self.nets = []

        for id, g in self.genomes:
            net = neat.nn.FeedForwardNetwork.create(g, config)
            self.nets.append(net)
            g.fitness = 0
 

同じクラスの別の関数のコード

def game(self):
    while True:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                pg.quit()
        data = self.nets[0].activate(self.getData())
        output = data.index(max(data))

関数 getData がどのように見えるか

def getData(self):
    data = [self.x_position, self.y_position, self.food_x, self.food_y, self.snakeLength]
    return data

config-feedforward.txt のコードの一部

[NEAT]
fitness_criterion = max
fitness_threshold = 1000
pop_size = 2
reset_on_extinction = True
4

2 に答える 2

0

私が犯した間違いは、そこにない変数を使用していなかったことと、許可されていないと思われる入力として配列を渡したことでしたか?

于 2021-07-07T21:24:09.113 に答える