перейти к полному списку дипломных проектов
Ссылка на скачивания файла в формате .doc находится в конце странички
Если поле B пусто, то по окончании прогона модели формируется отчет со стандартной статистической информацией о всех объектах модели (см
Блок
UNLINK E P$UCH,MET2,ALL,COND,P$COND,MET3 выводит из списка пользователя, номер которого записан в параметре UCH выводящего транзакта, и направляет в блок с именем MET2 все транзакты, содержимое параметра COND которых равно содержимому одноименного параметра выводящего транзакта. Если таких транзактов в списке не окажется, то выводящий транзакт будет направлен в блок с именем MET3, в противном случае - к следующему блоку.
Следует отметить следующие особенности выполнения блока UNLINK. Во-первых, если поля D и E содержат ссылки на СЧА транзактов, то поле D вычисляется относительно транзактов в списке пользователя, а поле E - относительно активного транзакта. Во-вторых, после вывода транзактов из списка симулятор продолжает или начинает продвижение транзакта с наивысшим приоритетом, а при равенстве приоритетов отдает предпочтение транзакту-инициатору вывода.
Каждый список пользователя имеет следующие СЧА: CH - текущая длина списка; CA - средняя длина списка (целая часть); CM - максимальная длина списка; CC - общее число транзактов, вошедших в список; CT - целая часть среднего времени пребывания транзакта в списке.
Воспользуемся рассмотренными блоками для моделирования многоканальной СМО с ожиданием транзактов в списке пользователя (рис. 17). Если МКУ с именем STO2 не заполнено, блок GATE впускает вновь прибывший транзакт в блок ENTER, и в МКУ занимается один канал. Если же МКУ заполнено, то блок GATE направляет транзакт в блок LINK с именем WAIT, помещающий транзакт в конец списка пользователя с именем BUFER, моделирующего очередь к МКУ. Каждый транзакт, покидающий МКУ по завершении обслуживания и освобождающий один канал, проходит блок UNLINK и выводит один транзакт с начала списка (если список не пуст), направляя его в блок с именем ENT1 на занятие канала в МКУ.
1
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
GATE SNF STO2,WAIT
ENT1 ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
UNLINK BUFER,ENT1,1
TERMINATE 1
WAIT LINK BUFER,FIFO
1.5
Рис. 17
Заметим, что для изменения дисциплины обслуживания на "позже пришел - раньше обслужен" достаточно или заменить в поле B блока LINK FIFO на LIFO, или записать в поле D блока UNLINK операнд BACK. Следует также обратить внимание на то, что блоки QUEUE-DEPART для сбора статистики об ожидающих транзактах не используются, так как почти все те же данные можно получить из статистики о списке пользователя.
Рассмотрим еще один пример, иллюстрирующий использование списков пользователя для организации нестандартных дисциплин обслуживания. Пусть в одноканальной СМО с ожиданием требуется организовать такую дисциплину, при которой приоритет отдается заявкам с наименьшим временем обслуживания. Такая модель будет иметь вид, показанный на рис. 18.
В параметр TSRV поступающих в модель транзактов в блоке ASSIGN записывается случайное время обслуживания, вычисляемое с использованием функции EXP. Если устройство SYSTEM свободно, то блок GATE впускает транзакт в блок SEIZE, и устройство занимается на время P$TSRV. Если же в момент поступления транзакта устройство занято, то блок GATE направляет транзакт в блок LINK, который вводит тран
1
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ASSIGN TSRV,80,EXP
GATE NU SYSTEM,WAIT
SFAC SEIZE SYSTEM
ADVANCE P$TSRV
RELEASE SYSTEM
UNLINK LINE,SFAC,1
TERMINATE 1
WAIT LINK LINE,P$TSRV
1.5
Рис. 18
закт в список пользователя LINE, упорядочивая транзакты по возрастанию времени обслуживания, записанного в параметре P$TSRV. Блок UNLINK по освобождении устройства выводит с начала списка транзакт с наименьшим временем обслуживания, обеспечивая тем самым заданную дисциплину.
3. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ GPSS/PC
Для управления прогоном модели используются управляющие операторы GPSS/PC. С одним из них - оператором START - мы уже сталкивались при рассмотрении блока TERMINATE. Оператор START (начать) имеет следующий формат:
START A,B,C,D
Поле A содержит константу, задающую начальное значение счетчика завершений. В поле B может быть записано ключевое слово NP признак подавления формирования стандартного отчета по завершении моделирования. Если поле B пусто, то по окончании прогона модели формируется отчет со стандартной статистической информацией о всех объектах модели (см. разд. 5). Поле C не используется и сохранено для совместимости со старыми версиями GPSS. Поле D может содержать 1 для включения в отчет списков текущих и будущих событий.
скачать бесплатно Моделирование систем и сетей связи на GPSSPC
Содержание дипломной работы
ОБЩИЕ СВЕДЕНИЯ О GPSS/PC
Исходная программа на языке GPSS/PC, как и программа на любом языке программирования, представляет собой последовательность операторов
Они "создаются" и "уничтожаются" так, как это необходимо по логике модели в процессе моделирования
Значения атрибутов всех объектов модели по окончании моделирования выводятся в стандартный отчет GPSS/PC
В относительно простых моделях используются лишь два основных списка: список текущих событий и список будущих событий
Ссылка на СЧА транзакта всегда относится к активному транзакту, т
Каждый транзакт, проходящий через блок TERMINATE, вычитает из счетчика единицу, и таким образом моделирование завершится, когда тысячный по счету транзакт войдет в блок TERMINATE
Для некоторых случайных величин уравнение связи имеет явное решение, и значение случайной величины с заданным распределением вероятностей может быть вычислено через R по формуле
При использовании непрерывной функции для генерирования случайных чисел ее аргументом должен быть один из генераторов случайных чисел RNj
,n), то такую дискретную функцию с целью экономии памяти и машинного времени удобно определить как списковую числовую функ цию (тип L)
Транзакты, выходящие из блока GENERATE в моменты занятости устройства, не смогут войти в блок SEIZE и будут оставаться в блоке GENERATE, образуя очередь в списке текущих событий
По истечении задержки одного из двух обслуживаемых транзактов в блоке ADVANCE и после входа его в блок LEAVE первый из заблокированных транзактов сможет войти в блок ENTER
Имея такое распределение, можно оценить вероятность того, что время ожидания превысит или не превысит некоторое заданное значение
8, надо получить распределение времени пребывания заявок в системе, включающего время ожидания в очереди и время обслуживания
Если же это условие не выполняется, то транзакт переходит к блоку, указанному в поле C, а если оно пусто, то задерживается перед блоком TEST
Блоки, работающие с памятью
Для хранения в памяти отдельных числовых значений и массивов таких значений используются сохраняемые величины и матрицы сохраняемых величин
5
MX j ( a,b) Здесь имя и j - соответственно имя и номер матрицы; a и b - номера соответственно строки и столбца, задаваемые константами или ссылками на СЧА параметров транзактов
Блок
UNLINK BUFER,ENT1,1,BACK выводит из списка пользователя с именем BUFER один транзакт с конца списка и направляет его в блок с именем ENT1
Если поле B пусто, то по окончании прогона модели формируется отчет со стандартной статистической информацией о всех объектах модели (см
Исключение составляют генераторы случайных чисел, которые не возвращаются к своим начальным значениям, что позволяет повторить прогон модели на новой последовательности случайных чисел
В следующем блоке PRIORITY с помощью переменной PRIOT определяется приоритет транзактов, первоначально равный 0 (отсутствует поле E в блоке GENERATE)
Для правильной обработки временного узла надо обеспечить такой порядок расположения транзактов в списке текущих событий, чтобы транзакт, освобождающий МКУ, всегда располагался первым
При повторной обработке обслуженного транзакта тот освобождает устройство и выводит очередной транзакт из списка пользователя
При вводе такой команды в командной строке появляется редактируемая строка
Открытие того или иного окна может быть выполнено также с помощью команды WINDOW (окно), в поле A которой указывается имя окна, однако удобнее это делать так, как описано выше
В поле C указывается ON для установки условия прерывания и OFF для снятия этого условия (по умолчанию ON)
В правом окне выведено обозначение устройства, куда должен быть выведен форматированный отчет (по умолчанию это экран дисплея SCRN: )
В отчетах о прогоне моделей, включающих в себя другие, не рассматривавшиеся здесь объекты GPSS/PC, появляется соответствующая информация и об этих объектах
Для вывода очередной страницы необходимо нажать клавишу Пробел, для прекращения вывода отчета - клавишу Esc