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

Рыбина Технология построения динамических 2011

.pdf
Скачиваний:
60
Добавлен:
12.11.2022
Размер:
3.43 Mб
Скачать

Рис.14. Типы определений классов G2

Указанные шаги предназначены для заполнения обязательных атрибутов определения класса. Но перед использованием определения класса необходимо наполнить его информацией, специфичной для этого класса, например, задать атрибуты данного класса. Сделать это можно путем заполнения поля Class-specific-attributes в таблице класса, используя следующий синтаксис:

class-specific-attributes := <описание атрибута> (;<описание атрибута>)

<описание атрибута> := <имя атрибута> is a|an <тип атрибута>{, initially is <начальное значение атрибута>}

<описание атрибута> := <имя атрибута> is an instance of <имя класса>{, initially is <начальное значение атрибута>}

<описание атрибута> := <имя атрибута> has values <значение 1>{, <значение i>}

<тип атрибута> := <integer>|<float>|<symbol>|<text>|<truthvalue>

Так же можно задать графическое представление для экземпляров данного класса, с помощью редактора иконок, который запускается при выборе пункта меню Edit Icon из меню описания класса (недоступно для классов, описывающих связи и сообщения). Каждая иконка состоит из слоев (рис. 15.) и характеризуется высотой и шириной (в пикселях). Можно группировать слои в регионы путем присваивания соответствующего значения в поле region для слоя (впоследствии допускается программно менять цвет региона с использованием выражения: change the <имя региона> icon-color to <название цвета> – для смены цвета рисунка или change the <имя региона> background-color to <название цвета> – для смены цвета

91

фона). Под каждый слой могут быть подложены картинки, сохраненные во внешнем файле. При этом картинка будет отображена одним цветом, а именно – цветом данного слоя.

При создании определения объекта (OBJECT-DEFINITION) имеется возможность задать еще такие системные атрибуты, как Attribute-displays (значение данного атрибута показывает, должны ли значения атрибутов экземпляра класса отображаться в ходе исполнения БЗ рядом с иконкой, соответствующей данному экземпляру, и если должны, то как они должны быть расположены по отношению к иконке экземпляра) и Stubs (значение данного поля показывает, в каких местах по отношению к иконке экземпляра данного класса будут находиться отростки связей, и для присоединения каких связей могут быть использованы эти отростки).

Рис.15. Редактор иконок объектов G2

92

Для связи объектов в G2 используется класс CONNECTIONDEFINITION или унаследованные от него классы, имеющие свой собственный набор атрибутов. Для интерактивного создания связи необходимо кликнуть на одном из отростков связи данного типа и протянуть его до объекта, с которым необходимо установить связь. После этого кликнуть на этом объекте. Связь может быть как диагональной – отображается одной прямой линией между двумя объектами, так и ортогональной, т.е. состоящей из отрезков вертикальных и горизонтальных линий. Для ортогональных связей существует возможность задать способ их прорисовки, указывая в поле cross-section-pattern таблицы связи описание среза связи в виде:

<число пикселей> <цвет> (,<число пикселей> <цвет>).

Действия G2. Понятие действия – атомарный элемент процедурных знаний G2. Действия могут использоваться как в правилах (rules) и процедурах (procedures), так и пользовательских режимах меню (user-menu-choices) и в командных кнопках (action buttons).

Перечень действий выдается в редакторе G2 в качестве подсказки, когда редактируется список действий. Пример этого представлен на рис. 16.

Рис.16. Список действий G2

Типичными для правил и процедур являются действия: ∙ conclude that - присвоить;

93

change – изменить;

set – у становить;

insert – вставить ;

create – создать;

delete – удалить .

Для работы с пользователем:

inform – информировать;

show – показать;

hide – скрыть;

print – печатать;

move – п ереместить;

transfer – передать.

Для управления приложением:

start – запустить;

focus – фокусировать;

invoke – возбудить;

activate – активировать ;

