Понятие интеллектуальной информационной системы
Реферат, 20 Февраля 2011, автор: пользователь скрыл имя
Описание работы
Около полувека назад зародился как наука искусственный интеллект на основе которого создавались первые интеллектуальные информационные системы. В России первой такой системой называлась «логик-теоретик» предназначенная для доказательства теорем и исчисления высказываний. В первые её работа была продемонстрирована 9.08.1956 г. В настоящее время ИИС проникли во все сферы нашей жизни, основной целью построения которых является выявление, исследование и применение знаний высоко классифицированных экспертов для решения сложных задач возникающих на практике.
Файлы: 1 файл
Интелектуальные_информационные_системы.doc
— 178.50 Кб (Скачать файл)1) когда заранее
известно что поиск
2) Когда логика
программы нуждается в
pr-car(x):-car(x,_,_), write(x), nl, pr-car(x)
При использовании предиката Fail необходимо использовать 2 утверждения.
###
Слияние списков или объединения.
Domains
list=integer*
predicates
append(list, list, list)
clauses
append([], L, L).
append([H | T], L, [H | T1]):-append(T, L, T1).
Цели: 1) Объединение двух списков, пример:
append([1,2,3], [4,5], X)
X=[1,2,3,4,5]
- нахождение разности между списками, пример:
append(L, [2,3], [1,2,3])
L=[1]
- Расщепление результативного списка на 2, пример:
append(X, L, [1,2,3])
X=[1] L=[2,3]
X=[1,2] L=[3]
X=[1,2,3] L=[]
5* Обработка данных в списках.
findall(var, Predicat, ListName)
Var — это имя переменной которой необходимо включить в список.
Predicat — это предикат из которого нужно собрать сведения.
ListName — это имя списка куда заносятся результирующие данные.
Пример1:
Программа состоит из фактов описывающих персоны по имени и возрасту. Необходимо определить список всех имен имеющихся в базе данных.
Domains
list=string*
predicates
person(string, integer)
causes
person(«Tom», 28).
person(«Ann», 18).
person(«Lis», 34).
Зададим цель с помощью предиката findall:
findall(X, person(X, _), L)
L=[«Tom», «Ann»,
«Lis»]
«Разработка собственной экспертной системы и программирование её на языке пролог»
- Выбор предметной области, выбор объектов для предметной области(объектов должно быть 11), пример:
Предметная область: дикие животные
Объекты:
- Тигр
- Гепард
- Жираф
- Зебра
- Пингвин
- Альбатрос
- Страус
- Пантера
- Выделим основные характеристики животных:
Для тигра: хищник, млекопитающие, рыжевато-коричневый окрас, черные полосы.
Гепард: хищник, млекопитающие, рыжевато-коричневый окрас, темные пятна.
Жираф: млекопитающие, травоядное, длинная шея, темные пятна.
Зебра: млекопитающее. Травоядное, черные полосы.
Пингвин: птица, хорошо плавает, черно-белый окрас.
Альбатрос: птица, хорошо летает.
Страус: птица, длинная шея, длинные ноги, черно-белый окрас
Пантера: млекопитающее, хищник, черный окрас.
- Выделим не определяемые понятия и запишем их характеристики:
Млекопитающие — кормят детенышей молоком, имеет шерсть.
Хищник — питается мясом, острые зубы, острые когти.
Травоядные — имеет копыта, жуют жвачку.
Птица: откладывают яйца, имеет перья или пух.
- Схема экспертной системы:
Дикие животные
###
Примечания по схеме: максимальное подразделение на 3 группы. Далее работаем по схеме слево направо.
- Проверка. Составление вопросов для пользователя. В вопросах неопределяемые понятия задаются их характеристиками, см этап 3. Каждый вопрос начинается с предметной области, в данном случае это слово животное, после которого идет связующий глагол и соответствующая характеристика.
- Животное кормит детенышей молоком ?
- Животное имеет шерсть ?
- Животное откладывает яйца ?
- Животное имеет перья ?
- Животное имеет пух ?
- Животное питается мясом ?
- Животное имеет острые зубы ?
- Животное имеет острые когти ?
- Животное имеет копыта ?
- Животное жуют жвачку ?
- Животное имеет черный окрас ?
- Животное имеет рыжевато коричневый окрас ?
# дописать
- Запись правил:
Правила записываем начиная с животных по схеме слево направо, а затем добавляем правила для неопределяемых понятий.
- Животное тигр если оно млекопитающее и оно хищник и имеет рыжевато-коричневый окрас и имеет темные полосы.
- Оно млекопитающее если кормит детенышей молоком и имеет шерсть.
# дописать, всего 12 правил.
Д/з сдать в черновом варианте разработку экспертной системы до 1 декабря.
- Запись на языке программирования пролог.
Предикаты необходимые для экспертной системы.
- Run — используется для запуска программы(в окне цели зададим цель).
- animal_is
- позитив и негатив
- clear_facts
- remember
- ask — формирует вопрос
стр. 95-99.
Структура в прологе
Структура
— это единый объект состоящая
из совокупности других объектов называемых
компонентами(структура
- Служащий
- ФИО
- Др
- отдел
- Каталог библ книг
- ФИ автора
- название
- изд-во
- год издания
- семья
- член семьи:
- ФИО
- дата рожд.
- статус
На прологе это будет выглядеть следующим образом:
семья(член семьи(энн,
фокс, дата(9, мая, 1951 ), нер), член семьи (том,
фокс, дата(7, май, 1950), работает (bbc, 15200)),
[член семьи (пат, фокс, дата (5, май, 1973),
не работает), член семьи (джим, фокс, дата
(5, мая, 1973), не работает)])
Тогда база фактов будет состоять из последовательности обсуждений подобных этому и описывать все семьи представляющие данную программу. Используя данную структуру можно задавать следующие вопросы:
- Найти всех членов семьи фокс.
Семья (член семьи(_,фокс,дата(_,_,_),_))
- Найти все семьи имеющие 3 детей
семья(_, _,[_,_,_])
- Найти всех замужних женщин имеющих по крайней мере 2 детей
семья(член семьи(x,y,_,_),_, [_, _|_])
В программу
имеющие структуры можно
- Правило определения мужа.
muz(x):-
семья(_, x,_).
- Правило нахождения жены
zhena(y):-
семья( y,_,_)
- Правило нахождения детей
deti(x):-
семья(_,_,y),
принадлежит (x, y).
принадлежит(x, [x|T]).
принадлежит(x, [H|T]):-
принадлежит(x,T).
- Нахождение любого члена семьи в базе данных
существует(x):-
muz(x) or
zena(x) or
delete(x).
- Определить доход работающего.
dohod(x):-
семья(член семьи(x,_,_,rabotaet(_,y))).
- Найти имена всех людей из базы данных.
- Найти всех детей родившихся в 81 году.
- Найти всех работающих жен.
«Графика в прологе»
Создание и работа с окнами. В прологе есть 5 предикатов позволяющих программе управлять окнами. С их помощью можно создавать несколько окон, выполнять ввод и вывод в определенные окна и устанавливать атрибуты окон. Рассмотрим эти предикаты:
- makewindow имеет следующие атрибуты(<номер окна>; <атрибуты окна>; <атрибуты рамки>, заголовок окна, начальный номер строки, начальный номер столбца высота окна, ширина окна)
Номер окна это
целое число которое
Атрибуты окна определяют цвета символов и фона выбираемое значение зависит от типа монитора цветной или монохромный. При использовании цветного монитора необходимо установить цвет текста и фона:
0 — черный
1 — синий
2 — зеленый
3 — голубой
4 — красный
5 — фиолетовый
6 — коричневый
7 — белый
8 — серый
9 — светло синий
10 — светло зеленый
11 — светло голубой
12 — светло красный
13 — светло фиолетовый
14 — желтый
15 — интенсивно
белый
цвета фона:
0 — черный
16 — синий
32 — зеленый
48 — голубой
64 — красный
80 — фиолетовый
96 — коричневый
104 - желтый
112 — белый
Чтобы получить атрибут окна нужно цвет текста прибавить цвет фона. Если хотим чтобы символы мерцали, нужно прибавить к результату 128. Например:
необходимо создать окно с белыми символами без мерцания, тогда атрибут окна равен: 7+0
Красные символы на желтом фоне с мерцанием: 4+104+128= 236
Синие символы на светло красном фоне: ?
Атрибуты рамки это целое число значение которого определяет рамку окна. Если значение атрибута равно 0, то окно не имеет видимой границы. Если задается мерцающая граница, то она всегда будет белой с мерцающей тонкой линией в середине границы имеющей указаный цвет. Рассмотрим цвета рамки:
1 — синяя
2 — зеленая
3 — светло синяя
4 — красная
5 — фиолетовая
6 — желтая
7 — белая
8 — коричневая
мерцающая белая рамка -1
мерцающая желтая рамка -2
мерцающая фиолетовая -3
мерцающая красная -4
мерцающая светло синяя -5
-6 светло зеленая
-7 синяя
-8 серая
Заголовок окна задает метку окна. Это строка задаваемая в качестве значения атрибута и размещается в центре верхней рамки окна. Если заголовка окна нет, то вместо атрибута записываем аргумент состоящий из 2ух последовательных знаков ковычек.