3.2. Структуры данных и знаний экспертной системы
При решении различных задач на основе методологии компьютерного имитационного моделирования возникает необходимость в структурированном хранении, используемых данных и знаний.
Так для реализации компьютерного эксперимента с помощью модели (42) необходимы матрицы и векторы коэффициентов, характеризующие свойства микроорганизмов, составляющих исследуемое микробиологическое сообщество.Структура фрагмента реляционной базы данных - банка данных по составу и структуре микробиоценозов для модели (42) представлена ниже:
Рис. 19. Структура фрагмента базы данных для модели (42).
На рис. 19. таблицы SP_MICR, SP_SUBSTR, SP_PRODUCT - справоч-
ники, содержащие информацию о возможных микробах, субстратах и про-
дуктах метаболизма соответственно. Таблицы MICRSUBSTR,
MICR_PRODUCT и PRODUCT MICR содержат информацию, отражающую
характер взаимосвязей между элементами микробиоценозов. По запросу к
базе данных экспертная система получит информацию по требуемым видам
микроорганизмов, необходимую для моделирования. Таким образом, полно-
та и достоверность данных во многом будут определять адекватность полу-
ченных результатов.
Однако наряду с обобщённой математической моделью (42), позволяющей описать поведение микробиологической системы с большим числом видов, часто необходимо рассматривать многочисленные частные случаи взаимодействия нескольких популяций. В связи с чем, в процессе исследований, возникает необходимость модификации существующих и добавления новых моделей в базу знаний экспертной системы.
Ниже представлена структура фрагмента реляционной базы данных для банка дифференциальных моделей:
1
Рис. 20. Структура банка дифференциальных моделей.
Таблица SP_DMODEL - справочник моделей (табл.
6), PAR - параметры (коэффициенты) моделей (табл. 7), FPER- фазовые переменные (табл. 8). Ниже представлено содержание таблиц банка дифференциальных моделей для двух моделей.
Таблица 6. Фрагмент записей таблицы SP_DMODEL, для двух моделей.
DMODEL ID |
CODE |
NAME |
N |
Nk |
DY |
100 |
21 |
Модель развития двух популяций («Биологическая защита») |
5 |
16 |
dX/dt=mx*X*S/((ksx+S)*(l+kpyx*Py) *( 1 +kpxx*Px))-bxx*X*Px-byx*X*Py-bx*X*X; dS/dt=-qsx* X* S/((ksx+S) *( 1 +kpyx* Py) *(l+kpxx*Px))-qsy*Y*S/((ksy+S)*(l+kpyy*Py)); dPx/dt=qpx*X* S/((ksx+S)*( 1 +kpyx*Py) *(l+kpxx*Px)); dY/dt=my*Y*S/((ksy+S)*(l+kpyy*Py))-byy*Y*Py -by*Y*Y; dPy/dt=qpy*Y*S/((ksy+S)*(l+kpyy*Py)); |
120 |
17 |
Модель развития одной популяции |
3 |
7 |
dX/dt=m*X*S/((ks+S)*(l+kp*P))-bl*X*P-b2*X*X; dS/dt=-qs*X*S/((ks+S)*( 1 +kp*P)); dP/dt=qp*X*S/((ks+S)*(l+kp*P)); |
Таблица 7. Фрагмент записей таблицы PAR, для двух моделей.
DMODEL ID |
NUM PP |
NAME |
LNAME |
DEF VALUE |
100 |
1 |
Максимальная удельная скорость роста |
mx |
0,19 |
100 |
2 |
Максимальная удельная скорость роста |
my |
0,84 |
1
DMODEL ID |
NUM PP |
NAME |
LNAME |
DEF VALUE |
100 |
3 |
Максимальная удельная скорость потребления субстрата |
qsx |
0,075 |
100 |
4 |
Коэффициент насыщения |
ksx |
50 |
100 |
5 |
Максимальная удельная скорость выработки метаболита |
qpx |
0,06 |
100 |
6 |
Максимальная удельная скорость потребления субстрата |
qsy |
0,065 |
100 |
7 |
Коэффициент насыщения |
ksy |
40 |
100 |
8 |
Максимальная удельная скорость выработки метаболита |
qpy |
0,07 |
100 |
9 |
Коэффициент |
kpxx |
0,001 |
100 |
10 |
Коэффициент |
kpyx |
0,001 |
100 |
11 |
Коэффициент |
kpyy |
0,001 |
100 |
12 |
Коэффициент |
bxx |
0,002 |
100 |
13 |
Коэффициент |
byx |
0,005 |
100 |
14 |
Коэффициент |
bx |
0,001 |
100 |
15 |
Коэффициент |
byy |
0,002 |
100 |
16 |
Коэффициент |
by |
0,001 |
120 |
1 |
Максимальная удельная скорость роста |
m |
0,75 |
120 |
2 |
Коэффициент |
bl |
0,002 |
120 |
3 |
Коэффициент |
b2 |
0,001 |
120 |
4 |
Коэффициент |
kp |
0,01 |
120 |
5 |
Коэффициент насыщения |
ks |
119 |
120 |
6 |
Максимальная удельная скорость потребления субстрата |
qs |
0,09 |
120 |
7 |
Максимальная удельная скорость выработки метаболита |
qp |
0,03 |
Таблица 8. Фрагмент записей таблицы FPER, для двух моделей.
DMODEL ID |
NUM PP |
NAME |
LNAME |
DEF VALUE |
DESCRIPTION |
100 |
1 |
численность |
X |
75 |
- |
100 |
2 |
субстрат |
S |
513 |
- |
100 |
3 |
метаболит |
Рх |
1 |
- |
100 |
4 |
численность |
Y |
1 |
- |
100 |
5 |
метаболит |
РУ |
1 |
- |
120 |
1 |
численность |
X |
4 |
- |
120 |
2 |
субстрат |
S |
562 |
- |
120 |
3 |
метаболит |
Р |
2 |
- |
Строковое поле DY в таблице SP_DMODEL содержит представление системы дифференциальных уравнений в общепринятом виде.
Однако для решения соответствующих моделей численными методами необходимо получать значения производных в заданный момент времени, при известных значениях коэффициентов и переменных. В связи сэтим запись системы в базе преобразовывается в вид пригодный для интерпретации во время выполнения программы, а символьные обозначения переменных и коэффициентов в массивы, что позволяет обобщить алгоритмы представления модели для пользователя и численного решения.Ниже представлен вариант кода на алгоритмическом языке Pascal, содержащий запись системы уравнений модели 21 (табл. 6) для интерпретатора FastScript 1.7. В процессе инициализации модели устанавливаются значения элементов массива коэффициентов к и выполняется интерпретирование представленного ниже кода, а при решении системы уравнений для получения значений массива производных Dy задаётся массив значений переменных Yt в момент времени t, затем происходит вызов процедуры pDy, после чего массив Dy считывается основной программой, var
t: extended; //время
k: array [0..15] of extended; // массив значений коэффициентов
Yt: array[0..4] of extended; //массив значений переменных в момент времени t
Dy: array[0..4] of extended; // массив значений производных в момент времени t
//.
//Система дифференциальных уравнений
procedure pDy;
begin
Dy[0] :=k[0]*YttO]*Yt[l]/((k[3J+Yt[l])*(l+k[9]*Yt[4])*(l+k[8]*Yt[2])gt; k[ll]1"Yt[0]*Yt[2]-k[12]HcYt[0]*Yt[4]-k[13]*Yt[0]*Yt[0];
Dy[l] := -k[2]*Yt[0]*Yt[l]/((k[3]+Yt[l])*(l+k[9]*Yt[4])*(l+k[8]*Yt[2]))-k[5]*Yt[3]*Yt[l]/((k[6]+Yt[l])*(l+k[10]*Yt[4]));
Dy[2] := k[4]*Yt[0]*Yt[l]/((k[3]+Yt[l])*(l+k[9]*Yt[4])*(l+k[8]*Yt[2]));
Dy[3] := k[l]*Yt[3]*Yt[l]/((k[6]+Yt[l])*(l+k[10]*Yt[4]))-k[14]*Yt[3]*Yt[4]-k[15]*Yt[3]*Yt[3];
Dy[4] := k[7]*Yt[3]*Yt[l]/((k[6]+Yt[l])*(l+k[10]*Yt[4]));
end;
//-
begin
end.
Блок-схема алгоритма предварительной интерпретации системы уравнений для банка дифференциальных моделей представлена на рис.
21.
Рис. 21. Блок-схеме алгоритма предварительной интерпретации.
1
Интерпретатор FastScript 1.7. компании FastReports реализован как компонент среды разработки приложений Borland Delphi, и позволяет программам интерпретировать во время выполнения код на различных алгоритмических языках (PascalScript, BasicScript, JavaScript, C++Script).
Применение аналогичных интерпретаторов позволяет, кроме дифференциальных уравнений, помещать в таблицу базы данных поле с текстовой информацией в виде функции или модуля (набора функций, процедур) на алгоритмическом языке, отражающие те или иные закономерности функционирования исследуемого объекта. Обращения к ним могут использоваться при расчёте производных (например, входить в уравнения в виде функций от времени и фазовых переменных). Такой подход позволяет значительно расширить возможности моделей представленных в виде обыкновенных дифференциальных уравнений, что также позволяет конструировать непрерывно-дискретные (или гибридные) модели.
Ниже представлена структура фрагмента реляционной базы данных для банка интегрированных имитационных моделей:
Рис. 22. Структура банка интегрированных моделей.
1
На рис. 22. таблицы SPINTGMODEL, SPREGMODEL - справочники интегрированных и регрессионных моделей соответственно, таблицы PAR, FPER, REGPAR, REG_PER - содержат информацию о коэффициентах и переменных моделей. Таблица rNTG_REG содержит информацию о регрессионных зависимостях применяемых в интегрированной модели, однако конкретный вид зависимости и значения её коэффициентов будут определяться, в результате обработки экспериментальных данных согласно алгоритму, представленному на рис. 18.
Следует отметить, что в случае применения для реализации базы знаний СУБД, основанных на технологии «клиент-сервер», интерпретацию моделей и численное решение можно осуществлять на стороне сервера, а клиентское приложение по запросу будет получать результаты моделирования. Такой вариант представляется особенно эффективным при необходимости организации многопользовательского режима работы с экспертной системой в условиях распределённых источников информации.
Однако интерпретирование моделей в процессе выполнения программы существенно снижает производительность вычислительных алгоритмов. Этот факт сжимает границы их применения в задачах оптимизации и структурно-параметрического синтеза систем, в которых необходимы многократные прогоны моделей в различных условиях. Для этих целей можно предложить более сложный механизм, при котором модель, собранная на основе базы знаний и шаблонного кода «компьютерного экспериментального стенда», с заданным набором возможностей компилируется в исполняемый файл. Такой подход наряду с гибкостью интерпретируемых моделей позволяет получить высокую скорость вычисления результатов компьютерного эксперимента.