Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МОДЕЛИРОВАНИЕ ПРОЦЕССОВ И СИСТЕМ / Мет.ук.лаб.раб.МПиС.00г..doc
Скачиваний:
67
Добавлен:
21.03.2016
Размер:
131 Кб
Скачать
☆

Порядок выполнения работы

  1. Ознакомиться с теоретической частью лабораторной работы.

  2. Проанализировать последовательность выполнения процедур и их алгоритмы.

  3. Набрать программу имитации с данными соответствующего варианта, приведенными в таблице:

Вариант 1 2 3 4 5 6 7 8 9 10 11 12

a1[1] 1 2 3 4 5 6 7 8 9 8 7 6

kevnt1,2,3 2,1,3 3,1,2 1,3,2 2,3,4 3,2,4 4,2,3 2,4,3 3,4,5 4,3,5 5,3,4 3,5,4

dtime 3,2,1 4,3,2 5,4,3 6,5,4 7,6,5 8,7,6 9,8,7 4,2,1 5,3,2 6,4,3 7,5,4 8,6,5

  1. Отладить программу.

  2. Вывести результаты прогона в пошаговом режиме.

  3. Оформить отчет.

Содержание отчета

  1. Краткое описание алгоритма имитации.

  2. Результаты прогона.

Контрольные вопросы

  1. Назначение календаря событий?

  2. Что содержит каждая запись календаря?

  3. Чем характеризуется каждое планируемое событие?

  4. Как реализуется планирование события?

  5. Как осуществляется перегруппировка событий?

  6. Как происходит извлечение события из календаря?

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

ДИСКРЕТНОЕ МОДЕЛИРОВАНИЕ

Цель работы: ознакомление со структурой и функционированием дискретной имитационной модели.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

При дискретном моделировании состояние моделируемого объекта может меняться только в моменты свершения событий (основных или временных). Структура модели может включать следующие составные части.

Главный модуль.Накладывает общие требования к модели и вызываетпроцессор дискретного моделирования.

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

Модуль инициализации. Задает значения параметров моделируемого объекта и планирует первые события.

Подпрограмма обработки события. Реализует событие при его извлечении из календаря.

Модуль поиска подпрограммы обработки события. Находит и вызывает процедуру обработки по коду извлекаемого из календаря события (или сама реализует событие с данным кодом).

Другие модули предназначены для работы с календарем, для сбора статистической информации и т.д.

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

program lab2;

uses crt;

type

ta1=array [1..10] of integer;

var

k,i,nrns,dtime,tnow,kevnt,ttbeg,ttfin,nnrns:integer;

dt,a1:ta1;

procedure grup;

begin

writeln('Перегруппировка событий в календаре');

end;

procedure schdl(kevnt,dtime:integer;a2:ta1);

begin

writeln('Планируется событие с кодом ',kevnt);

writeln('Вызов программы перегуппировки ');

grup;

end;

procedure rmove;

begin

writeln('Извлечение из календаря события');

end;

procedure output;FORWARD;

procedure intlc;

begin

tnow:=ttbeg;

dt[1]:=_;

dt[2]:=_;

dt[3]:=_;

a1[1]:=2;

writeln('Вызов подпрограммы планирования');

kevnt:=1; i:=kevnt;

schdl(1,dt[1],a1);

end;

procedure event(i:integer);

begin

case i of

1:begin

writeln('Произошло событие с кодом ',i,' с временем ',tnow);

writeln('Вызов подпрограммы планирования');

kevnt:=2; i:=kevnt;

schdl(2,dt[2],a1);

end;

2:begin

writeln('Произошло событие с кодом ',i,' с временем ',tnow);

writeln('Вызов подпрограммы планирования');

kevnt:=3; i:=kevnt;

schdl(3,dt[3],a1);

end;

3:writeln('Произошло событие с кодом ',i,' с временем ',tnow);

end;

end;

procedure outputn;

begin

writeln('nrns:= ',nrns); writeln('Прогон завершен');

end;

procedure slam;

label 4;

begin

writeln('Вызов подпрограммы инициализации');

intlc;

4:writeln('Вызов подпрограммы извлечения события из календаря');

rmove;

i:=kevnt; tnow:=tnow+dt[i]; writeln('код события ',i);

writeln('время события ',tnow);

writeln('Вызов подпрограммы обработки события');

event(i);

k:=i+1;

if (tnow<ttfin)and(k<4) then goto 4

else

nrns:=nrns+1;

writeln('Вызов подпрограммы печати результатов прогона');

outputn;

if nrns<nnrns then slam

else

writeln('Вызов подпрограммы печати результатов по всем прогонам');

output;

end;

procedure output;

begin

writeln('Имитация закончена');

end;

begin

clrscr;

nrns:=0;

nnrns:=1;

ttbeg:=0;

ttfin:=40;

writeln('Вызов процессора дискретного моделирования');

slam;

end.

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

ttbeg – начало моделирования;

ttfin – окончание моделирования;

nrns – номер текущего имитационного прогона;

nnrns – заданное число прогонов;

tnow– текущее имитационное время;

dt – вспомогательный массив интервалов свершения событий.

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

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

По окончании прогона печатается отчет и проверяется условие завершения всех прогонов. Если выполнены не все прогоны, управление передается фазе инициализации. В противном случае имитация заканчивается печатью результатов по всем прогонам.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

  1. Ознакомиться с теоретической частью лабораторной работы.

  2. Набрать программу с данными соответствующего варианта, выбранными из приведенной таблицы:

Вариант 1 2 3 4 5 6 7 8 9 10 11 12

dt[1] 1 2 3 4 5 6 7 8 9 8 7 6

dt[2]2 3 4 5 6 7 8 9 8 7 6 5

dt[3] 3 4 5 6 7 8 9 8 7 6 5 4

  1. Отладить программу.

  2. Вывести результаты в пошаговом режиме.

  3. Оформить отчет.