Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Моделирование работы супермаркета






Постановка задачи

Допустим, нам надо промоделировать работу супермаркета, который имеет место для парковки 100 автомобилей. Если все места парковки автомобилей заняты, то автомобиль покидает супермаркет. Время прихода покупателей с места парковки автомобиля в магазин подчиняется равномерному закону и составляет 60±40 с. Моделирование будем производить в течение рабочей смены, равной 8 ч. Магазин имеет 100 ручных тележек и 50 корзин для транспортировки купленных товаров. Магазин имеет пять кассовых аппаратов (кассиров), но первый из них предназначен для быстрого обслуживания покупателей с единичными покупками. Поток покупателей (требований), приходящих в магазин за покупками, экспоненциальный.

Экспоненциальное распределение вероятности представляется в таком виде:

В противном случае оно равно 0.

При этом известно, что в интервале времени:

• от 0 до 30 мин параметры λ и β соответственно равны 0 и 60;

• от 30 до 90 мин параметры λ и β соответственно равны 0 и 40;

• от 90 до 150 мин параметры λ и β соответственно равны 0 и 80;

• свыше 150 мин параметры λ и β соответственно равны 0 и 120.

Если производится покупка более 10 видов товаров, то необходима тележка, в противном случае используется корзина. После этого покупатели подходят к нужным стеллажам для взятия товара. Число взятых товаров определяется с помощью датчика случайных чисел.

Требуется определить параметры функционирования супермаркета:

• коэффициент загрузки всех касс;

• максимальное, среднее и текущее число покупателей в каждой очереди;

• среднее время обслуживания в каждом канале обслуживания;

• среднее время нахождения покупателя в каждой очереди и др.

Также нужно построить следующие гистограммы:

• времени нахождения покупателей в системе;

• числа покупок, сделанных в течение смены;

• числа покупателей, посетивших супермаркет в течение смены.

 

Выявление основных особенностей

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

Тогда общее время моделирования составит 8 × 60 × 60 с.

 

Создание имитационной модели процесса

Построение имитационной модели начнем с создания заголовка модели, который

может быть представлен, например, в таком виде:

; GPSSW File - SUPER_MAGAZIN.GPS

***************************************

* Ì î ä å ë è ð î â à í è å ð à á î ò û ñ ó ï å ð ì à ð ê å ò à *

***************************************

Далее разобьем всю модель на несколько секторов.

В первом секторе введем информацию, необходимую для функционирования супермаркета. Этот сектор может выглядеть так:

RMULT 1187

Kassa_2 EQU 2

Kassa_N EQU 5

Time_work VARIABLE 8#60#60

N_Pokupok VARIABLE (RN1@96+5)

Finance VARIABLE (RN1@3+1)#40+150

Time_system TABLE M1, 1000, 1000, 7

Pokupki TABLE P$Kol_pokupok, 10, 10, 10

N_Pokupatel TABLE X$Pokupatel, 100, 50, 12

Park STORAGE 100

Telejka STORAGE 100

Korzina STORAGE 50

Kassir VARIABLE (P$Kol_pokupok)#2+P$Oplata

Time_mag VARIABLE P$Kol_pokupok#100

INITIAL X$Pokupatel, 0

Оператор RMULT определяет набор начальных чисел первых семи генераторов случайных чисел.

Оператор EQU указывает номер объекта. В нашем примере определяются номера каналов обслуживания со 2 по 5 и соответствующие очереди к ним.

Переменная под именем Time_work определяет продолжительность моделирования супермаркета в течение рабочей смены – 8 ч – в секундах.

Переменная под именем N_Pokupok определяет число покупок, сделанных одним покупателем. Переменная под именем Finance определяет размер оплаты покупок. Операторы TABLE создают таблицы, представляющие собой набор целых чисел для построения соответствующих гистограмм. Каждое целое число представляет класс частоты в гистограмме.

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

Переменная Kassir определяет время, затраченное кассиром на обслуживание покупателя. Переменная Time_mag определяет время нахождения покупателя в магазине.

Оператор INITIAL определяет начальное значение сохраняемой величины по имени Pokupatel. Ее значение в начале смены равно 0.

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

Parking TRANSFER Both,, Lost

ENTER Park

ADVANCE 60, 40

SAVEVALUE Pokupatel+, 1

ASSIGN Kol_pokupok, V$N_Pokupok

ASSIGN Oplata, V$Finance

TEST LE P$Kol_pokupok, 10, QTelejka

GATE SNF Korzina, QTelejka

