Форум программистов, компьютерный форум, киберфорум
GPSS
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
1

Простая схема СМО

03.04.2015, 19:59. Показов 2002. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, форумобитатели.
Сегодня начал изучать этот очень своеобразный язык с замысловатым синтаксисом, наткнулся совершенно случайно и пришло откровение - ведь, оказывается, что на этом языке смоделировать систему намного легче, чем на Си++ и т.п. языках!!! - такое задание у меня, вот
По делу: я хочу получить характеристики системы (рисунок во вложении) и, насмотревшись примеров, написал такой код (с дискретной величиной, я пока не понял можно ли вообще), в любом случае, код не работает - ругается при создании симуляции на transfer. Помогите, пожалуйста:
Код
; FIRST
GENERATE 	(Exponential(1, 0, (1/2))) 	
QUEUE	INCOMING_STREAM		
SEIZE	STATION1			
DEPART	INCOMING_STREAM		
ADVANCE	(Exponential(1, 0, (1/0.47))) 	
RELEASE	STATION1			
QUEUE	BEFORE_ST2
SEIZE	STATION2		
DEPART	BEFORE_ST2		
ADVANCE	(Exponential(1, 0, (1/0.43))) 	
RELEASE	STATION2			
QUEUE	BEFORE_ST3_AND_ST4
TRANSFER  BOTH, ST3, ST4		
ST3  	SEIZE      STATION3
	DEPART	 BEFORE_ST3_AND_ST4
        ADVANCE    (Exponential(1, 0, (1/0.9))) 
        RELEASE    STATION3
        TRANSFER   ,OUT
ST4  	SEIZE      STATION4
	DEPART	 BEFORE_ST3_AND_ST4
        ADVANCE    (Exponential(1, 0, (1/0.83))) 
        RELEASE    STATION4
OUT   TERMINATE 		
				
; SECOND
GENERATE	 50			
TERMINATE	1
Простая схема СМО

И еще вопрос, если не трудно: GENERATE 50 - правильно ли, что все это будет генерация транзактов будет в течении 50 условных минут по тому эксп. закону в начале?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2015, 19:59
Ответы с готовыми решениями:

Модель СМО
не очень разюираюсь в GpSS, помогите решить задачку

Модель СМО
На вход СМО поступает поток заявок 3-х типов, с вероятностями поступления 0.2, 0.3 и 0.5...

Одноканальная СМО
Не могли бы помочь.Есть задание,я тут вроде как решение получил но хотелось бы удостовериться в...

СМО с отказами
Здравствуйте ,помогите пожалуйста. Рассматривается n-канальная система массового обслуживания (СМО)...

16
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
03.04.2015, 21:14 2
Код
04/03/15 23:06:55  Model Translation Begun.
04/03/15 23:06:55  Line 15, Col 23. Invalid SNA in GPSS Statement. Operand E. 
04/03/15 23:06:55  ST3     SEIZE      STATION3
04/03/15 23:06:55  Line 20, Col 1. Invalid SNA. Expecting a Label or GPSS Verb. 
04/03/15 23:06:55  ST4     SEIZE      STATION4
04/03/15 23:06:55  **** Model Translation Aborted ****
ST (имя занято системой) заменить например на STT

TRANSFER - убрать лишние пробелы между запятыми и в конце строчки, GPSS очень не любит пробелы!!! убирайте везде (по уму)

в конец программы можно поставить сразу счётчик завершения моделирования START 1 то есть сколько должно покинуть систему заявок через TERMINATE 1 чтобы завершилось моделировании системы
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
03.04.2015, 23:45  [ТС] 3
Спасибо, все заработало! Все же вопрос в силе: 50 - это время в течении которого мы создаем заявки?
И еще: программа верно написано? Насчет счетчика, сейчас примеры поищу

Добавлено через 3 минуты
А все понял насчет счетчика, такой вопрос как задать дискретное распределение (ну прошу ссылку какую-нить?)

