- •Санкт-Петербургский национальный исследовательский университет
- •Редакторы знаний и функции системы 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 для работы с нейронными сетями
Редакторы знаний и функции системы kappa
Синтаксис языка приложений КАРРА. Все элементы языка оболочки КАРРА можно разделить на следующие синтаксические группы:
1) атомы - отдельное слово или группа слов в кавычках;
2) пары - имя объекта: имя слота;
3) выражения установки - некоторые выражения, разделенные операторами установки (=, +=, +, -, *, /, ^, <, >, <=, =>, ==, !=, ~=, #, #=, And, Or, Xor, Not);
4) специальные выражения - функции управления типа While, For, ForAll, If, Let;
5) выражения-блоки - выражения в фигурных скобках ({}), разделяемые точкой с запятой (как в Си). После закрывающей скобки не забудьте поставить точку с запятой ({};);
6) запрос функции - имя функции и аргументы в виде параметров. Общий вид вызова функции: Имя функции (аргумент1,аргумент2,...);
Язык ЭО КАРРА очень чувствителен к синтаксису, нельзя, например, путать маленькие буквы с заглавными! Аргументами функции могут быть перечисленные выше первые пять элементов языка.
Редакторы знаний – это окна, которые позволяют создавать, проверять и модифицировать элементы знаний. К таким окнам относятся редакторы объектов, классов, слотов, методов, правил, целей и функций. Каждый редактор содержит необходимые инструменты (меню, кнопки и т.д.). Пункт Edit в каждом из них имеет стандартные возможности (Cut, Paste...).
Редакторы классов, объектов, функций, правил и целей можно открыть из окна Инструментов знаний (KTools). В редакторы объектов и классов можно попасть также из окна Иерархии объектов (Object Browser), а редакторы слотов и методов доступны только из редактора объекта или класса, так как первые привязаны к последним.
Одновременно на экране может быть открыто несколько окон-редакторов, но нельзя открыть сразу 2 редактора для одного и того же элемента знаний.
Все функции в системе KAPPA разделены на группы: манипулирования элементами знаний (Knowledge), математические (Math), работы со строками (String), со списками (List), логические (Logical), манипулирования файлами (File), управления или взаимодействия с ОС (Control), работы с окнами КАРРА и с объектами интерфейса (Windows), определенные пользователем функции (User Functions), все функции (All Functions). Получить доступ к имеющимся функциям можно в любом окне системы KAPPA, где возможно использование выражений в KAL-коде. Для этого нажатием правой кнопки мыши в этом окне активизируется всплывающее меню, с помощью которого можно оперативно выбрать из имеющихся необходимую группу функций. С выбором группы функций на экране появляется окно Выбора команды (Select Command), где представлены функции выбранной группы. После щелчка левой кнопкой мыши на любой из них внизу окна появляется формат и список аргументов функции. В описании формата необязательные аргументы указаны в угловых скобках (<...>), а если такой аргумент помещен еще и в квадратные скобки (<[...]>) или стоит на последнем месте среди аргументов функции (не помещен в [ ]), то его можно просто опускать. В противном случае, на этом месте нужно указать необходимое значение параметра или NULL . Если аргумент или список аргументов помещен в скобки следующим образом - [<...>], то даже при отсутствии аргумента (который, кстати, является необязательным (<>)) необходимо указать квадратные скобки ([ ]).
Пример. Формат команды, создающей класс.
MakeClass (@className, @<superName>) .
Аргументами этой команды являются имена создаваемого и родительского классов. Символ @ отмечает аргументы и при записи функции опускается.
Пользователь создает свои функции в редакторе функций, куда можно войти щелчком по пиктограмме Function в окне инструментов Ktools и выбрав Edit или New.
Выполнить любую функцию можно в окне Интерпретатора языка KAL. Приглашение в этом окне имеет вид стрелки =>. Описание исполняемой функции должно оканчиваться точкой с запятой. Выполним два примера. Оба эти примера можно было с таким же успехом выполнить в окне Иерархии объектов.
Пример: Создать подкласс Ground в родительском классе Volost. Это можно сделать с помощью функции MakeClass из группы функций манипулирования знаний. Ее аргументами являются имена создаваемого и родительского классов:
=>MakeClass (Ground, Volost);
Ground
В следующей строке интерпретатор вывел результат исполнения функции (ее значение) – имя созданного класса.
Если среди аргументов функции фигурирует обозначение слота некоторого объекта, то оно имеет две составляющие - имена класса (объекта) и слота - разделенные двоеточием. Например, People:NumberOfP обозначает слот NumberOfP объекта People.
Пример: Определить значение слота People:NumbetOfP;
=>People:NumberOfP;
150
KAL-интерпретатор имеет свое меню: File Edit. В меню Edit, кроме стандартных, имеются еще два пункта: Clear Window (Очистить окно) и Check Syntax...(проверки синтаксиса, можно просто нажатием клавиши F2). Интерпретатор ограничивает содержимое окна 10-ю страницами текста и в случае необходимости автоматически удаляет лишнее.