На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (54) « Первая ... 10 11 [12] 13 14 ...  53 54  ( Перейти к последнему сообщению )  
> GPSS , Вопрос для знающих
    не совсем ;) 2 разных вопроса. 1й - где вставить проверку. 2й - для Negative time increment.
    Цитата TEMENb @
    Цитата
    Где и как можно вставить проверку, чтобы отрицательные значения приравнивались к 0?

    ExpandedWrap disabled
      testing_P1 VARIABLE ((P1'G'0)#P1)
       
      ASSIGN 1,(Uniform(1,-5,100))
      ASSIGN 1,V$testing_P1


    Цитата TEMENb @
    Цитата
    При большом числе опытов возникает следующая ошибка:
    02/05/09 17:46:18 ADVANCE (Normal(1,10,3))
    02/05/09 17:46:18 Negative time increment.

    Где и как можно вставить проверку, чтобы отрицательные значения приравнивались к 0?

    Цитата
    GENERATE 10
    POVT ASSIGN 1,(Normal(1,10,3))
    TEST GE P1,0,POVT
    ADVANCE P1

    TERMINATE
      Слушайте, я понимаю, что это немного не в тему, но все равно. Кто-нибудь знает чем GPSS лучше сетей Петри? Или не лучше, но область применения отличается? Просто я так понимаю, что моделировать можно и на том, и на том, в какой угодно отрасли..... Просто срочно надо найти какие-то недостатки сетей Петри! :wall:
        GPSS задача (сообщение #2201319)
        Цитата bobkOFF @
        Здравствуйте! Подскажите, пожалуйста, с чего начать решать задачу. С преподом на словах обговорили вроде все понятно, а вот с чего начинать даже не представляю. Сделайте хоть примерный набросок этой задачки. Пытаюсь сам разобраться ничего не получается. Заранее спасибо за любые подсказки.
        Задания на обработку данных, поступающие на ЭВМ, характеризуются известным требуемым временем работы процессора и условно подразделяются на короткие и длинные. Короткие задания требуют менее 6 мин времени работы процессора. Задания поступают на ЭВМ через каждые 8 ± 3 мин и требуют для своей обработки 4 ± 3 мин времени работы процессора. Короткие задания вводятся в ЭВМ с помощью дисплея за 3 ± 2 мин. Дисплей остается занятым коротким заданием до момента окончания выдачи результатов на печать. Короткие задания имеют абсолютный приоритет над длинным при использовании процессора, т. е. они прерывают выполнение длинных заданий. Длинные задания предварительно готовятся на дискетах на ПЭВМ за 8 ± 5 мин и вводятся в ЭВМ дисковода за 3 ± 2 мин. После обработки на процессоре как коротких, так и длинных заданий производится вывод результатов на печать в течение 2 ± 1 мин. Одновременно на PC обрабатывается только одно задание.
        Смоделировать процесс функционирования PC при условии, что обработать необходимо 100 заданий. Определить число коротких и длинных заданий, ожидающих обработки, а также число обработанных коротких заданий и коэффициент загрузки процессора.

        Сообщение отредактировано: bobkOFF - 21.02.09, 16:34


        ХАЛЯВА:
        ЧКЗОО - число коротких заданий ожидающих обработки
        КДЗОО - число динных
        ВсД - ввод длинного задания с дисковода
        Прикреплённая картинка
        Прикреплённая картинка
          Больщое спасибо! Буду разбираться..
            Знатоки GPSS, помогите разобраться!

            RMULT 1187
            Checkout_2 EQU 2
            Checkout_N EQU 5
            Time_work VARIABLE 12#60#60
            N_Purchases VARIABLE (RN1@96+5)

            Это кусочек кода. Не могу понять смысл использования RMULT 1187 и строки N_Purchases VARIABLE (RN1@96+5). Я понимаю, что генерируется переменная на основе ГСЧ RN1, но что означает "@96+5"? и каким образом этот RN1 обращается к RMULT?
              RMULT 1187 - начальное значение для RN1
              (RN1@96+5) - (целый остаток от деления RN1 на 96 + 5)
                Цитата MEGERA @
                RMULT 1187
                Checkout_2 EQU 2
                Checkout_N EQU 5
                Time_work VARIABLE 12#60#60
                N_Purchases VARIABLE (RN1@96+5)

                задаем общий множитель для генератора случайных чисел номер 1
                обьявляем константу Checkout_2 равной 2
                обьявляем константу Checkout_N равной 5
                обьявляем вычисляемое выражение Time_work равным 12#60#60 (тупизм полнейший V$Time_work будет равно 12*60*60. проще было один раз числом написать)
                обьявляем вычисляемое выражение N_Purchases равным (RN1@96+5) (@ - остаток от деления. RN1 - генератор случайных чисел, дает число от 0 до 999).

                Добавлено
                З.Ы.: Евген выстрелил быстрее ))
                  Цитата TEMENb @
                  общий множитель для генератора случайных чисел
                  ?
                  от 0 до 999
                  или
                  от 0 до 1
                    общий множитель - это число, которое задает последовательность случайных чисел. т.к. генераторы случайных чисел на самом деле псевдо случайны, то если не менять это чило, то запуски программы дадут одни и те же значения..

                    А значения генератора случайных чисел действительно от 0 до 999.

                    Хотя если честно меня иногда терзают смутные сомнения. каким образом в функциях ГСЧ генять числа 0..1
                      не охота проверять - все написано здесь Боев Д.В. стр 188-9
                        Цитата
                        sss table p1,.5,1,10000
                        generate 1
                        assign 1,rn1
                        tabulate sss
                        terminate 1
                        start 1000


                        Добавлено
                        Цитата Eugen @
                        не охота проверять - все написано здесь Боев Д.В. стр 188-9

                        угу. 189 стр. третий абзац..
                          Все так от 0 до 999
                          ExpandedWrap disabled
                            Rasp FUNCTION RN6,D5
                            .15,2/.35,5/.6,8/.82,9/1,12
                          в этом месте - от 0 до 0.999999 стр.196
                            Цитата TEMENb @
                            N_Purchases VARIABLE (RN1@96+5)

                            наверняка имеется ввиду равномерное распредиление от 5 до 100.

                            как раз в том-то и беда, что неизвестно, что это за распределение вообще! инфы практически нет, есть это горе-код, который мне нужно воплотить в Arena. и вот это-то и составляет основную проблему: не знаю, что это за распределение. здесь оно отталкивается от множителя RMULT, а в арене-то нет такого... :wall:
                              кстати, будь я преподом - я б пристебался

                              N_Purchases VARIABLE (RN1@96+5)

                              наверняка имеется ввиду равномерное распредиление от 5 до 100.
                              так вот в данной формуле выпадание числа 5..45 более вероятно, чем 46..100. А это уже не равномерный закон получается..

                              Я бы советовал использовать конструкцию типа (RN1#95/1000+5) для непрерывного или (RN1#95\1000+5) для дискретного распредиления(в GPSS/PS оба варианта дискретны)
                              можно еще попробовать использовать Uniform и DUniform (в PC их использовать нельзя).

                              Добавлено
                              забй на RMULT. Его можно смело удалить.

                              Добавлено
                              распредиление равномерное. интервал распредиления 5..100. Причем распредиление дискретное.

                              Добавлено
                              кстати. раз такое дело.. весь код в студию )
                                мммм, клева! спасибо за консалтинг! ща попробую добить модельку в арене! вот, собссно, код:

                                RMULT 1187
                                Checkout_2 EQU 2
                                Checkout_N EQU 5
                                Time_work VARIABLE 8#60#60
                                N_Purchases VARIABLE (RN1@96+5)
                                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
                                Cart STORAGE 100
                                Park STORAGE 100
                                Cashier VARIABLE P$Qty_purchases#2
                                Time_shop VARIABLE P$Qty_purchases#100
                                INITIAL X$Customer,0


                                Parking TRANSFER Both,,Lost
                                ENTER Park
                                ADVANCE 60,40
                                ENTRY SAVEVALUE Customer+,1
                                ASSIGN Qty_purchases,V$N_Purchases
                                TEST LE P$Qty_purchases,10,QCart
                                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

                                QUEUE Xpress_Q
                                SEIZE Xpress
                                DEPART Xpress_Q
                                ADVANCE V$Cashier
                                RELEASE Xpress
                                LEAVE P$Container
                                TRANSFER ,Fin

                                Norm SELECT MIN Minque,Checkout_2,Checkout_N,,Q
                                QUEUE P$Minque
                                SEIZE P$Minque
                                DEPART P$Minque
                                ADVANCE V$Cashier
                                RELEASE P$Minque
                                LEAVE P$Container


                                Fin TABULATE Time_system
                                TABULATE Purchases
                                SAVEVALUE Customer-,1
                                ADVANCE 60,50
                                LEAVE Park
                                TERMINATE

                                Lost TERMINATE

                                *****************************************************************************

                                * 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
                                *****************************************************************************

                                GENERATE V$Time_work
                                TABULATE N_Customer
                                TERMINATE 1
                                START 1

                                В общем-то, хоть он практически и без инфы был, ясно, что дело происходит в магазине, куда покупатели приезжают на машинах, потом заходят и, на основе того, сколько покупок им нужно сделать, берут тележку или корзинку. потом ходят берут товары и приходят на кассу обслуживаться. причем, для тех, кто взял 10 или меньше товаров, касса отдельная, а остальные выбирают кассу с наименьшей очередью.

                                Добавлено
                                аааааааа!!! есть контакт! наконец-то результаты сошлись!
                                Eugen, TEMENЬ, респект вам огромный за помощь!
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (54) « Первая ... 10 11 [12] 13 14 ...  53 54


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0860 ]   [ 15 queries used ]   [ Generated: 18.06.25, 10:42 GMT ]