Реферат по предмету "Программирование"


Разработка фрагментов оболочки экспертной системы

Государственный комитет Российской Федерации по Высшему Образованию Московский Государственный институт радиотехники, электроники и автоматики Факультет Кибернетики Кафедра ИТС Курсовой проект Дисциплина Фунциональное программирование Тема Разработка фрагментов оболочки экспертной системы Задание Л.10 Студент Рыбина М. А. Группа АИ-1-93 Руководитель

Холкин И.И. МОСКВА 1996 Содержание Задание 3 Введение 1. Название программы и ее автор 2. Анализ предметной области 3. Выбор способа представления знаний 4. Разработка меню экспертной системы 5. Разработка процедур оболочки 6. Описание программы на micro-LISP 7. Краткое описание встроенных предикатов и функций micro-

LISP, используемых в программе 8. Отладка программы 9. Инструкция пользователю и пример выполнения 23 Заключение 24 Библиографический список 26 Приложение А 27 Приложение В 35 Задание л.10 на курсовое проектирование по дисциплине Функциональное программирование студенту Рыбиной Марине

Анатольевне группа АИ-1-1. Тема исследования Разработка фрагментов оболочки экспертной системы. 2. Исходные данные 2.1 Предметная область - заболевания гортани ларингит острый, ларингит хронический катаральный, ларингит хронический гипертрофический, ларингит хронический атрофический 2.2 Язык программирования microLISP 3. Перечень вопросов, подлежащих разработке 3.1 Провести анализ предметной области и выбрать способ представления знаний 3.2

Разработать меню, обеспечивающее взаимодействие пользователя с системой, предусмотрев режимы 2.1 Добавления в БЗ 2.2 Загрузки БЗ 2.3 Просмотра 2.4 Корректировки 2.5 Сохранения 2.6 Удаления 2.7 Логического вывода 2.8 Объяснения логического вывода 4. Перечень графических материалов 4.1 Структура меню 4.2

Структурная схема программы 5. Календарный план-график 5.1 Получение задания 5.2 Анализ задания, постановка задачи, подбор литературы 5.3 Анализ предметной области и проектирование БЗ 5.4 Разработка меню и структуры программы 5.5 Разработка процедур оболочки экспертной системы 5.6 Отладка программы 5.7 Оформление пояснительной записки и сдача на проверку 14.05.96 8.

Защита 05.96 Руководитель Холкин И.И. Студент Рыбина М.А Введение Сегодня всем, кто работает в области информатики или интересуется этой новой областью науки, известен термин экспертные системы. Экспертная система expert system, knowledge based system - это программная система, знания и умения которой сравнимы с умением и знаниями специалистов в какой-нибудь специальной области знаний. Экспертные системы вместе с системами обработки естественных языков являются

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

В этой работе разрабатывается экспертная система, связанная с диагностикой заболеваний. 1. Название программы и ее автор Данная программа FUN.LSP написана на языке microLISP в текстовом редакторе NortonEdit. Программа работает с базой знаний, находящейся в отдельном файле. В данном случае - BD2.LSP. Программу разработали студенты группы

АИ-1-93 Частухин Виталий и Рыбина Марина. Необходимо отметить, что в работе использованы материалы соответствующих разработок студентов группы АИ-1-2. Анализ предметной области В данной курсовом проекте предметную область составляют заболевания гортани, а именно ларингит острый, ларингит хронический катаральный, ларингит хронический гипертрофический, ларингит хронический атрофический. У каждой болезни имеется набор признаков или, выражаясь медицинскими терминами, симптомов.

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

катаральныйларингит хронический гипертрофическийларингит хронический атрофический1. общее недомогание2. сухость першение, саднение3. кашель сначала сухой, затем с мокротой4. голос хриплый или беззвучный5. иногда боль при глотании6. головная боль7. повышение температуры тела8. быстрая утомляемость голоса9. периодический кашель с мокротой10. охриплость с афонией11. ощущение неловкости12. жжение в горле13. кашель при обострении14. сухой кашель15. слизистая покрыта густой слизью16. откашливание с прожилками

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

Некоторые экспертные системы могут также использовать новую информацию, добавляемую во время консультации. Экспертную систему, таким образом, можно представлять состоящей из трех частей 1. База знаний БЗ 2. Механизм вывода МВ 3. Система пользовательского интерфейса СПИ База знаний - центральная часть экспертной системы. Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области

