Алгоритм A star, который я реализую, не является оптимальным, вы можете помочь мне его восстановить? - PullRequest
0 голосов
/ 30 марта 2020

Кажется, что неправильная часть относится к реальной стоимости, кстати, я занимаюсь шахматным рыцарем в поисках цели. 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))
.
...