- •Санкт-Петербургский национальный исследовательский университет
- •Редакторы знаний и функции системы kappa
- •Основные этапы разработки объектной модели
- •Пример. Окно Object Browser
- •Построение функциональной модели с использованием продукционных правил Цикл формирования цепи рассуждений в прямом направлении
- •If посылка then заключение.
- •Формирование цепи рассуждений в обратном направлении
- •Средства отладки базы знаний
- •Окно связи правил (Rule Relations)
- •Окно трассировки правил (Rule Trace)
- •Активная трассировка при прямом формировании цепочки рассуждений
- •Окно просмотра иерархии выводов (Inference Browser)
- •Средства создания интерфейса с пользователем. Окно сеанса (Session Window)
- •Средства объяснений оболочки kappa
- •Практическое задание
- •Разработка и программирование объектной модели предметной области
- •Разработка и программирование функциональной модели предметной области
- •Компьютерный практикум по нечетким системам
- •Аппроксимация функции одной переменной с использованием нечеткой системы
- •Варианты заданий
- •Построение элементарной нечеткой экспертной системы
- •Программирование нечеткой системы в среде matlab с использованием встроенных функций
- •Кластеризация с помощью алгоритма нечетких центров
- •Компьютерный практикум по нейронным сетям
- •Аппроксимация функции на основе нейронных сетей
- •Варианты заданий
- •Использование инструмента nnTool для построения нейронной сети
- •Кластеризация с помощью нейронных сетей
- •Рекуррентные нейронные сети Хопфилда и Хэмминга
- •Нейронные сети радиально-базисных функций. Вероятностные сети
- •Построение нейронечеткой модели с помощью anfis-редактора
- •Приложение 1. Функции пакета «Fuzzy Logic Toolbox» системы matlab для работы с системами нечеткой логики
- •Приложение 2. Функции пакета «Neural Network Toolbox» системы matlab для работы с нейронными сетями
Основные этапы разработки объектной модели
Объектная модель предметной области может быть разработана как с помощью KAL-интерпретатора, так и в окне Иерархии объектов (Object Browser). Коротко опишем основные приемы построения.
Разработка иерархии классов и объектов. Сразу после запуска системы КАРРА (до открытия конкретного файла) в окне Object Browser представлены следующие структуры, которые составляют основу для разработки всех приложений:
класс Root - фундамент, из которого определяются все остальные классы, его нельзя уничтожить или переименовать;
подкласс Image - для хранения объектов, используемых при создании пользовательского интерфейса;
объект Global - предопределённый объект;
подкласс KWindows - для описания окон сеанса, в нем уже хранится описание главного окна сеанса системы КАРРА - SESSION.
Чтобы создать в классе подкласс/объект, необходимо
1) щелкнуть мышью на имени класса в окне Object Browser;
2) не отпуская клавиши, в появившемся меню выбрать Добавление Подкласса/Объекта (Add Subclass/Instance);
3) ввести название подкласса/объекта;
4) нажать кнопку ОК.
Удаление и редактирование классов/объектов производятся аналогичным образом (команды Edit и Delete).Класс, у которого есть потомки, удалить невозможно.
Пример. Окно Object Browser
В Root создан класс Volost, класс People - его подкласс, Lgoth и Usual - объекты этого класса. Объекты показываются курсивом, связи КЛАСС-КЛАСС - непрерывной чертой, а КЛАСС-ОБЪЕКТ - штриховой линией, а иерархия объектов распространяется слева направо. Если в классе People определить слот, например, NumberOfp (количество человек), то и объекты Lgoth и Usual будут иметь аналогичный слот NumberOfp, перешедший к ним по наследству от родительского класса People.
КАРРА автоматически относит к каждому слоту ряд опций (в редакторе класса/объекта выбрав конкретный слот, войдите в меню Slots/Edit/Options), среди которых, в частности, три опции для присоединения к слоту методов (процедур):
метод, выполняемый автоматически, когда запрашивается значение слота, а это значение отсутствует;
метод, выполняемый перед тем, как произойдет изменение значения слота;
метод, выполняемый сразу после изменения значения слота.
Кроме того, для слота определяются значность, тип, область допустимых значений:
значность (cardinality) - один (single, по умолчанию), много (multiple, значения имеют, вид списка);
тип значения: текст, число (целое или вещественное), булевский (true или false), объект (имя класса или экземпляра);
ограничения и допустимые значения (если список значений, то эти значения писать через пробел).
В окне Иерархии объектов есть возможность просматривать только часть всей иерархии, для этого нужно в классе использовать команду Focus , в результате будут видны только этот класс и его потомки. Для какой-либо работы с существующим элементом сначала следует выбрать его имя из списка имеющихся, а затем уже активизируется соответствующий редактор.
Наследуемые от предков слоты КАРРА помечает звездочкой (*). Глобальный (для конкретной части объектов) слот будет передавать по наследству и полученное значение, что бывает лишним. Существует два способа отменить такое наследование:
• сделать слот локальным (в редакторе класса/объекта для соответствующего слота выбрать пункты меню Slots/Make local). Глобальность слота можно восстановить путем удаления соответствующего локального слота;
• редактировать значение слота на определенном уровне.
В обоих случаях измененное значение наследуется слотами, которые находятся ниже по иерархии.
Разработка методов
Методы - это процедуры, являющиеся атрибутами объекта. Процесс активизации метода в объекте назван посылкой сообщения. Когда объект получает сообщение, относящееся к одному из его методов, этот метод вступает в действие и выполняет определенную им процедуру. Методы передаются по наследству, по аналогии со слотами.
Пример.
Создадим метод, который будет сообщать нашему пользователю о том, что введено слишком большое количество жителей волости (People:NumberOfP). Для этого нужно;
1) выбрать редактор Класса, пункт меню Edit и класс People;
2) меню Methods/New;
3) назовем метод num;
4) в появившемся окне редактора метода в строке аргументов (Arguments) ввести:
x NumberOfP
5) в теле метода:
{
If( Self:x<=1000 )
Then PostMessage(«Вы ввели количество жителей волости.»)
Else PostMessage(«Введенное Вами число жителей волости слишком большое !»);
};
6) выбрать Update/Close;
7) в классе People щелкнуть два раза на слот NumberOfp;
8) войти в пункт меню Options;
9) ввести в поле After Change название нашего метода num;
10) выбрать тип значения number и ограничения 0 .. 1000;
11) нажать OK и сохраните класс People.
Для проверки этого метода следует ввести в окне Интерпретатора:
AskValue(People, NumberOfp);
и нажать Enter.
Методы выполняют несколько видов действий:
изменяют состояние БЗ (значения слотов),
посылают сообщения в любой объект;
активизируют другие средства системы, например, базирующиеся на правилах рассуждения.