применения системы. Можно представлять базу знаний состоящей из фактических знаний и знаний, которые используются для вывода других знаний. Утверждение Джон Ф. Кеннеди был 35-м президентом Соединенных Штатов - пример фактического знания. Если у вас болит голова, то примите две таблетки цитрамона - пример знания для вывода. Сама база знаний обычно располагается на диске или другом носителе.

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

в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Механизм вывода выполняет правила, определяет когда найдено приемлемое решение и передает результаты программе интерфейса с пользователем. Когда вопрос должен быть предварительно обработан, то доступ к базе знаний осуществляется через интерфейс с пользователем. Интерфейс - это часть экспертной системы, которая взаимодействует с пользователем.

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

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

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

методов и целей вывода. Базы знаний и способы представления Продукционная модель Это один из наиболее часто используемых в экспертных системах способов представления знаний. Основная идея заключается в ассоциировании с соответствующими действиями набора условий в виде правил типа если-то, называемых также продукциями ЕСЛИ условие ТО действия Если-то-правила обычно оказываются весьма естественным выразительным средством представления

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

к объяснению принятых решений и полученных результатов. Однако продукционные системы не свободны от недостатков - процесс вывода менее эффективен, чем в других системах, поскольку большая часть времени при выводе затрачивается на непроизводительную проверку применимости правил - этот процесс трудно поддается управлению - сложно представить родовидовую иерархию понятий. Фреймы Представление знаний, основанное на фреймах, является альтернативным по отношению к системам

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

найти. В слот может входить не одно, а несколько значений. Иногда слот включает компонент, называемый фасетом, который задает диапазон или перечень его возможных значений. Фасет указывает также граничные значения заполнителя слота. Совокупность фреймов, моделирующая какую-нибудь предметную область, представляет собой иерархическую структуру, в которую фреймы соединяются с помощью родовидовых связей.

На верхнем уровне иерархии находится фрейм, содержащий наиболее полную информацию, истинную для всех остальных фреймов. Фреймы обладают способностью наследовать значения характеристик своих родителей, находящихся на более высоком уровне иерархии. Значения характеристик фреймов могут передаваться по умолчанию фреймам, находящимся ниже них в иерархии, но если последние содержат собственные значения данных характеристик, то в качестве истинных принимаются именно они. Наиболее ярко достоинства фреймовых систем представления

знаний проявляются в том случае, если родовидовые связи изменяются нечасто и предметная область насчитывает немного исключений. Во фреймовых системах данные о родовидовых связях хранятся явно, т.е. так же, как и значения всех других типов. Значения слотов представляются в системе в единственном экземпляре, поскольку включаются только в один фрейм, описывающий наиболее общее понятие из всех тех, которые содержат слот с данным именем. Такое свойство систем фреймов дает возможность уменьшить объем памяти, необходимый

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

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

свойства объектов. Свойства представляются в сети также в виде вершин и служат для описания классов объектов. Вершины сети соединяются дугой, если соответствующие объекты предметной области находятся в каком-либо отношении. Как и в системе, основанной на фреймах, в семантической сети могут быть представлены родовидовые отношения, которые позволяют реализовать наследование свойств от объектов-родителей. Это обстоятельство приводит к тому, что семантические сети приобретают большинство недостатков и достоинств

представления знаний в виде фреймов. Но основное преимущество семантических сетей заключается в их наглядности и непосредственной связанности понятий через сеть, которая позволяет быстро находить связи понятий и на этой основе управлять принимаемыми решениями. Именно этот формализм был использован в данной работе в качестве формализма для представления знаний в БЗ. Основной недостаток сетей - сложность обработки исключений.

Таким образом, используя данные понятия, наша ПО на языке microLISP представляется следующим образом 1 общее недомогание 2 сухость, першение, саднение 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. Обеспечение дружественности по отношению к пользователю.

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

Консультация должна завершаться ясным утверждением, выдаваемым системой, и объяснением последовательности вывода, приведшей к этому утверждению. Структурная схема системы меню представлена на рис.1 Главное меню 1.Files 2.DataBase 3.Diagnosticka 4.Quit 1. LOAD 2. SAVE 1. ADD 2. DELETE 3. REDACT 4. VIEW Добавление Добавление Удаление Удаление Редактирование Редактирование симптомов болезней симптомов неисправностей

