![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Построение имитационной модели процесса
Построение имитационной модели начнем с создания заголовка модели, который может быть представлен, например, в таком виде: ; GPSSW AZS.GPS *************************************** * Моделирование автомобильной * * заправочной станции (АЗС) * *************************************** Моделирование потока машин, поступающих на заправку, будем выполнять с помощью оператора GENERATE (Генерировать). Нам необходимо сформировать поток машин, поступающих на обслуживание на АЗС, который подчиняется экспоненциальному распределению вероятностей. Это можно сделать двумя способами, используя: • эмпирические распределения, которые можно создать с помощью команды FUNCTION (Функция) языка GPSS, используя дискретные (тип D) или непрерывные (тип C) случайные функции; • встроенные распределения вероятностей. В системе GPSSW в библиотеку процедур включено более 20 встроенных распределений вероятности. Эти распределения имеют широкий диапазон использования. Каждый вызов процедуры распределения вероятности требует, чтобы вы определили параметр потока, номер генератора случайных чисел. В нашем примере оператор GENERATE запишется в таком виде: GENERATE (Exponential(1, 0, 6.5)) В поле операнда А указывается обращение к библиотечной процедуре – экспоненциальному распределению вероятности. Автомобиль, поступающий на заправку, сначала встает в очередь, если она есть. Это можно промоделировать оператором QUEUE (Очередь), который только в совокупности с оператором DEPART (Выйти) собирает статистическую информацию о работе моделируемой очереди. В нашем примере оператор QUEUE будет выглядеть так: QUEUE Zapravka В поле операнда А дается символьное или числовое имя очереди. Таких очередей в системе может быть очень много. В нашей задаче дадим очереди имя Zapravka (Заправка). Желательно, чтобы присваиваемое имя отражало суть описываемого элемента системы. Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение Поскольку на АЗС есть две колонки для заправки, то автомобиль подъезжает к первой колонке, если она свободна, и ко второй, если первая занята. Если обе колонки заняты, то автомобиль ожидает их освобождения в общей очереди. Направление автомобилей на ту или иную колонку может быть обеспечено оператором 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 с соответствующим названием очереди. В нашем примере это будет выглядеть так: Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе 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
|