Когда требование входит в оператор TRANSFER, оно сначала направляется к следующему блоку; если тот не допускает требование – то к блоку с меткой Lost.

А это означает, что автомобиль покидает систему – супермаркет. Если есть место, автомобиль въезжает на стоянку, что моделируется оператором ENTER. Затем покупатель идет в супермаркет. Это моделируется оператором ADVANCE 60, 40.

Время прихода покупателей с места парковки автомобиля в супермаркет подчиняется равномерному закону и составляет 60±40 с.

В операторе SAVEVALUE в сохраняемой величине по имени Pokupatel происходит подсчет поступивших в супермаркет покупателей с начала открытия магазина до окончания смены.

Оператор ASSIGN (Присвоить) выполняет присваивание параметру требования (покупателя) по имени Kol_pokupok с помощью переменной V$N_Pokupok

(Число покупок).

Следующий оператор ASSIGN выполняет присваивание параметру требования

(покупателя) по имени Oplata с помощью переменной V$Finance (Размер оплаты покупок).

Оператор TEST LE определяет дальнейший путь следования покупателя. Если величина параметра требования по имени P$Kol_pokupok (Число покупаемых товаров) меньше или равна 10, то требование перемещается к следующему оператору; если это условие не выполняется, то требование перемещается к оператору с символической меткой Qtelejka.

Далее оператор GATE SNF проверяет условие SNF (Storage Not Full – Накопитель

не полон). Если есть в наличии корзины, то требование переходит к следующему оператору, если нет – перемещается к оператору с символической меткой Qtelejka.

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

QUEUE Korzina_Q

ENTER Korzina

DEPART Korzina_Q

ASSIGN Tara, Korzina

TRANSFER, Magazin

Операторы QUEUE и DEPART собирают статистическую информацию по очереди, связанной с получением корзин, с именем Korzina_Q.

С помощью операторов ENTER и LEAVE система собирает информацию об использовании корзин покупателями.

Оператор ASSIGN выполняет присваивание параметру требования (покупателя) по имени Tara имя Korzina. Далее с помощью оператора TRANSFER происходит переход требования к оператору с символической меткой Magazin. То есть покупатель непосредственно входит в магазин для выбора необходимых покупок.

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

QTelejka QUEUE Telejka_Q

ENTER Telejka

DEPART Telejka_Q

ASSIGN Tara, Telejka

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

С помощью операторов DEPART и LEAVE система собирает информацию об использовании тележек покупателями.

Оператор ASSIGN выполняет присваивание параметру требования (покупателя) по имени Tara имя Telejka.

В пятом секторе моделируется перемещение требования в системе в зависимости от состояния системы. Этот сектор может выглядеть так:

Magazin ADVANCE V$Time_mag

TEST LE P$Kol_pokupok, 10, Min_och

COUNT L Kassir_0, Kassa_2, Kassa_N, 1, Q

TEST E P$Kassir_0, 0, Min_och

Оператор ADVANCE моделирует время нахождения покупателя в магазине, используя переменную по имени Time_mag.

Оператор TEST LE определяет дальнейший путь следования покупателя. Если значение параметра требования по имени P$Kol_pokupok меньше или равно 10, то требование перемещается к следующему оператору; если это условие не выполняется, то требование перемещается к оператору с символической меткой Min_och.

Оператор COUNT L определяет число объектов из определенного диапазона объектов, удовлетворяющих заданному условию. При этом счетчик объектов, удовлетворяющих заданному условию, помещается в параметр активного требования по имени Kassir_0 (в поле операнда A). В поле операнда B указано имя объекта, находящегося в начале диапазона объектов. Его имя Kassa_2. В поле операнда C указывается имя объекта, находящегося в конце диапазона объектов.

В поле операнда D указывается число, которое сравнивается со значением атрибута объекта, заданного в операнде E, то есть со значением очереди.

Оператор TEST E определяет дальнейший путь следования покупателя. Если значение параметра требования по имени P$Kassir_0 (Число покупателей в очереди) равно 0, то требование перемещается к следующему оператору, если это условие не выполняется, то требование перемещается к оператору с символической меткой Min_och.

В шестом секторе собирается статистическая информация по очереди быстрого обслуживания по имени Bistro_Q и по каналу обслуживания по имени Bistro.

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

Этот сектор может выглядеть так:

QUEUE Bistro_Q

SEIZE Bistro

DEPART Bistro_Q

ADVANCE V$Kassir

RELEASE Bistro

LEAVE P$Tara

TRANSFER, Fin

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

Операторы SEIZE и RELEASE собирают статистическую информацию по работе канала обслуживания по имени Bistro.

