Смекни!
smekni.com

Система управления запасами с неудовлетворительным спросом (стр. 4 из 5)

Любая модель на GPSS состоит из одного или нескольких сегментов. Для управления временем моделирования разработчик (см. блок-диаграмму):

1. включает в модель сегмент из блоков GENERATE и TERMINATE;

2. в блоке TERMINATE в качестве операнда А использует 1;

3. во всех прочих блоках TERMINATE модели использует операнд А по умолчанию (однако возможны и другие варианты, т. е. и в других блоках TERMINATE операнд А может быть 1).

В процессе моделирования транзакты, которые двигаются в других сегментах модели, время от времени выводятся из модели в других блоках TERMINATE, но они не оказывают воздействия на счетчик завершения. В момент модельного времени 600 транзакт в приведенном выше сегменте попадает в блок GENERATE и сразу же переходит в следующий блок TERMINATE.

Поскольку операнд А блока содержит 1, то из счетчика завершения вычитается 1. Предположим, что в команде START было указано число 10, т. е. десять прогонов модели, и в счетчик завершений записано число 10: TG1 = 10. После первого вычитания содержимое ячейки TG1 = 9, т. е. не равно нулю. Поэтому моделирование продолжается. После десяти прогонов, т. е. вычитания десяти единиц, TG1 = 0. Планировщик прекращает моделирование.

Команда START используется для запуска процесса моделирования. Она имеет следующий формат записи:

START A,[B],C,[D]

Операнд А задает значение счетчика завершения, определяющего момент окончания прогона модели. Может быть только целым положительным числом. Операнд B - операнд вывода статистики. Он может быть NP ("нет вывода данных") либо опущен. При задании NP стандартный отчет не выводится. По умолчанию выводится стандартный отчет. Операнд С не используется и сохранен для совместимости с описаниями ранних версий GPSS. Операнд D определяет необходимость вывода содержимого списков событий. Если операнд D указать любым положительным целым числом, например, 1, то списки текущих и будущих событий включаются в стандартный отчет и выводятся. Если операнд D опущен, то по умолчанию списки в стандартном отчете не выводятся.

Команду START можно сразу указывать в конце программы модели при ее подготовке и в таком виде записывать на магнитный носитель. Тогда после трансляции модели, т. е. создания объекта "процесс моделирования", сразу начинается моделирование. Этот же оператор можно вводить в программу модели в интерактивном режиме.

Однако может возникнуть необходимость завершить моделирование не по истечении какого-то времени, а после обработки определенного количества транзактов, имитирующих, например, изготовленные детали, переданные по каналу связи сообщения и т. д. В этом случае сегмент задания времени моделирования не нужен. Для организации такого способа завершения моделирования необходимо сделать следующее. В блоках TERMINATE, которые выводят из модели транзакты, имеющие смысл тех же изготовленных деталей или переданных сообщений, указать число, на которое уменьшается счетчик завершения моделирования. В команде START также указать число, деление которого на указанное в блоке TERMINATE число даст требуемое количество изготовленных деталей или переданных сообщений. Например, требуется завершить моделирование после изготовления 100 деталей. В модели это может быть так:

. . .

TERMINATE 1

. . .

TERMINATE 1

. . .

TERMINATE

START 100

Блоков TERMINATE, которые выводят из модели транзакты, соответствующие изготовленным деталям, может быть несколько. Все эти блоки должны иметь 1 в качестве операнда А. У остальных блоков TERMINATE, если они есть в модели, операнд А должен быть опущен.


ГЛАВА 2

МОДЕЛИРОВАНИЕ СИСТЕМЫ УПРАВЛЕНИЯ ЗАПАСАМИ С НЕУДОВЛЕТВОРИТЕЛЬНЫМ СПРОСОМ

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

Необходимо промоделировать работу склада материалов на предприятии. Вместимость склада составляет 5000 единиц материала. Возможна поставка на склад с периодичностью 5 дней в размере 1500 единиц материала. Начальный запас материалов на складе составляет 1000 единиц. Ежедневный спрос материала варьирует в пределах от 35 до 55 единиц с равной вероятностью. Если текущий запас равен или больше 1200, то никакой поставки материалов на склад в течение недели не производят. Требуется смоделировать работу склада материалов в течение 100 дней.

2.2 Описание модели

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

2.2.1Создание имитационной модели:

Построим заголовок модели:

;GPSSWUpr_zapasom.GRS

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

* Управление моделями *

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

Создадим четыре сектора:

* Определение входных данных.

RMULT 413

ZapasSTORAGE 2500 ; Вместимость склада.

Zapas TABLE S$Zapas,100,100,20 ; Гистограммазапаса.

Material VARIABLE Nach_ur-S$Zapas ; Размерзаказа.

Spros_mVARIABLERN1@20+35 ; Размер ежедневного спроса.

Nach_urEQU 1500 ; Начальный уровень запаса.

