纯人工智能没有获取食物的动机

2024-06-01 04:56:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python中的整洁库创建一个snake AI。但是出于某种原因,蛇不想得到食物。我已经把它作为数据传递给了系统,我还引入了一个系统,如果蛇没有得到食物,它们就会失去一个适应点,但是蛇要么什么也不做,要么继续快速地左右移动,这样它就可以呆在同一个位置,继续活着

我怎样才能让蛇想得到食物

蛇行代码:

for index, snake in enumerate(snakes):
    output = nets[index].activate(snake.getData())
    i = output.index(max(output))
    xChange = 0
    yChange = 0
    print(i, index)
    if i == 0:
        xChange = 10
    elif i == 1:
        xChange = -10
    elif i == 2:
        yChange = 10
    else:
        yChange = -10
    snake.definePosChange(xChange, yChange)
    snake.game()

用于向snake添加适用性的代码:

remainSnake = 0
for i, snake in enumerate(snakes):
    if snake.getAlive():
        remainSnake += 1
        genomes[i][1].fitness += snake.getReward()

为snake获得“奖励”的函数:

def getReward(self):
    if self.score <= 0:
        return -1
    return self.score * 100

获取snake数据的函数:

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

对于数据,我传递了它的x和y位置,以及屏幕上食物的位置

蛇选择离开食物,不知道为什么

Snake

snake AI again

我已经有50代了,蛇仍然什么也不做,它几乎不走动,也从不吃东西。我尝试重新加载文件大约10次,但蛇只得到过一次食物,这是偶然的

我根据蛇到食物的距离(然后除以500)增加了一个奖励,但这仍然没有改变任何事情

我给了蛇与食物的角度和距离,它仍然没有改变任何东西。蛇有时会四处走动,但出于某种原因,它们不会瞄准食物


Tags: 数据代码inselfforoutputindexreturn