Оператор ADVANCE моделирует время быстрого обслуживания покупателей, которое определяется переменной по имени Kassir.

Оператор LEAVE завершает сбор статистической информации по работе накопителей, связанных с использованием тары.

Оператор TRANSFER направляет требования (покупателей) к оператору с символической меткой Fin.

В седьмом секторе собирается статистическая информация по очереди быстрого обслуживания по имени Min_ochered и по каналу обслуживания с тем же именем. Моделируется время обслуживания, выход из области взятия тары для покупок. Этот сектор может выглядеть так:

Min_och SELECT MIN Min_ochered, Kassa_2, Kassa_N,, Q

QUEUE P$Min_ochered

SEIZE P$Min_ochered

DEPART P$Min_ochered

ADVANCE V$Kassir

RELEASE P$Min_ochered

LEAVE P$Tara

Оператор SELECT (Выбрать) выбирает объект, удовлетворяющий заданному условию – MIN, – и записывает номер этого объекта в параметр активного требования. В поле операнда A указывается символьное имя параметра выбираемого объекта (обязательно) – Min_ochered. В поле операнда B задается нижняя граница диапазона имен очередей, для которых будет проверяться заданное условие (обязательно). В поле операнда C задается верхняя граница диапазона имен очередей, для которых будет проверяться заданное условие (обязательно). Этот операнд может представлять собой имя, целое положительное число, выражение в круглых скобках, стандартный числовой атрибут или SNA*параметр. Поле операнда D не используется с операторами MIN и MAX. В поле операнда E указывается имя класса стандартного числового атрибута. В нашем примере это Q (Queue).

Операторы QUEUE и DEPART собирают статистическую информацию по очередям, находящимся в параметре требования по имени Min_ochered.

Операторы SEIZE и RELEASE собирают статистическую информацию по работе каналов обслуживания, находящихся в параметре требования по имени Min_ochered.

Оператор ADVANCE моделирует время быстрого обслуживания покупателей,

которое определяется переменной по имени Kassir.

Оператор LEAVE завершает сбор статистической информации по работе накопителей, связанных с использованием корзин и тележек.

В восьмом секторе собирается информация в табличном виде по времени работы системы и числу покупок. Моделируется время возвращения покупателя к автомобилю и удаление последнего из системы. Этот сектор может выглядеть так:

Fin TABULATE Time_system

TABULATE Pokupki

SAVEVALUE Pokupatel-, 1

ADVANCE 60, 50

LEAVE Park

TERMINATE

Lost TERMINATE

Операторы TABULATE (Табулировать) выполняют сбор данных соответственно по времени обслуживания в системе и по числу сделанных покупок.

Оператор SAVEVALUE уменьшает число обслуженных покупателей.

Оператор LEAVE моделирует покидание автомобилем места стоянки. Предпоследний оператор TERMINATE последовательно уменьшает число требований – покупателей, находящихся в системе. Последний оператор TERMINATE имитирует потерю покупателя изза нехватки мест на стоянке автомобилей.

В девятом секторе моделируются различные потоки покупателей в супермаркет.

Этот сектор может выглядеть так:

GENERATE (Exponential(1, 0, 60)),,, 200

TRANSFER, Parking

GENERATE (Exponential(1, 0, 40)),, 1800, 400

TRANSFER, Parking

GENERATE (Exponential(1, 0, 80)),, 5400, 300

TRANSFER, Parking

GENERATE (Exponential(1, 0, 120)),, 9000

TRANSFER, Parking

В операторе GENERATE в поле операнда А используется встроенное экспоненциальное распределение вероятностей для моделирования поступления покупателей в супермаркет.

В десятом секторе моделируется время работы системы. Этот сектор может выглядеть так:

GENERATE V$Time_work

TABULATE N_Pokupatel

TERMINATE 1

START 1

В операторе GENERATE в поле операнда А определяется время работы системы. Оператор TABULATE собирает информацию о числе покупателей, посетивших супермаркет. Оператор TERMINATE уменьшает на единицу время функционирования системы, а START 1 запускает после компилирования программу на выполнение.

 

Представление имитационной модели

Для представления имитационной модели выполните следующие действия:

• щелкните по пункту File главного меню системы. Появится выпадающее меню;

• щелкните по пункту New выпадающего меню. Появится диалоговое окно

Новый документ;

• выделите пункт Model и щелкните по кнопке ОК. Появится окно модели, в котором введите данную программу. Эта модель представлена на рис. 3.35а–в.

 

