Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

It_Kompyuterny_Praktikum

.Pdf
Скачиваний:
40
Добавлен:
21.03.2016
Размер:
1.65 Mб
Скачать

объяснениями будет выглядеть следующим образом.

1.2.Практическое задание

Темой данного практического задания является разработка экспертной системы (ЭС) для выбора аппаратной платформы при создании некоторой гипотетической информационно-управляющей системы. ЭС отражает модели рассуждений и принятия решений, которыми пользуется эксперт в рассматриваемой проблемной области. Функция проектируемой ЭС состоит в принятии решения при выборе платформы на основе частных характеристик вариантов. Разработка преследует лишь учебную цель, которая заключается в изучении технологии проектирования ЭС. Речь идет о создании так называемого быстрого прототипа ЭС, когда создается усеченный вариант ЭС для быстрой проверки идей, закладываемых в основу будущей информационной системы. В связи с этим к содержанию базы знаний (БЗ) не предъявляется высоких требований. Ее разрабатывает сам студент, выступая тем самым и в роли эксперта, и в роли инженера по знаниям. В задачу студента входит следующее. На основе индивидуального задания (см. таблицу индивидуальных заданий) разработать и запрограммировать объектную и функциональную модели предметной области. В качестве инструментального средства предполагается экспертная оболочка (ЭО) Kappa, в которой в качестве основных моделей представления знаний используются - объектно-ориентированная модель (инструментарий для разработки объектной модели) и продукционные правила (инструментарий для разработки функциональной модели).

Таблица вариантов индивидуальных заданий

 

 

Решения

 

 

Методы

 

 

DP

MP

NMP

MPR

UV

SrS

SrP

0

1

1

0

0

1

0

0

1

1

0

1

0

1

0

0

2

1

0

0

1

1

0

0

3

0

1

1

0

1

0

0

4

0

1

0

1

1

0

0

5

0

0

1

1

1

0

0

 

 

 

 

 

 

 

 

6

1

1

0

0

0

1

0

 

 

 

 

 

 

 

 

7

1

0

1

0

0

1

0

 

 

 

 

 

 

 

 

8

1

0

0

1

0

1

0

 

 

 

 

 

 

 

 

9

0

1

1

0

0

1

0

 

 

 

 

 

 

 

 

10

0

1

0

1

0

1

0

 

 

 

 

 

 

 

 

11

0

0

1

1

0

1

0

12

1

1

0

0

0

0

1

13

1

0

1

0

0

0

1

14

1

0

0

1

0

0

1

15

0

1

1

0

0

0

1

16

0

1

0

1

0

0

1

17

0

0

1

1

0

0

1

21

Исходными данными для разработки являются:

1.Список вариантов принимаемых решений по каждой аппаратной платформе:

платформа должна быть применена (DP),

платформа может быть применена (MP),

платформа не может быть применена (NMP),

применение платформы связано с риском (MPR).

2.Список, реализуемых методов:

контроль ввода (UV),

вычисление средней стоимости (SrC),

вычисление средней производительности (SrP).

1.2.1. Разработка и программирование объектной модели предметной области

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

Рис. 1.10. Разработка иерархии классов и объектов в окне

Object Browser.

подходов – в окне Object Browser и в окне KAL Interpreter - и воспользоваться ими для создания иерархии классов и объектов.

Разработка иерархии классов и объектов в окне Object Browser

Необходимо создать иерархию классов и объектов, изображенную на рис. 1.10. В данном случае класс System1 представляет реализацию проектируемой системы на базе первой аппаратной платформы. При этом система состоит из двух приборов Device1 и Device2. Следует представить иерархию в окне в сжатом виде (скрыть подкласс Hardware), а затем вернуться к развернутому представлению.

22

Методические указания: Чтобы создать в классе подкласс/объект, необходимо

щелкнуть мышью на имени класса в окне Object Browser;

не отпуская клавиши, в появившемся меню выбрать Добавление Подкласса/Объекта (Add Subclass/Instance);

ввести название подкласса/объекта;

нажать кнопку ОК.

Удаление и редактирование классов/объектов производятся аналогичным образом (команды Edit и Delete).

Информация в окне Object Browser может быть представлена в сжатом или развернутом виде путем удаления из окна объектов или подклассов некоторых указанных пользователем классов (команды Hide/Show Subclasses/Instances). При этом в окне имя класса, чьи объекты или подклассы скрыты, обводится рамкой.

