Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

Пользователей: 13,368
новичок: Goosprin
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Поиск пути в графе заданном списками инцедентности на Turbo Pascal
Калькулятор на Delphi с переводом в другую систему исчисления + Блок схемы
Моделирование работы обрабатывающего участка цеха в GPSS

БЛОКИ, ОПИСЫВАЮЩИЕ РАБОТУ ОБОРУДОВАНИЯ


Язык GPSS оперирует с тремя типами объектов, принадлежащих аппаратной
категории: устройствами, памятями и ключами.
Устройство терминологии GPSS является аналогом обслуживающего прибора
системы массового обслуживания (Q-схемы) [I8]. В любой момент времени устройство
может быть занято только одним транзактом. Состояние устройства меняют шесть
блоков: SEIZE, RELEASE, PREEMPT, RETURN, FUNAVAIL, FAVAIL, которые
используются попарно.
В результате входа транзакта в блок SEIZE устройство, указанное в этом блоке, будет
занято. Оно останется занятым, пока тот же транзакт не пройдет соответствующий блок
RELEASE. Если какой-либо транзакт занимает устройство, описанное в поле А блока
SEIZE, то никакой другой транзакт не сможет войти в этот блок (и вообще не сможет
захватить это устройство в любом другом блоке SEIZE). Транзакт может занять любое
число устройств.
Блок RELEASE служит для освобождения устройства, которое ранее было захвачено
проходившим в блоке SEIZE транзактом. При выполнении этого блока программы
задержка возникнуть не может. Устройство освобождается в момент входа транзакта в
блоке RELEASE. Освобождение выполняется только тем транзактом, которым оно было
занято. Если перед SEIZE задерживаются несколько транзактов, они обслуживаются в
соответствии с правилом: «первым пришел — первым обслужен».
Рассмотрим пример использования блоков SEIZE и RELEASE:
SEIZE 1
ADVANCE 10,5
RELEASE 1



(т. е. происходит занятие устройства I, задержка от 5 до 15 единиц времени и
освобождение устройства 1).
Блок PREEMPT фиксирует использование устройства на более высоком уровне, чем
блок SEIZE, а также приостанавливает обслуживание транзакта, захватившего устройства
ранее, и дает возможность прерванному транзакту захватить устройство после того, как
закончится обслуживание прервавшего транзакта.
Если при выполнении блока PREEMPT оказывается, что одно прерывание уже
произошло (устройство обслуживает прерывание), то блок не выполняется и
соответствующий транзакт задерживается до тех пор, пока не освободится устройство.
Затем обслуживается новый прерывающий транзакт» а не прерванный. Исключением из
описанных выше правил является случай, когда блок PREEMPT работает в режиме
приоритетов, т. е. в поле В стоит PR. При этом в действиях блока PREEMPT
предусмотрен случай разрешения прерывания на основании результата анализа
приоритетов транзактов.
Для последующей обработки прерванных транзактов существуют следующие
возможности:

• в поле С может быть описан какой-либо блок, на который будет передан прерванный
транзакт. При этом прерванный транзакт продолжает претендовать на данное
устройство;
• если прерванный транзакт находится в блоке ADVANCE, то вычисляется остаток
времени (от момента прерывания до момента выхода из блока ADVANCE) и
полученное значение помещается в параметре, описанном в поле D блока PREEMPT. В
этом случае прерванный транзакт будет послан в блок, указанный в поле С блока
PREEMPT. Прерванный транзакт продолжает претендовать на данное устройство;
• если в поле Е блока PREEMPT стоит запись RE, то будут производиться обычные
операции, за исключением того, что прерванный транзакт не участвует больше в
конфликте из-за захвата устройства.
Блок RETURN сигнализирует об окончании прерывания. При входе в блок задержка
возникнуть не может, но закончить прерывание может только тот транзакт, который перед
этим прошел блок PREEMPT, относящийся именно к данному устройству. Прерывание
заканчивается в момент входа в блок RETURN. Время, в течение которого транзакт
находится в прерванном состоянии, не фиксируется. На прерывания имеются следующие
ограничения: нельзя производить прерывание транзакта, захватившего или прервавшего
обслуживание других транзактов более чем на 255 устройствах одновременно, задержка
прерванного транзакта начинается с момента первого прерывания и оканчивается в
момент окончания последнего. Неважно, занято или свободно устройство, для которого
выполняется блок PREEMPT.
Рассмотрим пример использования блоков PREEMPT и RETURN:
PREEMPT 16
ADVANCE 150
RETURN 16



