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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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