GPSS
, Вопрос для знающих
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.84] |
|
|
| Страницы: (54) « Первая ... 21 22 [23] 24 25 ... 53 54 ( Перейти к последнему сообщению ) |
GPSS
, Вопрос для знающих
|
Сообщ.
#331
,
|
|
|
|
Здравствуйте. У меня есть вопрос. Если в моей модели есть 3 очереди, с номерами 1,2 и 3. Как выбрать минимальную из 2х - 1й и 3й? В Select нужно вводить диапазон, тогда получается, что захватывается и 2я очередь, а этого не нужно - SELECT MIN 3,1,3,,Q?
|
|
Сообщ.
#332
,
|
|
|
|
RazorM, ответов на ваш вопрос как минимум два
1. можно сравнить Цитата TEST L Q1,Q3,MET1 ASSIGN 3,1 TRAMSFER ,MET2 ASSIGN 3,3 MET1 ................ можно чуть короче но мудреней Цитата ASSIGN 3,((Q1<Q3)+(Q1>=Q3)#3) впринципе такими сравнениями можно сравнить любое колличество очередей, только размер кода этих сравнений растет в геометрической прогрессии от колличества очередей )) 2. можно обозвать одну очередь двумя именами Цитата queue 1 queue 11 seize 1 depart 1 depart 11 advance 1 release 1 ... queue 2 seize 2 depart 2 advance 1 release 2 ... queue 3 queue 12 seize 3 depart 3 depart 12 advance 1 release 3 ... SELECT MIN 3,11,12,,Q ну а далее действовать либо от этих значений, либо преобразовать их Цитата ASSIGN 3,((p3=11)#1+(p3=12)#3) |
|
Сообщ.
#333
,
|
|
|
|
Привет!
Пытаюсь создать матрицу состоящую из одной строки и присвоить ей заданные значения: bit0 matrix ,1,2 initial MX1(1,1),1 Но GPSS выдает ошибку: Reference to a non-existent Matrix entity. Что я делаю не правильно? Спасибо! |
|
Сообщ.
#334
,
|
|
|
|
Здравствуйте, помогите пожалуйста решить задачку:
На обработку в вычислительную систему поступают задания с интенсивностью λ=4 (заданий в секунду). Задания обрабатываются одним из 5-ти компьютеров. Время обработки имеет интенсивность μ=1 (заданий в секунду). Все потоки, протекающие в системе, простейшие пуассоновские. При имитационном моделировании задайте количество обслуженных заявок равным 2000. Заранее благодарен. |
|
Сообщ.
#335
,
|
|
|
|
Цитата tigreg @ bit0 matrix ,1,2 initial MX1(1,1),1 обратите внимание, определили вы мартицу с символьным именем bit0 , а обращаетесь к матрице с числовым именем 1. нужно обращаться либо по символьному имени, либо задать соответствие между числовым и символьным именем. Цитата tigreg @ bit0 equ 1 bit0 matrix ,1,2 initial MX1(1,1),1 |
|
Сообщ.
#336
,
|
|
|
|
ура! спасибо, TEMENb!!! |
|
Сообщ.
#337
,
|
|
|
|
Помогите пожалуйста!!
В курсаче есть следующий момент Объект моделирования – экспертная система, пополняемая записями экспертов. В начальный момент времени вероятность выдачи правильного ответа по запросу каждого типа равна нулю. По проектным прогнозам, в связи с работой экспертов по пополнению системы, со временем эксплуатации системы вероятность выдачи правильного результата возрастает. С остаточной вероятностью для каждого типа запроса выдается неверный результат. Выведены функции зависимости для вычисления вероятности выдачи правильного ответа. Вопрос следующий: можно ли при распределении по типу заявки (ответа (верный, неверный)) в операторе FUNCTION вероятность задавать не числовым значением, а через имя переменной? ![]() ![]() VER1 FVARIABLE 0 ;или INITIAL X$VER1,0 MARK tipA FUNCTION RN1 D2 FV$VER1,T_A1/1,T_A2 ;или X$VER1,T_A1/1,T_A2 GENERATE (Exponential(1,0,14.286)) SAVEVALUE VER1,(-3#10^(-24)#M1^6+3#10^(-19)#M1^5-2#10^(-14)#M1^4+4#10^(-10)#M1^3-5#10^(-6)#M1^2+0.0317#M1+11.3) TRANSFER ,FN$tipA ... T_A1 ASSIGN 10,11 TRANSFER ,TA_SERV T_A2 ASSIGN 10,12 TRANSFER ,TA_SERV ... В обоих случаях у меня выдает ошибку ![]() ![]() ;Для FVARIABLE: Line 17, Col 1. Expecting a numeric value. FV$VER1,T_A1/1,T_A2 ;Для INITIAL: Line 17, Col 1. Invalid list sequence number. X$VER1,T_A1/1,T_A2 Если реализация через FUNCTION невозможна, то каким образом можно реализовать этот момент??? |
|
Сообщ.
#338
,
|
|
|
|
TEMENb, спасибо. Про первый вариант че-то не подумал). Есть еще одна загвоздка: нужно определить количество транзактов в этой минимальной очереди, и если их число больше 3х, идет переход к выходу из модели. Делаю что-то типа такого TEST G Q$P3 3 EXIT. В отчете получается так, что в блок, следующий после этого TEST не попадает ВООБЩЕ ни один транзакт (0). Если же пишу TEST G QP3 3 EXIT или TEST G Q11 3 EXIT , то симуляция зацикливается.
|
|
Сообщ.
#339
,
|
|
|
|
если ты хочешь обратиться к очереди, номер которой записан в третьем параметре транзакта, то косвенная адресация тебе в помощь
![]() ![]() TEST G Q*3,3,term называть метку словом exit настоятельно нерекомендую.. есть у меня суеверия на сей щет Добавлено Angellina, ну почему прям таки невозможна? просто вы недостаточно знаете про функции. только и всего ) Цитата Оператор определения FUNCTION Описание Имя функции должно записываться в поле метки оператора описания FUNCTION. Поле А оператора FUNCTION должно содержать аргумент независимую переменную функции. Аргументом может быть любой из стандартных числовых атрибутов, за исключением матрицы ячеек; в качестве аргумента функции может быть использовано и значение любой другой функции. Если в качестве аргумента функции используется случайное число RNj, то значениями аргумента будут числа, равномерно распределенные в интервале 0<=RNj<1. Следует отметить, что во всех других случаях использование случайных чисел RNj дает значение в диапазоне 0<=RNj<999. Запись в поле В определяет тип и число точек функции (число пар значений X[i] и Y[i]). Например, в выражении Cn определяет тип, а n - число точек функции. Ниже перечислены функции каждого типа: непрерывная числовая - С; дискретная числовая - D; табличная числовая - L; дискретная атрибутивная - E; табличная атрибутивная - М. Добавлено Если кто знает, как задавать табличную числовую или табличную атрибутивную - просвятите неуча =) |
|
Сообщ.
#340
,
|
|
|
|
Цитата TEMENb @ Цитата Figaro-serg @ Вопрос, нужно ли пересчитывать исходные данные в форму "кол-во машин/минуту", т.е. через какой промежуток времени поступает машина на СТО, и сколько времени уходит на ремонт одной машины? Или можно как то решить не пересчитывая исходные данные? Если всетаки нужно пересчитывать, помогите пожалуста правильно это сделать. Специально для этих целей существует Единица модельного времени. 8 часов ничто иное как 60 минут. так что сложно назвать это пересчетом. Это те же самые интервалы времени. Вовторых, перевести часы в минуты будет правильней, чем моделировать в часах, НО gpss/w такая штука, что и в часах и в минутах выдаст вам одинаковые результаты (великолепно работает с дробным временем) вот округлять или не округлять - это уже ваше личное дело. я бы не округлял. На самом деле, если вас смущает округление - вовсе не обязательно переводить часы именно в минуты.. вы можете перевести часы в санти часы ) почему нет? одна единица моельного времени равна одной сотой часа! и проблема с округлением исчезнет сама собой. главное потом все правильно разрулить преподу ![]() Зато числа сразу получаться красивые. и что б получить итог в часах - надо будет всего лишь открнуть два младших разряда. учи мат часть. В отчете в таблице FACILITY колонка AVT.TIME. TEMENb, спасибо за ответ! Правда все это я и так вроде бы знал... ![]() Извиняюсь, немного ошибся: не "кол-во машин/минуту", а "кол-во минут/машину". Поясню, у меня не стоит задача перевести из часов в минуты, сантичасы и т.д. А задача в том чтобы выразить за сколько будет обслужена одна машина! Как выяснилось я не знаю как работать с интервалами Напомню задачу: "На станцию технического обслуживания автомобилей (СТО) поступают в смену (8 часов) 50±10 машин. На станции работают 4 бригады. Каждая бригада обслуживает за смену 10±3 автомобиля. На стоянке перед СТО могут ожидать обслуживания 5 машин." Еще раз, поводу среднего значения... Даже не знаю как правильнее сформулировать вопрос, что бы услышать все же в ответ то, что хочу выяснить. У меня при рассчете двумя разными способами получается разное значение среднего времени. Например: если учесть что, рабочая смена длится 480 минут, а за смену возможно отремонтировать 10±3 автомобиля, то: - по первому моему способу получается, среднее время обслуживавния автомобиля равно 480 минут/10 авто = 48 минут/авто. Т.е. одну машину ремонтируем за 48 минут. - по второму способу получется, что раз за день мы ремонтируем от 7 до 13 авто, значит на ремонт уходит от 480/7 = 68,6 минут/авто до 480/13 = 36,9 минут/авто. Т.е. среднее время будет равно (68,6 + 36,9)/2 = 52,75 минут/авто. Т.е. одну машину ремонтируем за 52,75 минут. Это нужно вычислить до проведения машинного моделирования! Так что просто посмотреть AМE.TIME. не прокатит ![]() Какой из способов правильный? Помогите пожалуста, а то я туплю не подецки, просто уже весь курсовик практически готов, осталось только в программе правильные задержки вбить, рассчитать с помощью формул все и сравнить результаты. Помогите посчитать правильно среднее время, плиз, Т.е. что же мне всетаки писать в advance, какие два числа (или функцию)? Пусть даже с грубым округлением (до минут). P.S: Встретил решение подобной задачи. Цех по ремонту промышленных станков имеет 5 мастеров. В течение рабочего дня в мастерскую поступает в среднем 20±10 неисправных станков. Каждый из мастеров в течение рабочего дня успевает отремонтировать 4±3 станков. Бла бла бла... GENPR FUNCTION RN1,D7 .143,480/.286,240/.429,160/.572,120/.715,96/.858,80/1,69 GENIN FUNCTION RN1,D11 .091,48/.182,40/.273,34/.364,30/.455,27/.546,24/ .637,22/.728,20/.819,18/.91,17/1,16 ...... GENERATE FN$GENIN ...... ADVANCE FN$GENPR ...... Что после запятой идут минуты я понял, но что указано до запятой у каждой описываемой точки, я так и не воткнул... Может можно как-то и у меня аналогичное применить? Вобщем огромная просьба ответить, что же мне писать в advance, конкретные числа для моего случая Добавлено Добавлю, дабы, съакцентировать внимание на сути проблеммы. В подавляющем большинстве задач, в формулировке указано, к примеру: N сообщений обрабатывается за X±h ед. времени, а у меня Y±H сообщений обрабатывается за T ед. времени. Вот я и хочу привести формулировку задачи к "номальному виду". |
|
Сообщ.
#341
,
|
|
|
|
Цитата Figaro-serg @ Что после запятой идут минуты я понял, но что указано до запятой у каждой описываемой точки, я так и не воткнул... Может можно как-то и у меня аналогичное применить? Цитата TEMENb @ Оператор определения FUNCTION Описание Имя функции должно записываться в поле метки оператора описания FUNCTION. Поле А оператора FUNCTION должно содержать аргумент независимую переменную функции. Аргументом может быть любой из стандартных числовых атрибутов, за исключением матрицы ячеек; в качестве аргумента функции может быть использовано и значение любой другой функции. Если в качестве аргумента функции используется случайное число RNj, то значениями аргумента будут числа, равномерно распределенные в интервале 0<=RNj<1. Следует отметить, что во всех других случаях использование случайных чисел RNj дает значение в диапазоне 0<=RNj<999. Запись в поле В определяет тип и число точек функции (число пар значений X[i] и Y[i]). Например, в выражении Cn определяет тип, а n - число точек функции. невнимательно читаете форум!! Эта цитата из предыдущего сообщения. Цитата Figaro-serg @ А задача в том чтобы выразить за сколько будет обслужена одна машина! T=1/L т.е. если частота - две машины в час, то интервал - 1/2=0.5 машин в час. т.е. одна машина в полчаса. Цитата Figaro-serg @ Добавлю, дабы, съакцентировать внимание на сути проблеммы. В подавляющем большинстве задач, в формулировке указано, к примеру: N сообщений обрабатывается за X±h ед. времени, а у меня Y±H сообщений обрабатывается за T ед. времени. Вот я и хочу привести формулировку задачи к "номальному виду". тебе даны средние значения. я так понял заданы частотой. и дан (дан ведь?) закон распредиления. пусть твое среднее значение равняется L, тогда експоненциальное распредиление FN$EXPON/L или Exponential(1,0,(1/L)) нормальное FN$GAMA/L или Gamma(1,0,(1/L),1) и так далее. прошу заметить, что в случае использование сча FNj функцию необходимо определить. |
|
Сообщ.
#342
,
|
|
|
|
Цитата RazorM @ это баг gpss - делайте такДелаю что-то типа такого TEST G Q$P3 3 EXIT. ![]() ![]() TEST G Q*3 3 EXIT |
|
Сообщ.
#343
,
|
|
|
|
Цитата Eugen @ это баг gpss - делайте так Баг? Мне почемуто кажется, что так задумано ) $ предпологиет, что далее будет написано символьное имя. * - что имя параметра с числовым/символьным именем СЧА Вот было бы еще интересно, если бы можно было обращаться к СЧА не только по значениям параметров, но и по значениям переменных или по длинам очередей. бывали случаи, что было нужно.. приходилось хитро обходить ) |
|
Сообщ.
#344
,
|
|
|
|
TEMENb, я знаю определение этого оператора, но не знаю, как с его помощью реализовать то, что мне надо.
И если вы считаете это элементарным, то не могли бы вы подсказать как именно решить этот вопрос |
|
Сообщ.
#345
,
|
|
|
|
Angellina, а я и подсказал. В определении я нужное выделил жирным.
Добавлено вы упорно пытаетесь записать атребут в дискретную числовую функцию. вам нужна дискретная атребутивная. другими слоами замените свое D на E и будет вам счастие. |