- •Содержание
- •Частей приложения 34
- •Введение
- •Что Вы будете изучать в этом пособии
- •Краткие сведения о использовании пособия
- •3. Начало обучения
- •Шаг 1: Создание классов
- •Результаты выполнения шага 1.
- •Шаг 2: Разработка объектов
- •Результаты выполнения шага 2.
- •Шаг 3: Разработка слотов
- •Результаты выполнения шага 3.
- •Шаг 4: Создание и использование образов
- •Результаты выполнения шага 4
- •Шаг 5: Создание и использование методов
- •Результаты выполнения шага 5
- •Шаг 6: Создание и использование функций
- •Результаты выполнения шага 6.
- •Шаг 7: Создание и использование правил
- •Результаты выполнения шага 7
- •Шаг 8: Разработка пользовательского интерфейса (часть 1)
- •Результаты выполнения шага 8
- •Шаг 9: Разработка и использование пользовательского интерфейса (часть 2)
- •Результаты выполнения шага 9
- •Шаг 10: Сохранение и повторное использование частей приложения
- •Результаты выполнения шага 10
- •Заключение
- •Раздел 1. Создание классов, объектов и слотов.
Результаты выполнения шага 6.
Вы разработали функцию Promote, для продвижения служащего в менеджеры и функцию Demote (рис. 8), чтобы понизить служащего в инженеры. Введите Promote ( ); в окне KAL-интерпретатора и введите Bill, т.е. имя служащего который должен быть перемещен в инженеры (рис. 9, 10). Откройте окно Object Browser, чтобы наблюдать изменения в базе фактов.
Рис. 8. Функция Demote в окне редактора функций.
Рис. 9. Вызов функции Promote из окна интерпретатора KAL.
Рис. 10. Запрос у пользователя ввести имя сотрудника для продвижения в мнеджеры.
Шаг 7: Создание и использование правил
Правила (продукционные правила) – это средства позволяющие рассуждать при решении задачи. Правила – это элементарные единицы базы знаний, которая состоит из некоторого их количества необходимого для рассуждений при решении задачи. В нашей задаче создадим одно единственное правило, которое позволяет найти любого инженера, качество работы которого выше 7 и чья заработная плата превышает 35000 долларов США. Если с помощью правила будет найден такой служащий, должно быть послано сообщение пользователю, а служащий продвинут в инженеры.
Интерактивно |
Программно |
|
В окне 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.
| |
{ 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. Результаты работы машины прямого вывода.