pause knowledge-base – приостановить работу БЗ;

shut down G2 – закончить работу G2.

Процедуры G2. Язык описания процедур напоминает язык Паскаль (однако в отличие от него процедуры G2 могут возвращать значения):

<процедура> := <имя процедуры> “(“< список параметров>“)” {= “(“<тип возвращаемого значения>“)”}

begin <список действий> end

<список параметров> := <описание параметра> (, <описание параметра>)*

<описание параметра> := <имя параметра> “:” < тип параметра>

<список действий> := <действие> “;” (< действие>)*

В процедурах могут использоваться следующие операторы: repeat (повторение), allow other processing (допуск другой обра-

ботки), exit (выход из цикла), return (возвращает значение), конструкция for с использованием счетчиков. Например:

94

Procedure (iPump : class PumpIn) begin

repeat

conclude that the CurV of iPool = the CurV of Pool + the Power of iPump;

allow other processing;

exit if the CurV of iPool >= the MaxV of iPool end

end

Для организации ветвлений и переходов используются операторы: if (в том числе вложенные if), go to, case и блоки begin...end. В процедурах могут быть использованы различные типы задержек, например: на указанный временной интервал, на время ожидания вычисления логического выражения или на время ожидания наступления заданного события. Для этого используется оператор wait, который имеет следующий синтаксис:

wait {for<интервал>|until <логическое выражение> checking every <интервал>| until <предикат события>}

Например: wait until the CurV of iPool receives a value.

Для вызова процедур в G2 используются действия call и start. Call отличается от Start тем, что пока не завершится вызванная процедура, процедура ее вызвавшая не будет исполнять других действий, Start не дожидаясь окончания вызванной процедуры продолжает выполнение следующих по списку действий. Для создания новой процедуры необходимо:

из меню РП выбрать пункт New definition > procedure > pro-

cedure;

расположить созданную процедуру на РП;

из меню процедуры выбрать пункт Edit и произвести редактирование кода процедуры.

Пример таблицы для процедуры приведен на рис. 17.

Правила G2. В G2 имеется пять типов правил, которые могут быть инициированы семью способами. Любое правило состоит из предусловия (антецедента) и заключения (консеквента). Заключение представляет собой последовательность действий G2, соеди-

95

ненных между собой связками and. Если в начале списка действий стоит префикс in order, то действия выполняются в заданном порядке. В противном случае расписание выполнения действий составляет планировщик G2. Предусловие правила представляет собой логическое выражение. Правило выполняется, если логическое выражение в его предусловии истинно. При этом выполняются действия, указанные в заключении правила.

Графически структура правила показана на рис 18.

Рис.17. Пример таблицы процедуры

Антецедент правила состоит из ключевого слова, показывающе-

го тип данного правила (if, when, whenever, unconditionally, initially), перед которым может находиться выражение обобщения

96

с префиксом for. За ключевым словом следует истинностное выражение, которое показывает, при каких условиях должны выполняться действия, описанные в консеквенте правила. Поскольку истинностные выражения G2 могут иметь неопределенные значения, G2 рассматривает выражение в антецеденте правила истинным, только если его неопределенное значение превышает порог истинности для неопределенных значений. Этот порог можно задать целиком для БЗ в атрибуте Truth-threshold системной таблицы Inference Engine Parameters. По умолчанию его значение равно 0.8. Консеквент любого правила G2 состоит из действий.

По умолчанию каждое правило в БЗ является приостановленным. Инициировать правило – означает начать вычисление антецедента правила. G2 может инициировать правило, когда:

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

БЗ нуждается в значении для переменной, значение которой присваивается в консеквенте какого-либо правила (обратный вывод);

активировано родительское РП для правила типа initially;

G2 определило событие, которое проверяется в антецеденте правила типа whenever;

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

БЗ выполнила действие focus или invoke, которое использует имя объекта, класса объекта или категории правил, ассоциированной с правилом.

Рис. 18. Структура правил G2

