Кажется, что неправильная часть относится к реальной стоимости, кстати, я занимаюсь шахматным рыцарем в поисках цели. xt, yt - x target и y target соответственно. ИДК, какова фактическая стоимость, которую он берет. Используемая мной функция heuristi c равна floor((abs(dx)+abs(dy))/3)
while (openlist):
current = minfscore(openlist)
if (current.x == xt and current.y == yt):
return path(cameFrom, current)
closelist.append(current)
openlist.remove(current)
for i in range(0, 8):
x = current.x + dx[i]
y = current.y + dy[i]
if (atboard(x, y)):
'''bellow is the actual cost that is not correct'''
** tgscore=gscore[xf][yf] + math.floor((abs(x - xf) + abs(y - yf)) / 3) **
if (tgscore < gscore[x][y]):
cameFrom[x][y] = space(current.x, current.y)
gscore[x][y] = tgscore
fscore[x][y] = gscore[x][y] + hscore[x][y]
if space(x, y) not in closelist:
openlist.insert(0, space(x, y))
.