Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №6 / Лабораторная работа №6 мед.doc
Скачиваний:
61
Добавлен:
09.05.2015
Размер:
430.59 Кб
Скачать

Ход работы

  1. Изучить теоретические сведения, описанные выше в данных методических указаниях.

  2. На примере приведённом ниже, создать медицинскую СППР согласно варианту задания, выданного преподавателем.

  3. Создать универсальный пользовательский web- интерфейс СППР. Для этого проделать последовательность действий:

  • Открыть Студию и создать новую CSP– страницу. Сохранить страницу под именемexpsys.csp. Дописать серверный скрипт (см. Листинг 1), заключённый в теги <script language="cache" runat="server"> … </script>. Данная программа генерирует наWeb– странице форму, состоящую из нескольких списков, содержащих признаки исследуемого объекта.

  • Создать новую CSP– страницу. Сохранить страницу под именемquery.csp. Дописать серверный скрипт (см. Листинг 2), заключённый в теги <script language="cache" runat="server"> … </script>. Данная программа производит анализ и обработку пользовательских данных и выводит результат наWeb– страницу.

  • Создать собственную базу знаний по варианту задания (файл expsys.int) – это программа на языкеCacheObjectScript.

  • Продемонстрировать разработанную систему ППР преподавателю.

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

Листинг 1 – Формирование исходных данных (страница expsys.csp).

<html><head><title> Экспертная система </title></head><body background="E:\img5.jpg"><center><font color="#ff0000" size="7"><em>Экспертная система </em></font></center><br><br><script language="cache" runat="server">k ^Animald ^expsys k ^q//Определение количества характеристик объекта:s x="^Animal"s ^maxLength=0f {Set x=$Q(@x)Quit:x=""if $QL(x)>^maxLength s ^maxLength=$QL(x)}//Построение формы:w "<center>"w "<form method='post' name='expsys' action='query.csp'>"f i=1:1:^maxLength {w "<br><br><br>"w "<font color=""#0000FF"" size=""5"">Признак №",i,"</font>"w "<select name=""Level"_(i)_""">"s x="^Animal"s list=##class(%ListOfDataTypes).%New() // Создание нового спискаw "<option>Значение отсутствует</option>"f {Set x=$Q(@x)Quit:x=""If (list.Find($QS(x,i))="") & ($QS(x,i)'="") {w "<option value="""_($QS(x,i))_""">"_($QS(x,i))_"</option>"}d list.Insert($QS(x,i))}w "</select>"}w !,"<p><input type='submit' value='Определить'></p>"w "</form>"w "</center>"</script></body></html>

Листинг 2 – Получение экспертного вывода (страница query.csp).

<html> <head> <title> Экспертная система </title> </head> <body background="E:\img5.jpg"> <center><font color="#ff0000" size="7"><em>Экспертная система </em></font></center> <br> <br> <script language="cache" runat="server"> //Получение данных формы со страницы expsys.csp: f i=1:1:^maxLength s ^q(i)=%request.Get("Level"_(i)) //Формирование формы с пользовательскими даными: w "<center>" w "<form method='post' name='expsys' action='query.csp'>" f i=1:1:^maxLength { w "<br><br><br>" w "<font color=""#0000FF"" size=""5"">Признак №",i,"</font>" w "<select name=""Level"_(i)_""">" s x="^Animal" w "<option>Значение отсутствует</option>" s list=##class(%ListOfDataTypes).%New() // Создание нового списка f { Set x=$Q(@x) Quit:x="" If (list.Find($QS(x,i))="") & ($QS(x,i)'="") { if $QS(x,i)'=^q(i) {w "<option value="""_($QS(x,i))_""">"_($QS(x,i))_"</option>" } else { w "<option value="""_($QS(x,i))_""" selected>"_($QS(x,i))_"</option>" } } d list.Insert($QS(x,i)) } w "</select>" } w !,"<p><input type='submit' value='Определить'></p>" w "</form>" w "</center>" //Обработка данных формы,т.е получение экспертного заключения: w "<center><font color=""#FF0000"" size=""7"">" s index="" f i=1:1:^maxLength { if ^q(i)="Значение отсутствует" {q} elseif (i'=^maxLength) && (^q(i+1)="Значение отсутствует") {s index="^Animal("_index_""""_^q(i)_""""_")"} elseif i'=^maxLength {s index=index_""""_^q(i)_""""_","} else { s index="^Animal("_index_""""_^q(i)_""""_")"} } if index="" {w "Нет решения"} elseif $Get(@index)'="" {w @index} else {w "Нет решения"} w "</font></center>" </script> </body> </html>

Примечание:Базой знаний для разработанной универсальной системы ППР (Листинги 1 и 2) является программаexpsys.int. В случае СППРУгадай животное он имеет вид:

Листинг 3 – База знаний (программа expsys.int).

expsys s ^Animal("Состоит из белка")="Животное" s ^Animal("Состоит из белка","Даёт молоко")="Млекопитающее" s ^Animal("Состоит из белка","Имеет перья")="Птица" s ^Animal("Состоит из белка","Даёт молоко","Жуёт жвачку")="Парнокопытное" s ^Animal("Состоит из белка","Даёт молоко","Ест мясо")="Хищник" s ^Animal("Состоит из белка","Имеет перья","Не летает")="Страус или пингвин" s ^Animal("Состоит из белка","Имеет перья","Летает")="Птица способная летать" s ^Animal("Состоит из белка","Даёт молоко","Жуёт жвачку","Тёмные пятна")="Жираф" s ^Animal("Состоит из белка","Даёт молоко","Жуёт жвачку","Тёмные полосы")="Зебра" s ^Animal("Состоит из белка","Даёт молоко","Ест мясо","Тёмные пятна")="Гепард" s ^Animal("Состоит из белка","Даёт молоко","Ест мясо","Тёмные полосы")="Тигр" s ^Animal("Состоит из белка","Имеет перья","Не летает","Не плавает")="Страус" s ^Animal("Состоит из белка","Имеет перья","Не летает","Плавает")="Пингвин" s ^Animal("Состоит из белка","Имеет перья","Летает","Белого цвета")="Чайка" s ^Animal("Состоит из белка","Имеет перья","Летает","Чёрного цвета")="Ворона"

Рисунок 2.1 – Дерево решений для задачи «Угадай животное».

Результаты работы программы СППР представлены на рисунках 3, 4 и 5.

Рисунок 3 – Экспертная система угадай животное. Результат запуска файла expsys.csp.

Рисунок 4 – Экспертный положительный вывод.

Рисунок 5 - Экспертный отрицательный вывод. В базе знаний не содержится животных с совокупностью данных признаков.