На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (54) « Первая ... 13 14 [15] 16 17 ...  53 54  ( Перейти к последнему сообщению )  
> GPSS , Вопрос для знающих
    Здравствуйте! Моё задание:В специализированной вычислительной системе периодически выполняется три вида заданий, которые характеризуются уровнями приоритета: нулевым, первым и вторым. Каждый новый запуск задания оператор производит при помощи дисплея, работая на нем 20-80 секунд. После запуска задания оно требует для своего выполнения 50-150 секунд времени работы процессора, причем задания более высокого приоритета прерывают выполнение задач более низкого приоритета. Результаты обработки задания выводятся на печать без прерываний в течение 20-40 секунд, после чего производится их анализ в течение 40-80 секунд, и задание запускается снова. Можно считать, что при работе дисплея и при выводе результатов на печать процессор не используется.
    Смоделировать процесс работы системы при условии, что задание второго уровня приоритета выполняется 100 раз. Подсчитать число циклов выполнения остальных заданий и определить коэффициенты загрузки технических средств системы.

    Мой код:
    Generate 30,20
    queue CPU
    seize display
    advance 50,30
    release display
    seize CP
    advance 100,50
    release CP
    depart CPU
    advance 30,10
    advance 60,20
    assign P1,(PR+1)
    savevalue P1+,1
    terminate

    Generate 30,10,,,1
    queue CPU
    seize display
    advance 50,30
    release display
    prempt CP,PR
    advance 100,50
    return CP
    depart CPU
    advance 30,10
    advance 60,20
    assign P1,(PR+1)
    savevalue P1+,1
    terminate

    Generate 30,5,,100,2
    queue CPU
    seize display
    advance 50,30
    release display
    prempt CP,PR
    advance 100,50
    return CP
    advance 100,50
    return CP
    depart CPU
    advance 30,10
    advance 60,20
    assign P1,(PR+1)
    savevalue P1+,1
    test L x3,100,met1
    terminate
    met1 TERMINATE 1

    У меня возникает ошибка:
    Model Translation Begun.
    Line 21, Col 7. Invalid identifier. Expecting a GPSS Verb.
    prempt CP,PR
    Тоже самое и в 36 строчке(во втором Premt), я не понимаю почему. И скажите пожалуйста, в целом код правильный?
      Line 21, Col 7. Invalid identifier. Expecting a GPSS Verb. - > PREEMPT
        Во блин, извиняюсь, глупо получилось) Ещё подскажите почему возникает ошибка:
        Halt. XN: 3. Block 40 Next.
        Clock:308.916490. Next: ASSIGN. Line 42.
        assign P1,(PR+1)
        Reference to a non-existent Parameter.

        не совсем понимаю, почему на несуществующий параметр ссылка?
          assign P1,(PR+1)
          здесь ошибка. Нужно так
          assign 1,(PR+1)
          Как правило, в первом операнде блока ASSIGN указывается номер параметра - ASSIGN 1,1000 или его имя ASSIGN P$name,1000

          assign 1,(PR+1)
          savevalue P1+,1
          эти строки лишниие..

          достачно
          ExpandedWrap disabled
            Generate 30,20
            ...
            advance 60,20
            savevalue 1+,1 // счеткик транзактов с приоритетом 0
            terminate
             
            Generate 30,10,,,1
            ...
            advance 60,20
            savevalue 2+,1 // счеткик транзактов с приоритетом 1
            terminate
             
            Generate 30,5,,100,2
            ...
            advance 60,20
            savevalue 3+,1 // счеткик транзактов с приоритетом 2
            test L x3,100,met1
            ..
            Здравствуйте!ЛЮДИ ДОБРЫЕ! Помогите пожалуйста с лабой! Пол университета опросила, никто не может помочь. Нужно написать программу: МКУ с 8 каналами. число мест в очереди = 7 Своего ума хватило только на это:
            ExpandedWrap disabled
               
              VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74
              OBS     FVARIABLE -1#LOG((1+RN2)/1000)/5
                         GENERATE V$VREMA
              TEST L  Q$OCHERED,8,REFUS
              SMO       STORAGE 8
                         QUEUE   OCHERED
                        ENTER   SMO        
                        DEPART  OCHERED        
                        ADVANCE V$OBS        
                        LEAVE SMO
                        TERMINATE 1
                        GENERATE  480
              REFUS     TRANSFER ,OUT      
              OUT    TERMINATE    1
                        START        200
            Сообщение отредактировано: Anomaly -
              ну вообщем все верно, кроме размера очереди.
              Цитата
              VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74
              OBS FVARIABLE -1#LOG((1+RN2)/1000)/5
              SMO STORAGE 8
              GENERATE V$VREMA
              TEST L Q$OCHERED,7,REFUS
              QUEUE OCHERED
              ENTER SMO
              DEPART OCHERED
              ADVANCE V$OBS
              LEAVE SMO
              REFUS TERMINATE 1
              START 200,np
              SMO STORAGE 9
              START 800

              Всего будет обслужено 1000 заявок.
              А какое у вас условие завершения моделирования?
              Сообщение отредактировано: TEMENb -
                Цитата
                ну вообщем все верно, кроме размера очереди.

                Цитата
                VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74
                OBS FVARIABLE -1#LOG((1+RN2)/1000)/5
                SMO STORAGE 8
                GENERATE V$VREMA
                TEST L Q$OCHERED,7,REFUS
                QUEUE OCHERED
                ENTER SMO
                DEPART OCHERED
                ADVANCE V$OBS
                LEAVE SMO
                REFUS TERMINATE 1
                START 200,np
                SMO STORAGE 9
                START 800

                Всего будет обслужено 1000 заявок.
                А какое у вас условие завершения моделирования?


                Спасибо за помощь.
                Но теперь при компилировании выдается ошибка:
                Error Stop.
                Halt. XN: 244. Block 7 Next.
                Clock:3.596054. Next: LEAVE. Line 10.
                LEAVE SMO
                Attempt to release more storage than existed.

                Моделирование нужно завершить после того как будут обработаны 1000 заявок. И сделать это моделирование нужно 10 раз
                  У первого устройство ADVANCE равно 7.5,1,5 , у второго 8,2.5.

                  Цитата

                  AA FUNCTION P1,D2
                  1,7.5/2,8
                  BB FUNCTION P1,D2
                  1,1.5/2,2.5

                  GENERATE 3
                  QUEUE XX
                  TRANSFER 0.75,MET1,MET2
                  MET1 ASSIGN 1,1
                  TRANSFER ,NN
                  MET2 ASSIGN 1,2
                  NN SEIZE P1
                  DEPART XX
                  ADVANCE FN$AA,FN$BB
                  RELEASE P1
                  TERMINATE
                  GENERATE 480
                  TERMINATE 1


                  Объясните, почему в отчете значение AVE.TIME не попадает в эти интервалы (у 1го - 11.250, у 2го - 19.875). Кстати, если задаю конкретное число, то ADVANCE ему не равно. Использую GPSS World Student Version 5.2.2.
                    вот так должно быть. Незнаю даже с чем связано.
                    ExpandedWrap disabled
                      ADVANCE FN$AA,(FN$BB)


                    А значения такие получаются.. скорее всего это связано с кривоватенькой реализацией непрерывного времени.
                    В жпсс верд реализовано непрерывное время ;)

                    Цитата Anomaly @
                    Спасибо за помощь.
                    Но теперь при компилировании выдается ошибка:
                    Error Stop.
                    Halt. XN: 244. Block 7 Next.
                    Clock:3.596054. Next: LEAVE. Line 10.
                    LEAVE SMO
                    Attempt to release more storage than existed.

                    мда. вероятно нельзя менять емкость МКУ без обнуления счетчиков и удаления транзактов из модели (clear и reset).
                    Возможно прокатит такая вот реализация
                    ExpandedWrap disabled
                      VREMA FVARIABLE -1#LOG((1+RN1)/1000)/74
                      OBS FVARIABLE -1#LOG((1+RN2)/1000)/5
                      SMO STORAGE 9
                      GENERATE V$VREMA
                      TEST L Q$OCHERED,7,REFUS
                      QUEUE OCHERED
                      test e ((tg1<800)|(s$smo<8)),1
                      ENTER SMO
                      DEPART OCHERED
                      ADVANCE V$OBS
                      LEAVE SMO
                      REFUS TERMINATE 1
                      START 1000
                      СПАСИБО ОГРОМНОЕ!!! Работает! И результат очень похож на ответы :)
                      Сообщение отредактировано: Anomaly -
                        Здравствуйте господа...помогите плз...проверте правильность проги...и если что-то неправильно...исправте...Заранее благодарен...

                        В системе передачи цифровой информации передается речь в цифровом виде. Речевые пакеты передаются через два транзитных канала, буферизуясь в накопителях перед каждым каналом. Время передачи пакета по каналу составляет 5 мс. Пакеты поступают через 3-9 мс. Пакеты, передававшиеся более 10 мс, на выходе системы уничтожаются, так как их появление в декодере значительно снизит качество передаваемой речи. Уничтожение более 30% пакетов недопустимо. При достижении такого уровня система за счет ресурсов ускоряет передачу до 4 мс на канал. При снижении уровня до приемлемого происходит отключение ресурсов.
                        Смоделировать 10 с работы системы. Определить частоту уничтожения пакетов и частоту подключения ресурса.

                        INITIAL X$T,1
                        INITIAL X$B,1
                        GENERATE 6,3
                        MARK 2
                        QUEUE OCH1

                        SEIZE PR_1
                        DEPART OCH1
                        Test L (X$B#100/X$T),30,POS1
                        ADVANCE 1
                        POS1 ADVANCE 4
                        RELEASE PR_1

                        QUEUE OCH2

                        SEIZE PR_2
                        DEPART OCH2
                        Test L (X$B#100/X$T),30,POS2
                        ADVANCE 1
                        POS2 ADVANCE 4
                        RELEASE PR_2
                        ASSIGN 1+,MP2
                        TEST L P1,11,BYBY
                        SAVEVALUE T+,1
                        TERMINATE

                        BYBY SAVEVALUE B+,1
                        TERMINATE

                        GENERATE 10000
                        TERMINATE 1
                        START 1
                          хорошо написано
                          ExpandedWrap disabled
                            ASSIGN 1+,MP2     // + ничего не делает
                            TEST L P1,11,BYBY // по условию <= 10

                          ExpandedWrap disabled
                            ASSIGN 1,MP2
                            TEST LE P1,10,BYBY


                          не использую блок MARK, поэтому вместо строк
                          ExpandedWrap disabled
                            MARK 2
                            ...
                            ASSIGN 1,MP2
                            TEST LE P1,10,BYBY
                          написал бы
                          ExpandedWrap disabled
                            ASSIGN time,AC1
                            ...
                            TEST LE (AC1-P$time),10,BYBY
                          AC1 - абсолютное модельное время

                          чтобы подсчитать частоту подключения ресурса
                          ExpandedWrap disabled
                            SEIZE PR_1
                            DEPART OCH1
                            SAVEVALUE countAllMode+,1
                            Test L (X$B#100/X$T),30,POS1
                            ADVANCE 5
                            TRANSFER ,met1
                            POS1 SAVEVALUE countFastMode+,1
                            ADVANCE 4
                            met1 RELEASE PR_1
                          аналогично для второго канала
                          ExpandedWrap disabled
                            GENERATE 10000
                            SAVEVAKUE fr_brak,(x$B/x$T) // вероятность уничтожение пакета
                            SAVEVALUE fr_useResource,(x$countFastMode/x$countAllMode) // вероятность использования ресурса при передачи
                            TERMINATE 1


                          Добавлено
                          ExpandedWrap disabled
                            SAVEVAKUE fr_brak,(x$B/(x$B+x$T)) // вероятность уничтожение пакета
                            Цитата Eugen @
                            не использую блок MARK, поэтому вместо строк
                            ExpandedWrap disabled
                              MARK 2
                              ...
                              ASSIGN 1,MP2
                              TEST LE P1,10,BYBY
                            написал бы
                            ExpandedWrap disabled
                              ASSIGN time,AC1
                              ...
                              TEST LE (AC1-P$time),10,BYBY
                            AC1 - абсолютное модельное время

                            можно ышо красивше

                            ExpandedWrap disabled
                              MARK 2
                              ...
                              TEST LE MP2,10,BYBY


                            собственно MARK 2 делает абсолютно то же самое, что и ASSIGN 2,C1. А MP2 это ничто иное как AC1-P2. Нет смысла помещать эти данные в первый параметр. (Поскольку оператором RESET вы не пользуетесь, С1 всегда равно АС1)

                            Или ваашэ сделать вот как
                            ExpandedWrap disabled
                              MARK
                              ...
                              TEST LE M1,10,BYBY

                            Минимализьм ))

                            мм.. Kappi4, было б неплохо к своему коду еще хоть чуть коментов. Всетаки чужой код разбирать - проще написать свой..
                            Сообщение отредактировано: TEMENb -
                              Помогите, пожалуйста. Я отчаялась.
                              В общем, мне нужно выбрать многоканальное устройство из 3-х, которое меньше всего занято.


                              3 ESKAL STORAGE 35
                              4 GENERATE 3,1
                              5 SELECT MIN 1,1,3,,S
                              7 ENTER P1
                              9 ADVANCE 400
                              10 LEAVE P1


                              Проблема в том, что я не знаю, что писать в блок ENTER. Если пишу Р1, GPSS выдает, что "обращение к несуществующему устр-ву" ну или как-то так.

                              Посоветуйте?
                                Цитата Nymphadora @
                                3 ESKAL STORAGE 35
                                4 GENERATE 3,1
                                5 SELECT MIN 1,1,3,,S
                                7 ENTER P1
                                9 ADVANCE 400
                                10 LEAVE P1


                                Все дело в том, что у вас несуществует МКУ с именами 1, 2, 3.
                                соответственно селект ничего не выбирает и никуда не ложит.
                                Поэтому необходимо обьявить три МКУ с именами 1, 2, 3.
                                Но конструкция
                                1 STORAGE 35 - не допустима ;)
                                поэтому выход такой.
                                Сначала обьявить некую константу, а потом обьявлять МКУ по имени константы. т.о. получаем МКУ с числовым(значение константы) и символьным(имя константы) именем


                                ExpandedWrap disabled
                                  stor1   equ 1
                                  stor2   equ 2
                                  stor3   equ 3
                                  stor1   STORAGE 35
                                  stor2   STORAGE 35
                                  stor3   STORAGE 35
                                      GENERATE    3,1
                                      assign  1,1
                                      SELECT MIN 1,1,3,,S
                                      ENTER   P1
                                      ADVANCE 400
                                      LEAVE   P1
                                      terminate   1
                                      start   1000


                                в отчете видим
                                Цитата
                                STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
                                STOR1 35 0 0 35 370 1 33.688 0.963 0 287
                                STOR2 35 0 0 35 368 1 33.539 0.958 0 0
                                STOR3 35 0 0 35 367 1 33.478 0.957 0 0

                                и знаем, что STOR1 - устройство номер 1, STOR2 - устройство номер 2, STOR3 - устройство номер 3.

                                Я ж говорил, что все просто ;)

                                Добавлено
                                Оооооооооооо, так фотку сразу надо было ставить.. помощь пришла бы в три раза быстрее!! :D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (54) « Первая ... 13 14 [15] 16 17 ...  53 54


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