
- •Лабораторная работа №1 календарь событий
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №2
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №3
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №4
- •Содержание отчета
- •Контрольные вопросы
Содержание отчета
1. Краткое описание алгоритма имитации.
2. Результаты выполнения задания.
Контрольные вопросы
Какие составные части включает структура модели?
Что содержит общая часть программы?
Для чего служит процессор дискретного моделирования?
Что представляет собой модуль инициализации?
Для чего необходима подпрограмма обработки события?
При каких условиях заканчивается имитационный прогон?
Для чего служит подпрограмма otput?
При каких условиях имитация заканчивается?
Лабораторная работа №3
НЕПРЕРЫВНОЕ МОДЕЛИРОВАНИЕ
Цель работы: Ознакомление со структурой и функционированием непрерывной имитационной модели.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
При непрерывном моделировании время меняется непрерывно с шагом, определяемым скоростью процессов в исследуемом объекте. Состояние модели определяется путем решения уравнений, связывающих параметры объекта с временем. При достижении любого параметра (параметров) некоторого порога наступает событие (структурное событие), изменяющее состояние модели или ее поведение.
Структура модели может вклюяать следующие составные части.
Главный модуль. Накладывает общие требования к модели и вызывает процессор непрерывного моделирования.
Процессор непрерывного моделированитя – управляющий модуль. Координирует работу остальных частей модели.
Модуль инициализации. Задает значения параметров моделируемого объекта.
Модуль решения уравнений. Определяет состояние модели путем вычисления ее переменных.
Подпрограмма флагов. Определяет моменты наступления и коды структурных событий при достижении параметрами модели заданных порогов.
Другие модули предназначены для поиска подпрограмм обработки событий, сбора статистической информации, вывода данных и т.д.
Рассмотрим непрерывную модель на примере модели зрительного зала, часть которого отведена под стулья.. Поступление зрителей – равномерное с интервалом dtnow. Сначала занимаются стулья, затем стоячие места. Когда зал заполнится, начинается сеанс.
program nm;
USES crt;
var
ezp1,ezp2,zp:real;
k,k1,k2,k3,tnow,ttlas,nrns,nnrns,tsob1,
dtnow,tmax:integer;
const
ttbeg=0;
ttfin=300;
pz=16;
procedure intlc;
begin
writeln('Инициализация переменных');
ttlas:=ttbeg; tnow:=ttlas; writeln('tnow:=',tnow);
ezp1:=_;
k:=0;writeln('k:=',k);
ezp2:=_;
k1:=0;writeln('k1:=',k1);
zp:=0;writeln('zp:=',zp);
k3:=_;writeln('k3:=',k3);
dtnow:=1;{Интервал поступления зрителей}
k2:=0;writeln('k2:=',k2);
tmax:=ttfin;
end;
procedure state;
label 1,2;
begin
writeln('Определение переменных состояния');
if k>=k3 then goto 1;
k2:=0;writeln('k2:=',k2);
k1:=k1+1;writeln('k1:=',k1);
goto 2;
1: k1:=k3;writeln('k1:=',k1);
k2:=k2+1;writeln('k2:=',k2);
2: zp:=k1*ezp1+k2*ezp2;writeln('zp:=',zp);
k:=k2+k1;writeln('k:=',k);
writeln('Вызов подпрограммы флагов');
end;
procedure sob1;
begin
writeln('Происходит первое событие');
tsob1:=tnow;
writeln('tsob1:=',tsob1,' k1:=',k3);
end;
procedure sob2;
begin
writeln('Происходит второе событие');
writeln('Зал заполнен');
tmax:=tnow;
end;
procedure event(j:integer);
begin
writeln('Обработка событий');
case j of
1:begin
sob1;
end;
2:begin
sob2;
end;
end;
end;
procedure outputn;
begin
writeln('Печать результатов по прогону');
writeln('tmax:=',tmax);
writeln('Прогон завершен');
end;
procedure output;
begin
writeln('Печать результатов по всем прогонам');
end;
procedure sevnt;
begin
if zp>=pz
then event(2);
if k=k3 then event(1);
end;
procedure slam;
label 1,2,3;
begin
writeln('Работает процессор непрерывного моделирования');
3: intlc;
1: state;
sevnt;
if (tnow>=tmax)or(tnow>=ttfin) then goto 2;
writeln('Изменение времени');
tnow:=tnow+dtnow;writeln('tnow:=',tnow);
goto 1;
2: nrns:=nrns+1;
writeln('Вызов подпрограммы печати результатов прогона');
outputn;
if nrns<nnrns then goto 3;
output;
end;
begin
clrscr;
nnrns:=1;
nrns:=0;
slam;
writeln('Имитация закончена');
end.
В программе используются следующие величины:
k1– число занятых стульев;
k2– число стоящих зрителей;
k3– число стульев;
k – общее количество зрителей;
ezp1– площадь под стулом;
ezp2– площадь стоячего места;
zp– занятая площадь зала;
pz– общая площадь зала;
tmax– время заполнения зала;
dtnow– шаг изменения времени.
ПОРЯДОК ПРОВЕДЕНИЯ РАБОТЫ
1. Ознакомиться с теоретической частью лабораторной работы.
2. Набрать программу с данными выбранного варианта, приведенными в таблице:
Вариант
1 2 3 4 5 6 7 8
9 10 11 12
ezp1
1. 0 1.1
1.2 1.3 1.4 1.5 1.4 1.3 1.2 1.1
1.0 1.2
ezp22.0 2.1 2.2 2.3 2.4 2.4 2.3 2.2 2.1 2.0 2.1 2.1
k3
3 4
5 6 7 6 5 4 3
4 5 6
3. Отладить программу.
4. Вывести результаты в пошаговом режиме.
5. Оформить отчет.