На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
  
> GPSS. Модель автобусной остановки , Помогите найти ошибку
    Есть задача.

    По расписанию автобус должен приходить на остановку каждые 30 минут, однако возможное опоздание составляет 1,5 +- 1,5 минут. В автобусе в момент прибытия может находиться от 20 до 50 пассажиров.
    Приход людей подчиняется закону Пуассона с интенсивностью 12 человек каждые 30 минут. После того как от 3 до 7 человек выйдут (равномерное распределение), в автобус входит столько людей, сколько возможно. Те, кто не смог уехать, уходят и не возвращаются. Для высадки пассажиров требуется 4 +- 3 секунды, для посадки - 8 +- 4 секунды. Посадка выполняется после высадки и по правилу FIFO. Если пассажир приходит в момент прибытия автобуса (временной узел), то он может сесть в австобус.
    Смоделировать процесс.


    Вот программа GPSS. Она выдает ошибки. Помогите исправить.

    xpdis function
    off function rn1,c2
    0,3/1,8
    onbus function rn1,c2
    0,20/1,51
    inqueqe qtable line,300,300,7
    mad table x$mad,0,1,10
    *segment1
    generate 150,fn$xpdis,,,1
    queue line
    gate lr bus
    depart line
    test x$nowon,50,mad
    logic r bus
    geton advance 8,4
    savevalue nowon+,1
    logic s bus
    terminate
    mad savevalue mad+,1
    terminate
    *segment2
    generate 1800
    advance 90,90
    savevalue nowon,fn$onbus
    assign 1,fn$off
    next advance 4,3
    savevalue nowon-,1
    loop 1,next
    logic s bus
    test e q$line,0
    test e w$geton,0
    tabulate mad
    savevalue mad,0
    logic r bus
    terminate 1
      ошибки:
      xpdis function - xpdis function RN200,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.83/.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
      
      off function rn1,c2 - off1 function rn1,c2 
      assign 1,fn$off     - assign 1,fn$off1
      
      test x$nowon,50,mad - пропущен условный оператор X (TEST X  A,B,C)
      
      generate 1800
      advance 90,90       - вместо двух строк одна - generate 1890,90
      


      другое решение
      ExpandedWrap disabled
                GENERATE    ,,,1
        met4    ADVANCE     1890,90
                SAVEVALUE   CountP,(Uniform(1,20,51)\1)
                SAVEVALUE   ConditionBS,1  
                ASSIGN      OutPassenger,(Uniform(1,3,8)\1)
        met1    ADVANCE     4,3
                ASSIGN      OutPassenger-,1
                SAVEVALUE   CountP-,1  
                TEST E      P$OutPassenger,0,met1  
                SAVEVALUE   ConditionBS,2  
                TEST E      x$ConditionBS,3
                ADVANCE     0.000001    
                SAVEVALUE   ConditionBS,0  
                SPLIT       1,met4
                TERMINATE   1  
         
         
                GENERATE    (Poisson(1,5/2#60))
                QUEUE       1  
                SEIZE       BusDoor
                DEPART      1
                TEST E      x$ConditionBS,3,met2    
                RELEASE     BusDoor
                TERMINATE      
        met2    TEST E      x$ConditionBS,2
                ADVANCE     8,4
                SAVEVALUE   CountP+,1  
                TEST E      ((x$CountP=50) | (Q1=0)),1,met3
                SAVEVALUE   ConditionBS,3
        met3    RELEASE     BusDoor
                TERMINATE      
         
        start 25
        Здравствуйте, задача похожая, только еще условия с терпеливчми\нетерпеливыми добавлено. с ними разобраться не могу уже неделю вторую(( пробую трансфером их в конце разделить, но я наверн синтаксис неправильно понимаю.
        Помогите пжлста.

        По расписанию автобус должен приходить на остановку каждые 30 мин. Ориентировочно точность прибытия можно оценить величиной +-7 мин.
        Приход пассажиров на автобусную остановку описывается моделью простейшего потока с интенсивностью 24 человека в час.
        Автобус вместимостью 50 человек в момент своего прибытия везет 35+-15 пассажиров. Выходят на остановке 5+-2 пассажира, а входят в автобус столько ожидающих, сколько возможно. Для высадки пассажира требуется 4+-3 сек, а для посадки 8+-4 сек. Ожидающие посадки не входят в автобус до тех пор, по не выйдут все желающие, посадка осуществляется в порядке очереди.
        Пассажиры, которым не удалось сесть в автобус, делятся на две категории:
        • «нетерпеливые» (уходят с остановки и больше не возвращаются);
        • «терпеливые» (ждут следующего автобуса).
        Любой пассажир, приходящий на остановку с вероятностью 0,5, относится к «терпеливым». Но после каждой неудачной попытки сесть в автобус вероятность его «терпения» уменьшается вдвое. Соответственно увеличивается вероятность его превращения в «нетерпеливого» и ухода с остановки при невозможности сесть в следующий автобус.
        Построить модель, имитирующую события на автобусной остановке, и определить распределение числа необслуженных пассажиров на один автобус.
        Моделирование провести для 100 прибытий автобусов.

        XPDIS FUNCTION RN200,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.83/.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
        ONBUS FUNCTION RN1,D2
        0,20/1,51
        OUT FUNCTION RN1,D2
        0,3/1,8

        INQUE QTABLE LINE,300,300,7
        MAD TABLE X$MAD,0,1,10

        START 100

        MET1 GENERATE 150,FN$XPDIS ;пришел человек на остановку
        QUEUE LINE ;встал в очередь
        GATE LS BUS ;ждет открытие дверей автобуса
        DEPART LINE ;выходит из очереди
        TEST L X$NOWON,50,ISMAD ;если нет места, модифицируем счетчик отказов - покидаем очередь
        LOGIC R BUS ;место есть - закрываем автобус перед следующим
        GETON ADVANCE 8,4 ;войти в автобус
        SAVEVALUE NOWON+,1 ;посчитать людей в автобусе
        LOGIC S BUS ;окрываем автобус перед следующим
        TRANSFER .5,MET1,MET2
        MET2 TERMINATE ;удаляем пассажира из модели
        ISMAD SAVEVALUE MAD+,1 ;подсчитываем необслуженных
        TERMINATE

        GENERATE 1800,420 ;прибытие автобуса
        SAVEVALUE NOWON,FN$ONBUS ;определяем число пассажиров в автобусе
        ASSIGN 1,FN$OUT ;определяем число выходящих пассажиров
        NEXT ADVANCE 4,3 ;выход пассажиров
        SAVEVALUE NOWON-,1 ;подсчет вышедших
        LOOP 1,NEXT
        LOGIC S BUS ;открываем автобус для входящих
        TEST E Q$LINE,0 ;ждем пассажиров из очереди
        TEST E W$GETON,0 ;проверяем последнего пассажира, что он зашел
        TABULATE MAD
        SAVEVALUE MAD,0 ;фиксируем число необслуженных
        LOGIC R BUS
        TERMINATE 1
          это курсач,диплом?
          тема интересна,
          Цитата
          другое решение
          можно "реплицировать" на множество маршрутов, ост.пунктов, пассажиров,.. приделить ГИС Google Maps API (и альтернативы)
            эх, всегда мечтал узнать, в каких единицах измеряется "нетерпеливость" :P
              2Eugen
              это просто задача на зачет :)

              По теме, задачу переделал, так работает :) Правильно?
              [CODE]XPDIS FUNCTION RN200,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.83/.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
              ONBUS FUNCTION RN1,D2
              0,20/1,51
              OUT FUNCTION RN1,D2
              0,3/1,8

              MAD TABLE X$MAD,0,1,10

              START 100

              GENERATE 150,FN$XPDIS ;пришел человек на остановку
              MET1 QUEUE LINE ;встал в очередь
              GATE LS BUS ;ждет открытие дверей автобуса
              DEPART LINE ;выходит из очереди
              TEST L X$NOWON,50,ISMAD ;если нет места, модифицируем счетчик отказов - покидаем очередь
              LOGIC R BUS ;место есть - закрываем автобус перед следующим
              GETON ADVANCE 8,4 ;войти в автобус
              SAVEVALUE NOWON+,1 ;посчитать людей в автобусе
              LOGIC S BUS ;окрываем автобус перед следующим
              TERMINATE ;удаляем пассажира из модели
              ISMAD TRANSFER .5,MET2,MET1
              MET2 SAVEVALUE MAD+,1 ;подсчитываем необслуженных
              TERMINATE

              GENERATE 1800,420 ;прибытие автобуса
              SAVEVALUE NOWON,FN$ONBUS ;определяем число пассажиров в автобусе
              ASSIGN 1,FN$OUT ;определяем число выходящих пассажиров
              NEXT ADVANCE 4,3 ;выход пассажиров
              SAVEVALUE NOWON-,1 ;подсчет вышедших
              LOOP 1,NEXT
              LOGIC S BUS ;открываем автобус для входящих
              TEST E Q$LINE,0 ;ждем пассажиров из очереди
              TEST E W$GETON,0 ;проверяем последнего пассажира, что он зашел
              TABULATE MAD
              SAVEVALUE MAD,0 ;фиксируем число необслуженных
              LOGIC R BUS
              TERMINATE 1
              [\CODE]
              Сообщение отредактировано: kusko -
                здрасте, тоже потребовался второй вариант задачи. вроде работает, генерит пассажиров и автобусы что то внутри происходит, но совершенно не могу понять отчет...
                может ктонибудь объяснить что да как?
                и ваще, правильно ли оно работает?:)

                ExpandedWrap disabled
                                GPSS World Simulation Report - 13.2.1
                   
                                     Thursday, December 10, 2009 19:20:10  
                   
                             START TIME           END TIME  BLOCKS  FACILITIES  STORAGES
                                  0.000         182316.098    26        0          0
                   
                                NAME                       VALUE  
                            BUS                         10005.000
                            GETON                           7.000
                            ISMAD                          11.000
                            LINE                        10004.000
                            MAD                         10003.000
                            MET1                            2.000
                            MET2                           12.000
                            NEXT                           17.000
                            NOWON                       10006.000
                            ONBUS                       10001.000
                            OUT                         10002.000
                            XPDIS                       10000.000
                   
                   
                   LABEL              LOC  BLOCK TYPE     ENTRY COUNT CURRENT COUNT RETRY
                                      1    GENERATE          1183             0       0
                  MET1                2    QUEUE             1628             0       0
                                      3    GATE              1628             0       0
                                      4    DEPART            1628             0       0
                                      5    TEST              1628             0       0
                                      6    LOGIC              686             0       0
                  GETON               7    ADVANCE            686             0       0
                                      8    SAVEVALUE          686             0       0
                                      9    LOGIC              686             0       0
                                     10    TERMINATE          686             0       0
                  ISMAD              11    TRANSFER           942             0       0
                  MET2               12    SAVEVALUE          497             0       0
                                     13    TERMINATE          497             0       0
                                     14    GENERATE           100             0       0
                                     15    SAVEVALUE          100             0       0
                                     16    ASSIGN             100             0       0
                  NEXT               17    ADVANCE            800             0       0
                                     18    SAVEVALUE          800             0       0
                                     19    LOOP               800             0       0
                                     20    LOGIC              100             0       0
                                     21    TEST               100             0       0
                                     22    TEST               100             0       0
                                     23    TABULATE           100             0       0
                                     24    SAVEVALUE          100             0       0
                                     25    LOGIC              100             0       0
                                     26    TERMINATE          100             0       0
                   
                   
                  QUEUE              MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME   AVE.(-0) RETRY
                   LINE               21    0   1628    445     5.828    652.682    898.196   0
                   
                   
                  TABLE              MEAN    STD.DEV.       RANGE           RETRY FREQUENCY CUM.%
                   MAD               4.970    3.421                           0
                                                         _  -        0.000            11    11.00
                                                     0.000  -        1.000             6    17.00
                                                     1.000  -        2.000             7    24.00
                                                     2.000  -        3.000            15    39.00
                                                     3.000  -        4.000            10    49.00
                                                     4.000  -        5.000             7    56.00
                                                     5.000  -        6.000            14    70.00
                                                     6.000  -        7.000             6    76.00
                                                     7.000  -        8.000            10    86.00
                                                     8.000  -  _                      14   100.00
                   
                   
                  LOGICSWITCH          VALUE        RETRY
                   BUS                   0            0
                   
                   
                  SAVEVALUE               RETRY       VALUE
                   MAD                      0              0                            
                   NOWON                    0         50.000                            
                   
                   
                  FEC XN   PRI         BDT      ASSEM  CURRENT  NEXT  PARAMETER    VALUE
                    1284    0      182318.560   1284      0      1
                    1285    0      184119.235   1285      0     14
                Сообщение отредактировано: eldalex -
                  Люди, подскажите пожалуйста как символизируется оператор многоканального устройства?
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0336 ]   [ 15 queries used ]   [ Generated: 11.05.24, 21:15 GMT ]