симптомов неисправностей Объяснение логического вывода рис.1 Структурная схема меню 5. Разработка процедур оболочки 1. Процедура Загрузка loading загрузка БД производится путем загрузки файла с именем, указанным пользователем, в оперативную память для использования его содержимого в программе. Вход Ввод имени файла для загрузки Загрузка файла с этим именем

Выход 2. Процедура Сохранение saving сохранение БД означает запись ее содержимого из оперативной памяти в файл с именем, указанным пользователем. Эта процедура позволяет сохранить изменения, произведенные с БД во время работы. Вход Ввод имени файла для записи Запись БД в файл с этим именем Выход 3. Процедура Добавление adding добавление делится на добавление симптомов и добавление болезней. В первом случае запрашивается название болезни, к которой нужно добавить

симптом, затем вводится симптом, и происходит добавление. Имеется возможность добавить сразу несколько симптомов. Вход Ввод названия болезни Ввод симптома Добавление симптома к введенной ранее болезни - Еще Выход Добавление болезни осуществляется путем введения с клавиатуры нового названия болезни и ее симптомов для окончания ввода симптомов необходимо набрать end.

Добавление происходит в конец БД. Вход Ввод названия болезни Ввод симптома end Добавление болезни и всех ее симптомов Выход 4. Процедура Просмотр viewing осуществляется просмотр всей БД, содержащейся в данный момент в оперативной памяти. Вход Вывод названия болезни Вывод симптомов этой болезни

Пуста БД Выход 5. Процедура Логический вывод expert консультация осуществляется следующим образом с помощью задания вопросов пользователю о том, есть ли у него какой-то симптом, программа определяет диагноз. В процессе работы процедура в оперативной памяти формирует временные динамические базы данных БД-YES БД, содержащая симптомы, на которые пользователь ответил Да и БД-NO БД, содержащая симптомы, на которые пользователь ответил

Нет. Для того, чтобы процедура вывела диагноз, необходимо, чтобы пользователь ответил Да на все вопросы о симптомах, характеризующих эту болезнь. Схема алгоритма данной процедуры представлена ниже. Вход конец Выбор болезни из БД Выход Выбор конец симптома этой болезни Вывод этой болезни Он Выход есть в БД- YES Он есть в

БД- NO Вывод вопроса о том, есть ли у пользователя этот симптом Добавить его в Добавить его БД-YES в БД-NO Да 6. Процедура Объяснение логического вывода logout данная процедура выводит список симптомов болезни, которая была получена с помощью процедуры логического вывода, объясняя этим ее диагноз. Вход Выбор определенной болезни из БД Вывод симптомов этой болезни

Выход 7. Процедура Удаление deleting удаление делится на удаление симптомов и удаление болезней. При удалении симптома необходимо ввести название болезни, которой принадлежит симптом, подлежащий удалению, а также название самого симптома. Имеется возможность удалить несколько симптомов у болезни для окончания ввода удаляемых признаков необходимо набрать end. Вход Ввод названия болезни Ввод симптома, под- лежащего удалению

End Выход - При удалении болезни запрашивается ее название. Вместе с ней из БД удаляются и все ее симптомы. Вход Ввод названия болезни Удаление этой болезни и всех ее симптомов Выход 8. Процедура Редактирование redacting редактирование делится на редактирование симптомов и редактирование болезней. В первом случае вводится название болезни, симптом которой нужно исправить, сам симптом и

его отредактированное значение. Из БД удаляется старое значение симптома и добавляется новое. Вход Ввод названия болезни Ввод симптома для исправления Удаление этого симптома Ввод исправленного симптома Добавление нового значения Выход При редактировании болезни необходимо ввести ее название и затем новое исправленное значение. Процедура удалит старое значение и добавит новое.

Вход Ввод названия болезни Удаление этой болезни Ввод исправленного значения Добавление нового значения Выход рис. 2 Структурная схема программы Start mainmenu menufiles menubd menucons quit logout loading saving adding deleting viewing redacting plus plussym delill delsym redill redsym 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 причем БД болезней представлена в виде списка itis, а симптомов в виде списка simptom.

Постановка диагноза осуществляется с помощью функции experting. Из БД выбирается болезнь ill, берется список ее симптомов spisnum и с помощью функции expill spisnum,ill определяется, есть ли у пользователя эти симптомы. Если эта функция будет ложной на запрос пользователь ответил отрицательно, то произойдет рекурсивный вызов функции experting от конца списка болезней т.е. в дальнейшем будет выбрана следующая и т.д

