Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.84.137] |
|
Сообщ.
#1
,
|
|
|
Пишу диплом и не знаю как записать функцию нормального распределения в gpss
Пробовал вот это: SNORM FUNCTION RN1,C25 ;Функция нормального распределения (она не используется нигде) 0,-5/.00003,-4/.00135,-3/.00621,-2.5/.02275,-2 .06681,-1.5/.11507,-1.2/.15866,-1/.21186,-.8/.27425,-.6 .34458,-.4/.42074,-.2/.5,0/.57926,.2/.65542,.4 .72575,.6/.78814,.8/.84134,1/.88493,1.2/.93319,1.5 .97725,2/.99379,2.5/.99865,3/.99997,4/1,5 Но оно выдаёт отрицательные значения. Как будет правильно? Добавлено И ещё функцией генерируется время ожидания в блоке Advance, хочу что бы это же время записывалось в параметр транзакта. По этому параметру которому он потом будет становиться в очередь (чем меньше параметр тем больше приоритет, т.е. чем меньше времени осталось на выполнение заказа, тем он важнее), но не знаю как реализовать. Подскажите пожалуйста вот на этом куске кода, как такое реализовать: 10 GENERATE 0.12,FN$EKSP ;В среднем новый заказ поступает каждые 0.12 дня или 57 минут 30 TABULATE RASP_ZAKAZOV ;Поток заказов заносится в таблицу 35 ASSIGN TYPE,FN$CLASS ;присвоение класса заявке (для определения оборудования на котором будет выполняться) 40 ISPR QUEUE document ;Фиксируется очередь на формление документов 50 ENTER IN ;Поступает на оформление документов 60 DEPART document ;Уходит из очереди на оформление документов 70 SAVEVALUE TO,FN$EKSP ;это попытка записи в переменную времени, но ведь оно будет не таким как в строчке выше? 100 ADVANCE 0.065,FN$EKSP ;В среднем на оформление документов требуется пол часа распределено по эксп закону 250 ASSIGN TO,(FN$eksp#10) ;Записывает в параметр TO время окончания выполнения заказа (и это тоже) 200 LEAVE IN ;Уходит из очереди |
Сообщ.
#2
,
|
|
|
Ох....юзайте плиз хелп GPSS....
Там много, чего есть, в том числе и куча распределений: 17. Normal Syntax Real = NORMAL( Stream, Mean, StdDev ) Arguments Stream - The random number generator entity number. Required. Coerced to integer. Must be greater than or equal to 1. The argument must be Expression. Mean - The mean value of the distribution. Required. Coerced to real. The argument must be Expression. StdDev - The standard deviation of the distribution. Must be strictly positive. Required. Coerced to real. The argument must be Expression. Return Value Real - The real value generated as a single instance of the probability distribution. Probability Density Function Ну и есно ВСЕГДА необходимо указывать версию вашего GPSS! По второму...Не совсем ясно, что именно нужно,т.е. транзакт обслуживается в устройстве не всегда до конца? Или есть два параметра у заказа: время его выполнения и время к которому он должен быть выполнен? Про твоё "но ведь оно будет не таким как в строчке выше": Да, оно будет не таким, таким оно будет только при счастливом случае:) Чтобы оно было таким предлагаю записывать время обслуживания в параметр транзакта, откуда ты его всегда сможешь извлечь для своих нужд, т.е.(с синтаксисом могу ошибатся) 10 GENERATE 0.12,FN$EKSP ;В среднем новый заказ поступает каждые 0.12 дня или 57 минут 30 TABULATE RASP_ZAKAZOV ;Поток заказов заносится в таблицу 35 ASSIGN TYPE,FN$CLASS ;присвоение класса заявке (для определения оборудования на котором будет выполняться) _______36 ASSIGN Vrema,FN$EKSP ;присвоение класса заявке (для определения оборудования на котором будет выполняться) 40 ISPR QUEUE document ;Фиксируется очередь на формление документов 50 ENTER IN ;Поступает на оформление документов 60 DEPART document ;Уходит из очереди на оформление документов 70 SAVEVALUE TO,FN$EKSP ;это попытка записи в переменную времени, но ведь оно будет не таким как в строчке выше? _______100 ADVANCE 0.065,P$Vrema ;В среднем на оформление документов требуется пол часа распределено по эксп закону 250 ASSIGN TO,(P$Vrema#10) ;Записывает в параметр TO время окончания выполнения заказа (и это тоже) 200 LEAVE IN ;Уходит из очереди "Зписывает в параметр TO время окончания выполнения заказа (и это тоже)" - это неверно, время окончания должно определяться как текущее время модели, а именно(опять же из хелпа) M1 - Transit Time. M1 returns the absolute system clock minus the “Mark Time” of the Transaction. |
Сообщ.
#3
,
|
|
|
используй переменную NORM. В этом примере 500 - среднее значение (подставь свое значение), 50 - отклонение от среднего (также подставь свое значение)
NRAS FUNCTION RN5,C25 0,-5/.00003,4/.00135,-3/.00621,-2.5 .02275,-2/.06681,-1.5/.11507,-1.2/.15899,-1 .21186,-.8/.-7425,-.6/.34458,-.4/.42074,-.2 .5,0/.57926,.2/.65542,.4/.72575,.6/.78814,.8 .8413,1/.88493,1.2/.93313,1.5/.97725,2 .9979,2.5/.99865,3/.99997,4/1,5 NORM FVARIABLE 500+50*FN$NRAS ... ASSIGN TO,V$NORM ADVANCE P$TO Переменную V$NORM следует вычислять лишь один раз, а у тебя время обработки вычислялось дважды: 100 ADVANCE 0.065,FN$EKSP 250 ASSIGN TO,(FN$eksp#10) , что неверно, так как при этом будут получены разные значения |
Сообщ.
#4
,
|
|
|
Не получается записать на примере:
10 GENERATE EXPONENTIAL(1, 0.12, 1 ) - и оно не работает, говорит неправильный операнд А В свою очередь вот это 100 ADVANCE Normal(1,0.065,0.02) тоже не работает говорит неправильный операнд Б Есть у кого-нибудь примеры задач использующие встроенные функции распределения? |
Сообщ.
#5
,
|
|
|
Цитата p1ma @ Не получается записать на примере: 10 GENERATE EXPONENTIAL(1, 0.12, 1 ) - и оно не работает, говорит неправильный операнд А В свою очередь вот это 100 ADVANCE Normal(1,0.065,0.02) тоже не работает говорит неправильный операнд Б операнд А - EXPONENTIAL(1 операнд В - 0.065 эти функции надо записывать в скобках 100 ADVANCE (Normal(1,0.065,0.02)) |
Сообщ.
#6
,
|
|
|
Eugen, спасибо. вроде заработало
|
Сообщ.
#7
,
|
|
|
Уважаемые знатоки, думаю, вам не составит труда найти ошибку в данной программе:Задание во вложении.
Помогите исправить ошибку. Прикреплённый файлzadanie.txt (1,33 Кбайт, скачиваний: 276) |
Сообщ.
#8
,
|
|
|
извиняюсь
Прикреплённый файлzadanie.txt (1,33 Кбайт, скачиваний: 339) Прикреплённый файлzadanie.txt (1,33 Кбайт, скачиваний: 338) |