Одним из основных компонентов G2 является машина вывода, выполняющая рассуждения на основании:
- знаний, содержащихся в базе знаний;
- данных, поступающих от подсистемы имитационного моделирования;
- данных, поступающих от внешних источников (контрольно-измерительной аппаратуры, СУБД и т. п.).
Правила возбуждаются машиной вывода. При этом, проверяется истинность условия, находящегося в антецеденте правила. Если оно истинно, то машина вывода выполняет действия, находящиеся в консеквенте. При проверке условия правила машине вывода необходимо найти значения всех переменных и параметров, содержащихся в них. Параметры в любой момент времени имеют определенное значение, в то время как значение переменных может отсутствовать, поскольку для них определено время жизни. Если переменная не имеет значения, система может получить ее значение из следующих источников:
- сервер данных, получающий данные от внешних источников (контрольно-измерительная аппаратура, СУБД, другая ЭС и т. п.);
- оператор;
- подсистема моделирования внешнего окружения;
- правило, определяющее искомые значения переменных;
- формула, приписанная к переменной (или классу переменных), значение которой требуется системе.
После того как все требуемые значения получены, система определяет, истинно ли условие рассматриваемого правила. Если условия правила истинны, система выполняет действия, находящиеся в консеквенте данного правила. В набор действий, которые используются в консеквентах правил, входят следующие:
- присвоение значения простому атрибуту, параметру или переменной;
- посылка управляющей информации внешнему объекту;
- запуск процедуры;
- создание экземпляра объекта;
- удаление экземпляра объекта;
- порождение и удаление задач (подзадач);
- изменение положения или цвета пиктограмм на экране дисплея;
- управление способом отображения рабочих пространств (положение на экране, масштаб и т. д.);
- вывод сообщений для оператора системы;
- активизация всех правил, ассоциированных с заданным объектом;
- остановка системы и т.д.
В связи с тем, что G2 ориентирована на динамические приложения, работающие в реальном времени, машина вывода должна иметь средства для сокращения перебора, реакции на непредвиденные события и т.п.
Главным недостатком традиционно используемого в статических ЭС прямого и обратного вывода является непредсказуемость затрат времени на их выполнение. Для динамических систем прямой и обратный вывод с полным перебором возможных к применению правил - непозволительная роскошь. Следующая образная интерпретация позволяет понять недостаток традиционных методов построения цепочек логического вывода и необходимость выхода на метауровень (focus и invoke) в динамических системах. Представьте себе, что вы пришли в библиотеку и хотите установить некоторый факт. Следуя алгоритму прямого вывода, вы должны начать читать все книги подряд в алфавитном порядке, пока не наткнетесь на нужный факт. Когда факт установлен, и ваше знание о действительности изменилось, следуя тому же алгоритму, вы должны сначала перечитать все книги, даже уже прочитанные!
Особенностью машины вывода G2 является богатый набор способов возбуждения правил. Правило в G2 может возбуждаться одним из 9 случаев. Методы 4-9 возбуждают правило "при возникновении некоторого события. Для реализации этих методов в G2 введен специальный тип правил, начинающихся с ключевого слова whenever (как только). Правила whenever возбуждаются в первую очередь и обладают наибольшим приоритетом, что гарантирует своевременную реакцию системы на изменения в окружающем мире. Правила этого типа не используются (по умолчанию) ни в прямом, ни в обратном выводе, они являются метаправилами и реагируют на события (перемещение объекта, установление/устранение отношения, получение/неполучение значения).