В процессе работы функции с помощью функции set формируются списки положительных и отрицательных ответов пользователя yes и no. Если функция experting выполнила свою работу и диагноз поставлен успешно, то функция logout объяснение логического вывода выводит на экран название определенной болезни и ее симптомы функция использует для этого функцию cond и рекурсию. В режиме просмотра списка болезней и симптомов viewill используется cond и рекурсивный вызов функции

от хвоста списка, что позволяет вывести все содержимое БД на экран. В режиме добавления болезней addill и симптомов addsym используется встроенная функция append для соединения списков, а рекурсивный вызов функции addsyms обеспечивает возможность добавления к болезни нескольких симптомов. При редактировании болезней redill и симптомов redsym старое значение удаляется с помощью функции delete удаление элемента из списка, а новое обавляется с помощью append.

Удаление болезней delill осуществляется с помощью функции delete. При удалении болезни автоматически удаляются и все ее симптомы рекурсивно вызывая сама себя от конца удаляемого списка признаков функция delsyms последовательно удаляет все симптомы этой болезни. Удаление симптома delsym также осуществляется с помощью delete, но при этом с помощью функции append формируется новый список симптомов болезни, симптом которой удаляется.

Затем происходит удаление болезни со старым списком симптомов set itis delete list ill spisnums itis и добавление к списку itis этой же болезни с новым списком. 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. Заключение В данной работе была реализована идея создания фрагмента оболочки экспертной системы. В результате разработки КПР была получена интегрированная среда по диагностике заболеваний. К плюсам данной программы можно отнести довольно поверхностные знания пользователя по работе с компьютером, которые требуются для работы с ней. Среди возможных пожеланий можно сказать о разработке системы помощи

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

пользователя некоторого симптома или в том, что данные, полученные при определении, верны. Во всех этих случаях как раз и необходимы рассуждения с использованием вероятностного подхода. Библиографический список 1. Ин Ц Соломон Д. Использование Турбо-Пролога Пер. с англ. -Мир, 1993 608 с. 2. Таусенд К Фохт Д. Проектирование и программная реализация экспертных систем на персональных

ЭВМ Пер. с англ М. Финансы и статистика, 1990 320 с. 3. Хювенен Э Сеппянен Й. Мир Лиспа. В 2-х т. Пер. с финск М. Мир, 1990. Приложение А Полный текст программы на языке micro-LISP файл FUN.LSP define mainwmake-window ДОКТОР true define mmenuwmake-window МЕНЮ true define menufwmake-window ФАЙЛЫ true define menudbwmake-window

БазаДанных true define menucwmake-window ДИАГНОСТИКА true define viewwmake-window ПРОСМОТР true define addiwmake-window ДОБАВЛЕНИЕ БОЛЕЗНИ true define addswmake-window ДОБАВЛЕНИЕ СИМПТОМОВ true define rediwmake-window РЕДАКТИРОВАНИЕ БОЛЕЗНИ true define redswmake-window РЕДАКТИРОВАНИЕ СИМПТОМА true define deliwmake-window УДАЛЕНИЕ БОЛЕЗНИ true define delswmake-window

УДАЛЕНИЕ СИМПТОМА true define submenuwmake-window Работа с true define menulwmake-window Введите ИМЯ ФАЙЛА true define f define symptom define itis define yes define no define start window-set-position mainw 1 1 window-set-size mainw 23 78 window-clear mainw mainmenu Главное меню define mainmenu define ch Window-Set-Position mmenuw 3 15 Window-Set-Size mmenuw 1 47 Window-Clear mmenuw display 1.Files 2.DataBase 3.Diagnosticka 4.Quit mmenuw

do i 0 i 0 i 5i Window-Set-Cursor mainw 22 30 display Ваш выбор mainw set ch read-char mainw Window-Set-Cursor mainw 22 30 display mainw cond eq ch 1 menufiles eq ch 2 menudb eq ch 3 menucons eq ch 4 exit Меню Файлов define menufiles define ch Window-Set-Position menufw 5 16 Window-Set-Size menufw 4 8 Window-Clear menufw Window-Set-Cursor menufw 1 1 display 1.LOAD menufw

Window-Set-Cursor menufw 2 1 display 2.SAVE menufw do i 0 i 0 i 5i Window-Set-Cursor mainw 22 30 display ВАШ ВЫБОР mainw set ch read-char mainw Window-Set-Cursor mainw 22 30 display mainw cond eq ch 1 loading eq ch 2 saving eq ch ESCAPE Window-Delete menufw mainmenu Меню БазыДанных define menudb define ch Window-Set-Position menudbw 5 26 Window-Set-Size menudbw 6 10

