Главная arrow книги arrow Копия Глава 11. Основы планирования arrow Алгоритм Graphplan
Алгоритм Graphplan

После того как мы снова перейдем в начало цикла, на этот раз на уровнебудут присутствовать все литералы из цели и ни один из них не будет взаимно исключающим по отношению к любому другому. Это означает, что может существовать решение и в функции Extract-Solution будет предпринята попытка его найти. По сути, функция Extract-Solution решает булеву задачу CSP, переменными которой являются действия на каждом уровне, а значениями для каждой переменной служат индикаторы, показывающие, принадлежит ли она или не принадлежит к плану. Для этого можно воспользоваться стандартными алгоритмами CSP или определить функцию Extract-Solution как задачу поиска, в которой каждое состояние в поиске содержит указатель на уровень в графе планирования и множество невыполненных целей. Определим эту задачу поиска, как описано ниже.

•    Первоначальным состоянием является последний уровень графа планирования,, наряду с множеством целей из задачи планирования.

•    Действия, доступные в любом состоянии на уровне, должны выбирать любое бесконфликтное подмножество действий на уровне, результаты которых покрывают цели в этом состоянии. Результирующее состояние имеет уровеньи включает в качестве своего множества целей все предусловия для выбранного множества действий. Под термином "бесконфликтный" подразумевается множество таких действий, что никакие два из них не являются взаимно исключающими и никакие два из их предусловий не являются взаимно исключающими.

•    Задача состоит в том, чтобы достичь на уровнетакого состояния, чтобы все цели были выполнены.

•    Стоимость каждого действия равна 1.