31167-1 (Разработка оболочки экспертной системы), страница 2

2016-07-31СтудИзба

Описание файла

Документ из архива "Разработка оболочки экспертной системы", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "31167-1"

Текст 2 страницы из документа "31167-1"

(3 "кашель сначала сухой, затем с мокротой")

(4 "голос хриплый или беззвучный")

(5 "иногда боль при глотании")

(6 "головная боль")

(7 "повышение температуры тела")

(8 "быстрая утомляемость голоса")

(9 "периодический кашель с мокротой")

(10 "охриплость с афонией")

(11 "ощущение неловкости")

(12 "жжение в горле")

(13 "кашель при обострении")

(14 "сухой кашель")

(15 "слизистая покрыта густой слизью ")

(16 "откашливание с прожилками крови"))

(("ларингит острый" (1 2 3 4 5 6 7))

("ларингит хронический катаральный" (1 2 4 8 9))

("ларингит хронический гипертрофический" (1 10 11 12 13))

("ларингит хронический атрофический" (1 2 4 14 15 16)))

4. Разработка меню экспертной системы

обеспечивающего заданные режимы

Для обеспечения наиболее понятной работы с программой разработана иерархическая структура меню.

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

1. Обработка данных, полученных с клавиатуры, и высвечивание водимых и выводимых данных на экране.

2. Поддержка диалога между пользователем и системой.

3. Распознавание ситуации непонимания между пользователем и системой.

4. Обеспечение "дружественности" по отношению к пользователю.

Система интерфейса с пользователем должна эффективно обрабатывать ввод и вывод. Для этого необходимо обрабатывать вводимые и выводимые данные быстро, в ясной и выразительной форме. Необходимо также включить возможность работы с дополнительными средствами такими, как магнитные диски и дополнительные файлы данных.

Кроме того, система интерфейса должна поддерживать соответствующий диалог между пользователем и системой. Диалог - это общая форма консультации с экспертной системой.

Консультация должна завершаться ясным утверждением, выдаваемым системой, и объяснением последовательности вывода, приведшей к этому утверждению.

6. Описание программы на micro-LISP

Структурная схема программы на Лиспе изображена на рис.2. Об основных процедурах написано в разделе "Разработка процедур оболочки", в котором представлены схемы алгоритмов их работы.

Теперь перейдем непосредственно к описанию программы. Главная процедура start запускает процедуру mainmenu (она представлена в виде бесконечного цикла do, также представлены и все подменю: menufiles, menubd и т.д.). Mainmenu рисует главное меню и здесь же с помощью выражения cond и eq? организованно получение выбора и запуск выбранной процедуры.

Процедура saving осуществляет запись БД в файл с помощью встроенного выражения with-output-to-file и функции write (все это организованно в виде lambda-выражения).

Загрузка файла (процедура loading) происходит с помощью встроенных with-input-from-file и read (причем БД болезней представлена в виде списка *it_is*, а симптомов в виде списка *simptom*).

Постановка диагноза осуществляется с помощью функции experting. Из БД выбирается болезнь ill, берется список ее симптомов spis_num и с помощью функции exp_ill (spis_num,ill) определяется, есть ли у пользователя эти симптомы. Если эта функция будет ложной (на запрос пользователь ответил отрицательно), то произойдет рекурсивный вызов функции experting от конца списка болезней (т.е. в дальнейшем будет выбрана следующая и т.д.).В процессе работы функции с помощью функции set! формируются списки положительных и отрицательных ответов пользователя *yes* и *no*. Если функция experting выполнила свою работу и диагноз поставлен успешно, то функция log_out (объяснение логического вывода) выводит на экран название определенной болезни и ее симптомы (функция использует для этого функцию cond и рекурсию).

В режиме просмотра списка болезней и симптомов (view_ill) используется cond и рекурсивный вызов функции от хвоста списка, что позволяет вывести все содержимое БД на экран.

В режиме добавления болезней (add_ill) и симптомов (add_sym) используется встроенная функция append (для соединения списков), а рекурсивный вызов функции addsyms обеспечивает возможность добавления к болезни нескольких симптомов. При редактировании болезней (red_ill) и симптомов (red_sym) старое значение удаляется с помощью функции delete! (удаление элемента из списка), а новое обавляется с помощью append.

