TypeError с NEAT

Я получаю TypeError с NEAT при попытке создать искусственный интеллект змейки:

      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

2 ответа

Проблема здесь в том, что «w» является плавающим. Рассмотрим следующие примеры:

      "a" * 5 # this makes "aaaaa"
["a"] * 5 # this makes ["a", "a", "a", "a", "a"]

По той же логике нет смысла писать что-то вроде ["a"] * 5.5. Если вы это сделаете, вы получите сообщение об ошибке, о котором написали выше. Итак, выясни, почему w является числом с плавающей запятой вместо int - может быть, что его значение является целым числом, но представлено как число с плавающей запятой (например, 5.0).

Ошибка, которую я сделал, заключалась в том, что я не использовал переменную, которой не было, а также передавал массив в качестве входных данных, что, как мне кажется, недопустимо?

Другие вопросы по тегам