Листинг 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 в области искусственного интеллекта