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

这里的问题是'w'是浮动的。考虑以下示例:

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

按照同样的逻辑,写类似["a"] * 5.5. 如果你这样做,你会得到你上面写的错误。所以弄清楚为什么w是浮点数而不是整数 - 可能是它的值是整数但表示为浮点数(例如5.0)。

于 2021-07-04T22:55:10.853 回答
0

我犯的错误是我没有使用不存在的变量,同时还传递了一个数组作为输入,我猜这是不允许的?

于 2021-07-07T21:24:09.113 回答