Листинг 20.3. Качественная модель ванны

i Модель ванны

landmarks) amount, [ гего, full, inf)) . landmarks! level, [ zero, top, inf]). landmarks! flow, [ minf, zero, inflow, inf]).

correspond! amount:zero, level:zero) . correspond! amount:full, level:top).

legalstate( t Level, Amount, Outflow, Netflow]) :-mplus[ Amount, Level), mplus[ Level, Outflow),

Inflow • flow:inflDw/std, % Постоянный приток

sum( Outflow, Netflow, Inflow), % Netflow • Inflow - Outflow
detiv( Amount, Metflow),
not overflowing,- Level) . % вода не переливается через край

overflowing! level:top..inf/_). % Вода переливается через край

initial! I level: zero/inc, amount,- zero/inc, flow: zero/inc, flow: inflow/dec 3 ) .

Ниже приведен первый из ответов системы Prolog на этот запрос (немного отре­дактированный) .

Ё = [level:zero/inc, amount;zero/inc, flow:zero/inc, flow:inficu/dec]

Behaviour =

[level:zero/inc,amount:zero/inc, flow:zero/inc,flow:inflow/dec] , [level:zero..top/inc,amount:zero..full/inc,flow:zero..inflow/inc,

flow:zero..inflow/dec] , [level:zero..top/std,amount:zero..full/std,flow:inflow/stdE flow:zero/std]]


Глава 20. Качественные рассуждения



Программу машинного моделирования, приведенную в листинге 20.2, можно лег­ко применить для эксплуатации других моделей. На рис. 20.7 показана электриче­ская схема с двумя конденсаторами и резистором, а в листинге 20.4 приведена каче­ственная модель этой динамической схемы и соответствующее начальное состояние.

Б начальном состоянии на левом конденсаторе имеется некоторое начальное напря­жение, а правый конденсатор разряжен. Ниже приведены запрос, позволяющий на­чать процедуру машинного моделирования, и ответ программы моделирования (немного отредактированный).

?- initial( S), simulate( S, Behaviour, 10]. Behaviour =

[ [volt:vO/dec,volt:zero/inc, . . . ], [volt:zero..vO/dec,volt:zero..vO/inc,...], [volt:zero..vO/std,volt:zero,.vO/std,... ] ]


UC1


C1


C2


UC2


Рис. 20.7, Электрическая схема с двумя конденсаторами и резистором

Листинг 20.4. Качественная модель схемы, приведенной на рис. 20.7

h Качественная модель электрической схемы с резистором и конденсаторами


landmarks( volt, [minf, zero, vO, inf]). i landmarks( voltR, [minf, zero, vO, inf]). % landmarks( current, [minf, zero, inf]).


Напряжение на конденсаторам Напряжение на резисторе


correspond! voltR:zero, current:zero) .


% Закон Ома для резистора

legalstate[ [ UC1, ЦС2, UR, CurrR]) sumi ш, исг, uci] , mplus( UR, CurrR), deriv( UC2, CurrR)r

Sum( CurrR, current:CurrCl, current:zero/std), * CurrCl deriv{ UCI, current:CurrCl) . * CurrCl - d/dt UCI


CurrR


initial! [ volt:v0/dec, volt:zero/inc, voltR:vO/dec, current:zero..inf/dec]) .

По сути, этот ответ означает, что напряжение на конденсаторе С1 будет уменьшать­ся, а на конденсаторе С2 увеличиваться до тех пор, пока оба напряжения не станут равными (после этого ток и напряжение на резисторе примут нулевое значение) .