Добавлено через 39 минут
ага! правильно, что дискретная величина так для моего примера задается таким образом:
Код
MY_INCOM FUNCTION RNj,D3
.35,5/.7,10/1,50
только подскажите, какое число ставить вместо "j" у "RNj"
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
04.04.2015, 09:55 4
Цитата Сообщение от lion_wine Посмотреть сообщение
только подскажите, какое число ставить вместо "j" у "RNj"
j здесь номер генератора случайных чисел (хорошо про генераторы написано в начале книги Шрайбер Имитационное моделирование на GPSS).
j=от 1 до 8, хотя в теории можно и больше, эти генераторы ПСЕВДОслучайных чисел имеют определённое начальное значение(см. Шрайбер) которое может быть изменено в начале программы другим блоком (запамятовал), но обычно их переопределять нет смысла для обычной задачи
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
04.04.2015, 13:50  [ТС] 5
да, нашел, стр.140 Шрайбера. Даже при неизмененных начальных значениях у генератора будет ли код в целом верен? Есть ли ошибки какие-нибудь логические или потери где-нибудь в силу кривоты кода?
Код
DISC0 FUNCTION RN1,D3
.4,5/.8,10/1,50
DISC1 FUNCTION RN2,D3
.35,5/.7,10/1,50
DISC2 FUNCTION RN3,D3
.3,5/.6,10/1,50
DISC3 FUNCTION RN4,D3
.25,5/.5,10/1,50
DISC4 FUNCTION RN5,D3
.2,5/.4,10/1,50
; FIRST
;GENERATE (Exponential(1, 0, (1/2)))  
GENERATE FN$DISC0
QUEUE   INCOMING_STREAM     
SEIZE   STATION1            
DEPART  INCOMING_STREAM     
ADVANCE FN$DISC1  
RELEASE STATION1            
QUEUE   BEFORE_ST2
SEIZE   STATION2        
DEPART  BEFORE_ST2      
ADVANCE FN$DISC2  
RELEASE STATION2            
QUEUE   BEFORE_ST3_AND_ST4
TRANSFER  BOTH, ST3, ST4        
ST3     SEIZE      STATION3
    DEPART   BEFORE_ST3_AND_ST4
        ADVANCE    FN$DISC3
        RELEASE    STATION3
        TRANSFER   ,OUT
ST4     SEIZE      STATION4
    DEPART   BEFORE_ST3_AND_ST4
        ADVANCE    FN$DISC4
        RELEASE    STATION4
OUT   TERMINATE         
                
; SECOND
GENERATE     50         
TERMINATE   1
Добавлено через 7 минут
Потому что отчет ненормальный какой-то:

GPSS World Simulation Report - GPSS REALIZATION.14.1


Saturday, April 04, 2015 13:48:45

START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 50.000 25 1 0


NAME VALUE
BEFORE_STT2 UNSPECIFIED
BEFORE_STT3_AND_STT4 UNSPECIFIED
DISC0 10000.000
DISC1 10001.000
DISC2 10002.000
DISC3 10003.000
DISC4 10004.000
INCOMING_STREAM 10005.000
OUT 23.000
STATION1 10006.000
STATION2 UNSPECIFIED
STATION3 UNSPECIFIED
STATION4 UNSPECIFIED
STT3 14.000
STT4 19.000


LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 5 0 0
2 QUEUE 5 4 0
3 SEIZE 1 0 0
4 DEPART 1 0 0
5 ADVANCE 1 1 0
6 RELEASE 0 0 0
7 QUEUE 0 0 0
8 SEIZE 0 0 0
9 DEPART 0 0 0
10 ADVANCE 0 0 0
11 RELEASE 0 0 0
12 QUEUE 0 0 0
13 TRANSFER 0 0 0
STT3 14 SEIZE 0 0 0
15 DEPART 0 0 0
16 ADVANCE 0 0 0
17 RELEASE 0 0 0
18 TRANSFER 0 0 0
STT4 19 SEIZE 0 0 0
20 DEPART 0 0 0
21 ADVANCE 0 0 0
22 RELEASE 0 0 0
OUT 23 TERMINATE 0 0 0
24 GENERATE 1 0 0
25 TERMINATE 1 0 0


FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
STATION1 1 0.800 40.000 1 1 0 0 0 4


QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
INCOMING_STREAM 4 4 5 1 1.300 13.000 16.250 0


FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
1 0 60.000 1 5 6
7 0 95.000 7 0 1
8 0 100.000 8 0 24
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
04.04.2015, 15:19 6
Нормальная модель, нормальный отчёт.

Модель у вас работает 50 единиц времени, за которые не успевает ни 1 заявка обработаться нигде.

50 единиц потомучто у вас есть сегмент

Код
GENERATE 50 ; В момент времени 50 формируется заявка
TERMINATE 1 ; Вычитается единица из счётчика завершения модели (START -1 ->0 завершение моделирования)
START 1 ; Счётчик числа заявок до конца обслуживания
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
04.04.2015, 16:09  [ТС] 7
А ведь действительно, отлично! спасибо.
И последний вопрос:
в таблице отчета есть колонка UTIL., которая показывает время занятости данного прибора за все время работы системы. но это проценты. вот, если необходимо мне вычислить время простоя на каждом приборе в единицах времени, как мне это сделать? Как это реализовать? Если можно, то пример какой-нибудь прошу.
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
04.04.2015, 17:05 8
UTIL. это коэффициент загрузки устройства, обычно в долях 0..1, идея верная доля времени занятости устройства от общего времени моделирования.

UTIL = время занятости / общее время
общее время моделирования (AC1 это текущее время в модели) вам в этой формуле известно
UTIL тоже известно FR$NAME ; где NAME имя устройства
остаётся неизвестным время занятости - уравнение с одной переменной

далее время занятости + время простоя = общее время (АС1)
ещё одно уравнение с одной неизвестной.

вычислите из этих уравнений неизвестное вам время простоя через известные величины и сделайте расчёт в конце моделирования автоматическим

