6 МОДЕЛИРОВАНИЕ СИСТЕМ - Страница 3

7. НЕПРЕРЫВНОЕ ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ

 

7.1. ОБЩИЕ ПОЛОЖЕНИЯ

 

При непрерывном имитационном моделировании поведение исследуемого

объекта    обычно    отображается,    помимо     прочего,    набором     уравнений   -алгебраических, разностных или дифференциальных. Уравнения помещаются в особую процедуру STATE в порядке, определяемом языком программирования и позволяющем производить вычисления, не приводящие к неопределенностям.

Зависимые переменные модели составляют группу переменных состояния (структурных переменных) SS(I), имеющих начальное значение SSL(I). Расчет SS(I) ведется либо по типу SS(I) = f(SSL(I),TNOW) (алгебраическая форма), либо в виде разностного уравнения: SS(I) =SSL(I)+DTNOW*RATE(I), где  RATE(I) - темп (скорость) изменения переменной SS(I). В последнем случае можно использовать для I-й переменной приведенную форму (символ * опущен; в скобках указон не номер I-й переменной, а номер шага):

yn=A1yn-1+A2yn-2+…+ANyn-N+C,

где  yn= SS(1), yn-1=SSL(1)=SS(2), … ,  yn-N=SSL(N)=SS(N-1). Тогда

SS(1)= A1SSL(1)+A2SSL(2)+…+ANSSL(N)+C,

SS(2)=SSL(1),

SS(3)=SSL(2),

………………

 

SS(N)=SSL(N-1).

Таким образом, искомое значение SS для I-й переменной на n-м шаге времени (SS(1)) находится через предыдущие значения y (равные SS(2) на шаге n-1; SS(3) - на шаге n-2 и т.д).

В дифференциальных уравнениях вместо RATE(I) используется переменная

DD(I) - производная от SS(I) - с начальным значением DDL(I) в момент TTLAS (конец предыдущего шага времени):

SS(I) = f(SSL(I),   TNOW) = SSL(I) +      ,

где DTFUL - шаг интегрирования.

Рис.6.1. Алгоритм работы процессно-ориентированной модели

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

На  любом  временном  отрезке  интегрирования  обычно  процедура STATE

вызывается несколько раз для уточнения производной DD(I), поэтому модельное время продвигается с шагом DTNOW, составляющим часть от DDFUL. Последний, в свою очередь, зависит от ряда условий. Поэтому в общем случае DTNOW=f(DDFUL), а DDFUL=min[DTF, TTSAV-TTLAS, TNEXT-TTLAS], где DTFÎ{f(RATE), DTACC}, f(RATE) - шаг, определяемый наибольшей скоростью RATE (рассчитывается по различным методикам), DTACC - шаг интегрирования, гарантирующий точность (зависит от метода численного решения уравнений) и меняющийся   в  зависимости  от  текущей  погрешности  расчетов  в  пределах  от

DTMIN до DTMAX (задаются пользователем); TTSAV - момент сбора статистических данных; TNEXT - время свершения ближайшего события. Следует обратить внимание на то, что в случае неопределенности при инициализации переменных в правой части выражения для DDFUL всем неизвестным переменным следует задать любые максимально возможные значения, чтобы они не мешали выбору минимальной величины среди остальных компонентов.

 

7.2. АЛГОРИТМ ИНТЕГРИРОВАНИЯ РУНГЕ-КУТТА-ФЕЛБЕРГА

 

Это самозапускающийся метод с переменным размером шага, позволяющий интегрировать системы обыкновенных дифференциальных уравнений первого порядка, представленных в виде

()=((),)

и при начальных условиях (), где ()=, () - в общем случае вектор. Причем ()=SS(I), ()=DD(I), ()=SSL(I).

Алгоритм представляет собой одношаговую процедуру, включающую вычисление шести функций в течение шага =DDFUL. Пусть =+, где =TTLAS. Для вычисления надо решить следующие уравнения:

=((),), где ()=() (начальный уровень),

=(()+,+), =DTNOW1«DTNOW =f( =DTFUL),

=(()++,+), =DTNOW1+DTNOW2 ,

=(()+-+,+), … ,

=(()+-+-,+),

=(()-+-+-,+),

EERR=--++,

()=()+++-,

TERR=AAERR+RRERR*ç()ç,

где AAERR, RRERR - заданные пользователем значения абсолютной и относительной ошибок. Усли EERR £ TERR, значение () считается допустимым. Если Q = êEERRê/TERR > 1, значение  уменьшают; если Q £ 1, значение  увеличивают: всегда DTMIN £  =  /Q1/5 = DTACC £ DTMAX.

Дифференциальные уравнения более высокого порядка должны быть приведены к канонической форме:

= (,,,…,,).

Далее: SS(1) =, SS(2)==DD(1), SS(3)==DD(2), … SS(N)==DD(N-1). Тогда DD(N)=(SS(1),SS(2),…,SS(N),t); =(SSL(1),…,SSL(N)); =SSL(N),…; =SS(2); =(SSL(1)+, SSL(2)+,…,SSL(N)+)… .