Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Программа качественного машинного моделирования




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

Листинг 20.2. Программа машинного моделирования, предназначенная для решения качественных дифференциальных уравнений. В этой программе используются обычные предикаты обработки списков member/2 И сопс/3

% Интерпретатор качественных дифференциальных уравнений

:- ор(100, xfx,..>.:- ор(500, xfx,:].

% landmarks! Domain, [ Landl, Land2,... ]

% Landl, Land2 и т.д. - отметки для области определения Domain; они входят

* в состав определения качественной модели, заданного пользователем

% correspond! Constraint):

% переменная Constraint задает соответствующие значения

% для ограничения некоторого типа

correspond! sum! Doml:zero, Dom2:zero, Dom3:zeroM.

correspond! sum(Doml:L, Don\2: zero, Doml:L))!~

qmag I Doml:L), L \ = = zero, not [L = _••_)• % L - это ненулевая отметка

i в области определения Doml

correspond! sum(Doml:zero, Dom2:L, Dom2:U):-

qmag I Doro2:L), L \ = zero, not [L = _.._). % L - это ненулевая отметка

% в области определения Dom2

correspond; sum(VI, V2, V3)):-

correspond! VI, V2, V3). i Определяемые пользователем соответствующие значения

% Ниже приведено пустое определение отношения correspond/З, которое

% предназначено лишь для предотвращения возникновения ошибки "Неопределенный

* предикат" в некоторых версиях системы Prolog

Correspond! dumny, dummy, dummy).

% gmag! Domain:QualMagnitude) фпад[ Domain;Qm):-

landmarks! Domain, Lands),

gmag (Lands, QnO.

gmag(Lands, L):-
member) L, Lands),
L \== minf, L \== inf. % Конечная отметка


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



qmag(Lands, L1..L2):- * Интервал

concl _, [L1,L2 I _ ], Lands). l Две смежные отметки

% relative_qmag{ Domainl:QM, Domain2:Landmark, Sign):

% переменная Sign - это знак разности между переменными QM и Landmark;

\ если QH < Landmark, го Sign - neg и т.д.

relative_qraag(Domain:Ma..Mb, Domain:Land, Sign):-!, landmarks[ Domain, Lands),

(compare_lands(Ma, Land, Lands, neg). Sign» neg,!;

Sign - pos).

rrlative_qmag(Domain:Ml, Domain:M2, Sign):-landmarks! Domain, Lands), compare_lands(Ml, M2, Lands, Sign),!.

% qdir(Qdir, Sign):

% переменная Qdir - это качественное значение направления изменения

% со знаком Sign

qdir[ dec, neg). gdir(std, zero). qdir(inc, pos).

в Законы качественного суммирования

% qsum(Ql, Q2, Q3]:

% Q3 = Ql + Q2, качественная операция суммирования

% в области определения [pos,zero,neg]

qsum(pos, pos, pos).

qsum; pos, zero, pos).

qsumi pos, neg, pos).

gsuml pos, neg, zero),

qsuml pos, neg, neg).

qsum(zero, pos, pos).

qsum< zero, zero, zero).

qsum(zero, neg, neg).

qsumj neg, pos, pos).

gsum{ neg, pos, zero).

qsum(neg, pos, neg).

qsuml neg, zero, neg).

qsum< neg, neg, neg).

% qdirsuml Dl, D2, D3):

% качественная операция суммирования обозначений направления изменения

qdirsumt Dl, D2, D3I:-

qdir[ Dl, Ql), qdiri D2, Q2), qdiri D3, Q3), qsuraf Ql, Q2, Q3).

% sum(QV1, QV2, QV3):

i QVl - QV2 + QV3, качественная операция суммирования качественных значений % в форме Domain:Qmag/Dir. При вызове этого предиката предполагается, что % области определения всех трех параметров конкретизированы

sum! D1:QM1/Dirl, D2;QM2/Dir2, D3:QM3/Dir3):-

qdirsumf Dirl, Dir2, Dir3), % Направления изменений: Dill + Dir2 = Dir3 qraag(D1:QM1), qmag (D2:QM2), qmag (D3:QM3),

% QM1+QM2-QM3 должны Сыть согласованы со всеми соответствующими значениями: not (



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


correspond sum[ D1:V1, D2:V2, D3:V3)), * VI + V2 = V3 relative_qmag(D1;QM1, D1:V1, Signl), relative_qmag(D2:QM2, D2:V2, Sign2}, relative_qmag(D3:QM3, D3:V3, Sign3}, not qsuml Signl, Sign2, Sign3)).