PostavkaEQU 1300 ; Размер поставки.

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

*Моделировнаие процесса поставки материала на склад.

GENERATE 5,,,,1 ; Поставка через 5 дней.

TESTLS$Zapas,Postavka,Out ; Нужна ли поставка.

ASSIGN 2,V$Material ; Размер заказа в P2.

ADVANCE 5 ; Интервал поставки.

ENTERZapas,P2 ; Увеличить запас на Р2.

OutTERMINATE ; Завершение заказа.

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

* Моделировнаие текущего запаса с учётом спроса.

GENERATE 1 ; Генерирование дня.

ASSIGN 1,V$Spros_m ; Размер спроса в Р1.

TABULATEZapas ; Запись тек. запаса.

TESTGES$Zapas,P1,Zapasout ; Можно ли заказать.

LEAVEZapas,P1 ; Уменьшить запас на Р1.

TERMINATE 1 ; Завершение дня.

ZapasoutTERMINATE 1 ; Завершение дня.

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

* Установление начального размера запаса.

GENERATE ,,,1,10 ; Начальный запас.

ENTERZapas,Nach_ur ; Установка нач. запаса.

TERMINATE ; Завершение установки.

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

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

Оператор STORAGE (Накопитель) с меткой Zapas определяет вместимость склада 2500 единиц.

Оператор TABLE с меткой Zapas предназначен для формирования таблицы текущего (ежедневного) уровня запаса на складе. Текущий уровень запаса определяется с помощью стандартного числового атрибута S$Zapas.

Оператор VARIABLE c меткой Material определяет количество материала как разность начального и текущего запаса.

Оператор VARIABLE с меткой Spros_m характеризует ежедневный спрос, который изменяется от 35 до 55 единиц с равной вероятностью.

Оператор EQU с меткой Nach_ur определяет начальный уровень запасов, который в нашей задаче установлен в размере 1500 единиц. Использование именованной величины облегчает проведение экспериментов с ее различными значениями.

Оператор EQU c меткой Postavka определяет тот критический уровень материалов на складе, который обуславливает необходимость очередного заказа материалов. Этот размер в нашей задаче составляет 1300 единиц.

Оператор GЕNЕRАТЕ - генерирует очередной момент времени, когда возможна доставка материала на склад.

Оператор ТEST L определяет необходимость очередной поставки материала на склад. Очередная поставка материалов на склад производится тогда, когда текущий запас, который определяется с помощью стандартного числового атрибута S$Zapas, меньше размера поставки, определенного оператором ЕQU. с меткой Рostavka в предыдущем секторе. В противном случае поставка отменяется - требование (транзакт) направляется к оператору TERMINATE с меткой Out.

Еcли текущий запас меньше размера поставки, то требование переходит к следующему оператору - ASSIGN (Присвоить). В операторе ASSIGN в параметре требования под номером 2 запоминается' размер заказа, который определяется переменной под именем Material.

Оператор ADVANCE моделирует время ожидания требования (поставки) в течение 5 дней .

Далее оператор ENTER моделирует поставку после истечения 5-дневного срока и увеличивает текущее содержание склада - S$Zapas - на величину, содержащуюся в параметре требования под номером 2.

Оператор ТERMINATE с меткой Out удаляет требование из системы. Этот оператор используется, чтобы определить окончание моделирования состояния.

Оператор GENERATE генерирует очередной день работы склада.

Оператор ASSIGN присваивает параметру требования (очередному дню) под номером 1 размер спроса.

Оператор TABULA ТЕ с меткой Zapas собирает информацию для создания таблицы и гистограммы ежедневных уровней запасов.

Оператор TEST GE проверяет возможность удовлетворения спроса. Если текущий запас - S$Zapas - больше или равен величине спроса, то процесс моделирования переходит к следующему оператору - LEAVE (Оставить):

Если такой возможности нет, то требование направляется к оператору с меткой Zapasout.

Оператор LEAVE уменьшает текущий запас - S$Zapas - на величину спроса в данный день. Это делается так: требование (очередной день), входя в блок LEAVE, несет в параметре требования под номером 1 величину спроса (операнд В). Эта величина спроса и вычитается из величины текущего запаса S$Zapas.

Оператор GENERATE генерирует одно требование (транзакт) с приоритетом. равным 10. Оно имеет наибольший приоритет сведи всех требований, генерируемых оператором GENERATE, и поэтому становится первым активным требованием в системе.

Оператор ENTER определяет величину начального запаса, чтобы установить величину S$Zapas в начале моделирования.

Оператор TERMINATE уничтожает начальное требование без уменьшения индекса завершения.

GPSS позволяет многим требованиям одновременно существовать в различных местах в модели. В этой модели требования создаются в трех секторах.

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

Используя пункт Command главного меню создаём выполняемую модель. Моделирование закончится, когда 100 ежедневных заказов будут выполнены.

Report (Отчёт) в стандартном виде, для нашей задачи выглядит следующим образом: