Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Основные теоретические сведения




3.1.1. Структура „Prolog”- программы

Базовым языком программирования в системах искусственного интеллекта является язык логического программирования „Prolog”, в основу которого положен метод автоматического доказательства теорем в исчислении предикатов первого порядка (см. "Лабораторную работу №2").

В данной лабораторной работе необходимо разработать „Prolog”-программы моделей представления знаний (см. "Лабораторную работу №2") и „Prolog”-программу работы (решения задачи) экспертной системы (ЭС) в среде программирования "Turbo-Prolog" (версии 2.0), которая служит для организации диалога пользователя с ЭС.

„Prolog”-программа включает следующие разделы:

1) constans – объявление констант (раздел не обязательный);

2) domains– объявление типов данных для аргументов предикатов;

3) global domains- объявление глобальных типов данных (раздел не обязательный);

4) database- объявление предикатов динамической базы знаний;

5) global databaseобъявление предикатов глобальной динамической базы знаний (раздел не обязательный);

6) predicates - объявление предикатов;

7) global predicates - объявление глобальных предикатов (раздел не обязательный);

8) goal определение компилятором цели запроса (целевого утверждения); при отсутствии в программе этого раздела пользователь вводит запрос самостоятельно;

9) clausesопределение правил (текст программы).

Утверждения (правила), представленные в виде предикатов и объявленные в разделе database, составляют внутреннюю базу данных (ВБД) „Prolog”- программы. Основными стандартными предикатами для работы с ВБД являются:

а) consult(Имя_файла) – дополнить ВБД другой базой данных, находящейся в файле с именем Имя_файла;

б) save (Имя_файла) –сохранить ВБД в файле с именем Имя_файла;

в)assert (Факт) дополнить ВБД новым фактом Факт;

г) retract(Факт) – исключить факт Факт из ВБД.

Правила, представленные в разделе clauses, являются конструкциями вида:

вывод :-условие 1, условие 2, … условие n.

и интерпретируются компилятором „Prolog”-программы следующим образом: "Утверждение вывод является истинным при одновременной истинности утверждений условие 1, условие 2, … условие n".

Для ввода и вывода данных в процессе работы „Prolog”-программы используются следующие стандартные предикаты ввода-вывода:

· readint (X),  readreal (X), readln (X) ввод с текущего устройства ввода соответственно целых, действительных чисел и символов;

· write ( Зн1, Зн2, Зн3,…)вывод значений констант или переменных Зн1, Зн2, Зн3,на текущее устройство вывода;

· nl– перевод выходного потока на следующий рядок текущего устройства вывода.

3.1.2. Выполнение „Prolog”- программы

Как уже отмечалось выше, в основу „Prolog”- программы положен аппарат автоматического доказательства теорем в исчислении предикатов первого порядка, которыйсостоит в следующем. Логическая база знанийсодержит истинные утверждения (правила), которые называются аксиомами или гипотезами. На основе двух или нескольких исходных аксиом можно доказать теорему, т.е. вывести очередное утверждение-следствие путем использования конечного числа правил вывода.Этот процесс называют логическим выводом на знаниях.

Метод автоматического доказательства теорем с использованием правил вывода следствий изнабора исходных аксиом получил название метода резолюций. Теорема, выведенная из двух или нескольких аксиом путем использования метода резолюций, называется резольвентой.

Основной операцией, выполняемой над данными в „Prolog”- программе, является операция сопоставления (линейная резолюция) утверждений. Задача „Prolog”- программы состоит в определении значений аргументов, входящих в состав целевого утверждения, который согласуется с одной из аксиом базы знаний. Это утверждение с точки зрения компилятора „Prolog”- программыявляется запросом, который необходимо ввести в диалоговое окно после сообщения Goal,  либо записать как часть текста программы в разделе goal.

Простой запрос пользователя состоит из имени предиката, за которым в скобках указан список аргументов.

Сложенный запрос создается из нескольких простых запросов, соединенных между собой:

· запятой ","  что означает логическое "и" ("and") ( &);

· точкой с запятой ";", что соответствует логическому "или" ("or") ( Ú).

3.1.3. Примеры „Prolog”-программ

Пример №1. Рассмотрим „Prolog”-программу построения базы знаний ЭСс использованием логической модели представления знаний (см. "Лабораторную работу №2").

Пусть предметнойобластью ЭС являются "Транспортные средства" с такими объектами (см. "Лабораторную работу №1"):

1. Самолет. 2. Вертолет. 3. Катер. 4. Танкер. 5. Грузовик. 6. Такси.

Указанные транспортные средства могут обладать следующими свойствами:

1. Иметь колеса. 2. Иметь винт. 3. Иметь крыло. 4. Возить грузы.

Связь между объектами и их свойствами представлена в табл. 3.1:



Табл. 3.1. Связь базы данных с базой знаний

 

1 2 3 4
Колеса Винт Крыло Грузы
1 Самолет + + + +
2 Вертолет + + - +
3 Катер - + - -
4 Танкер - + - +
5 Грузовик + - - +
6 Такси + - - -

где: "+" – объект имеет соответствующее свойство;

"-" – объект не имеет указанного свойства.

„Prolog”- программа логической базы знаний ЭС имеет вид:

domains %    Типы данных:

sml, vrt, ktr, tnk, grz, tks = symbol

kls, vnt, krl, vgr = symbol

x, y= symbol

predicates          %    Предикаты:

P(x, y), Q(x), R(y)

clauses   %       Правила (фразы Хорна):

not P(sml, kls);  not P(sml, vnt);  not P(sml, krl);  not P(sml, vgr);  Q(sml).

not P(vrt, kls);  not P(vrt, vnt);  notP(vrt, vgr); Q(vrt).

not P(ktr, vnt); notP(ktr, vgr); Q(ktr).

not P(tnk, vnt); notP(tnk, vgr); Q(tnk).

not P(grz, kls); not P(grz, vgr); Q(grz).

not P(tks, kls); Q(tks).

not P(sml, kls); not P(vrt, kls); notP(grz, kls); notP(tks, kls);  R (kls ).

not P(sml, vnt); not P(vrt, vnt); notP(ktr, vnt); notP(tnk, vnt);  R (vnt ).

not P(sml, krl); R (krl ).

not P(sml, vgr); not P(vrt, vgr); notP(ktr, vgr);notP(tnk, vgr)); not P(grz, vgr); R (vgr ).

Пример №2. Рассмотрим „Prolog”-программу построения базы знаний ЭС с использованием семантической модели представления знаний (см."Лабораторную работу №2"):

domains %    Типы данных:

объект = symbol

объекты = string

свойства = string

транспорт_средства = symbol

самолет, вертолет, катер, танкер, грузовик, такси = string

колеса, винт, крыло, грузы = string

predicates          %    Предикаты:

имеет_частью (объекты, объект)

имеет_свойство (свойства, объект)

clauses               %       Правила:

имеет частью (самолет, вертолет, катер, танкер, грузовик, такси, транспорт_средства)

% Связь базы данных с базой знаний

имеет_свойство ("колеса", "винт", "крыло", "грузы ", "Самолет")

имеет_свойство ("колеса", "винт", " ", "грузы ", "Вертолет")

имеет_свойство (" ", "винт", " ", "грузы ", "Катер")

имеет_свойство (" ", "винт", " ", "грузы ", "Танкер")

имеет_свойство ("колеса", " ", " ", "грузы ", "Грузовик")

имеет_свойство ("колеса", " ", " ", " ", "Такси")

Пример №3.Рассмотрим „Prolog”-программу построения базы знаний ЭС с использованием фреймовой модели представления знаний (см."Лабораторную работу №2"):

domains             %    Типы данных:

Фрейм, имя_фрейма, имя_слота, транспорт_средства = symbol

фреймы = string

значения_слота = string