Window-Clear menudbw Window-Set-Cursor menudbw 1 1 display 1.ADD menudbw Window-Set-Cursor menudbw 2 1 display 2.DELETE menudbw Window-Set-Cursor menudbw 3 1 display 3.REDACT menudbw Window-Set-Cursor menudbw 4 1 display 4.VIEW menudbw do i 0 i 0 i 5i Window-Set-Cursor mainw 22 30 display ВАШ ВЫБОР mainw set ch read-char mainw

Window-Set-Cursor mainw 22 30 display mainw cond eq ch 1 adding menudb eq ch 2 deleting menudb eq ch 3 redacting menudb eq ch 4 viewing menudb eq ch ESCAPE Window-Delete menudbw mainmenu Загрузка файла define loading Window-Set-Position menulw 20 20 Window-Set-Size menulw 1 40 Window-Clear menulw Window-Set-Cursor menulw 1 3 set f read-line menulw

Window-Delete menulw with-input-from-file f lambda set symptom read set itis read flush-input Запись файла define saving Window-Set-Position menulw 20 20 Window-Set-Size menulw 1 40 Window-Clear menulw Window-Set-Cursor menulw 2 3 set f read-line menulw Window-Delete menulw with-output-to-file f lambda write symptom write itis

Меню диагностики define menucons Window-Set-Position menucw 6 10 Window-Set-Size menucw 17 57 Window-Clear menucw experting itis window-delete menucw define experting spisill cond null spisill board display НЕВОЗМОЖНО ОПРЕДЕЛИТЬ ДИАГНОЗ menucw wait menucw set yes set no expill cadar spisill caar spisill t experting cdr spisill define expill spisnum ill define nums define s cond null spisnum window-clear menucw window-

set-cursor menucw 1 1 display У ВАС menucw display ill menucw display . menucw set nums findsym ill itis set yes set no logout nums t set s findsym car spisnum symptom yesno s spisnum ill define into y a cond eq a д set yes append yes list y t set no append no list y define yesno y spisnum ill define ans cond member y no nil member y yes expill cdr spisnum ill t and board display СИМПТОМ menucw display y menucw display ДН menucw set ans read menucw into y ans eq д ans expill cdr

spisnum ill define logout nums cond null nums wait menucw t newline menucw display menucw display findsym car nums symptom menucw logout cdr nums define board define gr set gr window-get-cursor menucw if car gr 18 newline menucw begin window-clear menucw window-set-cursor menucw 1 1 define findsym n spissym if equal caar spissym n cadar spissym findsym n cdr spissym define wait wname cond eq read-char wname ESCAPE t t wait wname Просмотр define viewing Window-

Set-Position vieww 11 15 Window-Set-Size vieww 12 47 Window-Clear vieww viewill itis window-delete vieww define viewill spisill cond null spisill t t window-set-cursor vieww 1 2 display БОЛЕЗНЬ vieww display caar spisill vieww viewsym cadar spisill viewill cdr spisill define viewsym spisnum cond null spisnum wait vieww window-clear vieww t newline vieww display vieww display findsym car spisnum symptom vieww viewsym cdr spisnum

Вспомогательное подменю define submenu Window-Set-Position submenuw 11 25 Window-Set-Size submenuw 4 14 Window-Clear submenuw window-set-cursor submenuw 1 1 display 1.БОЛЕЗНЯМИ submenuw window-set-cursor submenuw 2 1 display 2.СИМПТОМАМИ submenuw Добавление define adding define ch submenu Window-Set-Cursor mainw 22 30 display ВАШ ВЫБОР mainw set ch read-char mainw

Window-Set-Cursor mainw 22 30 display mainw window-delete submenuw cond eq ch 1 Window-Set-Position addiw 6 10 Window-Set-Size addiw 17 57 Window-Clear addiw addill window-delete addiw eq ch 2 Window-Set-Position addsw 6 10 Window-Set-Size addsw 17 57 Window-Clear addsw addsym window-delete addsw eq ch

ESCAPE t adding define ill define sym Добавление болезни define addill define n window-set-cursor addiw 1 1 display Введите название новой БОЛЕЗНИ addiw set ill read-line addiw display Чтобы ЗАКОНЧИТЬ вводить симптомы НАБЕРИТЕ end addiw newline addiw set n caar last-pair symptom set itis append itis list list ill addsyms n 1 addiw Добавление симптомов define addsym define n define nums window-set-cursor addsw 1 2 display БОЛЕЗНЬ addsw set ill read-line addsw display

