Машина вывода

 

 

Одним из основных компонентов G2 является машина вывода, выполняющая рассуждения на основании:

• знаний, содержащихся в базе знаний;

• данных, поступающих от подсистемы имитационного моделирования;

• данных, поступающих от внешних источников (контрольно-измерительной аппаратуры, СУБД и т. п.).

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

• сервер данных, получающий данные от внешних источников (контрольно-измерительная аппаратура, СУБД, другая ЭС и т. п.);

• оператор;

• подсистема моделирования внешнего окружения;

• правило, определяющее искомые значения переменных;

• формула, приписанная к переменной (или классу переменных), значение которой требуется системе.

После того как все требуемые значения получены, система определяет, истинно ли условие рассматриваемого правила. Если условия правила истинны, система выполняет действия, находящиеся в консеквенте данного правила. В набор действий, которые используются в консеквентах правил, входят следующие:

- присвоение значения простому атрибуту, параметру или переменной;

- посылка управляющей информации внешнему объекту;

- запуск процедуры;

- создание экземпляра объекта;

- удаление экземпляра объекта;

- порождение и удаление задач (подзадач);

- изменение положения или цвета пиктограмм на экране дисплея;

- управление способом отображения рабочих пространств (положение на экране, масштаб и т. д.);

- вывод сообщений для оператора системы;

- активизация всех правил, ассоциированных с заданным объектом;

- остановка системы и т.д.

В связи с тем, что G2 ориентирована на динамические приложения, работающие в реальном времени, машина вывода должна иметь средства для сокращения перебора, реакции на непредвиденные события и т.п.

Главным недостатком традиционно используемого в статических ЭС прямого и обратного вывода является непредсказуемость затрат времени на их выполнение. Для динамических систем прямой и обратный вывод с полным перебором возможных к применению правил - непозволительная роскошь. Следующая образная интерпретация позволяет понять недостаток традиционных методов построения цепочек логического вывода и необходимость выхода на метауровень (focus и invoke) в динамических системах. Представьте себе, что вы пришли в библиотеку и хотите установить некоторый факт. Следуя алгоритму прямого вывода, вы должны начать читать все книги подряд в алфавитном порядке, пока не наткнетесь на нужный факт. Когда факт установлен, и ваше знание о действительности изменилось, следуя тому же алгоритму, вы должны сначала перечитать все книги, даже уже прочитанные!

Особенностью машины вывода G2 является богатый набор способов возбуждения правил. Правило в G2 может возбуждаться одним из 9 случаев. Методы 4-9 возбуждают правило "при возникновении некоторого события. Для реализации этих методов в G2 введен специальный тип правил, начинающихся с ключевого слова whenever (как только). Правила whenever возбуждаются в первую очередь и обладают наибольшим приоритетом, что гарантирует своевременную реакцию системы на изменения в окружающем мире. Правила этого типа не используются (по умолчанию) ни в прямом, ни в обратном выводе, они являются метаправилами и реагируют на события (перемещение объекта, установление/устранение отношения, получение/неполучение значения).