% inplus (X, Y} :

* переменная Y - монотонно возрастающая функция от- X

raplus(D1:QM1/Dir, D2:QM2/Dir):- % Равные направления изменения qmag{ D1:QM1), qmagf D2:QM2),

$ переменные QM1, QM2 согласованы со всеми соответствующими значениями $ от D1 до D2: not (correspond; D1:V1, D2:V2)r

relative_qmag(D1:QM1, D1:V1, Signl),

relative_qmag(D2:QM2, D2:V2, Sign2),

Signl \== Sign2 ).

% derivf Van, Var2):

% производная по времени переменной varl качественно равна Var2

deriv{ Doml :Qmagl/Dirl, Dom2:Qmag2/Dir2):-qriir(Dirl, Signl), qmag(Dom2:Qmag2),

relative_qmag(Dom2:Qmag2, Dom2:zero, Sign2), % 3ign2 - знак переменной Qmag2 Signl = Sign2.

I transitionf Domain:Qmagl/Dirl, Domain:Craag2/Dir2):

% предикат, который определяет переход переменных из одного состояния

* в другое в "последовательные" моменты времени

transition! Dom:LI..L2/std, Dom:LI..L2/Dir2):-qdir(Dir2, AnySign).

transition! Dom:Ll,. L2/inc, Don:Li. .L2/inc).

transition! Dom:LI..L2/inc, Dora:LI.,L2/std).

transition,- Dom:LI..L2/inc, Dom:L2/inc):-L2 \== inf.

transition! Dom: LI.. L2/inc, Dom:Ij2/std}:-L2 \== inf.

transition! Dora:LI..L2/dec, Dora:LI..L2/dec;.

transition! Dem:LI,.L2/dec, Dom: LI..L2/std).

transition! Dom:LI.,L2/dec, Dom:LI /dec j LI \== minf.

transition,- Dom:Ll..L2/dec, Dom:Ll/std):-LI \== minf,

transition! Dem:Ll/std, Dom:Ll/std):-

LI \«A..B. % Переменная LI ке относится к интервалу

transition,- Dom:Ll/std, Dom:LI..L2/inc):-qmag< Dom:LI..L2).

transition! Dom;Ll/std, Dom:LO..Li/dec):-qmag(Dom:L0..LI}.

transition,- Dom:Ll/inc, Dom:LI..L2/inc):-qpag(Dom:LI..L2).


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



transition! Dom:Ll/dec, Dom:LO..Ll/dec):-qmag (Dom;LQ-.LI}.

t system_trans(Statel, State2):

% переход системы из одного состояния в другое; состояние системы - это

% список значений переменный

system_trans ([], [ ]).

system_trarts< [Vail I Valsl], [Val2 I Vals2]}:-transition! Vail, Val2), system_transl Valsl, Vals2).

% legal_trans(Statel, State2):

§ переход иэ одного состояния в другое, допустимый в соответствии с моделью

legal^trans(Statel, State2): -system_ti:ans! Statel, Scate2 ),

Statel \== State2, % Следующее состояние, качественно отличное от предыдущего legalstate{ State2J. % СОСТОЯНИЕ, допустимое в соответствии с моделью

* simulate! SystemStates, MaxLength):

% переменная SystemStates представляет собой последовательность состояний

i моделируемой системы, не превышающую по длине MaxLength

simulate{ [State], MaxLength):-

(MaxLength = 1 % Достигнута максимальная длина

not legaltrans{ State, _) % Отсутствует допустимое следующее состояние

1,! •

simulate! [Statel,State2 (Rest], MaxLength):-MaxLength > 1, NewMaxL is MaxLength - 1, legaltransl Statel, State2), simulate) [State2 I Rest], NewMaxL).

% simulate! InitialState, QualBehaviour, MaxLength)

simulate! InitialState, [InitialState I Rest], MaxLength):-

Iegal3tate(InitialState), % Проверка соответствия модели системы

simulate! [InitialState i Rest], MaxLength).

I compare_lands (XI, X.2, List, Sign):

I если переменная XI предшествует переменной Х2 в списке List, то Sign = neg;

% если Х2 предшествует XI, то Sign ™ pos; в ином случае Sign — zero

coTTipare_lands [ XI, Х2, [First I Rest), Sign]:-XI = X2,!, Sign - zero

XI = First,!, Sign = neg

X2 = First,!, Sign = pos

cc;r.pare_lands (XI, X2, Rest, Sign).





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 341 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2174 - | 2121 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.