Berkeley Pacman CornersПроблемаPython

Программы на Python
Anonymous
Berkeley Pacman CornersПроблема

Сообщение Anonymous »

Я работаю над проектом Беркли Pacman для их искусственного интеллекта. курс. Я столкнулся с проблемой: как найти путь, чтобы pacman касался всех четырех углов доски pacman. Он использует общий алгоритм поиска в ширину. Он возвращает путь только в том случае, если есть одно целевое состояние, а не четыре.

В проекте для этого конкретного вопроса говорится:

В угловых лабиринтах есть четыре точки, по одной в каждом углу. Наша новая задача поиска — найти кратчайший путь через лабиринт, который касается всех четырех углов (независимо от того, есть ли в лабиринте еда или нет). Обратите внимание, что в некоторых лабиринтах, таких как tinyCorners, кратчайший путь не всегда сначала ведет к ближайшей пище! Подсказка: кратчайший путь через tinyCorners занимает 28 шагов.

Реализуйте задачу поиска CornersProblem в searchAgents.py. Вам нужно будет выбрать представление состояния, которое закодирует всю информацию, необходимую для определения того, были ли достигнуты все четыре угла.

BFS:

Код: Выделить всё

fringe = util.Queue()
fringe.push( (problem.getStartState(), [], 0) )
visited = set()

while not fringe.isEmpty():
curState, curAction, curCost = fringe.pop()

if curState in visited:
continue
visited.add(curState)

if problem.isGoalState(curState):
return curAction

for state, action, cost in problem.getSuccessors(curState):
fringe.push( (state, curAction + [action], cost ) )

return []

util.raiseNotDefined()
Начальное состояние агента поиска:

Код: Выделить всё

def getStartState(self):
"""
Returns the start state (in your state space, not the full Pacman state
space)
"""
"*** YOUR CODE HERE ***"
return self.startingPosition
util.raiseNotDefined()
Состояние цели SearchAgent

Код: Выделить всё

"""
Returns whether this search state is a goal state of the problem.
"""
"*** YOUR CODE HERE ***"

// TODO
util.raiseNotDefined()
Я застрял на возврате целевого состояния, чтобы тест прошел. В настоящее время функция возвращает:

Код: Выделить всё

*** FAIL: test_cases/q5/corner_tiny_corner.test

*** Corners missed: [(1, 1), (1, 6), (6, 1), (6, 6)]

*** Tests failed.
Или я возвращаю только 1 из 4 углов.

Подробнее здесь: https://stackoverflow.com/questions/481 ... ersproblem

Вернуться в «Python»