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

      Необходимо промоделировать работу супермаркета, например, «Лента» (кстати, ничего там хорошего нет). Супермаркет имеет парковку на 130 автомобилей. В том случае, если все места заняты, автомобиль покидает территорию магазина. Припарковав автомобиль, покупатели входят в помещение магазина. При входе в зал, покупатель может взять тележку (130 штук) или корзинку (60 штук), для перевозки (переноски) купленных товаров. Магазин имеет 15 кассовых терминалов. В обычном режиме работает 8 терминалов. Из них один – для быстрого обслуживания покупателей с небольшим количеством покупок (до 12). На выходе из магазина находится контролер-интервьюер, спрашивающий качество обслуживания и выборочно проверяющий соответствие чеков и покупок. В обычном режиме опрашиваются все покупатели.
      Параметры функционирования торгового комплекса следующие.
      • Поток машин, прибывающий на стоянку, и покупателей, входящих в магазин нормальный.
      • Время прихода покупателей в магазин, колеблется в пределах, от 45 до 70 сек включительно.
      • Если производится покупка более 12 видов товара, покупатель берет тележку.
      Время обслуживания кассиром покупателя с тележкой составляет от 6.5 до 10.0 мин включительно.
      • Время обслуживания покупателя с корзинкой занимает от 5.5 до 7.8 мин включительно
      • На интервью тратится от 1.0 до 1.6 мин включительно.

      Необходимо промоделировать работу торгового комплекса в течение 10.0 часов

      Выделил то что мне не понятно..
      Про интервьюера вроде сделал , но возможно не правильно.


      ExpandedWrap disabled
            RMULT   1187    
        Kassa_2 EQU 2                  
        Kassa_N EQU 8
        Time_work   VARIABLE    10#60#60        
        N_Pokupok   VARIABLE    (RN1@96+5)
        Finance VARIABLE    (RN1@3+1)#40+150
        Time_system TABLE   M1,1000,1000,7
        Pokupki TABLE   P$Kol_pokupok,10,10,10
        N_Pokupatel TABLE   X$Pokupatel,100,50,12
        Park    STORAGE 130
        Telejka STORAGE 130
        Korzina STORAGE 60
        Kassir  VARIABLE    (P$Kol_pokupok)#2+P$Oplata
        Time_mag    VARIABLE    P$Kol_pokupok#100
            INITIAL X$Pokupatel,0
            
         
        ****************************************************************
         
         
        Parking TRANSFER    Both,,Lost
            ENTER   Park
            ADVANCE 57.5,12.5
            SAVEVALUE Pokupatel+,1
            ASSIGN  Kol_pokupok,V$N_Pokupok
            ASSIGN  Oplata,V$Finance
            TEST L  P$Kol_pokupok,12,QTelejka
            GATE SNF    Korzina,QTelejka
         
        ****************************************************************
         
            QUEUE   Korzina_Q
            ENTER   Korzina
            DEPART  Korzina_Q
            ASSIGN  Tara,Korzina
            TRANSFER    ,Magazin_Lenta
         
        ****************************************************************
         
        QTelejka    QUEUE   Telejka_Q
            ENTER   Telejka
            DEPART  Telejka_Q
            ASSIGN  Tara,Telejka
         
        ****************************************************************
         
        Magazin_Lenta   ADVANCE V$Time_mag
                TEST LE P$Kol_pokupok,12,Min_och
                COUNT L     Kassir_0,Kassa_2,Kassa_N,1,Q
                TEST E  P$Kassir_0,0,Min_och
         
        ****************************************************************
         
            QUEUE   Express_Q
            SEIZE   Express
            DEPART  Express_Q
            ADVANCE V$Kassir
            RELEASE Express
            LEAVE   P$Tara
            TRANSFER    ,Fin
         
        ******************************************  
         
        Min_och SELECT MIN  Min_ochered,Kassa_2,Kassa_N,,Q
            QUEUE   P$Min_ochered  
            SEIZE   P$Min_ochered
            DEPART  P$Min_ochered
            ADVANCE V$Kassir
            RELEASE P$Min_ochered
            LEAVE   P$Tara
         
        ********************************************
         
        Fin ADVANCE 78,18
            TABULATE    Time_system
            TABULATE    Pokupki
            SAVEVALUE   Pokupatel-,1
            ADVANCE 57.5,12.5
            LEAVE   Park
            TERMINATE
        Lost    TERMINATE
         
        ****************************************
        [B] GENERATE (Exponential(1,0,60)),,,200
            TRANSFER    ,Parking
            GENERATE (Exponential(1,0,40)),,1800,400
            TRANSFER    ,Parking
            GENERATE (Exponential(1,0,80)),,5400,300
            TRANSFER    ,Parking
            GENERATE (Exponential(1,0,120)),,9000
            TRANSFER    ,Parking[/B]
        *****************************************
            GENERATE    V$Time_work
            TABULATE    N_pokupatel
            TERMINATE   1
                START   1
        Цитата TEMENb @
        Atnos, воспользуйтесь пользовательскими списками. вы удивитесь насколько простая это задача.

        спасибо за совет, ток я не фига не могу понять эти списки( :(
        полазил по инету, книгу почитал, весь день седни убил чтоб понять как они работают, не фига не могу понять( наверно я туп.
        если можно, не могли бы вы простинькую программу с их работаи дать? для того чтобы разобратся можно было.
          циклический алгоритм, три терминала. время цикла - 1 емд.
          ExpandedWrap disabled
            generate 3
            link 1,fifo
            generate 3
            link 2,fifo
            generate 3
            link 3,fifo
             
            met1 queue 1
            seize 1
            depart 1
            advance 1
            release 1
            terminate 1
             
            generate ,,,1
            assign 1,0
            met assign 1,((p1@3)+1)
            test g ch*1,0
            unlink p1,met1,1
            advance 1
            transfer ,met
             
            start 1000
            Всем привет, если не сложно помогите.
            Есть вот такая задачка, возможно она уже встречалась, никак не могу ее найти нигде.
            Текст зачади: На ВЦ принято планово-профилактическое обслуживание. ВЦ с небольшим парком ЭВМ, поэтому ремонтом ЭВМ занимается всего один радиомеханик (в терминах СМО - ремонтник). Это означает: что одновременно можно выполнять обслуживание только одной ЭВМ. Все ЭВМ должны регулярно проходить профилактический осмотр. Определенное число ЭВМ подвергающееся ежедневному осмотру согласно графику технического обслуживания, распределено равномерно и составляет от 1 до 3. Время, необходимое для осмотра и обслуживания каждой ЭВМ примерно распределено в интервале от 45 мин. до 1 ч. 15 мин. За это время необходимо проверить саму ЗВМ, а также такие внешние устройства как цветные струйные принтеры, нуждающиеся в смене или заправке картриджей красителем или лазерные принтеры, нуждающиеся в заправке тонером. Несколько ЭВМ имеют в качестве внешних устройств цветные плоттеры, у которых достаточно сложный профилактический осмотр.
            Рабочий день ремонтника длится 8 ч, но возможна и многосменная работа.
            В некоторых случаях профилактический осмотр прерывается для устранения внезапных отказов сетевых серверов, работающих в три смены, т.е 24 ч в сутки. В этом случае текущая профилактическая работа прекращается, и ремонтник начинает без задержки ремонта сервера. Тем не менее, машина-сервер, нуждающаяся в ремонте, не может вытеснить другую машину-сервер, уже стоящую на внеплановом ремонте.
            Распределение времени между поступлениями машин-серверов является пуассоновским со средним интервалом равным 42 ч. Если ремонтник отсутствует в момент поступления ЭВМ эти ЭВМ должны ожидать до 8ч утра. Время их обслуживания распределено по экспоненте со средним значение в 17 ч. Необходимо построить GPSS-модель для имитации производственной деятельности ВЦ. По полученной модели необходимо оценить распределение случайной переменной "число машин-серверов, находящихся на внеплановом ремонте". Выполнить прогон модели, имитирующей работу ВЦ в течении 25 дней, введя промежуточную информацию по окончании каждых пяти дней. Для упрощения можно считать, что ремонтник работает 8 ч в день без перерыва, и не учитывать выходные. Это аналогично тому, что ВЦ работает 7 дней в неделю.

            Для решения было принято 5 сегментов. В общем и в целом все понятно, не могу разобраться как работает 4 сегмент (и вообще правильно ли он написан).
            Описание сегмента: Сегмент "сбор данных для неработающих ЭВМ-серверов" используется для сбора данных, позволяющих оценить распределение числа неработающих ЭВМ-приборов. Для этих целей используется взвешенные таблицы, которые позволяют вводить в них в один и тот же момент времени наблюдаемые случайные величины. Для этих целей включаются два блока - TABULATE, но если ввод в таблицу случаен (значение величин >= 2), то этот подход не годен. В этом случае используется необязательный элемент олеранд, называемый весовым фактором, обозначающий число раз, которое величина, подлежащая табулированию, должна вводится в таблицу. Это позволяет назначать разные веса различным наблюдаемым величинам.
            Собственно сам код:
            ExpandedWrap disabled
              XPDIS FUNCTION RN1,C24
              0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
              .7,1.2/.75,138/.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.0/.9997,8.0
               
              JOBS FUNCTION RN1,C2
              0,1/1,4
              TAB1 TABLE P2,0,1,6
              *
              *Model segment 1
              *
              GENERATE    1440,,1,,2
              SPLIT FN$JOBS,NEXT1
              NEXT1 queue TO
              SEIZE REM
              ADVANCE 60,15
              RELEASE REM
              depart TO
              TERMINATE
              *
              *Model segment 2
              *
              GENERATE 2520,FN$XPDIS,,,2
              QUEUE TRUBL
              PREEMPT REM
              ADVANCE 1020,FN$XPDIS
              RETURN REM
              DEPART TRUBL
              TERMINATE
              *
              *Model segment 3
              *
              GENERATE 1440,,481,,3
              PREEMPT REM,PR
              ADVANCE 960
              RETURN REM
              TERMINATE
              *
              *Model segment 4
              *
              GENERATE 35041,,1,,1
              WATCH MARK 1
              ASSIGN 2,FR$TRUBL
              TEST NE 1,0
              TABULATE TAB1,1
              TRANSFER ,WATCH
              TERMINATE
              *
              *Model segment 5
              *
              GENERATE 7200,,6241
              TERMINATE 1
              START 5,,1,1
              Здравствуйте!
              Помогите пожалуйста!
              Каким образом можно не используя М1 и оператор MARK сохранить работоспособность оператора TABULATE в моем коде?
              [ code ]
              FUNC1 FUNCTION RN1,C2
              0,13/1,32.
              FUNC2 FUNCTION RN2,C11
              0,0/.125,2/.25,7/.375,12/.45,20/.5,25/.625,40/.75,55/.875,80/.9,90/1,100.
              FUNC3 FUNCTION RN3,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
              NORM VARIABLE FN$FUNC3 # 3 + 20
              FUNC4 FUNCTION RN7,D4
              .25,20/.5,60/.75,80/1,100.
              TAB1 TABLE M1,50,10,12
              ******************************************************************
              GENERATE FN$FUNC4 ; Генерация транзактов
              ADVANCE V$NORM ; Задержка 1
              ADVANCE FN$FUNC1 ; Задержка 2
              ADVANCE 23,9 ; Задержка 3
              ADVANCE FN$FUNC2 ; Задержка 4
              TABULATE TAB1 ; Табулирование
              TRANSFER .587,LBL1,LBL2 ; Случайный переход
              LBL1 TERMINATE 1 ; Удаление транзактов 1
              LBL2 TERMINATE 1 ; Удаление транзактов 2
              ******************************************************************
              START 500 ; Повторить 500 раз
              [ /code ]
                ExpandedWrap disabled
                  FUNC1 FUNCTION RN1,C2
                  0,13/1,32.
                  FUNC2 FUNCTION RN2,C11
                  0,0/.125,2/.25,7/.375,12/.45,20/.5,25/.625,40/.75,55/.875,80/.9,90/1,100.
                  FUNC3 FUNCTION RN3,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
                  NORM VARIABLE FN$FUNC3 # 3 + 20
                  FUNC4 FUNCTION RN7,D4
                  .25,20/.5,60/.75,80/1,100.
                  TAB1 TABLE (AC1-p1),50,10,12
                  ******************************************************************
                  GENERATE FN$FUNC4 ; Генерация транзактов
                  assign  1,ac1
                  ADVANCE V$NORM ; Задержка 1
                  ADVANCE FN$FUNC1 ; Задержка 2
                  ADVANCE 23,9 ; Задержка 3
                  ADVANCE FN$FUNC2 ; Задержка 4
                  TABULATE TAB1 ; Табулирование
                  TRANSFER .587,LBL1,LBL2 ; Случайный переход
                  LBL1 TERMINATE 1 ; Удаление транзактов 1
                  LBL2 TERMINATE 1 ; Удаление транзактов 2
                  ******************************************************************
                  START 500 ; Повторить 500 раз


                Добавлено
                mark сохраняет в параметр транзакта (или в отметку времени транзакта, если прописан без параметров), значение сча AC1. Так же значение сча АС1 прописывается в отметку времени транзакта при создании транзакта. Если явно использовать марк нельзя, то тогда сделаем вручную его работу. попросту сохраняем значение времени в параметр транзакта.

                М1 (МРj, MP$j) - соответствует разнице СЧА АС1 и времени, сохраненной в отметке времени транзакта (сохраненному в параметре транзакта с числовым/символьным именем j)
                соответственно, вместо M1 вручную пропишем (AC1-параметр)

                Вот и вся магия )
                  Огромнейшее спасибо! :)
                    Помогите смоделировать, пожалуйста. Как правильно задать количесвто посетителей, по какому закону?
                    Задание:
                    В студенческой столовой «Колобок» есть N столов, 4*N стульев и M официантов. Посетители приходят в столовую и занимают места за столами. Официанты обслуживают столы в порядке очереди с дисциплиной FIFO с приоритетами (сначала столы, за которыми большее количество человек). Если свободных столов нет, посетитель покидает столовую. Посетитель может пересаживаться с одного стола за другой, допускаем, что переход занимает 3 минуты.
                    Создать имитационную модель работы столовой. Предусмотреть расчет оптимального количества официантов.
                    Допускаем, что завершение моделирования не нуждается ни в каких событиях.
                      Есть N устройств. Как равновероятностно перейти на одно из них?
                        ExpandedWrap disabled
                          transfer all,met1,met2
                          met1 transfer ,ystr1
                          transfer ,ystr2
                          transfer ,ystr3
                          transfer ,ystr4
                          transfer ,ystr5
                          met2 transfer ,ystr6
                          Цитата TEMENb @
                          ExpandedWrap disabled
                            transfer all,met1,met2
                            met1 transfer ,ystr1
                            transfer ,ystr2
                            transfer ,ystr3
                            transfer ,ystr4
                            transfer ,ystr5
                            met2 transfer ,ystr6

                          Это хорошо с небольшим количеством устройств. А если их 100 штук, например.
                            Говорите сразу чего хотите. вариантов далеко не два.
                            ExpandedWrap disabled
                              generate 1
                              assign 1,(duniform(1,1,100))
                              seize p1
                              release p1
                              terminate 1
                               
                              start 100
                              Цитата TEMENb @
                              (duniform(1,1,100))


                              Это, я так понимаю, дискретное равномерное распределение? Что ж, спасибо огромное. Моя жажда познаний удовлетворена :D
                                Цитата masher @
                                дискретное равномерное распределение

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


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