Чтобы ЗАКОНЧИТЬ вводить симптомы НАБЕРИТЕ end addsw newline addsw set n caar last-pair symptom set nums findsym ill itis set itis delete list ill nums itis set itis append itis list list ill addsyms n 1 nums addsw define addsyms nn spisnum nums nwin display СИМПТОМ nwin set sym read-line nwin if equal sym end append nums spisnum begin set symptom append symptom list list nn sym addsyms nn 1 append spisnum list nn nums nwin Редактирование define redacting define ch submenu

Window-Set-Cursor mainw 22 30 display ВАШ ВЫБОР mainw set ch read-char mainw Window-Set-Cursor mainw 22 30 display mainw window-delete submenuw cond eq ch 1 Window-Set-Position rediw 11 10 Window-Set-Size rediw 6 57 Window-Clear rediw redill window-delete rediw eq ch 2 Window-Set-Position redsw 11 10 Window-Set-Size redsw 8 57

Window-Clear redsw redsym window-delete redsw eq ch ESCAPE t redacing Редактирование болезни define redill define nums define ill1 window-set-cursor rediw 1 1 display Введите БОЛЕЗНЬ, название которой хотите rediw newline rediw display ИСПРАВИТЬ rediw set ill read-line rediw newline rediw display Введите ИСПРАВЛЕННОЕ название rediw set ill1 read-line rediw set nums findsym ill itis set itis delete

list ill nums itis set itis append itis list list ill1 nums Редактирование симптома define redsym define n1 define nums define sym1 window-set-cursor redsw 1 1 display Введите БОЛЕЗНЬ, СИМПТОМ которой хотите redsw newline redsw display ИСПРАВИТЬ redsw set ill read-line redsw newline redsw display Введите СИМПТОМ, который хотите redsw newline redsw display

ИСПРАВИТЬ redsw set sym read-line redsw display Введите ИСПРАВЛЕННОЕ ЗНАЧЕНИЕ redsw set sym1 read-line redsw set nums findsym ill itis set n1 sub sym symptom nums set symptom delete list n1 sym symptom set symptom append symptom list list n1 sym1 define sub x spis spisx let n findindex x spis cond memb n spisx n t sub x cdr spis spisx define findindex x spis cond equal cadar spis x caar spis t findindex x cdr spis define memb a l cond null l nil equal a car

l t t memb a cdr l Удаление define deleting define ch submenu Window-Set-Cursor mainw 22 30 display ВАШ ВЫБОР mainw set ch read-char mainw Window-Set-Cursor mainw 22 30 display mainw window-delete submenuw cond eq ch 1 Window-Set-Position deliw 11 10 Window-Set-Size deliw 4 57 Window-Clear deliw delill window-delete deliw eq ch 2

Window-Set-Position delsw 6 10 Window-Set-Size delsw 17 57 Window-Clear delsw delsym window-delete delsw eq ch ESCAPE t deleting Удаление болезни define delill define nums window-set-cursor deliw 1 2 display Введите название БОЛЕЗНИ, которую хотите deliw newline deliw display УДАЛИТЬ deliw set ill read-line deliw set nums findsym ill itis set itis delete list ill nums itis delsyms

nums define delsyms spisnums cond null spisnums t t set symptom delete list car spisnums findsym car spisnums symptom symptom delsyms cdr spisnums Удаление симптомов define delsym define nums window-set-cursor delsw 1 2 display Введите название БОЛЕЗНИ, СИМПТОМЫ которой хотите delsw newline delsw display УДАЛИТЬ delsw set ill read-line delsw display Чтобы

ЗАКОНЧИТЬ вводить симптомы НАБЕРИТЕ end delsw newline delsw set nums findsym ill itis subdel nums ill define n0 define subdel spisnums ill display СИМПТОМ delsw set sym read-line delsw if equal sym end t begin set n0 sub sym symptom spisnums set symptom delete list n0 sym symptom set itis delete list ill spisnums itis set itis append itis list list ill del n0 spisnums subdel del n0 spisnums ill define del x l cond null l nil equal x car l cdr l t cons car l del x cdr l

Приложение В Листинг файла базы знаний BD2.LSP 1 общее недомогание 2 сухость, першение, саднение 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



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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.