Пояснения к листингу - Модель складской системы с контролем уровня запасов

Сначала производится инициализация используемых в модели переменных. Для этого используется ключевое слово INITIAL, после которого через стандартный числовой атрибут (СЧА) X, с помощью которого выполняется работа со значением переменной, через запятую следует присваиваемое значение. моделирование склад оборот

INITIAL X$EOQ,500 ; Оптимальный размер заказа.

Так, в первой строке переменной EOQ присваивается значение 500.

INITIAL X$Point,600 ; Контрольный уровень запасов

INITIAL X$Stock,700 ; Начальный запас равен 700.

Далее задаются параметры таблиц, используемых для сбора статистики. Для этого используется оператор TABLE, имеющий вид:

NAME QTABLE A, B,C, D, где NAME - имя таблицы, A - аргумент таблицы, указывает на переменную, информация о которой должна фиксироваться, B - верхний предел первого класса, C - размер классов, D - количество разбиений. Параметры B, C,D подбираются экспериментально.

Inventory TABLE X$Stock,0,50,20 ;Таблица уровней запасов.

Sales TABLE P$Demand,38,2,20 ;Таблица уровней продаж.

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

Var2 VARIABLE RN1@24+40 ;40 + [0;23]

В данном случае в качестве выражения используется СЧА RN, который генерирует равномерно распределенную величину. Выражение RN1@24 возвращает равномерно распределенную величину в интервале от 0 до 23. Далее к ней прибавляется величина 40, что в итоге описывает условие "суточный спрос равномерно распределен в интервале от 40 до 63 единиц".

После этого организуем приход транзакта, отвечающего за поставку.

GENERATE,,,1

Как видно из параметров оператора, транзакт будет входить в систему один раз. Далее проверяется меньше ли количество продукции на складе, чем управляющий уровень запасов.

Again TEST L X$Stock, X$Point ;Пора завозить

Если меньше, то "отсчитываем" 5 дней (рабочая неделя), иначе - ждем.

ADVANCE 5 ; Время реализации заказа - 1 неделя.

По прошествии недели склад пополняется на оптимальное количество единиц, хранимое в переменной EOU.

SAVEVALUE Stock+, X$EOQ ;Заказ

Это выполняется с помощью оператора SAVEVALUE, имеющего следующий вид

SAVEVALUE A, B, где А - имя переменной, B - управляющее значение. Если после за оператором А следует знак "+", то управляющее значение прибавляется к текущему значению переменной, если "-", то вычитается. Если же оператор А используется без дополнительных знаков, то переменной присваивается управляющее значение.

Далее замыкаем цикл, переходя с помощью оператора TRANSFER к метке AGAIN.

TRANSFER, Again ;Цикл снова повторяется.

Перейдем к моделированию суточного спроса. За единицу времени в модели принят 1 день, поэтому транзакт должен приходить в каждую единицу времени моделирования.

GENERATE 1 ;Суточный спрос (генерируется транзакт).

Для текущего транзакта параметру Demand присваивается значение переменной Var2, которая, как было показано выше, возвращает равномерно распределенную случайную величину дневного спроса. Операция производится с помощью оператора ASSIGN.

ASSIGN Demand, V$Var2 ;Назначается объем суточного спроса.

Через оператор TABULATE указывается таблица, в которую следует внести статистику по текущему транзакту. В данном случае выполняется пополнение таблицы Inventory.

TABULATE Inventory ;Производится опись запасов.

Перед отгрузкой следует проверить, хватает ли для удовлетворения заказа запасов на складе. Для получения значения объема текущего заказа используется СЧА P, возвращающий значение параметра.

TEST GE X$Stock, P$Demand ;Хватает ли деталей?

Если запасов хватает, то производится отгрузка, т. е. уменьшение значения переменной Stock.

SAVEVALUE Stock-,P$Demand ;Запас уменьшается на величину спроса.

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

SAVEVALUE Sold, P$Demand ;X$Sold=суточному спросу.

Далее обновляем таблицу продаж.

TABULATE Sales ;Записывается величина суточных продаж.

День кончился, товар отгружен, прекращаем транзакт.

TERMINATE 1 ;Суточный таймер.

Процесс моделирования запускаем на 100 дней.

START 100

Похожие статьи




Пояснения к листингу - Модель складской системы с контролем уровня запасов

Предыдущая | Следующая