Иллюстрированный самоучитель по введению в экспертные системы




Обратное прослеживание и множество контекстов - часть 10


При подготовке к откату нужно выполнить одну из двух возможных операций с рабочей памятью:

  • если к противоречию привел выбор определенного дизъюнкта, нужно удалить контекст, созданный в результате этого выбора;

  • если к противоречию привело предположение о правдивости персонажа, нужно удалить соответствующий контекст и проанализировать, к чему приведет противное предположение.

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

    ;; ЕСЛИ обнаружено противоречие с одним из

    ;; дизъюнктивных контекстов "мира",

    ;; ТО удалить все утверждения (объекты claim)

    ;; этого контекста.

    ;; ПРИМЕЧАНИЕ: правило будет активизироваться повторно,

    ;; пока не будут удалены все ненужные объекты,

    (defrule clean-context

    (declare (salience SO))

    (world (tag ?N) (task contra) (prior 0)

    (context ?S&~0))

    ?F <- (claim (reason ?N) (context ?S)) =>

    (retract ?F) )

    ;; ЕСЛИ противоречие обнаружено в текущем "мире" в

    ;; предположении о правдивости,

    ;; ТО повторить анализ, предположив лживость персонажа.

    (defrule switch-context

    (declare (salience 40))

    ;; Если больше нет правых дизъюнктов,

    ?W <- (world (tag ?N) (scope truth) (task contra)

    (prior 0) (context ?S&"1)) =>

    ;; изменить предположение и сформировать новый контекст.

    (modify ?W (scope falsity) (task check) (context 0))

    )

    ;; Удалить все утверждения (объекты claim),

    ;; сформированные на основании предположения о

    ;; правдивости.

    ;; ПРИМЕЧАНИЕ: правило будет активизироваться повторно,

    ;; пока не будут удалены все ненужные объекты,

    (defrule sweep-truth

    (declare (salience 100))

    (world (tag ?N) (scope falsity))

    ?F <- (claim (reason ?N) (scope truth))-=>



    Содержание  Назад  Вперед