самолет, вертолет, катер, танкер, грузовик, такси = string

колеса, винт, крыло, грузы = string

predicates          %    Предикаты:

структура (фреймы, Фрейм)

фрейм (имя_фрейма, имя_слота, значения_слота)

clauses               %       Правила:

структура (самолет, вертолет, катер, танкер, грузовик, такси, транспорт_средства)

% Связь базы данных с базой знаний

фрейм ("Самолет", имеет, "колеса", "винт", "крыло", "грузы ")

фрейм ("Вертолет", имеет, "колеса", "винт", " ", "грузы ")

фрейм ("Катер", имеет, " ", "винт", " ", "грузы ")

фрейм ("Танкер", имеет, " ", "винт", " ", "грузы ")

фрейм ("Грузовик", имеет, "колеса", " ", " ", "грузы ")

фрейм ("Такси", имеет, "колеса", " ", " ", " ")

Пример №4.Рассмотрим „Prolog”-программу построения базы знаний ЭС с использованием продукционной модели представления знаний (см."Лабораторную работу №2").

domains %    Типы данных:

sml, vrt, ktr, tnk, grz, tks = symbol

kls, vnt, krl, vgr = symbol

x, y= symbol

predicates          %    Предикаты:

P(x, y), Q(x), R(y)

clauses               %     Правила:

Q (sml) :- P(sml, kls), P(sml, vnt), P(sml, krl), P(sml, vgr).

Q (vrt). :- P(vrt, kls), P(vrt, vnt), notP(vrt, krl), P(vrt, vgr).

Q (ktr) :- P(ktr, kls), P(ktr, vnt), notP(ktr, krl), P(ktr, vgr).

Q (tnk) :-not P(tnk, kls), P(tnk, vnt), notP(tnk, krl), P(tnk, vgr).

Q (grz) :- P(grz, kls), not P(grz, vnt), notP(grz, krl), P(grz, vgr).

Q (tks) :- P(tks, kls), notP(tks, vnt), notP(tks, krl), notP(tks, vgr).

R (kls ) :- P(sml, kls), P(vrt, kls), notP(ktr, kls), notP(tnk, kls), P(grz, kls), P(tks, kls).

R (vnt ) :- P(sml, vnt), P(vrt, vnt), P(ktr, vnt), P(tnk, vnt), notP(grz, vnt), notP(tks, vnt).

R (krl ) :- P(sml, krl), notP(vrt, krl), notP(ktr, krl), notP(tnk, krl), notP(grz, krl), not P(tks, krl).

R (vgr ) :- P(sml, vgr); P(vrt, vgr), P(ktr, vgr), P(tnk, vgr); P(grz, vgr), notP(tks, vgr).

Пример №5.Рассмотрим пример „Prolog”-программы решения задачи ЭС (см. "Лабораторную работу №1")в среде программирования "Turbo-Prolog" версии 2.0. Запрос пользователя ЭС  состоит в определении названия объекта с такими свойствами:

· имеет колеса;

· не имеет винта;

· не имеет крыльев;

· возит грузы.

ЭС будет задавать вопросы, на которые должен отвечать пользователь. Вопросы формируются в порядке следования свойств в базе знаний:

1) "Объект имеет колеса?" "Да".

2) "Объект имеет винт?" "Нет".

3) "Объект имеет крыло?"  "Нет".

4) "Объект возит грузы?" "Да".

Программа решения задачи ЭС ("Транспортные средства")

/* Transport.pro */

domains             %    Типы данных:

колеса, винт, крыло, грузы, тcредство = string

database            % Предикаты внутренней базы знаний

базтранспорт (колеса, винт, крыло, грузы, тcредство)

predicates          %        Предикаты:

repeat % Повтор

Do_mbase

Assert_database

Clear_database

транспорт (колеса, винт, крыло, грузы, тcредство)

process(integer)

goal         % Запрос:

Do_mbase

транспорт ("1", "0","0","1", "Тcредство")

clauses   %           Правила:

Repeat.