(т. е. реализуется прерывание на устройстве 16, задержка на 150 единиц, а затем
возврат устройства).
Блок FUNAVAIL17 выполняет операции, переводящие устройство в состояние
недоступности. Недоступность устройства предупреждает занятие или прерывание
устройства последующими сообщениями. При этом возможно задание специальных
режимов работы блока FUNAVAIL, обеспечивающих окончание обслуживания
последнего транзакта, передачу его на обслуживание к другому блоку, дообслуживание
транзакта после окончания периода недоступности. Номер или диапазон номеров
устройств, переводимых в состояние недоступности, записывается в поле А. Поля В...Н
предназначены для задания специальных режимов.
Блок FAVAIL18 делает доступными устройства, указанные как номер или диапазон
номеров устройств в поле А. Блок FAVAIL отменяет все режимы, заданные блоком
FUNAVAIL для данных устройств.
Рассмотрим пример использования блоков FUNAVAIL и FAVAIL:
FUNAVAIL 1—15
ADVANCE 30
FAVAIL 1—l0
ADVANCE 15
FAVAIL 11—15



(т. е. недоступные устройства с 1-го по 15-е становятся доступными: через 30 единиц
времени — устройства с 1-го 10-е, а через 45 единиц времени — устройства с 11-го по 15-
е).
Часто два и более приборов работают рядом. GPSS позволяет моделировать
однородные параллельные приборы с помощью специальных средств, называемых
многоканальным устройством, или памятями. Для введения в программу памяти
требуется описать ее картой STORAGE, а изменение состояния памяти производится
блоками ENTER, LEAVE, SUNAVAIL, SAVAIL. Блок ENTER моделирует событие
«занятие одного из группы параллельно работающих приборов», LEAVE19 –
«освобождение параллельно работающего прибора».
Поле А блока ENTER интерпретируется как номер памяти, поле В — указывает число
единиц памяти, занимаемых транзактом при входе в блок. При выходе транзактов из
блока ENTER никаких изменений в содержимом памяти не происходит.
Если поле В пустое, то число единиц памяти полагает равным 1. В этом поле может
быть записан 0 и тогда содержимое памяти увеличится на 0 единиц. Если в памяти нет
достаточного числа свободных единиц, чтобы удовлетворить запрос транзакта, то этот
транзакт не может быть обслужен блоком ENTER. Если для последующего транзакта
число единиц памяти достаточно, он входит в память раньше первого.
Поле А определяет номер памяти, а поле В — число единиц, которые надлежит
освободить при входе транзакта в блок LEAVE. Не всегда освобождается такое же число
единиц памяти, как было занято. Транзакт, освобождающий память, не обязательно
должен был ее занимать. Однако необходимо, чтобы в сумме освобождалось столько
единиц памяти, сколько было занято (иначе содержимое памяти будет возрастать и после
ее заполнения в системе наступит насыщение), и чтобы содержимое памяти не стало
отрицательным (т. е. не освобождалось больше единиц памяти, чем было занято). При
выполнении блока LEAVE задержки не возникают. Аналогично тому, как в блоке ENTER
транзакт может занять 0 единиц памяти, в блоке LEAVE он может освободить 0 единиц.
Пример 8. Построить программу модели многоканальной системы массового
обслуживания с очередью. В парикмахерской три мастера, очередь к ним общая. Клиенты
приходят с интервалом (10 ± 5) минут, обслуживание парикмахером клиента занимает (25
± 10) минут. Смоделировать работу парикмахерской в течение одного рабочего дня (8
часов).

SIMULATE Начало моделирования
PARIK STORAGE 3 Три парикмахера
GENERATE 10,5 Приход клиентов
QUEUE OCHER Занятие очереди
ENTER PARIK,1 Начало стрижки
DEPART OCHER Освобождение очереди
ADVANCE 25,10 Стрижка
LEAVE PARIK,1 Завершение стрижки
TERMINATE Уход клиента
GENERATE 480 Время завершения моделирования
TERMINATE 1
START 1 Системный счетчик равен 1



Схема данной СМО аналогична схеме на рис. 3. Отметим разницу между одноканальным
и многоканальным устройствами. Одноканальное устройство может заниматься или
захватываться транзактом, многоканальное устройство – только заниматься.
В следующем примере сама очередь представлена в виде многоканального устройства.
Блок-диаграмма GPSS-модели
Рис. 8. Блок-диаграмма GPSS-модели
Пример 9. СМО состоит из одного прибора и очереди перед ним. Обработка заявки в
приборе занимает (20 ± 5) единиц времени. Очередь ограничена длиной 4. Заявки
приходят каждые (15 ± 3) единиц времени и если в очереди нет свободных мест, то заявки
покидают модель необслуженными. Промоделировать систему в течение 1000 единиц
времени.

