Создание пробной экспертной системы
Назначение экспертной системы. Разработка экспертной системы путем самостоятельного программирования в полном объеме простейшей ЭС в "GURU". Листинг экспертной системы по прогнозированию на бирже уровня цен, если валютный курс доллара падает или растет.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 15.01.2011 |
Размер файла | 17,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Министерство образования и науки Украины
Черниговский государственный технологический университет
Кафедра информационных и компьютерных систем
Лабораторная работа №3
по дисциплине:
“Компьютерные системы искусственного интеллекта”
Создание пробной экспертной системы
Выполнил студент гр. МК-061
И.С. Чадюк
Руководитель к. ф.-м. н., доцент
В.А. Бычко
Чернигов - 2010
Цель работы
Самостоятельное программирование в полном объеме простейшей экспертной системы.
Краткие теоретические сведенья
Во время консультации может создаться впечатление, что действия, выполняемые машиной логических выводов, не имеют отношения к проблеме. Это возможно потому, что пользователь не знает, как происходит внутренний процесс аргументации. Если пользователь действительно не понимает, почему от него требуют той или иной информации, он может отреагировать, используя Y(CTRL-Y). В этом случае он увидит на экране дисплея текущее обрабатываемое правило. После нажатия ENTER это объяснение исчезает, и он может ввести ответ.
После консультации с набором правил, пользователь может попросить систему объяснить, какие правила и переменные использовались. Для этого применяются две команды:
HOW - выдает переменные, которые использовались;
WHY - объясняет правила, которые использовались.
Объясним, какую информацию дает их использование.
HOW - выдает значение переменкой цели, правило или правила, с помощью которых была определена цель.
HOW "имя переменной" - выдает значение или значения с указанной переменной.
HOW "число" - выдает значение или значения переменной с порядковым номером, заданными этой переменной в наборе правил.
WHY - воспроизводит на экране дисплея объяснение (REASON) и переменные, которые требовались для правила, выполняющегося последним. Переменные отображаются с порядковый номером, который можно потом использовать в команде HOW (см. выше).
WHY "имя правила" - воспроизводит на экране дисплея объяснение (REASON) и переменные, необходимые для данного правила.
WHY "число" - воспроизводит на экране дисплея объяснение и переменные, необходимые для REASON правила с указанным порядковым номером в наборе правил.
Для того чтобы объяснить процесс аргументации, необходимо использовать HOW и WHY совместно.
Опишем подробно работу набора правил. Он предназначен для иллюстрация обратной аргументации.
В INITIAL идет инициализация переменных. Рассмотрим ее отдельные строки.
e.tryp = 'e' - задает стратегию оценки посылки (части “if” правила), содержащего неизвестные переменные. Истинность посылки оценивается сразу же после того, как очередная неизвестная переменная становится известной. Тестирование посылки прекращается (несмотря на то, что все переменные в ней еще не определены), если только удается определенно установить ее истинность или ложность.
e.lstr = 80 - максимальная длина символьной строки, которая может выводиться на экран.
е.lnum = максимальная длина числа.
В VAR описываются пользовательские переменные (см. списание лабораторной работы 1).
Часть DO - окончание работы экспертной системы. Конструкция test ... case ... endtest проверяет переменную advice и в зависимости от ее значения выполняет те или иные действия.
Ход работы
Описание ЭС на естественном языке.
Вы хотите прогнозировать на бирже уровень цен. Если валютный курс доллара падает, то процентные ставки растут. Если валютный курс доллара растет, то процентные ставки падают. Если процентные ставки растут, то уровень цен на бирже падает. Если процентные ставки падают, то уровень цен на бирже растет.
Полученное дерево ЭС приведено ниже.
PROGNOZ*
¦-------R3
¦ ¦-------YTD
¦ ¦-------TD
¦ ¦-------PROCSTV
¦ ¦ ¦-------R1
¦ ¦ ¦ ¦-------YTD
¦ ¦ ¦ L-------TD
¦ ¦ L-------R8
¦ ¦ ¦-------YTD
¦ ¦ L-------TD
¦ L-------URCEN
¦ ¦-------R2
¦ ¦ ¦-------YTD
¦ ¦ ¦-------TD
¦ ¦ L-------(PROCSTV)
¦ ¦-------R5
¦ ¦ ¦-------YTD
¦ ¦ ¦-------TD
¦ ¦ L-------(PROCSTV)
¦ ¦-------R9
¦ ¦ ¦-------YTD
¦ ¦ ¦-------TD
¦ ¦ L-------(PROCSTV)
¦ L-------R12
¦ ¦-------YTD
¦ ¦-------TD
¦ L-------(PROCSTV)
¦-------R4
¦ ¦-------YTD
¦ ¦-------TD
¦ ¦-------(PROCSTV)
¦ L-------(URCEN)
¦-------R6
¦ ¦-------YTD
¦ ¦-------TD
¦ ¦-------(PROCSTV)
¦ L-------(URCEN)
¦-------R7
¦ ¦-------YTD
¦ ¦-------TD
¦ ¦-------(PROCSTV)
¦ L-------(URCEN)
¦-------R10
¦ ¦-------YTD
¦ ¦-------TD
¦ ¦-------(PROCSTV)
¦ L-------(URCEN)
¦-------R11
¦ ¦-------YTD
¦ ¦-------TD
¦ ¦-------(PROCSTV)
¦ L-------(URCEN)
¦-------R13
¦ ¦-------YTD
¦ ¦-------TD
¦ ¦-------(PROCSTV)
¦ L-------(URCEN)
L-------R14
¦-------YTD
¦-------TD
¦-------(PROCSTV)
L-------(URCEN)
Листинг экспертной системы
GOAL: prognoz
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr = 500 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
E.DECI = 2 /* кол-во знаков после точки */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
output " Вы хотите совершить прогноз цен на бирже? "
output " Тогда вы обратились по адресу. :) "
output " Данная ЭС поможет вам в этом... "
output " ИТАК, НАЧНЕМ ..."
ytd = "0"
td = 0
output " Введите вчерашний курс доллара"
input ytd num using "dddd"
output "Введите нынешний курс долара"
input td num using "dddd"
DO:
clear
output "НА ОСНОВЕ ДАННОЙ ИНФОРМАЦИИ:"
output
test prognoz
case "a"
output dol
break
case "b"
output dol
output prcs
break
case "c"
output dol
output urc
break
case "d"
output dol
output prcs
output urc
break
endtest
RULE: R1
IF: ytd > td
THEN: output "Хотите ли вы узнать прогноз о процентных ставках?"
input procstv str using "a" with "(y/n)"
RULE: R2
IF: ytd > td & (procstv = "y" or procstv = "Y")
THEN: dol = "Курс доллара падает."
prcs = " Процентные ставки растут. "
output "Хотите ли вы узнать прогноз об уровне цен на бирже?"
input urcen str using "a" with "(y/n)"
RULE: R3
IF: ytd > td & (procstv = "y" or procstv = "Y") & (urcen = "y" or urcen = "Y")
THEN: urc = "Уровень цен на бирже падает."
prognoz = "d"
RULE: R4
IF: ytd > td & (procstv = "y" or procstv = "Y") & (urcen = "n" or urcen = "N")
THEN: prognoz = "b"
RULE: R5
IF: ytd > td & (procstv = "n" or procstv = "N")
THEN: dol = "Курс доллара падает."
output "Хотите ли вы узнать прогноз об уровне цен на бирже?"
input urcen str using "a" with "(y/n)"
RULE: R6
IF: ytd > td & (procstv = "n" or procstv = "N") & (urcen = "n" or urcen = "N")
THEN: prognoz = "a"
RULE: R7
IF: ytd > td & (procstv = "n" or procstv = "N") & (urcen = "y" or urcen = "Y")
THEN: urc = "Уровень цен на бирже падает."
prognoz = "c"
RULE: R8
IF: ytd < td
THEN: output "Хотите ли вы узнать прогноз о процентных ставках?"
input procstv str using "a" with "(y/n)"
RULE: R9
IF: ytd < td & (procstv = "y" or procstv = "Y")
THEN: dol = "Курс доллара растёт."
prcs = " Процентные ставки падают. "
output "Хотите ли вы узнать прогноз об уровне цен на бирже?"
input urcen str using "a" with "(y/n)"
RULE: R10
IF: ytd < td & (procstv = "y" or procstv = "Y") & (urcen = "y" or urcen = "Y")
THEN: urc = "Уровень цен на бирже растёт."
prognoz = "d"
RULE: R11
IF: ytd < td & (procstv = "y" or procstv = "Y") & (urcen = "n" or urcen = "N")
THEN: prognoz = "b"
RULE: R12
IF: ytd < td & (procstv = "n" or procstv = "N")
THEN: dol = "Курс доллара растёт."
output "Хотите ли вы узнать прогноз об уровне цен на бирже?"
input urcen str using "a" with "(y/n)"
RULE: R13
IF: ytd < td & (procstv = "n" or procstv = "N") & (urcen = "n" or urcen = "N")
THEN: prognoz = "a"
RULE: R14
IF: ytd < td & (procstv = "n" or procstv = "N") & (urcen = "y" or urcen = "Y")
THEN: urc = "Уровень цен на бирже растёт."
prognoz = "c"
VARIABLE: prognoz
FIND: prognoz = "error"
LABEL: прогнозируем курс долара
var: prcs
FIND: prcs = "error"
LABEL: прогноз проц ставки
var: urc
FIND: urc = "error"
LABEL: прогноз уровня цен
VAR: dol
FIND: dol = "error"
LABEL: прогноз доллара
var: ytd
LABEL: вчерашний курс доллара
VAR: td
LABEL: текущий курс доллара
VAR: procstv
LABEL: процентная ставка
VAR: urcen
LABEL: уровень цен на бирже
END:
Выводы
В результате выполнения данной лабораторной работы закрепили знания по разработке ЭС путем самостоятельного программирования в полном объеме простейшей ЭС в “GURU”. Как видно по результат, данная оболочка позволяет значительно упростить процесс создания таких систем, позволив их разработчику акцентировать свое внимание исключительно на аспектах самой системы (ее правил и выводов), и не тратить лишнее время на построение графического или командного интерфейса на языках программирования высокого уровня.
Подобные документы
Структура типичной экспертной системы. База данных (рабочая память), её назначение. Функция getsport как экземпляр класса cSport. Алгоритм работы экспертной системы. Реализация пользовательского интерфейса. Результаты тестирования системы пользователем.
курсовая работа [1018,8 K], добавлен 13.06.2012История появления первой экспертной системы DENDRAL. Проектирование и разработка программной экспертной системы, предназначенной для анализа финансового состояния предприятия. Основные предикаты и секции приложения: domains, predicates, clauses, goal.
курсовая работа [1,5 M], добавлен 21.05.2016Структура экспертной системы: база знаний, механизм вывода, система пользовательского интерфейса. Анализ требований, проектирование системы "Подбор сотовых телефонов". Спецификация области, кодирование. Листинг программы, результаты тестирования.
курсовая работа [24,5 K], добавлен 12.05.2013История развития, применение искусственных нейронных сетей. Распознавание образов в сети. Сжатие данных и ассоциативная память. Проектирование экспертной системы, позволяющей диагностировать заболевания органов пищеварения. Программная реализация системы.
курсовая работа [744,0 K], добавлен 05.02.2016Фреймовые модели представления знаний. Разработка структуры фреймов для реализации экспертной системы. Разработка экспертной системы с фреймовой моделью представления знаний. Редактирование базы фактов кандидатов и описание режима консультации.
курсовая работа [1,3 M], добавлен 13.10.2012Аналитический обзор системы управления курсами Moodle, программное построение ее модулей. Разработка структурной схемы и базы знаний экспертной системы. Создание дерева вопросов и выбор алгоритма поиска решений. Анализ возможных угроз и защита информации.
дипломная работа [534,7 K], добавлен 14.12.2013Разработка экспертной системы по выбору языка программирования для данного программного обеспечения. Выбор и обоснование механизма вывода решения. Дерево базы знаний экспертной системы. Программа формирования основного меню, руководство пользователя.
курсовая работа [1,9 M], добавлен 15.08.2012Сущность и назначение экспертной системы, ее основные элементы и предъявляемые требования, обоснование важности и области применения. Методика получения объяснений в результате действия экспертной системы, их виды. Построение модели гибкого интерфейса.
курсовая работа [202,4 K], добавлен 10.11.2009Разработка программного комплекса, нацеленного на предоставление информации о комплектации персонального компьютера. Входные и выходные данные системы. Описание предметной области. Краткая информация о языке Clips. Проектирование экспертной системы.
курсовая работа [36,0 K], добавлен 23.06.2011Общая характеристика киноиндустрии как предметной области работы. Разработка базы данных и дерева вопросов для получения информации для выбора фильма. Программная реализация экспертной системы. Тестирование системы и создание руководства пользователя.
курсовая работа [1,9 M], добавлен 19.05.2014