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

UptoLike

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

28
В следующих двух правилах пользователю либо предлагается тип
подходящего резистора (правило take), либо сообщается об отсутствии
такового (правило nothing).
Рассмотрим правило take. Его левая часть состоит из двух условий,
поэтому правило активизируется, если оба условия будут выполнены. Первое
условие выполняется, так как соответствующий факт уже создан правилом
input. Второе условие выполнится, если будет точно соответствовать какому-
либо факту (списку) в базе данных. Первое поле условия вопросов не
вызывает. Во втором поле условия находится переменная ?r, которая может
принять значение Ra, либо Rb, либо Rc – в зависимости от содержимого
третьего поля условия. В этом поле осуществляется вызов функции om и
сохраняется возвращаемое функцией значение. Так, если возвращаемое
значение будет равно 7, то условие выполнится, переменная ?r примет
значение Rc, правило активизируется и выведет на экран монитора
предложение выбрать резистор Rc. Если возвращаемое функцией om
значение равно 5, то пользователю будет предложен резистор Rb и т.д.
В левой части правила nothing вроде бы полная аналогияза
исключением одной маленькой модификации. В третьем поле второго
условия перед вызовом функции om стоит символ~ “, означающий
логическое отрицание. Таким образом, условие выполнится и правило
активизируется, если возвращаемое функцией om значение будет не 2, не 5 и
не 7.
Находясь в интерпретаторе CLIPS, командой (clear) очистим его от
данных предыдущего примера, загрузим файл resistor.clp и запустим
программу на выполнение:
CLIPS> (clear)
CLIPS> (load resistor.clp)
.............
TRUE
CLIPS> (reset)
CLIPS> (run)
Input current value: 3
Input strait value: 15
        В следующих двух правилах пользователю либо предлагается тип
подходящего резистора (правило take), либо сообщается об отсутствии
такового (правило nothing).
        Рассмотрим правило take. Его левая часть состоит из двух условий,
поэтому правило активизируется, если оба условия будут выполнены. Первое
условие выполняется, так как соответствующий факт уже создан правилом
input. Второе условие выполнится, если будет точно соответствовать какому-
либо факту (списку) в базе данных. Первое поле условия вопросов не
вызывает. Во втором поле условия находится переменная ?r, которая может
принять значение Ra, либо Rb, либо Rc – в зависимости от содержимого
третьего поля условия. В этом поле осуществляется вызов функции om и
сохраняется возвращаемое функцией значение. Так, если возвращаемое
значение будет равно 7, то условие выполнится, переменная ?r примет
значение Rc, правило активизируется и выведет на экран монитора
предложение выбрать резистор Rc. Если возвращаемое функцией om
значение равно 5, то пользователю будет предложен резистор Rb и т.д.
        В левой части правила nothing вроде бы полная аналогия – за
исключением одной маленькой модификации. В третьем поле второго
условия перед вызовом функции om стоит символ “ ~ “, означающий
логическое отрицание. Таким образом, условие выполнится и правило
активизируется, если возвращаемое функцией om значение будет не 2, не 5 и
не 7.
        Находясь в интерпретаторе CLIPS, командой (clear) очистим его от
данных предыдущего примера, загрузим файл resistor.clp и запустим
программу на выполнение:
CLIPS> (clear)
CLIPS> (load resistor.clp)
 .............
TRUE
CLIPS> (reset)
CLIPS> (run)

Input current value: 3
Input strait value: 15

                                                                        28