Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МГУПБ. Лаб. практ.мод. сист. в печать конечная...doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
4.54 Mб
Скачать

Требования к отчету

Отчет должен содержать: задание, конечно-разностную модель решения уравнения математической физики в частных производных, начальные условия, алгоритм моделирования параметрического поля, описание компонента и модели нестационарного температурного поля на плоскости, графики нагрева тела в ключевых точках и их анализ.

Вопросы для самопроверки

1. Запишите синтаксическую форму объявления одномерного, двумерного и трехмерного массивов в базисном компоненте модели.

2. В каких случаях и как элементы массива задаются списком индексов?

3. Как осуществляется доступ к определенному элементу массива, выбор всего множества элементов и выбор по признаку?

4. В чем преимущества моделей с трехмерными массивами?

5. Опишите модель ступенчатого изменения состояния среды.

6. Как организовать протокол регистрации параметрического поля в дискретные моменты времени и вывести на экран области выхода наблюдаемого параметра за установленные границы ?

7. В чем отличие между алгоритмами моделирования симметричных и несимметричных полей?

Литература

1. Ивашкин Ю.А. Мультиагентное имитационное моделирование больших систем : учебное пособие / Ю.А. Ивашкин. – М. : МГУПБ, 2008. – 238 с.

2. Шмидт Б. Искусство моделирования и имитации. Введение в универсальную имитационную систему Simplex3 / Б. Шмидт; перевод с немецкого под редакцией Ю.А. Ивашкина и В.Л. Конюха. – Ghent, Belgium, 2003. – 550 с.

3. Беляева М.А. Моделирование тепломассообменных процессов в прикладной биотехнологии / М.А. Беляева, Ю.А. Ивашкин, А.С. Лукьянов // Современные энергосберегающие тепловые технологии (сушка и тепловлажностная обработка материалов) СЭТТ-2008 : труды Третьей МНПК. – М. : МГУПБ, 2008. – Том 1. – С.113-118.

Лабораторная работа № 8

МОДЕЛИРОВАНИЕ НА ЯЗЫКЕ SIMPLEX-MDL

ДИСКРЕТНЫХ СИСТЕМ

Накопительные массивы и мобильные компоненты,

имитационная модель СМО

Цель работы - приобретение навыков имитационного моделирования дискретных систем с событийным описанием динамики поведения и мобильными компонентами, а также моделирование систем массового обслуживания в универсальной имитационной системе Simplex3 с использованием мобильных компонентов и накопительных массивов.

Теоретическое введение

В дискретных системах переменные состояния модели изменяются в дискретные моменты времени (временные события) и объявляются как дискретные.

В имитационном моделировании дискретных систем выделяют временные события, происходящие в фиксированный момент или интервал времени, являющиеся функцией состояния модели в предшествующий период, и условные события внутри выделенного дискретного временного интервала (периода), происходящее в зависимости от некоторого условия и состояния модели в предшествующем i-м такте внутри фиксированного j-го временного события.

Описание события в определенной синтаксической форме содержит механизм запуска (включения), процедурную часть, описание переходов состояния.

Механизм включения имеет два варианта:

WHENEVER < условие > ׀ ON < индикатор > {OR < индикатор >}

DO

< изменение состояния переменных модели>

END

Механизм WHENEVER (пока) воспроизводит событие до тех пор, пока заданное в заголовке логическое условие истинно TRUE. Для исключения повторения события изменение состояния должно приводить условие к значению FALSE.

Конструкция ON (как только) обеспечивает однократный вызов события по условию, изменяющему свое значение с FALSE на TRUE. В этом случае событие воспроизводится только один раз при переходе условия от ложного FALSE к истинному значению TRUE.

Процедурный раздел события состоит из объявления переменных и последовательности операторов, подключенных к механизму включения. Результат вычисления присваивается вспомогательным переменным TRANSITIONS и передается в объявленное место события.

Расширение возможностей моделирования достигается разделением областей состояния внутри события по следующей синтаксической форме:

IF <условие> DO <изменение состояния> END

{ELSIF <условие>

DO <изменение состояния> END}

[ELSE <условие>

DO <изменение состояния> END]

Например, для светофора, переключающегося в моменты времени Т

,

с периодом повторяющегося временного события – цикла переключения светофора T = 12 единиц времени, описание последовательности событий имеет следующий вид:

WHENEVER T > = TNext

DO

IF (T > = TNext ) AND (T < TNext + 5)

DO State ^ : = ‘red’; END

ELSIF (T > = TNext + 5) AND (T < TNext + 6)

DO State ^ : = ‘yellow’; END

ELSIF (T > = TNext + 6 ) AND ( T < TNext + 11 )

DO State ^ : = ‘green’ ; END

ELSIF ( T > = TNext 11 ) AND ( T < TNext + 12)

DO State ^ : = ‘yellow’ ; END

TNext ^ : = TNext + 12 ;

END

То есть в начальный момент времени TNext = 0 при исходном состоянии

Z = ‘yellow’ (желтый) при включении машинного времени и временном условии T >= TNext в заданном временном периоде происходят условные события переключения светофора. В конце периода закладывается новое значение времени TNext, обновляющее временное событие в момент Т=12 с повторением цикла условных событий.

Если произошедшее событие переключения светофора обуславливает новое событие, то оно вводится в следующем такте того же временного периода.

После окончания всех условных событий тактовые переключения заканчиваются и имитационные часы переключаются вперед в новое временное событие оператором TNext ^ : = TNext + 12 . Таким образом, TNext является переменной состояния для временного переключения событий (имитационные часы).

Имитационное моделирование систем массового обслуживания

Рассмотрим модель «Очередь» [1,2], состоящую из источника заявок, очереди на обслуживание, станции обслуживания (сервера) и выходного приемника выполненных заявок (рис.8.1).

