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

UptoLike

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

27
(printout t “Input strait value: “)
(bind ?u (read))
(assert (numbers ?i ?u)))
(defrule take; подобрать резистор из БД
(numbers ?i ?u)
(resistor ?r =(om ?i ?u))
=>
(printout t crlf “You must take resistor « ?r».” crlf crlf)
(reset)
(halt))
(defrule nothing; если в БД нет подходящего резистора
(numbers ?i ?u)
(resistor ?r ~=(om ?i ?u))
=>
(printout t crlf “There is nothing for You in my database!” crlf
crlf)
(reset)
(halt))
Программа состоит из нескольких частей: базы данных с именем
resistors, объявления пользовательской функции om и трех правил с именами
input, take и nothing.
В базе данных содержатся сведения о резисторах. Они представлены в
виде списков, состоящих из трех полей. Первое поле имеет значение resistor,
которое отражает тип радиодетали. Во втором поле списка содержится тип
резистора. Последнее поле хранит значение сопротивления.
О функции om подробно говорилось ранее. В данном случае она
используется для представления процедурного знаниязакона Ома. Правило
input предназначено для ввода исходных данных. Оно активизируется
системным начальным фактом и требует от пользователя ввести ток и
напряжение. Встроенная функция read возвращает значение, введенное со
стандартного устройства ввода (клавиатуры), которое сохраняется в
переменных ?i и ?u.
В правой части правила выполняется еще одно действие. Команда
assert добавляет в рабочую память интерпретатора CLIPS факт (numbers ?i ?u)
для того, чтобы можно было обращаться к локальным переменным ?i и ?u,
связанным с правилом input, из других правил программы.
(printout t “Input strait value: “)
(bind ?u (read))
(assert (numbers ?i ?u)))


(defrule take; подобрать резистор из БД
(numbers ?i ?u)
(resistor ?r =(om ?i ?u))
=>
(printout t crlf “You must take resistor « ?r».” crlf crlf)
(reset)
(halt))

(defrule nothing; если в БД нет подходящего резистора
(numbers ?i ?u)
(resistor ?r ~=(om ?i ?u))
=>
(printout t crlf “There is nothing for You in my database!” crlf
crlf)
(reset)
(halt))

      Программа состоит из нескольких частей: базы данных с именем
resistors, объявления пользовательской функции om и трех правил с именами
input, take и nothing.
      В базе данных содержатся сведения о резисторах. Они представлены в
виде списков, состоящих из трех полей. Первое поле имеет значение resistor,
которое отражает тип радиодетали. Во втором поле списка содержится тип
резистора. Последнее поле хранит значение сопротивления.
      О функции om подробно говорилось ранее. В данном случае она
используется для представления процедурного знания – закона Ома. Правило
input предназначено для ввода исходных данных. Оно активизируется
системным начальным фактом и требует от пользователя ввести ток и
напряжение. Встроенная функция read возвращает значение, введенное со
стандартного устройства ввода (клавиатуры), которое сохраняется в
переменных ?i и ?u.
      В правой части правила выполняется еще одно действие. Команда
assert добавляет в рабочую память интерпретатора CLIPS факт (numbers ?i ?u)
для того, чтобы можно было обращаться к локальным переменным ?i и ?u,
связанным с правилом input, из других правил программы.
                                                                         27