Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие (KAPPA).doc
Скачиваний:
27
Добавлен:
10.02.2015
Размер:
393.22 Кб
Скачать

Результаты выполнения шага 6.

Вы разработали функцию Promote, для продвижения служащего в менеджеры и функцию Demote (рис. 8), чтобы понизить служащего в инженеры. Введите Promote ( ); в окне KAL-интерпретатора и введите Bill, т.е. имя служащего который должен быть перемещен в инженеры (рис. 9, 10). Откройте окно Object Browser, чтобы наблюдать изменения в базе фактов.

Рис. 8. Функция Demote в окне редактора функций.

Рис. 9. Вызов функции Promote из окна интерпретатора KAL.

Рис. 10. Запрос у пользователя ввести имя сотрудника для продвижения в мнеджеры.

Шаг 7: Создание и использование правил

Правила (продукционные правила) – это средства позволяющие рассуждать при решении задачи. Правила – это элементарные единицы базы знаний, которая состоит из некоторого их количества необходимого для рассуждений при решении задачи. В нашей задаче создадим одно единственное правило, которое позволяет найти любого инженера, качество работы которого выше 7 и чья заработная плата превышает 35000 долларов США. Если с помощью правила будет найден такой служащий, должно быть послано сообщение пользователю, а служащий продвинут в инженеры.

Интерактивно

Программно

  1. Откройте окно Knowledge Tools (KTools) и кликните на иконке Rule. Выберите из выпадающего меню опцию New. Обратите внимание, что используемый ниже символ « | » - это не слэш « \ ».

В окне KAL-интерпретатора введите (Обратите внимание, что используемый ниже символ « | » - это не слэш « \ » ):

MakeRule (Recommend, [x | Engineer], x:Performance > 7 And x: Salary > 35000,

{

PostMessage (x, “will now be promoted.”);

MoveInstance (x, Manager);

}

);

2. Введите Recommend в качестве имени правила и нажмите Enter.

3. В поле Pattern field введите:

x | Engineer

и нажмите Enter.

Так записываются используемые в КАРРА-РС переменные, которые называются patterns. Слева от вертикальной черты пишут имя переменной (x), которое затем будет фигурировать в правиле, а справа имя класса, которому принадлежит объект. В поле Priority введите 0.

4. В поле If введите:

x: Performance > 7 And x: Salary > 35000;

и нажмите Enter.

  1. Кликнете на поле Then и введите:

{

PostMessage (x, “ will now be promoted.”);

MoveInstance (x, Manager);

};

6. Выберите Update из меню и выберите Close из выпадающего меню. Нажмите Enter, чтобы сохранить правило в базе знаний.

Завершите шаг 7.

Из меню главного окна КАРРА РС выберите Fail, далее Save as

В поле Fail Name Field введите Tut7.kal и кликните на кнопке Save.

Результаты выполнения шага 7

Разработано правило с именем Recommend (рис. 11), которое в ситуации, когда любой инженер получает рейтинг качества работы выше 7 и заработную плату больше 35000 долларов США продвигается в менеджеры и при этом посылается сообщение о продвижении по службе. Обратите внимание на то, что в отличие от созданного ранее метода ChangeJob (см. шаг 5), Вы должны предъявить (Assert), сделать истинными факты, которые изменили бы базу фактов и только после этого использовать правило. Чтобы проверить результаты применения правила, откройте KAL-интерпретатор и введите (рис. 12):

Mary: Perfomance = 8;

Mary: Salary = 40000;

Assert (Mary, Performance);

ForwardChain ( );

При этом будет послано сообщение «Mary will now be promoted» (рис. 13). Кликните OK и служащая Mэри будет продвинута в менеджеры (рис. 14).

Рис. 11. Правило Recommend в окне редактора правил.

Рис. 12. Ввод информации о Мэри, использование функции Assert и вызов машины прямого вывода ForwardChain из окна интерпретатора KAL.

Рис. 13. Сообщение пользователю о продвижении Мэри.

Рис. 14. Результаты работы машины прямого вывода.