Системы искусственного интеллекта. Гудков П.А. - 23 стр.

UptoLike

Составители: 

23
имеет значение Kiev, то содержимое соответствующего счетчика
увеличиваем на единицу. Для других городованалогично. Программа на
языке CLIPS, реализующая указанный алгоритм, может быть, например,
такой:
(defglobal ?*odessa* = 0)
(defglobal ?*kiev* = 0)
(defglobal ?*lvov* = 0)
(defrule start
(initial-fact)
=>
(printout t crlf «REPRESENTATIVES» crlf)
(defrule odessa
(rep ? Odessa)
=>
(bind ?*odessa* (+ ?*odessa* 1)))
(defrule kiev
(rep ? Kiev)
=>
(bind ?*kiev* (+ ?*kiev* 1)))
(defrule lvov
(rep ? Lvov)
=>
(bind ?*lvov* (+ ?*lvov* 1)))
(defrule result
(declare (salience -1))
(initial-fact)
=>
(printout t «from Odessa: « ?*odessa* crlf)
(printout t «from Kiev: « ?*kiev* crlf)
(printout t «from Lvov: « ?*lvov* crlf))
В первых трех строках программы при помощи конструктора defglobal
объявляются три глобальные переменные: ?*odessa*, ?*kiev* и ?*lvov*. Эти
переменные являются счетчиками. В CLIPS переменная может быть и
локальнойно тогда она связывается только с тем правилом, в котором
объявляется.
Далее следует правило с именем start, левая часть которого
представляет собой запись (initial-fact). Так обозначается системный
начальный факт, который создается в рабочей памяти интерпретатора CLIPS
имеет     значение   Kiev,   то   содержимое   соответствующего   счетчика
увеличиваем на единицу. Для других городов – аналогично. Программа на
языке CLIPS, реализующая указанный алгоритм, может быть, например,
такой:
(defglobal ?*odessa* = 0)
(defglobal ?*kiev* = 0)
(defglobal ?*lvov* = 0)

(defrule start
(initial-fact)
=>
(printout t crlf «REPRESENTATIVES» crlf)

(defrule odessa
(rep ? Odessa)
=>
(bind ?*odessa* (+ ?*odessa* 1)))

(defrule kiev
(rep ? Kiev)
=>
(bind ?*kiev* (+ ?*kiev* 1)))

(defrule lvov
(rep ? Lvov)
=>
(bind ?*lvov* (+ ?*lvov* 1)))

(defrule result
(declare (salience -1))
(initial-fact)
=>
(printout t «from Odessa: « ?*odessa* crlf)
(printout t «from Kiev: « ?*kiev* crlf)
(printout t «from Lvov: « ?*lvov* crlf))

        В первых трех строках программы при помощи конструктора defglobal
объявляются три глобальные переменные: ?*odessa*, ?*kiev* и ?*lvov*. Эти
переменные являются счетчиками. В CLIPS переменная может быть и
локальной – но тогда она связывается только с тем правилом, в котором
объявляется.
        Далее следует правило с именем start, левая часть которого
представляет собой запись (initial-fact). Так обозначается системный
начальный факт, который создается в рабочей памяти интерпретатора CLIPS

                                                                        23