Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABRAB1.DOC
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
692.74 Кб
Скачать

2.3. Пример созданиЯ правила

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

Если это животное, не домашнее, цвет - красный, - то это лиса.

На языке, приближенном к системе NEXPERT это выглядело бы так:

Если да животное то Лиса

нет домашнее

является цвет “красный”

Создадим такое правило:

· В главном меню NEXPERT разворачиваем подменю EDIT.

· Вызываем RULE EDITOR.

· В меню среды редактора правил выбираем NEW - ячейки редактора правил активизированы.

· В левой верхней ячейке ЛЧ (которая сейчас затемнена) печатаем Yes (можно нажать правую кнопку мыши и выбрать Yes в раскрывшемся списке).

· Переходим в среднюю ячейку в этой же строке нажатием клавиши ENTER или с помощью стрелки мыши.

· Печатаем animal.

· Нажимаем ENTER - система автоматически переходит на следующую строку.

· В левой ячейке (затемненной в настоящий момент) печатаем No (или выбираем это слово из всплывающего меню).

· Переходим в среднюю ячейку. Печатаем domestic. Нажимаем ENTER.

· Печатаем в левой ячейке Is (или выбираем из всплывающего меню).

· В средней ячейке печатаем color.

· В правой ячейке печатаем “red” (обязательно в кавычках!).

· Ввод условий закончен. Теперь с помощью мыши переходим в ячейку гипотезы.

· Печатаем в ячейке гипотезы fox.

· Сохраняем созданное правило выбором из меню OK.

У Вас должно было получиться следующее:

If

Yes

animal

=>

fox

No

domestic

Actions

Is

color

“red”

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

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

- в меню EXPERT выберите SAVE KNOWLEDGE BASE;

- введите имя базы знаний, например fox.kb;

- нажмите OK.

· База знаний находится в памяти NEXPERTа под именем fox.kb, ее всегда можно вызвать командой LOAD KNOWLEDGE BASE.

2.4. Пример созданиЯ простейшей базы знаний

Теперь попробуем создать простейшую базу знаний от начала и

до конца с просмотром сети правил и обработкой знаний. Ставится

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

п.1) свет - зеленый=> “ехать вперед” light - green => drive_on

скорость > 60 speed > 60

расстояние < 300 rasst < 300

п.2) свет - желтый => “увелич. скор.” light - yellow => speed_up

скорость > 60 speed > 60

расстояние < 100 rasst <100

п.3) “увелич. скор.” => “ехать вперед” speed_up => drive_on

п.4) свет - желтый => “снизить скор.” light - yellow => slow_down

скорость <= 60 speed <=60

расстояние >=100 rasst >=100

п.5) свет - зеленый => “снизить скор.” light - green => slow_down

скорость <= 60 speed <=60

расстояние >= 300 rasst >=300

п.6) “снизить скор.” => “стоп” slow_down => stop

п.7) свет - красный => “стоп” light - red => stop

(по желанию можно дополнить или изменить эти правила)

Ввод правил

· Войдите в редактор правил RULE EDITOR. Выберите NEW для ввода первого правила.

· Введите первое правило:

If

Is

light

“green”

=>

drive_on

>

speed

60

<

rasst

300

· Нажмите OK. Если не появилось никаких предупреждений, значит все в порядке, иначе надо проверить синтаксис.

· Введите второе правило. Для этого не обязательно нажимать NEW, можно выбрать COPY, произвести необходимые изменения и нажать OK:

If

Is

light

“yellow”

=>

speed_up

>

speed

60

<

rasst

100

· Введите третье правило:

If

Yes

speed_up

=>

drive_on

· Подобным же образом осуществляется ввод остальных правил. Если что-либо было введено неверно и уже сохранено, выберите MODIFY, исправьте правило и нажмите OK. Если допущена ошибка, но правило еще не сохранено, можно сделать отмену CANCEL.

· Закончив ввод всех правил, нажмите QUIT.