Удаление болезней (del_ill) осуществляется с помощью функции delete!. При удалении болезни автоматически удаляются и все ее симптомы (рекурсивно вызывая сама себя от конца удаляемого списка признаков функция delsyms последовательно удаляет все симптомы этой болезни).

Удаление симптома (del_sym) также осуществляется с помощью delete!, но при этом с помощью функции append формируется новый список симптомов болезни, симптом которой удаляется. Затем происходит удаление болезни со старым списком симптомов {(set! *it_is* (delete! (list ill spis_nums) *it_is))} и добавление к списку *it_is* этой же болезни с новым списком.

7. Краткое описание встроенных предикатов и функций microLISP, используемых в программе

Окна

Окна являются объектами, подобными "портам", которые представляют собой прямоугольные области на экране. Предикат WINDOW? определяет, действительно ли заданный объект является портом, представляющим окно на экране. Все интерактивные окна ввода-вывода представляются посредством окон, включая ввод-вывод, обеспечиваемый портами STANDARD-INPUT и STANDARD-OUTPUT. Новые окна-порты создаются и открываются с помощью MAKE-WINDOW; их атрибуты доступны с помощью WINDOW-GET-ATTRIBUTE и модифицируются WINDOW-SET-ATTRIBUTE!

Окна до тех пор не выводятся на экран, пока область для них не очистится с помощью WINDOW-CLEAR. WINDOW-DELETE очищает область экрана, занятого окном. WINDOW-POPUP и WINDOW-POPUP-DELETE выдают несколько перекрывающихся окон.

Позиция окна на экране и размер его строк и столбцов устанавливаются WINDOW-GET-POSITION и WINDOW-GET-SIZE, соответственно; модификация выполняется WINDOW-SET-POSITION! и WINDOW-SET-SIZE!.

Модификация позиции и размеров окна может быть выполнена перед тем, как окно изначально выводится на экран по WINDOW-CLEAR. Позиция курсора устанавливается с помощью WINDOW-GET-CURSOR и изменяется WINDOW-SET-CURSOR!. Курсор появляется на экране только тогда, когда ввод производится с клавиатуры.

FLUSH-INPUT

Процедура FLUSH-INPUT чистит буфер вводного порта.

Формат (FLUSH-INPUT {port})

Параметр port- вводной порт (необязательный аргумент).

Объяснение:

FLUSH-INPUT отбрасывает любые литеры и включает следующую "последовательность конца строки" (end-of-line) в буфер ввода, который связан с port, если он задан, или с текущим вводным портом. Выдается неопределенное значение.

LAST-PAIR

Возвращает последнюю пару непустого списка.

LIST

Композиции пар, связанных через их cdr-компоненты, называются списками. Пустой список, обозначаемый как (), также является списком. Когда цепочка cdr-связей в паре оканчивается пустым списком, тогда пара называется "собственным списком". Процедура LIST обеспечивает такой список, состоящий из значений его аргументов. LIST* обеспечивает похожий список, но имеющий значение его последнего аргумента в cdr-компоненте последней пары цепочки.

MEMBER

MEMBER, MEMQ, MEMV

Процедура

Данные процедуры выдают подсписок, начинающийся с некоторого специфического объекта в собственном списке.

Формат (MEMBER оbj list)

(MEMQ оbj list)

(MEMV оbj list)

Параметры obj - любой объект в "ЛИСП-МИКРО";

list - собственный список

Объяснение:

Данные процедуры ищут первое появление obj в list, используя EQVAL? для сравнения (в случае MEMBER); при MEMQ используется EQ?; при MEMV - EQV? Если obj найден, подсписок, содержащий obj как первый элемент, выдается как результат. Если obj не найден в list, выдается "ложь".

DO

Специальное выражение

DO обеспечивает наиболее общую возможность вычисления итераций.

Формат

(DO ((var (init {step}})...)(test exp ...) stmt ...)

Параметры var - любой идентификатор "ЛИСП-МИКРО";

init - любые выражения в "ЛИСП-МИКРО".

Вычисляется каждое init; результат используется как значение соответствующего var.

Этот аргумент необязательный;

step... - любые выражения "ЛИСП-МИКРО".