Средний интервал появления заявки 15 временных единиц.

Экспоненциальное распределение

Очередь

Среднее время обслуживания

10 временных единиц. Экспоненциальное распределение

Условие сброса - накопление

4-х выполненных заявок.

Рис. 8.1. Блок-схема модели очереди Queue

В модели воспроизводятся следующие изменения состояния в зависимости от времени и условий:

Событие

Условие

1. Возникновение (поступление) заявок и постановка в очередь

- время поступления

2. Поступление заявки (клиента) из очереди и начало обслуживания

- сервер свободен и есть хотя бы одна заявка

3. Уход заявки после обслуживания в выходной приемник

- сервер загружен и наступил конец обслуживания

4. Очистка выходного приемника после накопления 4-х заявок

- в приемнике находится 4 заявки

Как правило, заявки имеют различные атрибуты и могут быть описаны в виде мобильных компонентов. Их примерами являются объекты, меняющие свое местонахождение во времени – покупатели, транспортные средства, клиенты, заявки, сообщения, детали и т.п. Мобильный компонент имеет декларирующую часть и не содержит описания динамического поведения. Свойства его могут быть изменены только из внешнего базисного компонента.

Мобильный компонент декларируется в базисном в соответствии с описанием:

BASIC COMPONENT < имя >

MOBILE SUBCOMPONENT[S] OF CLASS < имя > {, < имя > }

[ < переменные в физических единицах > ]

[ < локальные определения > ]

DECLARATION OF ELEMENТ

DYNAMIC BEHAVIOUR

END OF < имя >

Синтаксис описания собственно мобильного компонента аналогичен базисному, но без раздела динамики, так как изменение его состояния возможно только через базисный компонент.

MOBILE COMPONENT < имя >

[описание мобильных подкомпонентов]

[определение базовых единиц]

[локальные определения]

DECLARATION OF ELEMENТ

END OF < имя >

Так, например, мобильный компонент Customer c атрибутами Prioritet, TarriveMash и др, изменяющимися только из внешнего базисного компонента, может иметь следующее описание.

MOBILE COMPONENT Customer

DECLARATION OF ELEMENTS

STATE VARIABLES

DISCRETE

Prioritet (INTEGER):=1, # приоритет машины

ArriveMash (REAL):=1, # интервал прихода машин в систему

TArriveMash (REAL) :=1, # время прихода машины в систему

mves1(REAL):=1, # грузоподъемность машины

mves2(REAL):=1 # заказ машины на определенный вид

продукции

END OF Customer

Мобильные компоненты размещаются в накопительных массивах, как местах расположения, образуя очереди клиентов, размещение пассажиров в автобусе, накопление товаров на складе и т.п.

Описания накопительных массивов включаются в раздел описания элементов базисного компонента в виде списка LOCATION[S].

LOCATION[S]

< имя накопителя > ( < имя мобильного компонента >

[ORDERED BY <критерий>{,<критерий>}]) : = < числовое

значение > <имя мобильного компонента >

Модель Queue [2], использует мобильный компонент и воспроизводит четыре события (листинг 8.1).

Источник поставляет экспоненциально распределенные заявки с интервалом 15 вр. ед. Задания делятся на 3 класса по приоритетам 1, 2 и 3, причём приоритет 3 самый высокий.

Поступающие заявки выстраиваются в очередь по стратегии PFIFO с размещением в порядке убывания приоритета. Задания с одинаковыми приоритетами сортируются соответственно времени прибытия, т.е. используя FIFO стратегию. Сервер имеет одно место обслуживания, которое одновременно может обработать только одну заявку. Время обслуживания экспоненциально распределено со средним значением 10 ед. вр. После обслуживания задания покидают сервер и поступают в выходной накопитель, и при накоплении 4-х заявок происходит их сброс.

Описание мобильного компонента Customer, создаваемого с помощью команды NEW component, имеет вид

MOBILE COMPONENT Customer

DECLARATION OF ELEMENTS

STATE VARIABLES

DISCRETE

Priority (INTEGER) := 1 # приоритет

END OF Customer

и располагается за описанием базисного компонента Queue в соответствующем банке моделей.

1 BASIC COMPONENT Queue

2 MOBILE SUBCOMPONENTS OF CLASS Customer

3 DECLARATION OF ELEMENTS

4 STATE VARIABLES

5 DISCRETE

6 TArrive (REAL) := 0,

7 TWork (REAL) := 0,

8 Protocol (LOGICAL) := FALSE

9 RANDOM VARIABLES

10 Arrive (REAL) : EXPO (Mean := 15),

11 Work (REAL) : EXPO (Mean := 10),

  1. Prio (INTEGER) : IUNIFORM (LowLimit:=1, UpLimit:=3)

14 LOCATIONS

15 WaitP (Customer1 ORDERED BY DEC Priority) := 0 Customer1,

16 Station (Customer1) := 0 Customer1,

  1. Sink (Customer1) := 0 Customer1

18 DYNAMIC BEHAVIOUR

19 # Генерация заявок

20 WHENEVER T >= TArrive

21 DO

22 WaitP^ : ADD 1 NEW Customer1

23 CHANGING

24 Priority^ := Prio;

25 END

26 TArrive^ := T + Arrive;

27 IF Protocol

28 DO DISPLAY ("T= %f New Customer \n",T); END

29 END

30 # Начало обслуживания

31 WHENEVER (NUMBER(Station)=0) AND (NUMBER(WaitP)>0)

32 DO

33 Station^ : FROM WaitP GET Customer1[ 1];

34 TWork^ := T + Work;

35 IF Protocol

36 DO DISPLAY ("T= %f Customer enters Station \n",T); END

37 END