Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

pl:prolog:pllib:modelling_circuits [2019/06/27 15:50]
pl:prolog:pllib:modelling_circuits [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +====== Modelling circuits ======
 +{{tag>​model electronics}}
 +===== Description =====
 +Qualitative modelling program for simple circuits. ​
 +
 +**Source**: ​ PROLOG programming for artificial intelligence,​ 3rd Edition, Harlow, 2001, ISBN 0-201-40375-7.
 +===== Download =====
 +Program source code: {{modelling_circuits.pl}}
 +===== Listing =====
 +<code prolog>
 +% Figure 20.3  Qualitative modelling program for simple circuits. ​
 +
 +
 +%  Modelling simple electric circuits
 +%  Qualitative values of voltages and currents are: neg, zero, pos
 +
 +%  Definition of switch
 +%  switch( SwitchPosition,​ Voltage, Current)
 +
 +switch( on, zero, AnyCurrent). ​     % Switch on: zero voltage
 +switch( off, AnyVoltage, zero). ​    % Switch off: zero current
 +
 +%  Definition of bulb
 +%  bulb( BulbState, Lightness, Voltage, Current)
 +
 +bulb( blown, dark, AnyVoltage, zero).  ​
 +bulb( ok, light, pos, pos).
 +bulb( ok, light, neg, neg).
 +bulb( ok, dark, zero, zero).
 +
 +%  A simple circuit consisting of a bulb, switch and battery
 +
 +circuit1( SwitchPos, BulbState, Lightness) ​ :-
 +   ​switch( SwitchPos, SwVolt, Curr),
 +   bulb( BulbState, Lightness, BulbVolt, Curr),
 +   qsum( SwVolt, BulbVolt, pos).     % Battery voltage = pos
 +
 +%  A more interesting circuit made of a battery, three bulbs and 
 +%  three switches
 +
 +circuit2( Sw1, Sw2, Sw3, B1, B2, B3, L1, L2, L3)  :-
 +   ​switch( Sw1, VSw1, C1),
 +   bulb( B1, L1, VB1, C1),
 +   ​switch( Sw2, VSw2, C2),
 +   bulb( B2, L2, VB2, C2),
 +   qsum( VSw2, VB2, V3),
 +   ​switch( Sw3, V3, CSw3),
 +   bulb( B3, L3, V3, CB3),
 +   qsum( VSw1, VB1, V1),
 +   qsum( V1, V3, pos),
 +   qsum( CSw3, CB3, C3),
 +   qsum( C2, C3, C1).   
 +   
 +%  qsum( Q1, Q2, Q3):
 +%    Q3 = Q1 + Q2, qualitative sum over domain [pos,​zero,​neg]
 +
 +qsum( pos, pos, pos).
 +qsum( pos, zero, pos).
 +qsum( pos, neg, pos).
 +qsum( pos, neg, zero).
 +qsum( pos, neg, neg).
 +qsum( zero, pos, pos).
 +qsum( zero, zero, zero).
 +qsum( zero, neg, neg).
 +qsum( neg, pos, pos).
 +qsum( neg, pos, zero).
 +qsum( neg, pos, neg). 
 +qsum( neg, zero, neg).
 +qsum( neg, neg, neg).
 +</​code>​
 +===== Comments =====
  
pl/prolog/pllib/modelling_circuits.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0