Листинг 14.3. Ограничения для некоторых электрических компонентов и соединений

% модель электрической схемы, заданная средствами CLP(R)

% resistort Tl, T2 , R) :

% R - резистор; Tl, T2 - его клеммы

resistort (VI,il], <V2,I2], R) :-

{ II - -12, V1-V2 - I1*R ) .

% diode! Tl, T2> :

% Tl, T2 - клеммы диода.

% Диод пропускает ток в направлении от Т1 к Т2

diodet (VI,il], (V2,I2) ) :-

{II + 12 - 0) , (II > 0, VI - V2

II - О, VI -< V2].

battery! (VI, ID, [V2,12), Voltage) :-{II + 12 - 0, Voltage =vl - v2 ).

% conn[ [TlrT2, ...]) :

% Соединение клеш* Tl, T2 , ... .

Поскольку потенциалы на всех клеммах соединения одинаковы,



Часть II. Применение языка Prolog в области искусственного интеллекта

сумма токов равна нулю

connf Terminals) :-conn< Terminals, 0).

conn( [ (V,I) ] , Sum) :-

( Sum + I = 0 } .

conni [ (VI,II), <V2,I2) I Rest], Sum) { VI - V2, Suml = Sum + II), COnn( [ (V2, 12) [ Rest], Suml).

Потенциалы на всех клеммах соединения должны быть одинаковыми, а сумма токов через все клеммы должна быть равна нулю.

Теперь можно легко составлять моделируемые схемы. Некоторые примеры схем приведены на рис. 14.4. На этом рисунке даны также определения таких схем, кото­рые могут использоваться в программе моделирования, выполняемой а системе CLP(R). Рассмотрим схему на рис. 14.4, а. Следующий пример показывает, что дан­ная программа моделирования может до некоторой степени использоваться также для проектирования, а не только для моделирования. В частности, было решено в определении предиката circuita на рис. 14.4, а сделать клемму Т21 одним из па­раметров этого предиката. Это дает возможность "считывать" значения потенциала и тока а данной точке схемы. Потенциал на клемме Т2 имеет постоянное значение 0, источник питания имеет напряжение 10 В, но резисторы остались незаданными (они также являются параметрами предиката circuit_a).

Рассмотрим вопрос о том, какими должны быть резисторы, чтобы напряжение на клемме Т21 было равно 6 В, а ток - 1 А.

? -circuit_a [ Rl, R2, [6,1)). Rl= 4. 0 82 - 6.0

Теперь рассмотрим более сложную схему (см. рис. 14.4, б). В этом случае можно задать вопрос о том, какими будут электрические потенциалы и ток на "среднем" ре­зисторе 35, если источник питания имеет напряжение 10 В.

?- circuit_b<10, _, _, _, _, Т51, Т52) .

151= ( 7.340425531514894, 0.0425531914893617)

Т52 = ( 5.212765957446809, -0.0425531914893617)

Итак, потенциалы на клеммах резистора RS равны соответственно 7,340 В и 5,213 В, а ток равен 0,04255 А.

Упражнение

14.6. Проведите эксперименты с программами, приведенными на рис. 14.4. Опреде­лите другие схемы. Например, дополните схему на рис. 14.4, б, установив ди­од последовательно с резистором R5. Как это повлияет на потенциал клеммы Т517 Попробуйте также переставить диод в противоположном направлении.

Глава 14. Логическое программирование в ограничениях



TI

Til

к:

111 p.

i. T12 ii T21



T И

k/

I

T22



circuit a(R1,R2, T21} :-T2 = (0,J, battery(T1,T2,10), resistorf Til,T12,R1), resistorf T21, T22, R2), conn([T1,T11]), сопп<[Т12,Т21]), conn([T2,T22J).

% Потенциал клеммы Т2 равен О % Источник питания на 10 В



б]

Т11



TJ



T2I



Я)

К2



TI2

Т22



Т31

TS1

К5

Т52

Т41



Ri

R4



Тг

]

T42

Т32

circuit Ь[ U, T11 ,Т21 ,Т31,Т41, Т51 ,TS2): Т2= ( 0, J, battery! T1,T2,U), resistorf Т11.Т12. II,

resistorf Тг^Тгг!10), resistorf T31.T32, 15), resistorf 141,142,10), resistorf T51.T52,50), conn([T1,T11,T21]), conn([T12,T31,T51)J, conn([T22,T41,T52]), conn([T2, T32,T42]).

% Потенциал клеммы Т2 равен 0

%R1 = 5 % R2 = 10 % R3 = 15

%R4=10 % R5 = 50

Рве. 14.4. Две электрические схемы



Часть II. Применение изыка Prolog в области искусственного интеллекта

Наши рекомендации