Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Основные теоретические сведения ⇐ ПредыдущаяСтр 5 из 5
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. Связь базы данных с базой знаний
где: "+" – объект имеет соответствующее свойство; "-" – объект не имеет указанного свойства. „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; просмотров: 398. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |