UniformCostSearch для проекта Berkeley Pacman1 ⇐ Python
-
Anonymous
UniformCostSearch для проекта Berkeley Pacman1
Итак, я пытаюсь реализовать проект pacman из Беркли, и функция UniformCostSearch работает, за исключением одного теста, и я не совсем понимаю, в чем проблема. *** Решение ученика: ['Вправо', 'Вниз', 'Вниз'] *** расширенные_состояния студента: ['A', 'B', 'D', 'G']
*** правильное решение: ['Вправо', 'Вниз', 'Вниз'] *** исправить расширенные_состояния: ['A', 'B', 'D', 'C', 'G']
Это код:
def UniformCostSearch(проблема: SearchProblem): """Сначала найдите узел с наименьшей общей стоимостью.""" «*** ВАШ КОД ЗДЕСЬ ***» узел = {'state': проблема.getStartState(), 'стоимость': 0} если проблема.isGoalState(узел['state']): возвращаться [] # Folosesc PriorityQueue # In Frontier каламбур nodurile intalnite dar care nu o fost explorate граница = util.PriorityQueue() frontier.push(узел, 0) # В исследованном каламбуре nodurile care o fost deja explorate исследовано = установить() пока правда: если frontier.isEmpty(): поднять исключение («Поиск не удался!») # Luam nodu din frontier ca sa il explorer узел = граница.поп() # Daca nodu o fost deja explorat dam jump la ieratia curenta если node['state'] в исследовании: продолжать # Reconstruim calea pana la Goal folosindu ne de Parent si ne tot inarcem in spate explored.add(узел['состояние']) если проблема.isGoalState(узел['state']): действия = [] пока «родитель» в узле: action.append(узел['действие']) узел = узел['родительский'] действия.обратный() обратные действия # Obtinem succesorii urmatoarei stari преемники = проблема.getSuccessors(узел['state']) для преемника в преемниках: дочерний = {'состояние': преемник[0], 'действие': преемник[1], 'стоимость': преемник[2], 'родительский': узел} если child['state'] не исследован: frontier.push(ребенок, ребенок['стоимость'] + узел['стоимость'])
Итак, я пытаюсь реализовать проект pacman из Беркли, и функция UniformCostSearch работает, за исключением одного теста, и я не совсем понимаю, в чем проблема. *** Решение ученика: ['Вправо', 'Вниз', 'Вниз'] *** расширенные_состояния студента: ['A', 'B', 'D', 'G']
*** правильное решение: ['Вправо', 'Вниз', 'Вниз'] *** исправить расширенные_состояния: ['A', 'B', 'D', 'C', 'G']
Это код:
def UniformCostSearch(проблема: SearchProblem): """Сначала найдите узел с наименьшей общей стоимостью.""" «*** ВАШ КОД ЗДЕСЬ ***» узел = {'state': проблема.getStartState(), 'стоимость': 0} если проблема.isGoalState(узел['state']): возвращаться [] # Folosesc PriorityQueue # In Frontier каламбур nodurile intalnite dar care nu o fost explorate граница = util.PriorityQueue() frontier.push(узел, 0) # В исследованном каламбуре nodurile care o fost deja explorate исследовано = установить() пока правда: если frontier.isEmpty(): поднять исключение («Поиск не удался!») # Luam nodu din frontier ca sa il explorer узел = граница.поп() # Daca nodu o fost deja explorat dam jump la ieratia curenta если node['state'] в исследовании: продолжать # Reconstruim calea pana la Goal folosindu ne de Parent si ne tot inarcem in spate explored.add(узел['состояние']) если проблема.isGoalState(узел['state']): действия = [] пока «родитель» в узле: action.append(узел['действие']) узел = узел['родительский'] действия.обратный() обратные действия # Obtinem succesorii urmatoarei stari преемники = проблема.getSuccessors(узел['state']) для преемника в преемниках: дочерний = {'состояние': преемник[0], 'действие': преемник[1], 'стоимость': преемник[2], 'родительский': узел} если child['state'] не исследован: frontier.push(ребенок, ребенок['стоимость'] + узел['стоимость'])