Создать в соответствии с таблицей для классов и объектов слоты. Слоты Proizv и Stoim отражают производительность и стоимость конкретного прибора в объекте Device, и средние значения по системе в объекте Global. Сделать слоты Name и Number в классе Hardware и объекте Device локальными и присвоить им значения. Слот Number в объекте Device, доставшийся по наследству, использовать для хранения номера группы.

Таблица слотов

 

Класс/

Hardware

System

Device

Global

 

 

объект

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Name

Name

Name

Name

 

 

 

 

 

 

 

 

 

Слот

Number

Number

Number

Proizv

 

 

 

 

 

 

 

 

 

 

Proizv

Stoim

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Stoim

 

 

Методические указания. Чтобы создать в классе (объекте) слот,

необходимо:

 

 

 

 

 

щелкнуть мышью на имени класса в окне Object Browser;

перейти в редактор класса, для чего, не отпуская клавиши, в появившемся меню выбрать Редактирование (Edit);

выбрать меню Slot/New;

ввести имя слота.

Для присвоения требуемого значения слоту надо продолжить предыдущую процедуру:

перейти в редактор слотов, для чего выбрать меню Slot/Edit;

ввести в поле Value требуемое значение.

Для преобразования слота класса (объекта) в локальный следует выделить этот слот в редакторе класса (объекта) и обратиться к меню

Slot/MakeLocal.

Разработка иерархии классов и объектов в окне KAL Interpreter.

23

Необходимо дополнить средствами KAL Interpreter ранее созданную иерархию классов и объектов до следующего вида (рис. 1.11).

При построении использовать функции (команды) MakeClass, MakeInstance, MakeSlot.

Методические указания. Все функции в ЭО KAPPA разделены на группы:

функции манипулирования элементами знаний

(Knowledge),

математические функции (Math),

функции для работы со строками (String),

функции для работы со списками (List),

логические функции (Logical),

функции манипулирования файлами (File),

функции управления или взаимодействия с ОС (Control),

функции для работы с окнами КАРРА и с объектами интерфейса (Windows),

определенные пользователем функции (User Functions),

все функции (All Functions).

Рис. 1.11. Разработка иерархии классов и объектов в окне

Object Browser.

Получить доступ к имеющимся функциям можно в любом окне ЭО KAPPA, где доступно использование выражений в KAL-коде. Для этого нажатием правой кнопки мыши в этом окне активизируется всплывающее меню, с помощью которого можно оперативно выбрать из имеющихся необходимую группу функций. С выбором группы функций на экране появляется окно Выбора команды (Select Command), где представлены функции выбранной группы. После щелчка левой кнопкой мыши на любой из них внизу окна появляется формат и список аргументов функции. Так, например, для функции Создать класс (MakeClass) формат имеет вид:

MakeClass(@className, @<superName>). Из приведенной записи следует,

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

24

описании функции отсутствует, например, MakeClass(System1, Hardware). Запись любой функции заканчивается «; ».

Создание методов для классов и объектов модели

Необходимо создать с использованием функции PostMessage (вывод сообщения на экран) для классов и объектов методы в соответствии с таблицей, где Contr – контроль правильности ввода значения слота Number, SrProizv – вычисление средней производительности по системе, SrStoim – вычисление средней стоимости по системе.

Таблица методов

Класс/

Hardware

System

Global

объект

 

 

 

 

Contr

Contr (контроль

SrProizv

 

(контроль

правильности

(средняя

Метод

правильности

ввода)

производительность)

ввода)

 

 

 

 

 

 

 

 

SrStoim

 

 

 

(средняя стоимость)

Методические указания. Методы - это процедуры, являющиеся атрибутами объекта. Процесс активизации метода в объекте назван посылкой сообщения. Когда объект получает сообщение, относящееся к одному из его методов, этот метод вступает в действие и выполняет определенную им процедуру. Методы передаются по наследству, по аналогии со слотами.

Метод Contr «Контроль правильности ввода». Для создания метода

Contr, например, в классе Hardware можно воспользоваться следующей процедурой.

1)выбрать редактор Класса (окно KTools), пункт меню Edit и класс

Hardware;

2)обратиться к меню Methods/New;

3)присвоить методу имя Contr;

4)в появившемся окне редактора метода в строке аргументов

(Arguments) ввести:

x Number

В результате в тексте метода длинная переменная Number может быть заменена на короткую x.

