- •«Моделирование работы магазина по продаже офисной мебели»
- •Аннотация
- •Содержание
- •Введение
- •1. Принцип функционирования моделируемой системы
- •1.1.Постановка задачи
- •1.2.Блок – схема алгоритма функционирования моделируемой системы
- •1.3.Выбор концептуальной модели
- •2.1.Группировка событий
- •2.2.Переменные модели
- •2.3.Алгоритм имитации модели
- •2. Формализация модели
- •2.3.1. Процедура планирования событий
- •2.3.2. Процедура grup
- •2.3.3. Процедура извлечения первой записи из календаря
- •2.3.4. Процедура инициализации
- •2.3.5. Главный модуль
- •2.3.6. Процедура поиска алгоритма обработки события
- •2.3.7. Процедура обработки события первого класса
- •2.3.8. Процедура обработки события второго класса
- •2.3.9. Процедура обработки события третьего класса
- •2.3.10. Процедура обработки события четвёртого класса
- •2.3.11. Процедура обработки события пятого класса
- •2.3.12. Процедура формирования отчёта по прогону (Outputn)
- •2.3.13. Формирования итогового отчёта (Output)
- •3. Выбор программного обеспечения
- •4. Программа имитационного моделирования
- •5. Результаты моделирования
- •6. Анализ результатов
- •6.1. Расчёт оптимального числа прогонов
- •6.2. Установление закона распределения
- •Заключение
- •Список использованной литературы
2.3.1. Процедура планирования событий
Процедура планирования событий SCHDL является системной, так как не зависит от объекта моделирования и имеет три формальных параметра:
Kevnt – код планируемого события (1,2,3,4,5);
Dtime – время свершения события;
A1 – атрибут события (в данной модели один).
Процедура начинается с формирования записей календаря с помощью массива А2, куда записываются kevnt, tnow+dtime, a1. Далее переписываем календарь из физической памяти в электронную (массив А3).
С оператора For j:=1 to nnq do начинается поиск первой свободной записи в календаре (запись с кодом события равным 0). На место найденной записи записываются данные из массива А2 (новое запланированное событие). После этого файл календаря переписывается с новой записью.
В конце процедуры SCHDL записи календаря сортируются в порядке возрастания времени свершения событий процедурой GRUP.
Н
АЧАЛО
КОНЕЦ
Рис.3 Блок-схема процедуры планирования
2.3.2. Процедура grup
Процедура GRUP является системной, без параметров. GRUP сортирует записи в файле календаря по возрастанию времени свершения события.
После копирования в A3 календаря осуществляется проверка состояния первой записи. Если она пустая, значит из календаря ранее выбрано событие с минимальным временем свершения и, следовательно, достаточно сдвинуть календарь на одну запись влево. Это делают два цикла For j:=1 to nnq-1 dо и For i:=1 to 3 do, обнуляющие последнюю запись a3[i,j+1]:=0. Далее календарь из массива A3 переписывается в файл f_Cal, так как произошли изменения.
Если первая запись календаря не пуста, значит, процедура вызвана после планирования какого-то события и необходимо расставить записи по возрастанию их времени свершения (запланированное событие могло иметь любое время свершения). Для этого с оператора For j:=1 to nnq-1 do начинается сравнение времени свершения J-й записи с аналогичным параметром остальных записей и перемещение этой записи на нужное место календаря (массива A3). Перед каждой такой последовательностью действий, оператором If a3[2,j]=0 j-я запись проверяется по коду события. Если код равен нулю - календарь кончился, и он перезаписывается в файл f.
Перед сортировкой календаря оператор K=J запоминает номер j–й записи, а оператор z:=a3[3,j] – ее время свершения. Следующий за ними оператор For l:=j+1 to nnq do: проверяет код очередной, сопоставляемой с j, записи l; сравнивает время двух записей; запоминает (обновляет k, z) номер и время свершения записи l. Если проверяемый код записи l равен нулю, календарь кончился и происходит обмен данными между записями j и l (k), так как ищутся записи со временем меньшим, чем у записи j. Если время свершения записи l оказывается больше или равным тому же для записи j, переходим к следующей записи календаря.