· Сохраните получившуюся базу знаний, например под именем svetofor.kb.

Просмотр получившейся сети правил

· Выберите NETWORK из главного меню системы NEXPERT;

· В раскрывшемся меню выберите BROWSE RULE NETWORK; Вы оказались в окне сети правил (см. рис. 6).

Рис. 6. Окно сети правил

Вы видите, что внизу и справа окна сети правил есть шкалы прокрутки. Помещая указатель мыши в стрелки шкал прокрутки (“вправо”, “влево”, “вверх”, “вниз”), можно сдвигать сеть правил для просмотра. Можно, также, поставить указатель мыши на квадратик на одной из шкал прокрутки и двигать его в ту или другую сторону - тогда перемещение будет осуществляться быстрее. Или можно нажать кнопку мыши внутри "тела" шкалы, справа или слева (сверху или снизу) квадратика, тогда перемещение произойдет сразу скачком на большое расстояние.

· Находясь в поле окна сети правил, нажмите правую кнопку мыши.

· Во всплывающем меню выберите DISPLAY ALL.

· Подтвердите нажатием OK. На экране появится сеть правил. Она не полностью видна на экране; перемещение можно организовать с помощью шкал прокрутки, как говорилось выше.

· Другой способ перемещения по сети - с помощью окна OVERVIEW: нажмите правую кнопку мыши находясь в поле окна сети правил, но не на одном из объектов, гипотез или правил.

· Во всплывающем меню выберите OVERVIEW.

· В левом верхнем углу появится окно OVERVIEW, где изображена сеть правил в уменьшенном масштабе.

· Поставьте указатель мыши на пунктирный прямоугольник в окне OVERVIEW, нажмите левую кнопку и подвигайте мышью:

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

· Находясь в окне OVERVIEW нажмите правую кнопку мыши и зак­рой­те это окно командой CLOSE.

· Можно изменить шрифт и цвет сети правил - для этого вызовите всплывающее меню нажатием правой кнопки мыши в пустом пространстве окна сети правил.

· Во всплывающем меню выберите CHANGE SETTINGS.

· Щелкните кнопкой мыши в ячейке False - появится меню, позволяющее выбрать шрифт и изменить цвет.

· Выделите нажатием левой кнопки мыши какой-нибудь шрифт (самый луч­ший - System) и цвет - Вы увидите, как изменится надпись False.

· Выберите OK.

· Последовательно щелкая кнопкой мыши в ячейках True, Cur­rent, Evoked, Unknown и Notknown измените шрифт и, по желанию, цвет.

· Закройте окно сети правил:

- вызовите всплывающее меню;

- выберите из него команду CLOSE.

Обработка базы знаний

· Вызовите окно SESSION CONTROL. Это можно сделать двумя способами:

1) выберите в главном меню EXPERT; затем KNOWCESS;

2) вызовите всплывающее меню нажатием правой кнопки мыши; затем KNOWCESS.

· Для просмотра результатов обработки базы знаний получите и активизируйте окно SHOW CONCLUSIONS. Для этого сделайте следующее:

- в главном меню выберите REPORT;

- из него выберите команду SHOW CONCLUSIONS - появится окно CONCLUSIONS (“заключения”);

- в белом поле окна CONCLUSIONS нажмите правую кнопку мыши;

- во всплывающем меню выберите ENABLE WRITE.

Теперь во время сеанса обработки знаний в окне CONCLUSIONS Вы будете видеть результаты проверки истинности гипотез.

Назначение данных

Перед обработкой базы знаний необходимо ввести данные. Составим список данных, значения которых могут быть введены. В нашем случае это список следующих данных: light (свет), speed (скорость) и rasst (расстояние). Для этого:

· Нажмите правую кнопку мыши (в окне SESSION CONTROL).

· Во всплывающем меню выберите VOLUNTEER.

· Для того, чтобы очистить список назначаемых данных, выберите команду CLEAN UP.

· Щелкните левой кнопкой мыши в ячейке DATA.

· Из открывшегося списка выберите “light”.

