Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«Воронежский государственный лесотехнический университет им. Г.Ф. Морозова»
Интеллектуальные системы и технологии
Методические указания к лабораторным работам для студентов по направлению подготовки 09.03.02 – Информационные системы и технологии
Воронеж 2016
УДК 681.3
Юдина, Н. Ю. Интеллектуальные системы и технологии Текст : методические указания к лабораторным работам для студентов по направлению подготовки 09.03.02 – Информационные системы и технологии / Н. Ю. Юдина ; М-во образования и науки РФ, ФГБОУ ВО «ВГЛТУ». – Воронеж, 2016. – 32 с.
Печатается по решению учебно-методического совета ФГБОУ ВО «ВГЛТУ им. Г.Ф. Морозова» (протокол № __ от ____ 2016 г.)
Рецензент заведующий кафедрой электротехники и автоматики ФГБОУ ВО Воронежский ГАУ д-р техн. наук, проф. Д. Н. Афоничев
2
Оглавление |
|
ЛАБОРАТОРНАЯ РАБОТА №1. «Экспертные оболочки» ................................... |
4 |
2.1. Общие сведения о CLIPS.............................................................................. |
4 |
2.2. Программирование в CLIPS ......................................................................... |
4 |
ЛАБОРАТОРНАЯ РАБОТА №2. «Логическое программирование».................. |
10 |
ЛАБОРАТОРНАЯ РАБОТА №3. «Разработка экспертной оболочки»............... |
19 |
ЛАБОРАТОРНАЯ РАБОТА №4: «Нечеткая логика» ........................................... |
22 |
ЛАБОРАТОРНАЯ РАБОТА №5: «Алгоритмы нейронных сетей» ..................... |
25 |
Многослойные сети прямого распространения .............................................. |
26 |
Алгоритм обратного распространения ................................................................ |
27 |
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ ................................................... |
29 |
3
ЛАБОРАТОРНАЯ РАБОТА №1. «Экспертные оболочки» Цель работы:
1.Изучение языка процедурного программирования оболочки CLIPS.
2.Создание экспертной системы в оболочке CLIPS, содержащей базу правил, начальные факты и возможные исходы.
Теоретическое введение. 2.1. Общие сведения о CLIPS
CLIPS (С Language Integrated Production System) является одним из рас-
пространенных инструментальных средств разработки экспертных систем (ЭС). CLIPS использует продукционную модель представления знаний и поэтому содержит три основных элемента:
1.список фактов (представляет исходное состояние проблемы)
2.базу знаний (преобразуют состояние проблемы к решению)
3.блок вывода Отличием данной системы от аналогов является то, что она полностью
реализована на языке С. В CLIPS используется оригинальный LIPS-подоб-ный язык программирования, ориентированный на разработку ЭС. Кроме того, CLIPS поддерживает еще две парадигмы программирования: объектноориентированную и процедурную. Аспекты объектно-ориентированного программирования в CLIPS рассматриваться не будут.
2.2. Программирование в CLIPS 2.2.1. Простые типы данных
В CLIPS предусмотрено восемь простых типов данных: float, integer, symbol, string, external-address, fact-address, instance-name и instance-address.
Для числовой информации используются типы float и integer, символьной
– symbol и string. При записи числа используются цифры (0-9), десятичная точка (.), знак (+) или (-) и (е) при экспоненциальном представлении. Количество значащих цифр зависит от аппаратной реализации. Примеры целых чисел: 237, 15, +12, -32. Примеры чисел с плавающей точкой: 237е3, 15.09, +12.0, -32.3е-7.
Последовательность символов, которая не удовлетворяет числовым типам, обрабатывается как тип данных symbol. Тип данных symbol в CLIPS – последовательность символов, состоящая из одного или нескольких любых печатных символов кода ASCII. Примеры выражений символьного типа: foo,
Hello, B76-HI, bad_value, 127А, 742-42-42, @+=-%, Search. Тип данных string -
это последовательность символов, состоящая из нуля и более печатных символов и заключенная в двойные кавычки. Если внутри строки встречаются двой-
4
ные кавычки, то перед ними необходимо поместить символ (\). Например:
"foo", "a and b", "I number", "a\"quote".
2.2.2. Переменные
Идентификатор переменной всегда начинается с вопросительного знака, за которым следует ее имя. Примеры переменных: ?х, ?sensor, ?noun, ?color.
Переменные описываются |
(defrule make-quack |
и получают значения |
(duck-sound ?sound) |
в левой части правила. |
=> |
|
(assert (sounds-is ?sound) ) |
Значение переменной |
(defrule addition |
изменяется в правой части |
(numbers ?x ?y) |
при помощи функции bind. |
=> |
|
(assert (answer (+ ?x ?y))) |
|
(bind ?answer (+ ?x ?y) |
|
(printout t "answer is " ?answer crlf)) |
Переменной может быть |
(defrule get-married |
присвоено значение адреса факта. |
?duck <- (bachelor Dopey) |
Это может оказаться удобным |
=> |
при необходимости манипули- |
(retract ?duck)) |
ровать фактами непосредственно из правила. Для такого присвоения используется комбинация "<-".
Для определения глобальных переменных, которые видны всюду в среде CLIPS, используется конструкция defglobal. К глобальной переменной можно обратиться в любом месте, и ее значение остается независимым от других конструкций.
2.2.3. Функции
Существует несколько типов функций. Пользовательские и системные функции - это фрагменты кода, написанные на внешних языках (например, на С) и связанные со средой CLIPS. Системными называются те функции, которые были определены изначально внутри среды CLIPS. Пользовательскими называются функции, которые были определены вне CLIPS.
в CLIPS предусмотрен ряд стандартных арифметических и математических функций. Среди них: + (сложение ), - (вычитание ), * (умножение), / (деление), ** (возведение в степень), Abs (определение абсолютного значения), Sqrt (вычисление квадратного корня), Mod (взятие по модулю), Min (нахождение минимума), Мах
5