Код
GENERATE 50 ; В момент времени 50 формируется заявка
SAVEVALUE VREMYA_PROSTOYA,(AC1+FR$NAME) ; Пример
TERMINATE 1 ; Вычитается единица из счётчика завершения модели (START -1 ->0 завершение моделирования)
START 1 ; Счётчик числа заявок до конца обслуживания
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
04.04.2015, 17:49  [ТС] 9
так... что-то странное получается
Код
GENERATE	5000			
SAVEVALUE VREMYA_PROSTOYA1,(AC1-(FR$STATION1#AC1))
SAVEVALUE VREMYA_PROSTOYA2,(AC1-(FR$STATION2#AC1))
SAVEVALUE VREMYA_PROSTOYA3,(AC1-(FR$STATION3#AC1))
SAVEVALUE VREMYA_PROSTOYA4,(AC1-(FR$STATION4#AC1))
TERMINATE	1		
START 1
Отчет
SAVEVALUE RETRY VALUE
VREMYA_PROSTOYA1 0 -4.86e+006
VREMYA_PROSTOYA2 0 -4.825e+006
VREMYA_PROSTOYA3 0 -3.34e+006
VREMYA_PROSTOYA4 0 -2.57e+006
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
04.04.2015, 20:22 10
В конце моделирования - меню Command/SHOW SHOW FR$STATION1

Внизу увидите .... выводит значение не в дроби 0..1, а в целом 0...999
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
04.04.2015, 21:34  [ТС] 11
ООооо огромное спасибо!!! Да показывает все верно, а как понять эту дробь "-4.86e+006"

Добавлено через 7 минут
или исправить как нибудь чтобы сразу выводило в целом?

Добавлено через 11 минут
Потому что выводится, например, для SHOW FR$STATION1 - 973.0, а это в 2 раза больше 486 и так для каждого.

Добавлено через 1 минуту
Независимо от START 1 или START 10 ничего не меняется у SHOW FR$STATION1, а в таблице в соответствующее число раз все возрастает

Добавлено через 3 минуты
или SHOW FR$STATION1 - усредненный показатель, если несколько раз запускается система?
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
04.04.2015, 21:38 12
Усреднённый показатель, чем больше время моделирования тем статистически корректнее результат.

"-4.86e+006" = -4.86*10^6

Думаю можно в формуле поделить FR$.... на 1000, чтобы привести значение к доле 0..1 (вероятности, загрузке)
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
04.04.2015, 22:02  [ТС] 13
понятно. а почему show другие числа показывает? (поделил на 10000)

Добавлено через 12 минут
aaa SHOW FR$STATION1 - это время загрузки прибора, а не простоя! Так ведь?

Добавлено через 8 минут
не время а процент загрузки прибора *1000
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
04.04.2015, 22:13 14
Угу, то что умножение на 1000 это GPSS сам Вернее его разработчики, поэтому всегда нужен глаз да глаз.
Прикрепляю к сообщению все стандартные числовые атрибуты которые доступны пользователям
Вложение 403900
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
04.04.2015, 22:22  [ТС] 15
Хм, а можно сделать вот так?
Код
INITIAL X$MY_NUM,2
...код...
START V$MY_NUM
Это мне нужно, чтобы среднее рассчитать при нескольких прогонах:
Код
SAVEVALUE VREMYA_PROSTOYA1,(((AC1-(FR$STATION1#AC1))/10000)/V$MY_NUM)
Добавлено через 33 секунды
Вложение весьма полезное, спасибо. правда больше половины мне не понятными кажутся)
0
1816 / 1030 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
04.04.2015, 22:28 16
В последней формуле наверно НЕ V$MY_NUM а X$ всётаки сохраняемая величина (savevalue).

На счёт написанного нужно проверять, возьмёт ли он переменную величину для START - врядли ...

можно константой

Код
PRIMER EQU 2

SAVEVALUE ....,PRIMER
ушёл в офф.
0
8 / 8 / 2
Регистрация: 08.03.2014
Сообщений: 101
04.04.2015, 22:44  [ТС] 17
Код
START
не хочет принимать переменную как параметр, ну ничего страшного.
Как итог, хочу сказать что очень благодарен Вам, Dukalys!!!! вроде с чем-то разобрался и вроде что-то понял, так что... огромное СПАСИБО!!!
0
04.04.2015, 22:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2015, 22:44
Помогаю со студенческими работами здесь

Модель СМО
Есть простая задача: Заявки поступают в СМО с интервалом 7,2 с, накапливаются в буфере объемом 10...

Разомкнутая СМО
На обработку в вычислительную систему поступают задания с интенсивностью λ=4 (заданий в...

Моделирование СМО
Доброго времени суток,я в ступоре...есть условие казалось бы легкое...4 генератора создают заявки с...

Моделирование СМО
Смотрел другие форумы НО ни че не получается((( У меня( Помогите! Заявки поступают в систему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru