
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.21] |
![]() |
|
Страницы: (54) « Первая ... 11 12 [13] 14 15 ... 53 54 ( Перейти к последнему сообщению ) |
Сообщ.
#181
,
|
|
|
Кстати, а если б нужно было, например, равномерное распределение не от 5 до 100, а от 0 до 30, то как бы это тогда выглядело?
|
Сообщ.
#182
,
|
|
|
DUniform(1,0,30) ;дискретное
Uniform(1,0,30) ;непрерывное RN1#30\1000 ;дискретное RN1#30/1000 ;непрерывное |
Сообщ.
#183
,
|
|
|
еще точнее
![]() RN1#30\999 ;дискретное RN1#30/999 ;непрерывное и общаяя формула для равномерного распределения A+/-B: A-B+(2#B#RNn)/999, A-B - наименьшее значение; 2#B - ширина выборки. стр.191 |
Сообщ.
#184
,
|
|
|
ага, точно, врубилась! спасибо, ребят!
![]() |
Сообщ.
#185
,
|
|
|
мой вариант точнее. делим то мы не на верхнее значение, а на колличество значений ))
А это 0..999 итого 1000 штук ![]() |
Сообщ.
#186
,
|
|
|
Цитата MEGERA @ * Customers arrival during 0 - 30 minutes. GENERATE (Exponential(1,0,60)),,,200 TRANSFER ,Parking * Customers arrival during 30 - 90 minutes. GENERATE (Exponential(1,0,40)),,1800,400 ;Частота появления через 0.5 часа. TRANSFER ,Parking * Customers arrival during 90 - 150 minutes. GENERATE (Exponential(1,0,80)),,5400,300 ;Частота появления через 1.5 часа. TRANSFER ,Parking * Customers arrival during 150+ minutes. GENERATE (Exponential(1,0,120)),,9000 ;Частота появления через 2.5 часа. TRANSFER ,Parking GENERATE (Exponential(1,0,60)),,,200 TRANSFER ,ENTRY GENERATE (Exponential(1,0,40)),,1800,400 ;Частота появления через 0.5 часа. TRANSFER ,ENTRY GENERATE (Exponential(1,0,120)),,9000 ;Частота появления через 2.5 часа. TRANSFER ,ENTRY А вот еще такой вопрос. У меня покупатели двух типов: приезжающие на машине(отправляются трансфером на метку Parking) и приходящие пешком (отправляются на метку ENTRY в обход парковки). И я не могу допетрить, как их идентифицировать. Т.е. Надо тем, кто на машине, присвоить один уникальный параметр, а тем, кто пришел пешком - другой, чтоб потом я могла их разделить, когда дело дойдет до возвращения на парковку... Только как? |
Сообщ.
#187
,
|
|
|
![]() ![]() ASSIGN 1,1 TRANSFER ,Parking ASSIGN 1,2 TRANSFER ,ENTRY |
Сообщ.
#188
,
|
|
|
ага, а когда мне потребуется их разделить, использую конструкцию
TEST NE 1,1,Fin LEAVE Park Fin TERMINATE Правильно? |
Сообщ.
#189
,
|
|
|
![]() ![]() TEST E P1,1,Fin ASSIGN A,B - операнд A задает номер параметра или его имя.. ![]() ![]() ASSIGN 1,123 ASSIGN 1,P$name ASSIGN name,123 ASSIGN name,P1 во всех(как правило) остальных местах (в т.ч. и в операнде B), - P$имя параметра или P и номер ![]() ![]() TEST E P1,123,Fin TEST E P$name,123,Fin |
Сообщ.
#190
,
|
|
|
фу ты, блин! все-таки пора заняться серьезно изучением гпсс, чтоб так не тупить
![]() |
Сообщ.
#191
,
|
|
|
И последний вопрос!
Нужно сгенерить транзакты по экспоненте таким образом, чтоб в первые 3 часа транзакты поступали по 80 транзактов в час, во вторые 3 часа по 160, в третьи 3 часа по 350, в четвертые 3 часа по 450. GENERATE Exponential(1,0,80) GENERATE Exponential(1,0,160),,10800 GENERATE Exponential(1,0,350),,21600 GENERATE Exponential(1,0,450),,32400 Правильно делаю? |
Сообщ.
#192
,
|
|
|
вообще то нет. транзакты если начнут поступать - уже не остановятся. просто последующие дженерейты генят с задержкой.
я бы предложил конструкцию типа generate ,,,1 met1 advance (Exponential(1,0,60/80)) split 1,ent test g ac1,(3#60),met1 met2 advance (Exponential(1,0,60/160)) split 1,ent test g ac1,(6#60),met2 met3 advance (Exponential(1,0,60/350)) split 1,ent test g ac1,(9#60),met3 met4 advance (Exponential(1,0,60/450)) split 1,ent test g ac1,(12#60),met4 ;поидее вместо этой и следующей строки можно поставить трансфер на метку met4. всеравно, когда время terminate ;будет равно 12*60 - моделирование завершится и в терминейт ничего не прийдет. ent ... ... ;собсно текст модели .................. generate (12#60) terminate 1 start 1 верхний сегмент является генератором. провериться очень легко. из первого генератора должно поступить 3*80 транзактов, из второго 3*160 и т.д. +/- конечно, но очень незначительный. т.е. строки 3-5 посетит 240 транзактов, строки 6-8 - 480 транзактов. и т.д. столько ли транзактов генерируется в ваших генераторах? ![]() Добавлено кстати не очень понял, что вы берете за единицу модельного времени. мой пример в минутах. судя по приведенному выше тексту программы, время моделирования у вас Time_work VARIABLE 8#60#60 т.е. 8 часов в секундах так? откуда тогда беруться четвертые три часа (до 12-и часов)? |
Сообщ.
#193
,
|
|
|
Вот-вот, как раз моих-то генераторах все генерилось наоборот (не по нарастающей, а по убывающей, да и вообще неправильно), щас понимаю, почему ))) а насчет 12 часов, это просто я условие изменила. раньше моделировала для 8 часов в секундах, а теперь для 12, потому и получается 4 промежутка по 3 часа. Спасибо! Кажется, на этом все ))))
|
Сообщ.
#194
,
|
|
|
Кстати на будущее. Plus (exponential - plus-функция) функции лучше всегда брать в кавычки. Они вроде формул и ставить их без кавычек на место параметров нежелательно. В блоке assign можно найти тому подтверждение - без скобок модель попросту не скомпилится.
|
Сообщ.
#195
,
|
|
|
мда.... думала я, что наконец покончила с этой задачей, но не тут-то было ((( все же gpss - что-то мега-непостижимое для меня, наверно ((( внесла кое-какие изменения в задачу, теперь она звучит так: Промоделировать работу супермаркета/универсама, в который покупатели приходят пешком и приезжают на машинах.
Парковка может предоставить места для 80 автомобилей. Если все места парковки автомобилей заняты, то вновь прибывший автомобиль вынужден покинуть супермаркет/универсам. Примем, что время прихода покупателя с парковки в супермаркет составляет 60±40 с. Магазин имеет 150 ручных тележек и 50 корзин для транспортировки купленных товаров. Если производится покупка более 10 товаров, то необходима тележка, в противном случае используется корзина. После выбора тары покупатели подходят к стеллажам для выбора товаров. Время, затраченное на выбор одного товара и переход к следующему стеллажу, примем за 80с. Количество покупок, которые покупатель может совершить в магазине ограничим в интервале от 0 до 30. Число взятых товаров будем определять с помощью датчика случайных чисел. Количество обслуживающих касс увеличим до 12. Причем 3 из них буду предназначены только для обслуживания покупателей с количеством товаров не более 10. Поток клиентов в будние дни будем считать экспоненциальным с 10.00 до 13.00 – 80 человек в час; с 13.00 до 16.00 – 160 человек в час; с 16.00 до 19.00 – 350 человек в час; с 19.00 до 22.00 – 450 человек в час. Моделирование провести для 12 - часового рабочего дня. С множеством изменений и ваших советов решение стало выглядеть как-то так: Checkout_1 EQU 1 ; 1-9 обычные кассы Checkout_N EQU 9 Check_1 EQU 10 ; 10-12 кассы экспресс-обслуживания Check_N EQU 12 N_Purchases VARIABLE Uniform(1,0,30) ; количество покупок от 0 до 30 Time_system TABLE M1,10000,10000,7 Purchases TABLE P$Qty_purchases,10,10,10 N_Customer TABLE X$Customer,100,50,12 Basket STORAGE 50 ; корзин 50 Cart STORAGE 150 ; тележек 150 Park STORAGE 80 ; парковочных мест 80 Cashier VARIABLE (P$Qty_purchases#0.05)+ 0.7 ; время рассчтеа на кассе Time_shop VARIABLE P$Qty_purchases#1.3 ; время хождения по магазину и выбора товаров INITIAL X$Customer,0 Parking TRANSFER Both,,Lost ENTER Park ; транзакт занимает место на парковке ADVANCE 1,0.7 ; идет от машину к магазину Entrar SAVEVALUE Customer+,1 ASSIGN Qty_purchases,V$N_Purchases ; ему присваивается кол-во покупок, которые он собирается совершить TEST LE P$Qty_purchases,10,QCart ; если покупок меньше 10, то он встает в очередь за корзиной, если больше - то за тележкой GATE SNF Basket,QCart QUEUE Basket_Q ENTER Basket DEPART Basket_Q ASSIGN Container,Basket TRANSFER ,Shop QCart QUEUE Cart_Q ENTER Cart DEPART Cart_Q ASSIGN Container,Cart Shop ADVANCE V$Time_shop ; ходит по магазину, выбирая нужные товары TEST LE P$Qty_purchases,10,Norm ;если выбрано товаров меньше 10 то идет на экспресс-кассу, если больше - то на обычную (Norm) SELECT MIN Xque,Check_1,Check_N,,Q ; выбирает кассу с минимальной очередью QUEUE P$Xque SEIZE P$Xque DEPART P$Xque ADVANCE V$Cashier RELEASE P$Xque LEAVE P$Container TRANSFER ,go Norm SELECT MIN Minque,Checkout_1,Checkout_N,,Q ; выбирает кассу с минимальной очередью QUEUE P$Minque SEIZE P$Minque DEPART P$Minque ADVANCE V$Cashier RELEASE P$Minque LEAVE P$Container go TABULATE Time_system TABULATE Purchases SAVEVALUE Customer-,1 TEST E P$Transport,2,Fin ; если пришел пешком, отправляется на Fin, если на машине - то уезжает с парковки LEAVE Park Fin TERMINATE Lost TERMINATE ***************************************************************************** generate ,,,1 met1 advance (Exponential(1,0,60/40)) split 1,ent test g ac1,(3#60),met1 met2 advance (Exponential(1,0,60/80)) split 1,ent test g ac1,(6#60),met2 met3 advance (Exponential(1,0,60/175)) split 1,ent test g ac1,(9#60),met3 met4 advance (Exponential(1,0,60/225)) split 1,ent test g ac1,(12#60),met4 TERMINATE ent ASSIGN Transport,1 TRANSFER ,Entrar generate ,,,1 met5 advance (Exponential(1,0,60/40)) split 1,ent1 test g ac1,(3#60),met5 met6 advance (Exponential(1,0,60/80)) split 1,ent1 test g ac1,(6#60),met6 met7 advance (Exponential(1,0,60/175)) split 1,ent1 test g ac1,(9#60),met7 met8 advance (Exponential(1,0,60/225)) split 1,ent1 test g ac1,(12#60),met8 TERMINATE ent1 ASSIGN Transport,2 TRANSFER ,Parking ***************************************************************************** GENERATE (12#60) TABULATE N_Customer TERMINATE 1 START 1 И все, вроде нормально было, пока я не впихнула в модель эти экспресс-кассы Check_1 и Check_N! с их появлением статистика какая-то косячная получается! например, может показывать, что в данный момент обслуживается 8 клиентов, а еще 7 ждут в очереди, хотя свободные кассы еще есть! с чем это может быть связано? |