Вычисляется каждое init; результат используется как значение соответствующего var для следующей итерации. Этот необязательный аргумент может быть описан, только если описан init;

test - любое выражение "ЛИСП-МИКРО". Это выражение является условием, по которому итерация останавливается;

exp... - любые выражения "ЛИСП-МИКРО". Эти выражения вычисляются перед выходом из цикла;

stmt... - любые выражения "ЛИСП-МИКРО". Эти выражения вычисляются по порядку каждый раз как test возвращает "ложь".

8. Отладка программы

Для удобства отладки программа писалась не вся сразу, а постепенно, отдельными процедурами. Каждая процедура сначала отлаживалась и проверялась, а потом разрабатывалась следующая. После проверки каждой процедуры в отдельности отлаживалась вся программа целиком и устранялись последние недоработки и ошибки.

9. Инструкция пользователю и пример выполнения программы

Необходимые аппаратные средства

Для работы данной программы необходимо: - компьютер : желательно IBM PC AT или XT; - оперативная память - не менее 512 Кb; - места на винчестере (или любом другом запоминающем устройстве)- не менее 100 Kb (в зависимости от размера базы данных); - дисплей с любой графической картой; - операционная среда - MS-DOS версии 3.0 и выше.

Состав носителей данных:

Для нормальной работы программы необходимо наличие следующих файлов:

fun.lsp - файл запуска (файл содержащий всю программу);

bd2.lsp - файл базы данных (или любой другой файл, содержащий базу данных пользователя);

Для запуска программы нужно войти в Лисп, загрузить файл fun.lsp, набрать start и нажать клавишу {ENTER}.

Описание работы с программой

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

- для выбора нужного пункта меню/подменю нужно набрать номер этого пункта;

- для перехода из нижнего подменю в исходное меню/подменю нужно

нажать клавишу {ESC};

- для выхода из программы нужно выбрать пункт главного меню .

Работа с подменю :

- для работы с пунктом :

- наберите на клавиатуре название нужного вам файла базы данных и нажмите клавишу {ENTER};

- для работы с пунктом :

- наберите имя файла и нажмите {ENTER}.

Работа с подменю :

- для работы с пунктом нужно:

- выбрать будете ли Вы редактировать названия неисправностей или признаков (нажать соответственно цифру {1} или {2});

- ввести название неисправности или признака для редактирования;

- ввести новые исправленные значения;

- для работы с пунктом нужно:

- выбрать будете ли Вы добавлять названия неисправностей или

признаков (нажать соответственно цифру {1} или {2});

- путем ввода информации с клавиатуры внести новую запись;

- для работы с пунктом нужно:

- выбрать будете ли Вы удалять названия неисправностей или

признаков (нажать соответственно цифру {1} или {2});

- ввести название удаляемой неисправности или признака;

- для работы с пунктом необходимо знать, что:

- информацию на экране можно менять, нажимая клавишу {ESC}.

Работая с подменю , нужно:

- отвечать на вопросы (набирать соответственно 'Д' или 'Н' и нажимать клавишу {ENTER}).

Заключение

В данной работе была реализована идея создания фрагмента оболочки экспертной системы. В результате разработки КПР была получена интегрированная среда по диагностике заболеваний. К плюсам данной программы можно отнести довольно поверхностные знания пользователя по работе с компьютером, которые требуются для работы с ней.

Среди возможных пожеланий можно сказать о разработке системы помощи при работе с программой. Можно также усложнить программу, переписав ее так, чтобы она работала на основе рассуждений с использованием вероятностного подхода. Часто к экспертным системам предъявляют дополнительное требование - способность иметь дело с неопределенностью и неполнотой. Информация о поставленной задаче может быть неполной или ненадежной; отношения между объектами предметной области могут быть приближенными. Например, может не быть полной уверенности в наличии у пользователя некоторого симптома или в том, что данные, полученные при определении, верны. Во всех этих случаях как раз и необходимы рассуждения с использованием вероятностного подхода.

Приложение А

Полный текст программы на языке micro-LISP (файл "FUN.LSP):

(define mainw(make-window "ДОКТОР" #!true))

(define mmenuw(make-window "МЕНЮ" #!true))

(define menufw(make-window "__ФАЙЛЫ" #!true))

(define menudbw(make-window "БазаДанных" #!true))

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее