Рассмотрим простые электрические схемы, состоящие из выключателей, ламп и источников питания (рис. 20,2). Выключатели могут быть разомкнутыми или замкнутыми (т.е. выключенными или включенными), а лампы могут быть светящимися или темными, сгоревшими или исправными. Нас интересует поиск ответов на вопро-
Часть II. Применение языка Prolog в области искусственного интеллекта
сы, которые относятся к области прогнозирования состояний, диагностики или управления такими электрическими схемами. Одним из примеров вопроса по схеме 1, который относится к области диагностики, является следующий: "Если выключатель включен, а лампа остается темной, то каково состояние этой лампы?" Для того чтобы определить, что данная лампа сгорела, достаточно применить простые качественные рассуждения.
S1 В!
S2 B2
SwVolt BulbVolt
Mg>-
^—О"!
S3
?3
тгп1
Рис. 20.2. Примеры простых схем, состоящих из выключателей, ламп и источников питания
Одним из примеров более интересного диагностического вопроса, касающегося схемы 2, являются следующий: "Видя то, что лампа 2 светится, а лампа 3 остается темной, можно ли сделать достоверный вывод, что лампа 3 сгорела?" Качественные рассуждения подтверждают, что лампа 3, безусловно, является сгоревшей. Для того чтобы светилась лампа 2, через лампу 2 должен проходить ненулевой ток, а выключатель 2 должен быть включен. Если же через лампу 2 течет ненулевой ток, то на лампе 2 должно быть ненулевое напряжение. Для этого требуется, чтобы выключатель 3 был выключен. Такое же ненулевое напряжение поступает на лампу 3. Итак, при подаче одного и того же напряжения лампа 2 светится, а лампа 3 остается темной; это означает, что лампа 3 должна быть сгоревшей.
В рассматриваемой качественной модели подобных схем электрические токи и напряжения имеют лишь качественные значения "pos" (положительный), "zero" (нулевой) и "neq" (отрицательный). Правило абстрагирования, применяемое для преобразования действительного числа X в качественное значение, приведено ниже.
Если X > D, та pos Если X = О, то гего Если X < 0, то neg
В типичных числовых моделях электрических схем используются некоторые фундаментальные законы, такие как законы Кирхгоффа и закон Ома. Законы Кирх-гоффа гласят: во-первых, сумма всех напряжений вдоль любого замкнутого контура в схеме равна 0, во-вторых, сумма всех токов в любом соединении в схеме равна 0. Чтобы применить эти законы в качественной модели, необходимо предусмотреть качественную версию операции арифметического суммирования. В рассматриваемой программе вместо обычного арифметического суммирования X + V = Z применяется сокращенный вариант в виде операции качественного суммирования, которая реализована в форме следующего предиката: qsurat X, У, ZI
Отношение qsum может быть определено просто как множество фактов. Эти факты, например, утверждают, что сумма двух положительных чисел представляет собой положительное число: asurnt pos, pos г pos}.
Глава 20. Качественные рассуждения
Сумма положительного и отрицательного чисел может представлять собой любое из следующих значений:
qsumi роз, neg, pos). qsumj pos, neg, zero). qsum(pos, neg, neg).
Такая операция суммирования является недетерминированной (неопределенной). Из-за отсутствия точной информации, потерянной в процессе качественного абстрагирования, иногда невозможно определить, каковым фактически является результат суммирования. Такого рода недетерминированность является довольно типичной для качественных рассуждений.
Программа, приведенная в листинге 20.1, определяет качественную модель рассматриваемых схем и формализует качественные рассуждения об этой модели. В модели схемы определяются компоненты схемы и учитываются соединения между компонентами. Качественное поведение компонентов двух типов (выключателей и ламп) определяется с помощью следующих предикатов: switch(SwitchPositicn, voltage, Current) bulb(BulbState, Lightness, voitage, Current)
где SwitchPosition - положение выключателя, Voltage - напряжение, Current -ток, BulbState — состояние лампы, a Lightness — ее светимость.
Листинг 20.1. Программа качественного моделирования простых электрических схем
Ч Программа качественного моделирования простых электрических схем % Качественные значения напряжений и токов: neg, zero, pos
% Определение выключателя
% switch! SwitchPosition, Voltage, Current)
switch* on, zero, ftnyCurrent}. % Выключатель замкнут - напряжение равно нулю switch! off, Anyvoltage, zero). % Выключатель разомкнут - ток равен нулю
% Определение лампы:
% bulb[ BulbState, Lightness, Voltage, Current)'
bulb(blown, dark, AnyVoltage, zero). bulb{ ok, light, pos, pos). bulbf ok, light, neg, neg). bulb (ok, dark, zero, zero),
% Простая электрическая схема, состоящая из лампыг выключателя I и источника г.итания
circuit1(SuitchPos, BulbState, Lightness):-switch,- SwitchPos, SwVolt, Curr), bulb(BulbState, Lightness, BulbVolt, Curr), qsum(SwVolt, BulbVolt, pos)- % Напряжение источника питания равно pos
Ъ Более интересная схема, состоящая из источника питания, трех ламп % и трех выключателей
Circuit2[ Swl, Sw2, Sw3, Bl, Б2, БЗ, LI, L2, L3):-switcht Swl, vswl, CD, bulb! Bl, LI, VB1, Cl), switch) Sw2, VSw2, C2), bulb(B2, L2, VB2, C2), qsum(VSw2, VE2, V3\, switcht 3w3, V3, CSw3), bulb(E3, L3, V3, CB3), qsum(VEwl, VB1, VI), qsumt VI, V3, pos), qsumf CSw3, CB3, C3), qsumf C2, C3, Cl).
Часть II. Применение языка Prolog в области искусственного интеллекта
% qsuml Ql, Q2, Q3):
% 03 = Ql + Q2, качественное суммарное значение
% в области определения [pos,zero,neg]
qsumt pos, pos, pos).
qsumt pos, zero, pos).
qsumt pos, neg, pos).
qsumt pos, neg, zero).
qsumt pos, neg, neg).
qsumt zero, pos, pos).
qsumt zero, zero, zero).
qsumt zero, neg, neg).
qsumt neg, pos, pos).
qsumt neg, pos, zero),
qsumt neg, pos, neg).
qsumt neg, zeror neg).
qsumt neg, neg, neg].
Эти варианты качественного поведения являются простыми и могут быть заданы в виде фактов Prolog. Например, на разомкнутом (off) выключателе ток является нулевым (zero), а напряжение может иметь любое значение, как показано ниже. switch! off, AnyVoltage, гего).
Сгоревшая (blown) лампа остается темной (dark), через нее не проходит ток, а напряжение может иметь любое значение, как показано ниже. bulbt blown, dark, AnyVoltage, zero).
Исправная (intact) лампа светится постоянно, за исключением того случая, когда и напряжение, и ток в лампе равны нулю. При этом предполагается, что любой ненулевой ток является достаточно большим для того, чтобы заставить лампу светиться. Напряжение и ток могут одновременно либо равняться нулю, либо быть положительными, либо быть отрицательными. Обратите внимание на то, что это — качественная абстракция закона Ома, который формулируется следующим образом: Voltage - Resistance * Current
Поскольку сопротивление Resistance является положительным, то напряжение Voltage и ток Current должны иметь одинаковый знак и поэтому одно и то же качественное значение.
После того как определены отдельные компоненты, задача определения всей схемы становится несложной. Каждая конкретная схема может быть определена с помощью предиката, например, следующим образом: circuitl(SwPos, Bulbstate, Lightness)
В данном случае предполагается, что наиболее важными свойствами схемы являются положение выключателя SwPos, состояние лампы BulbState и светимость Lightness, поскольку эти переменные используются в качестве параметров предиката circuitl. Но другие количественные показатели схемы, такие как ток, проходящий через лампу, остаются невидимыми за пределами предиката circuitl. Создание модели схемы сводится к определению ограничений, которым должны подчиняться эти параметры, как показано ниже.
1. Законы функционирования лампы.
2. Законы функционирования выключателя.
3. Закон Кирхгоффа (в качественной формулировке): напряжение на выключателе + напряжение на лампе = напряжение источника питания.
Здесь также неявно учтены физические соединения между компонентами, поскольку ток через выключатель равен току через лампу.
Модель схемы 2 (circuit2), хотя и более сложная, создается аналогичным образом.
Ниже приведены некоторые обычные типы вопросов, на которые программа, приведенная в листинге 20.1, легко находит ответ.
Глава 20. Качественные рассуждения
Вопросы прогностического типа
Какими будут наблюдаемые результаты некоторого "входного воздействия" на систему (изменения положений выключателей), если дано некоторое функциональное состояние системы (лампы - исправные или сгоревшие). Например, что произойдет, если будут включены (on) все выключатели, притом что все лампы исправны (ok)?
1- circuit2 (on,on,on,ok,ok,ok,Ll,L2,L3).
LI = light L2 = dark L3 = dark
Вопросы диагностического типа
Если известны аходные воздействия на систему и некоторые результаты наблюдений, то каково состояние функционирования системы (исправна она или неисправна, и в чем состоит неисправность?). Например, если лампа 1 светится, лампа 3 остается темной, а выключатель 3 выключен, то каковы состояния ламп?
?- circuit2(_, _, off, Bl, B2, ВЗ, light, _, dark). Bl - ok B2 = ok БЗ = blown
Вопросы управленческого типа
Каким должно быть управляющее воздействие, позволяющее достичь желаемого результата? Например, какими должны быть положения выключателей, чтобы заставить светиться лампу 3, при условии, что все лампы исправны?
?- circijit2 (SwPosl, SwPos2, SwPos3, ok, ok, ok, _, _, light).
SwPosl = on
EwPos2 = on
5wPos3 = off;
SwPosl = on
SwPos2 = off
SwFos3 = off
Упражнения
20.1. Определите следующее качественное отношение умножения со знаками:
qmultf ft, в, о
Здесь С = А*В, а переменные А, В и С могут иметь качественные значения pos, zero или neg.
20.2. Определите качественные модели резистора и диода следующим образом:
resistor(Voltage, Current) diode(Voltage, Current)
Диод пропускает ток только в одном направлении. В резисторе напряжение Voltage и ток Current имеют одинаковые знаки. Определите качественные модели некоторых схем с резисторами, диодами и источниками питания,