Алгоритмизация и программирование модели
В данной секции выполняется инициализация очередей и устройств с помощью команд _QUEUE и _DEVICE соответственно, установка в нулевую отметку времени моделирования и планирование события прихода партии деталей. Также планируется и событие окончания моделирования. Планирование событий осуществляется при помощи функции _SCHEDL модуля SMPL. Каждый тип события соответствует событиям представленным… Читать ещё >
Алгоритмизация и программирование модели (реферат, курсовая, диплом, контрольная)
Описание общей структуры программы, переменных, констант
Рассмотрение кода рабочей программы начнем с описания констант и переменных, использованных при моделировании.
Таблица 2 — Определение переменных и констант.
Название. | Назначение. |
evGen. | Константа для обозначения события «Приход партии деталей, начало обработки «. |
evStartPreproc. | Константа для обозначения события «Начало первичной обработки «. |
evControlDefect. | Константа для обозначения события «Контроль брака» . |
evEndReproc. | Константа для обозначения события «Завершение вторичной обработки «. |
evEnd. | Константа для обозначения события «Завершение моделирования «. |
cStan_I_type, cStan_II_type. | Константы для обозначения количества станков первого и второго типа. |
cDetI, cDetII. | Переменная для обозначения количества деталей прошедших через станки I и II типов. |
Константы в программе используются для задания уникальных идентификаторов устройствам и очередям, символьных имен событиям, происходящим в системе, а также параметрам моделирования, устанавливаемым в соответствии с заданием. Задание последних подобным способом, в противовес внедрению непосредственно в код, позволяет легко вносить изменения в систему и наблюдать за ее поведением.
Основная часть программы состоит из инициирующей, событийной и завершающей секций. Рассмотрим последовательно каждую из них:
1) Инициирующая секция.
_SCHEDL (evGen, IRANDOM (A — B, A + B), 1);
for i := 1 to 2 + cStan_I_type + cStan_II_type do.
begin.
Dev[i] := _DEVICE (IntToStr (i));
Que[i] := _QUEUE (IntToStr (i));
end;
_SCHEDL (evEnd, 480, 0);
_TIME := 0;
detail := 0;
cAllDet := 0;
cDetI := 0;
cDetII := 0;
В данной секции выполняется инициализация очередей и устройств с помощью команд _QUEUE и _DEVICE соответственно, установка в нулевую отметку времени моделирования и планирование события прихода партии деталей. Также планируется и событие окончания моделирования. Планирование событий осуществляется при помощи функции _SCHEDL модуля SMPL.
2) Событийная секция Основная секция представляет из себя цикл, который в зависимости от поступающего типа события выполняет тот или иной блок кода. В цикле, на каждой его итерации выполняется извлечение элемента из списка событий при помощи процедуры _CAUSE, возвращающей в переменных EVENT и numDev тип события и номер транзакта соответственно. Дальнейшие действия осуществляются в зависимости от значения переменной EVENT. Завершение моделирования считается получение события окончания, запланированного при начале моделирования.
Каждый тип события соответствует событиям представленным на граф-схеме. Для работы с очередью и устройствами используются функции модуля SMPL освободить, занять устройство и поместить в очередь, это функции __RELEASE, _RESERVE, _EnQUEUE соответственно. Так же для проверки состояния устройств используется функция _STATUS.
3) Завершающая секция В данной секции осуществляется составление отчетной статистики по работе программы во время моделирования, с помощью функций _MONITOR (F), _REPORT (F). Информация записывается в файл, так же если необходимо дополнительные сведения о работе системы Lazarus позволяет объявлять свои переменные и записывать в них определенную информацию или на каждой итерации цикла, или при окончании моделирования системы.
Для начала моделирования необходимо запустить .exe файл, откроется приложение, произойдет моделирование системы с заданными параметрами, результата моделирования будет отображаться в файле «report.txt». В данном отчетном файле представлена как общая информация о моделировании, так и информация о каждом устройстве и текущем состоянии системы на момент окончания моделирования.