На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (54) « Первая ... 34 35 [36] 37 38 ...  53 54  ( Перейти к последнему сообщению )  
> GPSS , Вопрос для знающих
    Здравствуйте. У меня возникла проблема в создании многоканальной модели в среде GPSS.
    Необходимо создать модель мастерской по ремонту бытовой техники. Количество каналов обслуживания равно 5 (мастера). Интервал времени между поступлениями заказов является случайной величиной, равномерно распределенной в пределах от 48 до 120 минут. Продолжительность обслуживания одного заказчика также является случайной величиной, равномерно распределенной в пределах от 420 до 480 минут.
    Модель я создал, но по результатам её работы выяснилось, что эти каналы работают не совместно, а отдельно. Собственно, по данным, которые я внёс в GPSS, это и видно. Вопрос в следующем: как мне сделать так, чтобы каналы обслуживания работали совместно? Т.е. если заявка поступает к мастеру, который уже занят, то первая уже переходит к следующему мастеру. Заранее благодарен.

    Вот моя модель в GPSS
    ExpandedWrap disabled
      GENERATE    84,36   ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ
      QUEUE   QZAKAZ  ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ
      SEIZE   ZAKAZ   ;ЗАКАЗ ВЗЯТ МАСТЕРОМ
      DEPART  QZAKAZ  ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ
      ADVANCE 300,30  ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ
      RELEASE ZAKAZ   ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
      TERMINATE   ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
       
      GENERATE    84,36   ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ
      QUEUE   QZAKAZ  ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ
      SEIZE   ZAKAZ_2 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ
      DEPART  QZAKAZ  ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ
      ADVANCE 300,30  ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ
      RELEASE ZAKAZ_2 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
      TERMINATE   ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
       
      GENERATE    84,36   ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ
      QUEUE   QZAKAZ  ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ
      SEIZE   ZAKAZ_3 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ
      DEPART  QZAKAZ  ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ
      ADVANCE 300,30  ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ
      RELEASE ZAKAZ_3 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
      TERMINATE   ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
       
      GENERATE    84,36   ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ
      QUEUE   QZAKAZ  ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ
      SEIZE   ZAKAZ_4 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ
      DEPART  QZAKAZ  ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ
      ADVANCE 300,30  ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ
      RELEASE ZAKAZ_4 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
      TERMINATE   ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
       
      GENERATE    84,36   ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ
      QUEUE   QZAKAZ  ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ
      SEIZE   ZAKAZ_5 ;ЗАКАЗ ВЗЯТ МАСТЕРОМ
      DEPART  QZAKAZ  ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ
      ADVANCE 300,30  ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ
      RELEASE ZAKAZ_5 ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
      TERMINATE   ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
       
      *таймер-сегмент
      GENERATE    480 ;ВРЕМЯ МОДЕЛИРОВАНИЯ 8 ЧАС=480МИН
      TERMINATE   1   ;ЗАВЕРШЕНИЕ МОДЕЛИРОВАНИЯ
      START 1
      ужас! )
      ExpandedWrap disabled
        ZAKAZ stprage 5
        GENERATE    84,36   ;ЗАКАЗ ПОСТУПАЕТ К МАСТЕРУ  
        QUEUE   QZAKAZ  ;ЗАКАЗ ОЖИДАЕТ СВОЕЙ ОЧЕРЕДИ
        enter ZAKAZ ;ЗАКАЗ ВЗЯТ МАСТЕРОМ
        DEPART  QZAKAZ  ;ЗАКАЗ ПОКИДАЕТ ОЧЕРЕДЬ
        ADVANCE 300,30  ;МАСТЕР ОСУЩЕСТВЛЯЕТ РЕМОНТ
        leave ZAKAZ ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
        TERMINATE   ;БЫТОВАЯ ТЕХНИКА ОТРЕМОНТИРОВАНА
         
        *таймер-сегмент
        GENERATE    480 ;ВРЕМЯ МОДЕЛИРОВАНИЯ 8 ЧАС=480МИН
        TERMINATE   1   ;ЗАВЕРШЕНИЕ МОДЕЛИРОВАНИЯ
        START 1
      Сообщение отредактировано: TEMENb -
        Я делал ранее разными способами. Через STORAGE тоже делал, но забыл указать строку "leave ZAKAZ", поэтому и не сработало. Спасибо, что исправил ошибку.
          можно ли в GPSS в место TRANSFER .333, ProstSS,SL записать TRANSFER (1/3), ProstSS,SL,
          работает это одинаково, а вот с точки зрения синтаксиса??? :huh:
            perluhina, можно.
            Собственно в качестве любого параметра можно записать любое выражение. единственное условие - обязательно нужно заключить его в скобки.

            Добавлено
            особенно это правило помогает при составлении всякого рода условий.
            например
            ExpandedWrap disabled
              test e (f1|f2|(f3=0)),1
            что означает - если устройство 1 занято или устройство 2 занято или устройство 3 свободно - то перейти к следующему блоку ))
              TEMENbСпасибо, а как доказать это преподу???
              есть ли какая книженция, где это написано??? или другой Официальный источник???
                можно доказать эксперементальным путем.
                  эксперемиентально я доказала, получила за курсач 5, а к экзаману говорит, вы мне принесите источник где написано, что с точки зрения синтаксиса эт не ошибка!!!!
                    ыч.. я думаю только в английской оффиыиальной документации.
                    А с точки зрения синтаксиса уже даже дробное время не ошибка.. и отритцательный приоритет - не ошибка... вообщем много ньюансов за последние лет 10 появилось ))))
                      Программа для 4 источников, буфера и 1 приёмника

                      SIMULATE

                      GENERATE 4, 1.5
                      mark 1
                      queue 1
                      seize 1
                      depart 1
                      advance (Normal(1,5,1))
                      release 1
                      mark 2
                      savevalue i1+,1
                      savevalue m0,*2
                      savevalue m0-,*1
                      test g m0,m1,met1
                      savevalue m1,*1
                      met1 terminate


                      GENERATE 4, 1.5
                      mark 1
                      queue 1
                      seize 1
                      depart 1
                      advance (Normal(1,5,1))
                      release 1
                      mark 2
                      savevalue i2+,1
                      savevalue m0,*2
                      savevalue m0-,*1
                      test g m0,m2,met2
                      savevalue m2,*1
                      met2 terminate


                      GENERATE 4, 1.5
                      mark 1
                      queue 1
                      seize 1
                      depart 1
                      advance (EXPONENTIAL(1,5,1))
                      release 1
                      mark 2
                      savevalue i3+,1
                      savevalue m0,*2
                      savevalue m0-,*1
                      test g m0,m3,met3
                      savevalue m3,*1
                      met3 terminate

                      GENERATE 4, 1.5
                      mark 1
                      queue 1
                      seize 1
                      depart 1
                      advance (EXPONENTIAL(1,5,1))
                      release 1
                      mark 2
                      savevalue i4+,1
                      savevalue m0,*2
                      savevalue m0-,*1
                      test g m0,m4,met4
                      savevalue m4,*1
                      met4 terminate

                      GENERATE 600
                      START 1
                      TERMINATE 1

                      Выводит ошибку
                      12/27/09 14:58:51 test g m0,m3,met3
                      12/27/09 14:58:51 Operand B. Invalid expression.
                      12/27/09 14:58:51 Datum has not been initialized.
                      Как можно это исправить? Помогите, пожалуйста. Мозг уже набекрень :)
                      m1, m2, m3, m4 - максимальные отклики системы для источника. С m1, m2 - проходит, а дальше - нет.
                      Сообщение отредактировано: bra1nout -
                        Цитата bra1nout @
                        test g m0,m3,met3

                        test g x$m0,x$m3,met3

                        Учи мат. часть
                          вот мучусь-мучусь - никак не получается протабулировать сколько создавался времени мой транзакт если можете - помогите!!!плиз!!! очень нужно!!!
                            irdis_13, не понял вопрос.

                            ExpandedWrap disabled
                              tab table m1,0,1,100
                               
                              generate ,,,1000
                              mark
                              advance 40,30
                              tabulate tab
                              terminate 1
                              start 1000
                              вопрос в общем в том, какое количество времени потратилось на генерацию транзакта, а ты мне написал сколько времени потратилось на его обработку! проблему решил следующим образом

                              Цитата

                              EXPON FUNCTION RN1,C24
                              0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69
                              .6,.915/.7,1.2/.75,1.38/.8,1.6/.84,1.85
                              .88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99
                              .96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3
                              .998,6.2/.999,7/.9998,8
                              Time VARIABLE AC1-X1 ;занёс в таблицу значение разницы абсолютного текущего времени и времени появления последнего транзакта
                              TAB table v$Time,0,500,13
                              SIMULATE
                              GENERATE 900,FN$EXPON,,1000
                              TABULATE TAB
                              savevalue 1,AC1 ;запомнил время появления последнего транзакта

                              GATE NU VERST1,JUMP2
                              SEIZE VERST1
                              ADVANCE 2880,FN$EXPON
                              RELEASE VERST1
                              TERMINATE 1

                              JUMP2 GATE NU VERST2,JUMP3
                              SEIZE VERST2
                              ADVANCE 2880,FN$EXPON
                              RELEASE VERST2
                              TERMINATE 1

                              JUMP3 GATE NU VERST3,JUMP4
                              SEIZE VERST3
                              ADVANCE 2880,FN$EXPON
                              RELEASE VERST3
                              TERMINATE 1

                              JUMP4 GATE NU VERST4,KILL
                              SEIZE VERST4
                              ADVANCE 2880,FN$EXPON
                              RELEASE VERST4
                              TERMINATE 1

                              KILL TERMINATE 1
                              START 1000




                              мне просто нужно было проверить в курсовой закон распределения создания транзактов (а не их обработки) для проверки адекватности!! вопрос понят?

                              а еще вопрос: как мне создать такую систему, в которой обслуживающих станков, которые обрабатывают заготовки, было бы не 1, а несколько, 4 к примеру. Я реализовал это в коде, который находится выше, а нельзя ли это реализовать как-то покороче? НАКОПИТЕЛЕЙ НЕТ. ЕСЛИ УСТРОЙСТВО ЗАНЯТО, ТО ЗАЯВКА ОТБРАСЫВАЕТСЯ!!!! :thanks: :wall:
                                здраствуите, помогите пожалуста
                                надо смоделировать систему в среде GPSS World студенческая версия
                                задания:
                                ЭВМ обслуживает три терминала по круговому циклическому алгоритму, предоставляя каждому терминалу 30 с. Если в течение этого времени задание обработалось, то обслуживание завершаетсяЖ если нет, то остаток задачи становится в спецальную очередь, которая использует свободные циклы терминалов, т.е. задача обслуживается, если на каком либо терминале нет заявок. Заявки на терминал поступают через 30+-5 секунд и имеют длину 300+-50 символов. Скорость обработки задании ЭВМ 10символов / секунда.
                                Смоделировать 5 часов работы ЭВМ. Определить загрузку ЭВМ, параметры очереди неоконченных заданий. Определить велечину цикла терминалов, при котори все заявки обработаются без специальной очереди.

                                текст программы котори я пытался написать, прадо у меня не че не получается( хотя ребятам из группы написат курсовые на вскидку, а со своеи такои запар вышел
                                INITIAL X1,3 {инициализация ячеек}
                                INITIAL X2,1
                                INITIAL X3,1
                                INITIAL X4,30
                                INITIAL X5,30
                                INITIAL X6,30
                                INITIAL X7,1


                                GENERATE 30,5 {генераия транзакта}
                                TRANSFER ALL,MET1,MET4 {если занято устроиство по метке 1 то на метку 4}
                                MET4 TRANSFER ALL,MET2,MET3 {если занято устроиство по метке 2 то на метку 3}

                                MET1 PRIORITY X1 {первый терминал}
                                TRANSFER ALL,MET5

                                MET2 PRIORITY X2 {второи терминал}
                                TRANSFER ALL,MET5

                                MET3 PRIORITY X3 {третии терминал}
                                TRANSFER ALL,MET5

                                MET5 PREEMPT EBM,PR
                                SEIZE EBM
                                ADVANCE X5
                                TEST E P1,X4,MET6 {проверка равно ли 1 значение транзакта Р1 30}
                                RELEASE EBM
                                TERMINATE 1
                                SAVEVALUE X6-,X5
                                TEST L X6,1,MET9 {проверка если значение ячеики Х6 меньше 1го то
                                востановить значения ячек}

                                SAVEVALUE X4,30
                                SAVEVALUE X4-,P1
                                TRANSFER ALL,MET12

                                MET6 TEST G P1,X4,MET8 {прроверка если Р1 больше 30}
                                SAVEVALUE P1-,XL4
                                QUEUE q1
                                SAVEVALUE X7+,1
                                TRANSFER all,MET33

                                MET8 SAVEVALUE X4-,P1 {изменение ячек если значение Р1 меньше 30 и переход на метку 5}
                                SAVEVALUE X5-,4
                                SAVEVALUE X4,P1
                                TRANSFER all,MET5

                                MET9 SAVEVALUE X4,30
                                SAVEVALUE X5,30
                                SAVEVALUE X7+,1
                                TEST E X7,4,MET10
                                TRANSFER all,MET12

                                MET10 SAVEVALUE X7,1
                                TRANSFER all,MET12

                                MET12 SEIZE OCH
                                dEPART q1
                                ADVANCE 0
                                RELEASE OCH
                                TRANSFER all,MET33

                                MET33 TEST E X7,1,MET21
                                TEST E X7,2,MET22
                                TEST E X7,3,MET23

                                MET21 SAVEVALUE X1,1
                                SAVEVALUE X2,0
                                SAVEVALUE X3,0
                                TRANSFER all,MET1

                                MET22 SAVEVALUE X1,0
                                SAVEVALUE X2,1
                                SAVEVALUE X3,0
                                TRANSFER all,MET2

                                MET23 SAVEVALUE X1,0
                                SAVEVALUE X2,0
                                SAVEVALUE X3,1
                                TRANSFER all,MET3

                                GENERATE 18000
                                TERMINATE 1
                                START 1
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (54) « Первая ... 34 35 [36] 37 38 ...  53 54


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0603 ]   [ 15 queries used ]   [ Generated: 19.06.25, 05:22 GMT ]