% Связь базы данных с базой знаний

транспорт ("1", "1","1","1", "Самолет")

транспорт ("1", "1","0","1", "Вертолет")

транспорт ("0", "1","0","1", "Катер")

транспорт ("0", "1","0","1", "Танкер")

транспорт ("1", "0","0","1", "Грузовик")

транспорт ("1", "0","0","0", "Такси")

Assert_database :-

транспорт (Колеса, Винт, Крыло, Грузы, Тcредство),

assert_(базтранспорт (Колеса, Винт, Крыло, Грузы, Тcредство)),

Fail.

assert_database :-!.

Clear_database :-

retract (базтранспорт ( _, _, _, _, _ )),

Fail.

clear_database :-!.

Do_mbase:-

assert_database :-!.

Clear_database.

Clearwindow,

Nl, nl, nl, nl,

% Создание интерфейса пользователя (вопросник)

readint (Choice), nl,

process (Choice),

Removewindow.

process (1) :-

write ( "1 – Да" ), nl,

write ( "0 – Нет" ), nl,

write ( "Объект имеет Колеса?"),

readln (Колеса),nl,

write ( "Объект имеет Винт?"), nl,

readln (Винт),nl,

write ( "Объект имеет Крыло?"), nl,

readln (Крыло),nl,

write ( "Объект возит Грузы?"),nl,

readln (Грузы ),

базтранспорт (Колеса, Винт, Крыло, Грузы, Тcредство), nl,

write ( "Искомый объект -Тcредство"),

nl, nl, !, nl,

Removewindow.

process (1):- nl,

write ( "Искомый объект не найден"),

Readchar (_),

Removewindow.



Порядок выполнения работы

3.1. Для своего варианта предметной области (см. "Лабораторную работу №1") разработать „Prolog”-программы логической, семантической, фреймовой и продукционной моделей представления знаний (см. "Лабораторную работу №2").

3.2. Представить на экранеи сделать распечатки (листинги) „Prolog”-программ моделей представления знаний п.3.1 (влюбой системе программирования).

3.3. Разработать „Prolog”-программу решения задачи ЭС (см. "Лабораторную работу №1") в среде программирования "Turbo-Prolog" версии 2.0.

3.5. Представить на экране и сделать распечатку (листинг) „Prolog”-программы решения задачи ЭС.

Отчет о работе

Отчет о лабораторной работе должен иметь следующую структуру и содержать разделы:

Титульный лист (см.выше)

Содержание работы

Название и цель работы (см.выше)

Реферат (теоретические сведения и общая характеристика работы – см.выше)

Расчетно-графическая часть

Вариант задания

Состав базы знаний

Запрос пользователя (постановка задачи ЭС)

Вопросник для осуществления диалога пользователя с ЭС

(Указанные выше разделы отчета взять из "Лабораторной работы №1")

Лабораторная часть

„Prolog”-программы логической, семантической, фреймовой и продукционной моделей представления базы знаний ЭС

„Prolog”-программа решения задачи ЭС в среде программирования "Turbo-Prolog" версии 2.0.

Анализ возможностей использования в ЭС базовых версий языка „Prolog”.

Литература

1. Девятков В.В. Системы искусственного интеллекта.– М.: МГТУ, - 2001.-352с.

2. Рідкокаша А.А. та ін. Основи систем штучного інтелекту. Навч. посібник. –Черкаси: Відлуння-Плюс, 2001. – 231 с.

3. Попов Э.В. и др. Статические и динамические экспертные системы. –М.: Финансы и статистика. -1996. – 320 с.

4. Крисевич В.С. и др. Экспертные системы для персональных компьютеров. / Справочное пособие. – Минск: ВШ, 1990. – 200 с.

5. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем. – СПб.: Питер, 2001. -384 с.

6. Осипов Г.С. Приобретение знаний интеллектуальными системами. – М.: Наука, 1997.










Последнее изменение этой страницы: 2018-04-12; просмотров: 358.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...