На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (54) « Первая ... 38 39 [40] 41 42 ...  53 54  ( Перейти к последнему сообщению )  
> GPSS , Вопрос для знающих
    Помогите пожалуйста! написала вроде програмку, а окно report не вылетает. в чем дело? не могли бы подсказать.
    задача такая: рассмотреть работу телефонной сети, имеющей 50 абонентских линий связи, причем одновременно может работать быть задействовано не более 10 связей между абонентами. каждый абонент может соединиться с остальными, если свободны его входная линия связи и входная линия вызываемого абонента. из 50 линий для организации связи могут использоваться любые две свободные линии. необходимо промоделировать работу телефонной сети для 1000 вызовов. интервалы между вызовами и длительность разговора распределены по экспотенциальному закону. предусматривается, что первые 15 вызовов образуют переходный процесс в сети и эти данные не нужно учитывать при моделировании.
    вот что у меня получилось:
    POISS FUNCTION RN1,C24 ;функция интервалов между вызовами
    0.0,0.0/0.1,0.104/0.2,0.222/0.3,0.355/0.4,0.509/0.5,0.69
    0.6,0.915/0.7,1.2/0.75,1.38/0.8,1.6/0.84,1.83/0.88,7.12
    0.9,2.3/0.92,2.52/0.94,2.81/0.95,2.99/0.96,3.2/0.97,3.5
    0.98,3.9/0.99,4.6/0.995,5.3/0.998,6.2/0.999,7/0.9997,8
    GENERATE 12,FN$POISS ;генерация вызова
    TEST G V$FREELN,2,ABND ;система заполнена
    ASN1 ASSIGN 1,V$LINE ;если нет, указывается номер входной линии абонента вызывающего другого для разговора
    GATE LR *1,ASN1 ;проверка занятости линии
    ASN2 ASSIGN 2,V$LINE ;выбор адресата связи
    TEST NE P1,P2,ASN2 ;повторить если адресат совпадает со входной линией абонента
    LOGIC S *1 ;установить выходную линию абонента занятой
    TRANSFER BOTH,BLKD ;дождаться связи
    GETL ENTER LNKS ;установить связь
    GATE LR *2,BUSY ;проверка занятости
    LOGIC S *2 ;установить адресата занятым
    ADVANCE 120,FN$POISS ;разговор
    LOGIC R *1 установить входную линию абонента свободной
    LOGIC R *2 ;установить адресата свободным
    LEAVE LNKS ;освободить связь
    CKCH TEST G CH$WAIT,O,MTRM ;проверить есть ли ожидание вызовов
    GATE LR 1,GETF ;проверить свободна ли выходная линия
    UNLINK WAIT,GETL,1,2,GETF
    MTRM TERMINATE 1
    GETF UNLINK WAIT,GETL,1 подключить первый ожидающий вызов
    TRANSFER ,MTRM
    ABND TERMINATE отказаться от ожидания
    BLKD LINK WAIT,P1 ожидать в порядке поступления вызовов
    BUSY LOGIC R *1 освободить линю
    LEAVE LNKS освободить связь
    TRANSFER ,CKCH
    LNKS STORAGE 10 колличество одновременных связей между абонентами
    LINE VARIABLE X$NRLINES#RN1/1000+1
    FREELN VARIABLE X$NRLINES-2#S$LNKS-CH$WAIT
    INITIAL X$NRLINES,50 колличество линий для связи
    START 15,NP проходы
    RESET сброс статистики
    START 1000 моделирование 1000 вызовов
      Megera, мам с пап не говорили, что обманывать не хорошо?
      Если же всетаки вы сами писали, то откуда же вы взяли параметры некоторых операторов, о которых обычно не упоминают в учебниках и из за которых отчет и не появляется?
      Цитата Megera @
      START 15,NP проходы
        просто было дано задание в ней разобраться. преподователь хочет что бы изучила че кого и объяснила ему. . .вот и сижу пыхчу. . .пытаюсь на примерах понять
          а препод у вас суров, раз дает такие тексты с нуля для разбора.
          на всяк случай..
          # - умножение
          * - косвенная адресация
          Напримет
          F*1 - индикатор занятости устройства, номер которого сохранен в первом параметре транзакта
          R *2 - колличество свободных каналов многоканального устройства, имя которого лежит во втором параметре транзакта.
          S *1 - текущее содержимое многоканального устройства, номер которого лежит в первом параметре транзакта
          ^
          лишние пробелы советую удалить
            аааааа!спасибо вам. . .хоть маленько помогли. . .а можно еще вопрос! вы не подскажете, тут в учебнике написано, что команда report выводит стандартный статистический отчет о работе модели. ее получается нужно в программе указать, что бы появилось? или нет? я пару коротких заданий делала, так там они сами появлялись)
              Цитата TEMENb @
              Megera, мам с пап не говорили, что обманывать не хорошо?
              Если же всетаки вы сами писали, то откуда же вы взяли параметры некоторых операторов, о которых обычно не упоминают в учебниках и из за которых отчет и не появляется?
              Цитата Megera @
              START 15,NP проходы

              NP удали. это означает not print т.е. не выводить отчет.
                ага! да вам цены нет!!!!!
                  у меня тут такой вопрос объявился, точнее ситуация. . .вот задача:В узел коммутации сообщений, состоящий из входного буфера, процессора, двух исходящих буферов и двух выходных линий, поступают сообщения с двух направлений. Сообщения с одного направления поступают во входной буфер, обрабатываются в процессоре, буферируются в выходном буфере первой линии и передаются по выходной линии. Сообщения со второго направления обрабатываются аналогично, но передаются по второй выходной линию применяемый метод контроля потоков требует одновременного присутствия в системе не более трех сообщений на каждом направлении. Сообщения поступают через интервалы 15±7 мс. Время обработки в процессоре равно 7 мс на сообщение, время передачи по выходной линии равно 15±5 мс. если сообщение поступает при наличии трех сообщений в направлении, то оно получает отказ.
                  Смоделировать работу узла коммутации в течении 10 с. определить загрузки устройств и вероятность отказа в обслуживании из-за переполнения буфера направления. Определить изменения в функции распределения времени передачи при снятии ограничений, вносимых методом контроля потоков.
                  time1 table m1,15,1,50
                  time2 table m1,15,1,50
                  generate 15,7,,,1 создание сообщений напрвления 1
                  TEST L X$napr1,3,out
                  b1 savevalue napr1+,1
                  transfer ,buf
                  TRANSFER ,buf
                  generate 15,7,,,2 создание сообщений направления 2

                  generate 15,7,,,2
                  TEST L X$NAPR2,3,OUT
                  savevalue napr2+,1
                  buf queue 1
                  seize 1
                  depart 1
                  advance 7
                  release 1
                  test e pr,1,buvx2
                  buvx1 queue 2
                  seize 2
                  depart 2
                  advance 15,5
                  release 2
                  savevalue napr1-,1
                  tabulate time1
                  terminate
                  buvx2 queue 3
                  seize 3
                  depart 3
                  advance 15,5
                  release 3
                  savevalue napr2-,1
                  tabulate time2
                  terminate
                  out savevalue otkaz+,1
                  terminate
                  generate 10000
                  terminate 1
                  start 1

                  в начале не было ошибок и выдавал результат, но! вот он:
                  GPSS World Simulation Report - Untitled Model 1.16.1


                  Thursday, April 29, 2010 11:09:49

                  START TIME END TIME BLOCKS FACILITIES STORAGES
                  0.000 10000.000 33 2 0


                  NAME VALUE
                  B1 3.000
                  BUF 8.000
                  BUVX1 14.000
                  BUVX2 22.000
                  NAPR1 10002.000
                  NAPR2 10003.000
                  OTKAZ 10004.000
                  OUT 30.000
                  TIME1 10000.000
                  TIME2 10001.000


                  LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
                  1 GENERATE 676 0 0
                  2 TEST 676 0 0
                  B1 3 SAVEVALUE 3 0 0
                  4 TRANSFER 3 0 0
                  5 GENERATE 661 0 0
                  6 TEST 661 0 0
                  7 SAVEVALUE 656 0 0
                  BUF 8 QUEUE 659 0 0
                  9 SEIZE 659 0 0
                  10 DEPART 659 0 0
                  11 ADVANCE 659 1 0
                  12 RELEASE 658 0 0
                  13 TEST 658 0 0
                  BUVX1 14 QUEUE 0 0 0
                  15 SEIZE 0 0 0
                  16 DEPART 0 0 0
                  17 ADVANCE 0 0 0
                  18 RELEASE 0 0 0
                  19 SAVEVALUE 0 0 0
                  20 TABULATE 0 0 0
                  21 TERMINATE 0 0 0
                  BUVX2 22 QUEUE 658 2 0
                  23 SEIZE 656 0 0
                  24 DEPART 656 0 0
                  25 ADVANCE 656 1 0
                  26 RELEASE 655 0 0
                  27 SAVEVALUE 655 0 0
                  28 TABULATE 655 0 0
                  29 TERMINATE 655 0 0
                  OUT 30 SAVEVALUE 678 0 0
                  31 TERMINATE 678 0 0
                  32 GENERATE 1 0 0
                  33 TERMINATE 1 0 0


                  FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
                  1 659 0.461 6.998 1 1338 0 0 0 0
                  3 656 0.984 14.999 1 1332 0 0 0 2


                  QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
                  1 2 0 659 655 0.002 0.036 5.928 0
                  3 5 2 658 44 1.628 24.741 26.514 0


                  TABLE MEAN STD.DEV. RANGE RETRY FREQUENCY CUM.%
                  TIME1 0.000 0.000 0
                  TIME2 46.814 19.191 0
                  17.000 - 18.000 4 0.61
                  18.000 - 19.000 5 1.37
                  19.000 - 20.000 7 2.44
                  20.000 - 21.000 5 3.21
                  21.000 - 22.000 11 4.89
                  22.000 - 23.000 13 6.87
                  23.000 - 24.000 11 8.55
                  24.000 - 25.000 11 10.23
                  25.000 - 26.000 19 13.13
                  26.000 - 27.000 20 16.18
                  27.000 - 28.000 16 18.63
                  28.000 - 29.000 9 20.00
                  29.000 - 30.000 14 22.14
                  30.000 - 31.000 17 24.73
                  31.000 - 32.000 16 27.18
                  32.000 - 33.000 20 30.23
                  33.000 - 34.000 13 32.21
                  34.000 - 35.000 10 33.74
                  35.000 - 36.000 16 36.18
                  36.000 - 37.000 11 37.86
                  37.000 - 38.000 11 39.54
                  38.000 - 39.000 4 40.15
                  39.000 - 40.000 12 41.98
                  40.000 - 41.000 12 43.82
                  41.000 - 42.000 13 45.80
                  42.000 - 43.000 9 47.18
                  43.000 - 44.000 10 48.70
                  44.000 - 45.000 7 49.77
                  45.000 - 46.000 11 51.45
                  46.000 - 47.000 7 52.52
                  47.000 - 48.000 11 54.20
                  48.000 - 49.000 10 55.73
                  49.000 - 50.000 16 58.17
                  50.000 - 51.000 10 59.69
                  51.000 - 52.000 16 62.14
                  52.000 - 53.000 12 63.97
                  53.000 - 54.000 12 65.80
                  54.000 - 55.000 8 67.02
                  55.000 - 56.000 14 69.16
                  56.000 - 57.000 13 71.15
                  57.000 - 58.000 12 72.98
                  58.000 - 59.000 7 74.05
                  59.000 - 60.000 11 75.73
                  60.000 - 61.000 16 78.17
                  61.000 - 62.000 12 80.00
                  62.000 - 63.000 8 81.22
                  63.000 - _ 123 100.00


                  SAVEVALUE RETRY VALUE
                  NAPR1 0 3.000
                  NAPR2 0 1.000
                  OTKAZ 0 678.000


                  FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
                  1338 2 10001.066 1338 11 12
                  1332 2 10003.635 1332 25 26
                  1339 2 10006.114 1339 0 5
                  1340 0 10014.229 1340 0 1
                  1341 0 20000.000 1341 0 32
                  отказов у меня 678!!!!!!!!!!!!! я начала искать ошибку и в результате теперь он мне выдает что неправильно generate 15,7,,,2
                  может вы чем нибудь сможете помочь?
                    Приветствую!

                    Начал осваивать GPSS. Вот задачка, которую пытаюсь реализовать:

                    В африканском порту танкеры загружаются сырой нефтью, которую затем морским путём доставляют по назначению. Мощности порта позволяют загружать не более трёх танкеров одновременно. Танкеры, прибывающие в порт через каждые 11+-7ч, относятся к 3-м различным типам. Относительная частота появления танкеров данного типа и время требуемое на их погрузку:
                    тип - 1, относительная частота - 0.25, время погрузки - 18+-2ч;
                    тип - 2, относительная частота - 0.55, время погрузки - 24+-3ч;
                    тип - 3, относительная частота - 0.20, время погрузки - 36+-4ч;
                    (Относительную частоту следует понимать, как вероятность того, что прибывший танкер относится к данному типу)

                    В порту имеется один буксир, услугами которого пользуются все танкеры при причаливании и отчаливании. Причаливание и отчаливание занимает занимает по одному часу, причём, если в услугах буксира нуждаются сразу несколько танкеров, приоритет отдаётся операции причаливания.
                    Судовладелец предлагает дирекции порта заключить контракт на перевозку нефти в Великобританию и обеспечить выполнение условий контракта с помощью 5 танкеров особого, четвёртого типа, для погрузки которых требуется 12+-3ч. После погрузки танкер отчаливает и следует в Великобританию, там разгружается и затем снова возвращается в африканский порт для погрузки. Время обращения танкера, включая время разгрузки, составляет 240+-24ч.
                    Фактором осложняющим перевозку нефти, являются штормы, которым подвергается порт. Интервал времени между штормами распределён экспоненциально с математическим ожиданием 48ч, причём шторм продолжается 4+-2ч. Во время шторма буксир не работает.
                    Перед заключением контракта руководство порта решило определить влияние, которое окажут пять дополнительных танкеров на функционирование порта. Выводы предлагается сделать по результатам имитации работы порта в течение одного года(8760ч) при условии заключения предлагаемого контракта. Оцениваемые величины - время пребывания в дополнительных танкеров и уже работающих танкеров трёх типов.

                    Вот как я это переложил на GPSS:
                    SIMULATE
                    A3 STORAGE 3 ; Одновременно не более 3-х загружаемых танкеров
                    A5 STORAGE 5 ; 5 дополнительных танкеров
                    GENERATE 11,7
                    QUEUE AA3 ; Занимаем очередь для погрузки
                    ENTER A3 ; Занимаем место для погрузки
                    DEPART AA3 ; Освобождаем очередь
                    PRIORITY 2 ; Причаливание начало/
                    SEIZE BUKSIR
                    ADVANCE 1
                    RELEASE BUKSIR
                    PRIORITY 1 ; Причаливание конец\
                    TRANSFER .550,,type_2 ; Погрузка начало/
                    TRANSFER .200,,type_3
                    ADVANCE 18,2
                    TRANSFER ,metka1
                    type_2 ADVANCE 24,3
                    TRANSFER ,metka1
                    type_3 ADVANCE 36,4
                    TRANSFER ,metka1 ; Погрузка конец\
                    metka1 SEIZE BUKSIR ; Отчаливание начало/
                    ADVANCE 1
                    RELEASE BUKSIR ; Отчаливание конец\
                    LEAVE A3 ; Освобождаем место для погрузки
                    TERMINATE

                    GENERATE (EXPONENTIAL(1,0,48)) ; Шторм
                    SEIZE BUKSIR
                    ADVANCE 4,2
                    RELEASE BUKSIR
                    TERMINATE

                    GENERATE 1
                    ENTER A5 ; -1 свободный дополнительный танкер
                    QUEUE AA3 ; Занимаем очередь для погрузки
                    ENTER A3 ; Занимаем место для погрузки
                    DEPART AA3 ; Освобождаем очередь
                    PRIORITY 2 ; Причаливание начало/
                    SEIZE BUKSIR
                    ADVANCE 1
                    RELEASE BUKSIR
                    PRIORITY 1 ; Причаливание конец\
                    ADVANCE 31,3 ; Погрузка /\
                    SEIZE BUKSIR ; Отчаливание начало/
                    ADVANCE 1
                    RELEASE BUKSIR ; Отчаливание конец\
                    LEAVE A3 ; Освобождаем место для погрузки
                    ADVANCE 240,24 ; Плывём в Великобританию
                    LEAVE A5 ; Танкер вернулся и свободен
                    TERMINATE

                    GENERATE 8760
                    TERMINATE 1

                    Правильно ли я решил поставленную задачу? Т.к. это моя первая задача, боюсь, что мог накосячить. Особенно сомневаюсь в следующих местах:
                    1)PRIORUTY. Правильно ли я применил этот оператор? Увы, о мне удалось найти очень уж скудное и не совсем понятное описание этого оператора, возможно я его не правильно применил.
                    2)GENERATE (EXPONENTIAL(1,0,48)) - По условию мне нужно экспоненциальное распределение с мат. ожиданием 48. Увы нагуглить адекватное решение сей проблемы не удалось, мне показалось, что выглядеть это должно так, но я не уверен.
                    3)С дополнительными танкерами у меня ещё большие сомнения, мне кажется что генерировать через 1 ед. и там проверять на наличие свободного доп. танкера не очень красивое решение, но увы по другому я придумать не смог :(
                    4)И собственно говоря не понятно как правильно сделать окончательные выводы. Из отчёта получается, что танкер загружен на 31%, погрузчики на 97%. А вот как определить Сколько времени какие танкеры там стоят и как провести анализ влияния дополнительных танкеров?

                    Заранее огромное спасибо за помощь!
                    Сообщение отредактировано: Василий_Н -
                      сижу с телефона, текст программы не вижу. могу ответить только на второй (все верно) и третий (неверно, нужно строить отдельный сегмент)вопросы
                        Цитата TEMENb @
                        сижу с телефона, текст программы не вижу. могу ответить только на второй (все верно) и третий (неверно, нужно строить отдельный сегмент)вопросы

                        Так вроде у меня и есть отдельный сегмент? Блок между GENERATE и TERMINATE это же и есть сегмент или я не правильно понял специальную терминологию GPSS? И если я не правильно реализовал сей момент, подскажите, пожалуйста, в каком направлении мне нужно двигаться, чтобы сделать правильно?
                          еще раз повторюсь, что я в "круизе" и ява на телефоне не очень, а текст программы в спойлере.
                          да, действительно сегмент.
                          но в жпсс-в время не дискретно. если ну очень хочется именно иаким методот - генегигуйте транзакт каждую тысячную евм.
                          но я лично сгенерировал бы один единственный транзакт и зациклил бы его.
                          мет марк
                          тест е ...
                          сейввалуе
                          тест не ...
                          трансфер ,мет
                            Ок, понял, убрал спойлер. Посмотрите, пожалуйста, сам код. Буду очень благодарен!
                              Цитата TEMENb @
                              но я лично сгенерировал бы один единственный транзакт и зациклил бы его.
                              мет марк
                              тест е ...
                              сейввалуе
                              тест не ...
                              трансфер ,мет

                              Т.е. правильно ли я понял, что нужно вместо 3-х моих сегментов делать один общий? А как внутри их разделять? Скажем как я смогу проверить что подошёл нужный момент для шторма?

                              Цитата TEMENb @
                              если ну очень хочется именно иаким методот - генегигуйте транзакт каждую тысячную евм.

                              А это будет допустимым решением или всё-таки это ошибка?



                              И всё-таки уже который день пытаюсь разобраться с анализом отчёта GPSS, но пока не всё понятно, вы не могли подтолкнуть в нужном направлении?

                              Заранее огромное спасибо!
                                Вот отчёт без сегмента с дополнительными 5-ю танкерами:
                                FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
                                BUKSIR 1798 0.269 1.311 1 0 0 0 0 0


                                QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
                                AA3 3 0 805 594 0.142 1.543 5.888 0


                                STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
                                A3 3 0 0 3 805 1 2.309 0.770 0 0
                                A5 5 5 0 0 0 1 0.000 0.000 0 0


                                А вот с дополнительными 5-ю(GENERATE 0.01):
                                FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
                                BUKSIR 2093 0.305 1.277 1 875276 0 0 0 0


                                QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
                                AA3 8 0 953 127 1.756 16.137 18.618 0


                                STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
                                A3 3 0 0 3 953 1 2.910 0.970 0 0
                                A5 5 0 0 5 154 1 5.000 1.000 0 875846





                                Теперь мой анализ:
                                1)Из второго отчёта мы видим, что UTIL. STORAGE A5 = 1.000, следовательно дополнительные 5 танкеров работают на полную мощь, а значит погрешность моей реализации(GENERATE 0.01) пренебрежимо мала и на модели не видна.

                                2)Загруженность буксира ранее мы имели 26.9%, при дополнительных 5-и танкерах она поднимается до 30.5%
                                3)Без доп танкеров максимальная очередь была 3, а среднее время ожидания в очереди 1.543часа, после введения дополнительных 5-и танкеров, длина очереди возросла до 8-и, а среднее время ожидание в очереди до 16.137часа
                                4)В первом отчёте мы получаем загруженность погрузочных мес равную 77%, а во втором отчёте 97%(т.е. после введения доп. танкеров занятость погрузчиков выросла на 20%).

                                Правильны ли мои выводы?

                                И всё таки до сих пор не могу разобраться, что означают: AVE.CONT., AVE.C., ENTRY(0), AVE.(-0), DELAY, RETRY
                                Сообщение отредактировано: Василий_Н -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (54) « Первая ... 38 39 [40] 41 42 ...  53 54


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