# Różnice

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

 — 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 ===== + + % 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). + ​ + ===== Comments =====
pl/prolog/pllib/modelling_circuits.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)