SIMULATE Начало моделирования
NAKOP STORAGE 4 Длина очереди – 4 заявки
GENERATE 15,3 Приход заявок
GATE SNF NAKOP,BYBYE Пропустить заявку на
*нижеследующий блок, если очередь NAKOP заполнена не полностью,
*в противном случае заявку отправить на метку BYBYE
ENTER NAKOP Поступление в очередь
SEIZE USTR Занятие устройства
LEAVE NAKOP Освобождение очереди
ADVANCE 20,5 Задержка
RELEASE USTR Освобождение устройства
BYBYE TERMINATE Уход заявки
GENERATE 1000 Время завершения моделирования
TERMINATE 1
START 1 Системный счетчик равен 1



Блок-диаграмма GPSS-модели показана на рис. 8.
Блок SUNAVAIL20 переводит накопитель в состояние недоступности, при котором
транзакты не могут войти в накопитель. Уменьшение содержимого накопителя в этот
период может происходить путем прохождения транзактами блока LEAVE. Номер или
диапазон номеров накопителей, переводимых в состояние недоступности, записывается в
поле А.
Блок SAVAIL переводит заданный накопитель из состояния недоступности в состояние
доступности. Если данный накопитель уже доступен, то блок SAVAIL никаких действий
не выполняет. Номер или номера накопителей, переводимых в состояние доступности,
записываются в поле А.
Рассмотрим пример использования блоков SUNAVAIL и SAVAIL:
SUNAVAIL 2—5
TEST NE PHI,O,NEXT
SAVAIL 2—5



(т. е. недоступные накопители с 1-го по 5-й становятся доступными при появлении
транзакта с ненулевым параметром 1 типа «полуслово»).
Логические ключи в GPSS предназначены для описания элементов моделируемой
системы S, которые могут находиться только в двух состояниях. Статистика о работе
ключей не собирается. Логические ключи не имеют СЧА, а только два логических
атрибута, принимающие значения 0— при невыполнении и 1— при выполнении
следующих условий: LR21 — ключ в состоянии «0»; LS22 — ключ в состоянии «1».
В начале моделирования ключ может быть установлен в состояние «1» с помощью
карты INITIAL, и изменение состояния ключа производится в процессе моделирования
блоком LOGIC.
Блок LOGIC используется для установки логических ключей, состояние которых
может быть запрошено в любом другом месте модели. При входе в блок LOGIC задержки
не возникает. Состояние логического объекта, указанного в поле А, изменяется одним из
трех способов: может быть установлен S, сброшен R или инвертирован I. Вид изменения
определяется соответствующим мнемоническим обозначением, помещаемым
непосредственно за блоком LOGIC.
Рассмотрим пример применения блока LOGIC:
LOGIC S 41
LOGIC R 165
LOGIC I 4



(т. е. установить ключ 41, сбросить ключ 165, инвертировать ключ 4).


Сноски:
17 F - FACILITIES (устройства), UNAVAIL (сделать недоступным)
18 AVAIL (сделать доступным)
19 LEAVE - выйти
20 S – STORAGE (память)
21 L – LOGIC (логический), R – RESET (сбросить)
22 S – SET (установить)
Опубликовал Kest December 15 2009 11:46:13 · 0 Комментариев · 14011 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
AlignEdit
Tag Игра "Пятнашк...
Шейдеры в Delphi
Visual Studio 200...
Библия хакера 2 К...
Профессиональное ...
Создание лабиринт...
DS_Group
Abbrevia
Динамические за...
SysInfo [Исходник...
Preview
AlnComponents
Разработка клиент...
WinAmp
Прграммирование в...
С# для профессион...
Swat [Исходник на...
Rotolabel
C++ Builder в за...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97833
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Аналоговый сигнал ...
Нахождение геометр...
Создание пользоват...
Карта END
Логическая задача ...
Введение в информа...
СПИСКИ ПОЛЬЗОВАТЕЛЯ
Диалоговое окно Re...
Также необходимо з...
Приемы эквивалентн...
Шрифт
мало для подчиненн...
LEAVE (ВЫЙТИ)
Бизнес в Шотландии.
Работа с MySql...
вызвались:• Джон Ч...
Многостраничные ко...
Создание дистрибут...
брандмауэре
Листинг 13.11. Фун...
Как поставить кате...
Создание компонент...
Персуазивная инфог...
Протокол RSVP
5.5. Объявление о...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?