5) в теле метода, которое заключается в фигурные скобки, размещается условный оператор (группа функций управления Control):

{

If( Self:x<=10)

Then PostMessage(«Вы ввели число систем»)

Else PostMessage(«Введенное Вами число систем слишком велико !»); };

25

Напомним, что все переменные, используемые в текстах методов, функций и правил отражают слоты некоторых классов или объектов. В результате их обозначение содержит как имя класса (объекта), так и имя слота, разделенные двоеточием, например, Hardware:Number. В приведенном тексте программы вместо имени класса Hardware использовано служебное слово Self, что позволяет использовать этот текст метода в любом другом классе. Заметим, что функция PostMessage предназначена для вывода на экран дисплея выражений, которые записываются в скобках как ее аргументы через запятую, при этом символьные выражения должны быть заключены в кавычки. Так, например, информация о средней стоимости прибора, представленная переменной Global:Stoim, может быть выведена следующим образом:

PostMessage(“Средняя стоимость прибора по системе =”, Global:Stoim). КАРРА автоматически относит к каждому слоту ряд опций (в редакторе

класса/объекта, выбрав конкретный слот, войдите в меню Slots/Edit/Options), среди которых, в частности, три опции для присоединения к слоту методов (процедур):

метод, выполняемый автоматически, когда запрашивается значение слота, а это значение отсутствует;

метод, выполняемый перед тем, как произойдет изменение значения слота;

метод, выполняемый сразу после изменения значения слота.

Для рассматриваемого примера имеем:

1.выбрать Update/Close;

2.в редакторе класса Hardware щелкнуть два раза на слот Number;

3.войти в пункт меню Options;

4.ввести в поле After Change название нашего метода Contr;

5.выбрать тип значения number и ограничения 0 .. 10;

6.нажать OK и сохранить класс Hardware.

Метод SrProizv «Средняя производительность по системе». При создании методов, вычисляющих, например, среднюю производительность по системе, оказываются полезными функция подсчета числа объектов некоторого класса CountInstance, а также функция управления ForAll, просматривающая объекты некоторого класса и вычисляющая общее для них и единственное выражение, стоящее сразу после квадратных скобок и заканчивающееся точкой с запятой. Если этих выражений несколько, они должны быть заключены в фигурные скобки. Функция ForAll является по существу оператором цикла с параметром, который последовательно пробегает имена всех объектов из просматриваемого класса и указывается в квадратных скобках после служебного слова ForAll. В квадратных скобках, кроме параметра цикла указывается имя просматриваемого класса, отделенное от переменной-параметра вертикальной чертой. Так фрагмент, вычисляющий средний балл для студентов из второй группы будет иметь вид:

26

{

Global:Proizv1 = 0; ForAll [ obj|System1 ]

Global:Proizv1 = Global:Proizv1 + obj:Proizv;

System1:Number = CountInstances( System1 ); Global:Proizv1 = Global:Proizv1 / System1:Number;

PostMessage( "Средняя производительность по системе 1=", Global:Proizv1 );

};

В этом фрагменте параметр цикла обозначен буквами obj.

1.2.2. Разработка и программирование функциональной модели предметной области

Содержанием этого этапа выполнения практического задания является решение студентом нескольких задач, связанных с разработкой и программированием функциональной модели. К числу этих задач относятся разработка и программирование правил, а также отладка базы знаний и реализация логического вывода с использованием средств, предоставляемых оболочкой KАРРА.

Разработка правил принятия решения по выбору аппаратной платформы

Необходимо разработать функциональную модель предметной области с использованием продукционных правил. Для этого следует создать базу знаний в ЭО KАРРА и апробировать ЭС, запустив ее из окна интерпретатора.

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

платформа должна быть применена,

платформа может быть применена,

платформа не может быть применена.

Вданном случае предварительно должна быть расширена объектная модель предметной области путем увеличения перечня слотов классов

System за счет их частных и обобщенных характеристик. Конечные рекомендации экспертной системы формируются в процессе логического вывода на основании значений обобщенных характеристик. Те же, в свою очередь, формируются также в процессе логического вывода на основе значений частных характеристик. Последние изначально вводятся пользователем ЭС. В качестве обобщенных характеристик могут быть рекомендованы:

адекватность технических характеристик (AdekvTH)

27

ценовая категория (CenaKat),

перспективность платформы (PerspPl),

перспективность изделия (PerspIzd),

надежность поставщика (NadPost).

Пусть обобщенные и частные характеристики могут принимать лишь значения: низкое (niz), среднее (sr), высокое (vis). Например, перспективность платформы – высокая, надежность поставщика – низкая и т.п.

Частные характеристики платформы могут быть разнообразны и выбираются студентом самостоятельно. Например, частными характеристиками, составляющими базу для выводов о ценовой категории, могут быть: цена комплектующих (CenaKomp), сроки поставки (SrokPost) и стоимость изготовления (StoimIzg), для выводов об адекватности технических характеристик - производительность процессора (ProizvProc), пропускная способность канала (PropSpos) и энергопотребление (EP) и т.п.

Методические указания.

Описание правил. Основным средством разработки функциональной модели являются правила. В общем виде правила имеют следующую конструкцию:

IF посылка THEN заключение.

Каждое правило имеет имя. Для создания правил используется редактор правил (окно Ktools, пиктограмма Rule). Окно редактора имеет два основных поля If и Then, где пользователь набирает тексты посылки и заключения соответственно. Как посылки, так и заключения представляют собой выражения, состоящие из имен классов, объектов, их слотов и значений слотов.

В правилах можно, но необязательно использовать переменные, называемые в ЭО КАРРА Patterns (образцы переменной). В поле Patterns справа от вертикальной черты пишут имя класса, для анализа которого используется это правило, а слева от вертикальной черты пишут имя переменной, которое будет фигурировать в правиле и представлять любой объект из рассматриваемого класса. Правило, описанное таким образом, работает для любого объекта или подкласса этого класса. В результате использования этого приема можно одно и то же правило применить ко многим объектам.

Рекомендуется при выполнении задания не создавать сразу все необходимые правила, а создать сначала, например, лишь правила, которые обслуживают только две рекомендации. Пусть этими рекомендациями будут, например, «платформа должна быть применена» и «платформа не может быть применена». При этом пусть также эти две рекомендации опираются лишь на две обобщенные характеристики – ценовая категория и адекватность технических характеристик. Такой прием называют разработкой прототипной системы. Для такого прототипа достаточно шести правил. Каждое из шести правил своим заключением будет обслуживать одну

28

ситуацию:

Правила, формирующие рекомендации

1.Правило DP: Если ценовая категория низкая и адекватность технических характеристик высокая, то платформа должна быть применена.

2.Правило NMP: Если ценовая категория высокая и адекватность технических характеристик низкая, то платформа не может быть

применена.

Правила, формирующие обобщенные характеристики

1.Правило CenaN: Если цена комплектующих низкая и себестоимость изготовления низкая, то ценовая категория низкая.

2.Правило CenaV: Если цена комплектующих высокая и себестоимость

изготовления низкая и сроки поставки средние, то ценовая категория средняя.

3. Правило TehV: Если производительность процессора достаточна и пропускная способность канала достаточна и энергопотребление в пределах допустимого, то адекватность технических характеристик высокая.

4. Правило TehN: Если производительность процессора недостаточна и пропускная способность канала достаточна и энергопотребление в пределах допустимого, то адекватность технических характеристик низкая.

На рис. 1.12 приведен пример оформления правила AdekTH, где символ #= (решетка с равенством) обозначает сравнение строковых переменных.

29

Рис. 1.12. Разработка правил выбора платформы.

Запуск логического вывода. В систему КАРРА встроены механизмы прямого и обратного выводов. Для их инициирования предусмотрены две соответствующие функции манипулирования знаниями ForwardChain() и BackwardChain(), основным аргументом которых является имя цели вывода. В принципе, инструмент целей (Goal) разрабатывался специально для построения цепочки рассуждений в обратном направлении, но можно с помощью этого механизма прерывать и рассуждения, проводимые в прямом направлении (как только Цель достигнута, вывод заканчивается). Цели описываются в редакторе целей Goal (окно Ktools) на KAL. Они должны иметь имена. Кроме цели, среди аргументов этих функций может быть перечень активизируемых правил. Если в записи функции опускается обязательный аргумент, например, имя цели в функциях, инициирующих вывод, то на его месте пишется NULL.

Пусть при реализации прямого вывода используется цель с именем Rekom. Тогда логический вывод инициируется с помощью функции:

ForwardChain (Rekom).

В проектируемой ЭС цель (условие окончания прямого логического вывода) может быть определена как появление некоторого признака, свидетельствующего о выработке первой рекомендации. Для этого определите в объекте Global слот с именем Rekom, который может

30

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