Подготовка к моделированию системы

Перед началом моделирования можно установить вывод тех параметров моделирования, которые нужны пользователю. Для этого:

• щелкните по пункту Edit главного меню системы или нажмите комбинацию

клавиш Alt+E. Появится выпадающее меню;

Рис. 3.35а, б. Фрагменты имитационной модели супермаркета

щелкните по пункту Settings выпадающего меню. Появится диалоговое окно SETTINGS для данной модели, в котором можно установить нужные выходные данные. Для нашего примера это окно может выглядеть так, как показано на рис. 3.36.

 

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

• Queues (Очереди);

• Tables (Таблицы/гистограммы);

• Facilities (Каналы обслуживания);

• Storages (Накопители);

• Savevalues (Сохраняемые величины).

Моделирование системы

После создания имитационную модель необходимо оттранслировать и запустить на выполнение. Для этого:

• щелкните по пункту Command главного меню системы или нажмите комбинацию клавиш Alt+C. Появится выпадающее меню;

• щелкните по пункту Create Simulation (Создать выполняемую модель) выпадающего меню.

Если управляющая команда START есть в модели, то исходная имитационная

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

в поле А операнда команды START. Затем появится окно JOURNAL.

После завершения моделирования появится окно REPORT с результатами моделирования, представленными на рис. 3.37а, б.

Если управляющей команды START в модели нет, то исходная имитационная модель будет транслироваться, и если в ней нет ошибок, то будет получена оттранслированная модель в машинных кодах, готовая к выполнению моделирования.

В третьей строке сверху указывается:

• START TIME (Начальное время) – 0.000;

• END TIME (Время окончания) – 28800.000;

• BLOCKS (Число блоков) – 53;

• FACILITIES (Число каналов обслуживания) – 5;

• STORAGES (Число накопителей) – 3.

Ниже указываются результаты моделирования каналов обслуживания соответственно под номерами 2, 3, 4, 5 и BISTRO:

• ENTRIES (Число входов) – 83, 78, 72, 73, 18;

• UTIL. (Коэффициент использования) – 0.944, 0.879, 0.851, 0.819, 0.151;

• AVE. TIME (Среднее время обслуживания) – 327.635, 324.638, 340.205,

323.258, 241.444;

• AVAIL. – 1, 1, 1, 1, 1;

• OWNER – 937, 926, 830, 888, 0;

• PEND – 0, 0, 0, 0, 0;

• INTER – 0, 0, 0, 0, 0;

• RETRY – 0, 0, 0, 0, 0;

• DELAY – 9, 9, 9, 9, 0.

Еще ниже указываются результаты моделирования очередей (QUEUE) соответственно под номерами 2, 3, 4, 5 и c именами TELEJKA_Q, KORZINA_Q и BISTRO_Q:

• MAX (Максимальное содержание);

• CONT. (Текущее содержание);

• ENTRY (Число входов);

• ENTRY(0) (Число нулевых входов);

AVE.CONT. (Среднее число входов);

• AVE.TIME (Среднее время);

• AVE.(–0);

• RETRY.

Следующий фрагмент результатов моделирования содержит табличные данные для построения в дальнейшем соответствующих гистограмм TIME_SYSTEM,

POKUPKI, N_POKUPATEL:

• MEAN (Средняя) – 6787.763, 48.828, 99.000;

• STD.DEV. (Среднее квадратическое отклонение) – 3484.079, 28.434, 0.000;

• RANGE (Область) – (0.000 – 6000.000), (0.000 – 90.000), (0.000 – 100.000);

• RETRY (Повтор) – 0, 0, 0;

• FREQUENCY (Частота);

• CUM.% (Суммарный процент).

Можно представить табличные данные в виде гистограммы. Для этого:

• щелкните по пункту Window главного меню системы. Появится выпадающее меню;

• щелкните по пункту Simulation Window выпадающего меню. Появится всплывающее меню;

• щелкните по пункту Table Window во всплывающем меню. Появится диалоговое окно Open Table Window. В раскрывающемся списке Table щелкните по нужной гистограмме. Для нашей задачи это окно выглядит так, как показано на рис. 3.38;

•щелкните по пункту POKUPKI;

• щелкните по кнопке ОК. Появится соответствующая гистограмма. Для нашей задачи она выглядит так, как показано на рис. 3.39.

Затем все повторите сначала, но:

• щелкните по пункту TIME_SYSTEM;

• щелкните по кнопке ОК. Появится соответствующая гистограмма. Для нашей задачи она выглядит так, как представлено на рис. 3.40.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.