Главная страница
Навигация по странице:

  • Ячейки Ячейка отличается от переменной тем, что может запоминать любые значения, в том числе символьные константы. Оператор INITIAL

  • INITIAL A >, B > Параметры у данного оператора следующие:A

  • Примеры INITIAL X$Quote,"Now is the time ... " Этот оператор записывает в ячейку с именем QUOTE символьную константу.INITIAL MainResult

  • SAVEVALUE A >, B > Операнды блока: A

  • SAVEVALUE The_Bard,"A rose by any other name ..."

  • Параметры транзакта

  • Задача об управлении запасами

  • Ответы к экзамену по оптимизации бизнес процессов в системе gpss. Задачи оптимизации бп


    Скачать 0.55 Mb.
    НазваниеЗадачи оптимизации бп
    АнкорОтветы к экзамену по оптимизации бизнес процессов в системе gpss
    Дата14.06.2022
    Размер0.55 Mb.
    Формат файлаdocx
    Имя файлаОтветы к экзамену по оптимизации бизнес процессов в системе gpss.docx
    ТипВопросы к экзамену
    #589563
    страница5 из 8
    1   2   3   4   5   6   7   8

    Многоканальные системы массового обслуживания.


    При моделировании систем, объекты GPSS типа "многоканальные устройства" используются для имитации работы объектов реальных систем, которые могут подключать к работе несколько исполнителей. Например, несколько касс в супермаркете, автоматическая телефонная станция, автозаправочная станция, бригада работников и т.д. Объекты такого типа характеризуются определенным объемом и могут одновременно обрабатывать несколько транзактов. Максимально возможное число одновременно обрабатываемых транзактов называется емкостью многоканального устройства.
    1. Оператор описания многоканального устройства имеет следующий формат:
    STORAGE
    Оператор STORAGE определяет емкость многоканального устройства в текущей модели.

    Поле метки определяет имя многоканального устройства. Операнд А определяет емкость многоканального устройства. Операнд А может быть положительным целым числом.

    2. Блок ENTER
    Блок ENTER имеет следующий формат записи:
    ENTER
    ,[]
    Блок ENTER позволяет вошедшему транзакту использовать многоканальное устройство. Транзакт может быть задержан на входе в блок, если многоканальное устройство заполнено или имеющейся емкости недостаточно или устройство в данный момент недоступно.

    В поле А указывается номер или имя многоканального устройства, куда входит транзакт. Операнд может быть именем, положительным целым, СЧА или СЧА*<параметр>.

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

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

    Емкость многоканального устройства можно переопределить другим оператором STORAGE с тем же самым именем.

    Один и тот же транзакт может входить в неограниченное число многоканальных устройств, а впоследствии освобождать их (или часть из них).

    Кроме операций по обработке входящих транзактов, блок ENTER выполняет операции сбора статистической информации об использовании многоканального устройства. В частности, вычисляется величина интервала времени, в течение которого содержимое многоканального устройства оставалось неизменным.
    3. Блок LEAVE
    Блок LEAVE имеет следующий формат:
    LEAVE ,[]
    Блок LEAVE освобождает определенное число единиц многоканального устройства.

    Занятый объем многоканального устройства уменьшается на число освобождаемых единиц. Оставшаяся емкость многоканального устройства увеличивается на ту же величину. Счетчик числа входов не изменяется. Недоступность многоканального устройства не влияет на блок LEAVE.

    Поле А блока LEAVE определяет номер или имя многоканального устройства.

    Поле В - число освобождаемых единиц многоканального устройства.

    Когда транзакт входит в блок LEAVE, то ищется многоканальное устройство, заданное в поле А. Если такое многоканальное устройство не существует, то возникает ошибка выполнения. Число освобождаемых единиц многоканального устройства берется из операнда В. Когда
    многоканальное устройство становится доступным, проверяется список задержки многоканального устройства (очередь к нему), в порядке уменьшения приоритета с целью нахождения транзактов, запросы которых могут быть удовлетворены в данный момент. Если такие транзакты найдены, то они входят в блок ENTER, который отказал им и далее помещаются в список будущих событий за транзактами с таким же приоритетом. Попытка освободить больше единиц емкости, чем было определено, приводит к ошибке.

    Примеры:
    LEAVE manych, 5
    Освободить 5 каналов многоканального устройства.
    Подпрограмма блока LEAVE, также, как и подпрограмма блока ENTER, определяет величину интервала времени, в течении которого содержимое многоканального устройства оставалось неизменным.

    Обычно интерпретатор пытается продвинуть транзакт к следующему по номеру блоку.
    1. Моделирование запасов в БП


    ,_B_>_Параметры_у_данного_оператора_следующие:A'>INITIAL'>Ячейки
    Ячейка отличается от переменной тем, что может запоминать любые значения, в том числе символьные константы.
    Оператор INITIAL

    Оператор предназначен для задания начального значения ячейке.

    Оператор размещается, как правило, в начале модели и имеет следующий формат

    INITIAL <A>,<B>
    Параметры у данного оператора следующие:

    A - задает идентификатор ячейки.

    B - задает значение, которое записывается в ячейку.

    Это не блок, а оператор, поэтому он не требует, чтобы в него входил транзакт.
    Примеры

    INITIAL X$Quote,"Now is the time ... "
    Этот оператор записывает в ячейку с именем QUOTE символьную константу.

    INITIAL MainResult,UNSPECIFIED
    Здесь указывается, что элементы предварительно заданной ячейки MainResult не определены.
    Блок SAVEVALUE
    Блок предназначен для изменения значения в ячейке. Блок имеет следующий формат:

    SAVEVALUE <A>,<B>

    Операнды блока:

    A- имя ячейки. После имени может быть записан знак "+" или знак "-". если знак отсутствует, то блок работает как оператор присваивания. Знак "+" означает, что к содержимому ячейки прибавляется число, записанное во втором операнде. Знак "-" означает, что из содержимого вычитается число, записанное во втором операнде.

    B - Значение, которое сохраняется или изменяется в ячейке. Может быть выражением или константой.
    Примеры

    SAVEVALUE Account,99.95
    В этом примере ячейке с именем Account присваивается значение 99.95.

    SAVEVALUE The_Bard,"A rose by any other name ..."
    В этом примере ячейке с именем The_Bard (бард - поэт) присваивается символьная строка.

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

    Параметры Р1-Р100 транзактов могут быть заданы произвольно. Число параметров типа Р задается в блоке GENERATE. По умолчанию число таких параметров 12.

    Блок ASSIGN
    Блок ASSIGN заменяет, увеличивает или уменьшает текущее значение параметра транзакта на заданное значение.

    Блок ASSIGN имеет следующий формат записи:

    ASSIGN ,,[]
    В поле А задается номер параметра, которому присваивается значение. Если такой параметр не существует, то он создается.
    Операнд А может быть именем, положительным целым числом, СЧА, СЧА*<параметр> и следующими за ними знаками +,-. Если значение параметра нужно увеличить или уменьшить, то справа в поле А ставится знак сложения или вычитания. Например, аргумент поля А может быть закодирован следующим образом:

    1) 2 -заменяется текущее значение параметра 2;

    2) 2- -вычитается заданное значение из текущего значения параметра 2;

    3) 2+ -прибавляется заданное значение к текущему значению параметра 2.

    Поле В определяет значение, которое следует добавить или вычесть из значения параметра, заданного аргументом поля А, или заменить его. Операнд В может быть именем, любым целым числом, СЧА, или СЧА*<параметр>.

    Поле С задает номер модификатора-функции. При использовании поля С значение аргумента поля B умножается на значение модификатора-функции. Полученное произведение, становится значением, которое изменяет значение параметра, заданного в поле А.

    Пример:
    ASSIGN 2000+,-3

    В этом примере значение поля В, равное -3, добавляется к значению параметра с номером 2000, который задан операндом А. Если такой параметр в сообщении отсутствует, то он создается со значением, равным 0, до того, как будет произведено добавление. Тогда значение параметра сообщения становится равным -3.

    Блок TEST
    Блок TEST определяет номер или метку следующего блока для вошедшего в него транзакта в зависимости от того, выполняется требуемое условие или нет, и имеет следующий формат:
    TEST ,,[]
    Параметр - отделяется от остальных параметров пробелом и содержит одно из шести следующих обозначений условных операторов:

    - L - меньше. Условие истинное, если значение параметра А меньше значения параметра В;

    - LE - меньше или равно. Условие истинное, если значение параметра А меньше или равно значению параметра В;

    - E - равно. Условие истинное, если значения обоих аргументов равны;

    - NE - не равно. Условие истинное, если значения аргументов А и В не равны;

    - G - больше. Условие истинное, если значение аргумента А больше значения аргумента В;

    - GE - больше или равно. Условие истинное, если значение аргумента А больше или равно значению аргумента В.

    Если логическое условие, задающее отношение между аргументами А и В, истинно, то транзакт переходит к следующему блоку. Если условие ложно, то
    транзакт переходит к блоку, номер или метка которого заданы в параметре С. Если параметр С не указан, то транзакт ждет, пока будет выполнено условие.

    Например, блок может иметь вид
    TEST L C1,500,METKA1 .
    Здесь пока значение относительного условного времени (Системная переменная C1) не достигнет значения 500 условных единиц, транзакты от блока TEST будут переходить к следующему по номеру блоку. Как только значение условного времени станет равным 500 (и более), транзакты будут переходить к блоку с меткой METKA1.
    Задача об управлении запасами
    Требуется создать модель бизнес-процесса системы управления запасами (складом).

    Алгоритм управления с фиксированным объемом пополнения запаса.


    EOQ=500


    Пусть начальное значение запаса равно 700 ед.

    Точка заказа новой партии - 600 ед. При снижении запаса меньше этого значения необходимо сделать заказ новой партии товара.

    Срок выполнения заказа - 5 дней. Объем партии (Economic order quantity) фиксирован и равен 500 единиц.

    Расход запаса (Demand) - случайная величина, изменяющаяся от 40 до 63 с одинаковой вероятностью для каждого значения.

    Требуется построить гистограммы для запаса на складе и для расхода.
    INITIAL X$EOQ,500 ;Объем партии
    INITIAL X$Point,600 ;Точка заказа
    INITIAL X$Stock,700 ;Запас. Первоначальный запас =700
    Inventory TABLE X$Stock,0,50,20 ;Гистограмма запаса
    Sales TABLE P$Demand,38,2,20 ;Гистограмма продаж
    Var2 VARIABLE RN1@24+40 ;Случайный расход

    ; Здесь деление по модулю. Берется остаток.

    GENERATE ,,,1
    Again TEST L X$Stock,X$Point ; проверка на точку заказа
    ADVANCE 5 ;Задержка = 1 week
    SAVEVALUE Stock+,X$EOQ ;Добавить партию
    TRANSFER ,Again ;Снова проверять
    *
          GENERATE  1             ;Продажи
          ASSIGN    Demand,V$Var2 ;Р1 = сл. спрос
          TABULATE  Inventory     ;Записать остаток
          TEST GE   X$Stock,P$Demand ;Достаточно ли запаса?
            SAVEVALUE Stock-,P$Demand ;уменьшить запас
            TABULATE  Sales          ;Записать продажи
            TERMINATE 1             ;День закончился
    *

    Модель состоит из двух сегментов. В первом сегменте осуществляется ожидание момента для заказа новой партии и через 5 дней запас пополняется. Затем снова осуществляется ожидание.

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

    Перед блоками TEST можно поставить блоки регистрации очереди, чтобы оценить время ожидания.
    1. 1   2   3   4   5   6   7   8


    написать администратору сайта