97

Правила, которые создаются в G2, могут быть:

∙ частными, т.е. применимыми к конкретным элементам или значениям.

Пример: whenever temp receives a value then conclude that the temp of Pool = temp.

∙ общими, т.е. применимыми к множеству элементов или значений, такие правила используют префикс обобщения for в тексте правила.

Пример: when (the active of any input_pump P) and there exists a bath B connected at the output of P

and (the volume of B + the power of P <= the max_volume of B) then in order conclude that

the temperature of B = (the temperature of B * the volume of B + the temperature of P *

the power of P) / (the volume of B + the power of P) and conclude that the last_volume

of B = the volume of B and conclude that the volume of B =

the volume of B + the power of P

Для создания правила необходимо: из меню РП выбрать пункт New Rule; при этом G2 отобразит текстовый редактор с подсказками для ввода пяти типов правил и префикса обобщения for, далее ввести текст правила и выбрать команду End или нажать Enter. Изменение свойств правила производится через таблицу правила, которая выглядит, как показано на рис. 19.

Табл. 9 показывает, какие типы правил могут быть инициированы и с помощью каких способов инициации. Примеры правил G2 представлены на рис. 20.

Правила типа if определяют условие в форме истинностного выражения и одно или более действий. Синтаксис правил данного типа выглядит следующим образом:

<правило if> := (for any|the <выражение, специфицирующее множество объектов>)* if <истинностное выражение> then [in order] <действие> (and <действие>)*

Правила типа if являются наиболее гибким типом правил. Оно может быть инициировано с использованием прямого и обратного

98

вывода, используя сканирование и действия focus и invoke. Правила типа if могут вызывать другие правила через прямой и обратный вывод.

 

 

 

 

 

Таблица 9

 

 

 

 

 

 

 

Механизм ини-

if

initially

uncondition-

when

When-

 

циации

ally

ever

 

 

 

 

 

Определение воз-

 

 

 

 

 

 

никновения собы-

 

 

 

 

+

 

тий

 

 

 

 

 

 

Сканирование

+

 

+

+

 

 

Активация РП

 

+

 

 

 

 

Фокусировка на

 

 

 

 

 

 

объектах и катего-

+

 

+

+

 

 

риях

 

 

 

 

 

 

Участие в выводе

if

initially

uncondition-

when

when-

 

ally

ever

 

 

 

 

 

 

Вызываться в пря-

+

+

+

+

+

 

мом выводе

 

 

 

 

 

 

 

Порождать прямой

+

 

+

 

 

 

вывод

 

 

 

 

 

 

 

 

 

 

Вызываться в об-

+

+

 

+

+

 

ратном выводе

 

 

 

 

 

 

 

 

Порождать обрат-

+

+

+

 

 

 

ный вывод

 

 

 

 

 

 

 

 

 

Правила типа initially определяют условие в форме истинностного выражения и одно или более действий. G2 автоматически инициирует правило типа initially каждый раз, когда активируется родительское РП для данного правила.

После того, как правило типа initially активируется, G2 автоматически запрещает (disable) его. Синтаксис правил данного типа выглядит следующим образом:

<правило initially> := initially (for any|the <выражение,

специфицирующее множество объектов> [unconditionally])* [if <истинностное выражение> then] [in order] <действие> (and <действие>)*

99

G2 поддерживает три формы правил типа initially, а именно: initially if – в этой форме антецедент правила может включать одно или более выражений for для спецификации общего правила и должен включать истинностное выражение, определяющее условие, при котором G2 выполняет консеквент данного правила; initially unconditionally – в этой форме антецедент правила может включать одно или более выражений for для спецификации общего правила и правило unconditionally; антецедент для правил данного типа всегда вычисляется, как истинный с вероятностью 1.0; правило типа initially с подразумеваемым unconditionally – в этой форме антецедент правила не может включать выражения с префиксом

for.

Рис. 19. Таблица редактирования правила

100

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