· Щелкните левой кнопкой мыши в ячейке VOLUNTEER - слово “light” появится в списке назначаемых данных.

· Из списка данных выберите “rasst”.

· Опять щелкните в ячейке VOLUNTEER - слово “rasst” будет следующим в списке назначаемых данных.

· Из списка данных выберите “speed”.

· Опять щелкните в ячейке VOLUNTEER - слово “speed” будет следующим в списке назначаемых данных.

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

· Подтвердите нажатием OK KNOWCESS.

· На экране появится:

What is the value of light?

Select an option

Cancel

green

OK

red

Apropos

yellow

Notknown

Это означает: What is the value of light? - каково значение “light”?

Select an option - выберите вариант; Cancel - отмена;

Apropos - показать привязанный текстовый или графический файл (например, объяс­ня­ющий, что такое “light”);

Notknown - значение не определено;

OK - подтверждение выбранного варианта.

Теперь нужно вводить значения выбранных данных.

· Из списка вариантов выберите “green”, подтвердите OK.

· На экране появится:

Volunteer the value of rasst

Cancel

Type a value

OK

Apropos

Notknown

Это означает: Volunteer the value of rasst - присвоить значение переменной “rasst”;

Type a value - “напечатать какое-либо число”;

Остальное то же, что и в предыдущем случае.

· Напечатайте “80” - Вы увидите, что вместо “Type a value” в строке появилось число “80”. Подтвердите OK.

· Это сообщение попросит Вас ввести значение скорости:

Volunteer the value of speed

Cancel

Type a value

OK

Apropos

Notknown

· Напечатайте число “70”. Подтвердите OK.

· В окне CONCLUSIONS Вы увидите список всех подтвержденных и отвергнутых гипотез.

speed_up is rejected

drive_on is already known as true

Rule r.1 is fired

drive_on is confirmed

Гипотеза “увеличить скорость” отвергнута

Гипотеза “ехать вперед” уже известна как истина

Правило “п.1” выполнено

Гипотеза “ехать вперед” подтверждена

В данном случае лишь одна гипотеза подтвер­ждена:

drive_on is confirmed

· Перед тем, как проверить другие варианты, вызовите вначале всплывающее меню, выберите из него RESTART SESSION - перезапуск сеанса.

· Опять вызовите всплывающее меню и выберите из него VOLUNTEER.

· На этот раз не надо составлять список назначаемых данных, так что можно сразу нажимать OK KNOWCESS.

· Отвечайте на вопросы системы аналогично тому, как было приведено выше, только теперь измените значения. Попробуйте разные варианты, для проверки всех ветвей сети. Перед каждым новым запуском сеанса необходимо делать RESTART SESSION.

· После какого-либо полученного варианта решения откройте сеть правил (для этого необязательно закрывать окна SESSION CONTROL и CONCLUSIONS) и посмотрите, какие гипотезы ложные, какие истинные (красным цветом обычно изображают ложные гипотезы, синим - истин­ные, черным - неизвестные данные).

· Рассмотрим пример, когда все гипотезы отвергнуты. Выберем:

свет - желтый,

скорость - 90,

расстояние - 200.

В этом случае в окне CONCLUSIONS будет следующее:

slow_down is rejected

stop is rejected

speed_up is rejected

drive_on is rejected

Гипотеза “снизить скорость” отвергнута

Гипотеза “стоп” отвергнута

Гипотеза “увеличить скорость” отвергнута

Гипотеза “ехать вперед” отвергнута

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

· Вопросы для самопроверки.

1. Что такое экспертные системы? Для чего они нужны? Что такое базы знаний?

2. Расскажите о возможностях NEXPERT OBJECT.

3. Основные понятия NEXPERT OBJECT: правила, объекты.

4. Что такое гипотезы, классы, свойства?

5. Что такое слоты? Мета-слоты? Атомы?

6. Что такое в Вашем понимании контексты?

1В некоторой литературе пишут "метаслоты"

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]