Студопедия

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

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

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






  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Построение имитационной модели процесса






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

    ; GPSSW AZS.GPS

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

    * Моделирование автомобильной *

    * заправочной станции (АЗС) *

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

    Моделирование потока машин, поступающих на заправку, будем выполнять с помощью оператора GENERATE (Генерировать). Нам необходимо сформировать поток машин, поступающих на обслуживание на АЗС, который подчиняется экспоненциальному распределению вероятностей. Это можно сделать двумя способами, используя:

    • эмпирические распределения, которые можно создать с помощью команды

    FUNCTION (Функция) языка GPSS, используя дискретные (тип D) или непрерывные (тип C) случайные функции;

    • встроенные распределения вероятностей.

    В системе GPSSW в библиотеку процедур включено более 20 встроенных распределений вероятности. Эти распределения имеют широкий диапазон использования.

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

    В нашем примере оператор GENERATE запишется в таком виде:

    GENERATE (Exponential(1, 0, 6.5))

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

    Автомобиль, поступающий на заправку, сначала встает в очередь, если она есть.

    Это можно промоделировать оператором QUEUE (Очередь), который только в совокупности с оператором DEPART (Выйти) собирает статистическую информацию о работе моделируемой очереди.

    В нашем примере оператор QUEUE будет выглядеть так:

    QUEUE Zapravka

    В поле операнда А дается символьное или числовое имя очереди. Таких очередей в системе может быть очень много. В нашей задаче дадим очереди имя Zapravka (Заправка). Желательно, чтобы присваиваемое имя отражало суть описываемого элемента системы.

    Поскольку на АЗС есть две колонки для заправки, то автомобиль подъезжает к первой колонке, если она свободна, и ко второй, если первая занята. Если обе колонки заняты, то автомобиль ожидает их освобождения в общей очереди. Направление автомобилей на ту или иную колонку может быть обеспечено оператором TRANSFER (Передать). В нашем примере он запишется так:

    TRANSFER Both, Kol_1, Kol_2

    Слово Both (Оба) означает возможность передачи требования (машины) по двум направлениям: к оператору с меткой Kol_1, если первая колонка (объект) не занята, и к оператору с меткой Kol_2, если занята.

    Следуя логике, автомобиль может выйти из очереди только тогда, когда освободится первая или вторая колонка (объект). Для моделирования используются два сегмента. Первый из них связан с работой первой колонки, а второй – с работой второй. Оба сегмента начинаются с оператора SEIZE (Занять), и каждый из них имеет свою метку, соответственно Kol_1 и Kol_2, которые определяют занятость первой или второй колонки (канала обслуживания). При освобождении одной из них находящееся впереди требование выходит из очереди и идет в канал на обслуживание.

    Начало первого сегмента записывается так:

    Kol_1 SEIZE Kolonka_1

    В поле операнда А дается символьное или числовое имя объекта. Таких каналов обслуживания в системе может быть очень много. В нашей задаче каналу дано имя Kolonka_1 (Колонка_1). Желательно, чтобы присваиваемое имя отражало суть описываемого элемента системы.

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

    DEPART Zapravka

    Далее должно быть промоделировано время заправки автомобиля. Оно в нашем примере составляет 10±2, 5 мин. Для моделирования этого процесса используется оператор ADVANCE (Задержать), который в нашей задаче будет выглядеть так:

    ADVANCE 10, 2.5

    Затем необходимо сообщить об освобождении колонки под номером 1. Это можно сделать с помощью оператора RELEASE (Освободить). Он в нашей задаче записывается так:

    RELEASE Kolonka_1

    Далее используется оператор TRANSFER (Передать) в режиме безусловной передачи требования к оператору с указанной меткой в поле операнда В. В нашем примере это будет выглядеть так:

    TRANSFER, Next

    Начало второго сегмента запишется так:

    Kol_2 SEIZE Kolonka_2

    В поле операнда А дается символическое имя объекта – Kolonka_2.

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

    DEPART Zapravka

    Далее должно быть промоделировано время заправки автомобиля. Оно в нашем примере составляет 13±4 мин. Для моделирования этого процесса используется оператор ADVANCE, который в нашей задаче будет выглядеть так:

    ADVANCE 13, 4

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

    DEPART Total_time

    Далее необходимо сообщить об освобождении колонки под номером 2. Это можно сделать с помощью оператора RELEASE. Он в нашей задаче записывается так:

    RELEASE Kolonka_2

    Затем используем оператор SAVEVALUE (Сохраняемая величина) с меткой Next (Следующий) для сохранения среднего времени нахождения автомобиля в очереди под именем Zapravka в сохраняемой величине под именем Ave_Queue. Это будет выглядеть так:

    Next SAVEVALUE Ave_Queue, QT$Zapravka

    Далее автомобиль покидает АЗС. Для этого используется оператор TERMINATE

    (Завершить):

    TERMINATE

    И наконец, мы должны создать сегмент, который будет моделировать работу АЗС в течение рабочей смены, равной 8 ч. Поскольку моделирование работы АЗС проводится в минутах, то время моделирования системы будет равно 8 × 60 = 480 мин.

    Этот сегмент будет выглядеть так:

    GENERATE 480

    TERMINATE 1

    START 1

    Следует особо подчеркнуть, что парные операторы QUEUE и DEPART для каждой очереди должны иметь одно и то же, но свое уникальное имя. Это же относится и к операторам SEIZE и RELEASE.

    Завершающим оператором в нашей задаче является START, дающий команду начать моделирование:

    START 1






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