2015-09-24 2 views
0

Я реализовал это в проекте (Pacman), но он просто не двигается вообще, кажется, что он входит в бесконечный цикл или что-то еще ... может кто-то скажи мне, что с ним не так ??? Я застрял здесь в течение нескольких дней .....Что не так с этим итеративным углубляющим поисковым кодом? (Python)

def depthLimitedSearch(problem, limit): 

    explored = set()           
    node = problem.getStartState() 
    path = [] 

    def recursive_DLS(node, problem, limit, path): 

     if node not in explored :  
      explored.add(node)  
      if problem.goalTest(node):  
       return path  
      elif limit == 0 :  
       return 'cutoff' 
      else:    
       cutoff_occurred = False 
       for successor in problem.getActions(node): 
        child = problem.getResult(node,successor) #next state 
        result = recursive_DLS(child ,problem, limit - 1, path) 
        if result == 'cutoff': 
        cutoff_occurred = True 
        elif result != None: 
        path.append(successor) 
       if cutoff_occurred: 
        return 'cutoff' 
       else: 
        return None 

    return recursive_DLS(node, problem, limit, path)  


def iterativeDeepeningSearch(problem): 

    for depth in xrange(sys.maxint): 
     result = depthLimitedSearch(problem, 1) 
     if result is not 'cutoff': 
      return result 
+0

Не могли бы вы привести пример ввода и результата? – jonrsharpe

+0

Это довольно абстрактная проблема. Проблема относится к конкретной проблеме, и результат должен быть списком действий. – Jolyu

+0

В принципе, гораздо проще понять, что не так, если вы приведете пример, который мы можем ** запустить **, и посмотреть, что происходит. Предположительно, у вас есть такая вещь, или вы не знаете, что она не работает. – jonrsharpe

ответ

0

Вы всегда пропускание предела 1 к depthLimitedSearch:

for depth in xrange(sys.maxint): 
    result = depthLimitedSearch(problem, 1) 

depth не используются. Если поиск с пределом 1 приводит к отключению, это будет длиться очень долго, не создавая результата.

+0

Большое спасибо! Кажется, проблема ... ..... – Jolyu

+0

Но здесь возникает еще одна проблема ... преемник здесь относится к действию здесь, но когда я запускаю программу, Pacman просто не перемещается, а вместо этого цвет относится к дорожные изменения ... Как это происходит? ..... – Jolyu

Смежные вопросы