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

    Специализированная вычислительная система состоит из трех процессоров и общей оперативной памяти. Задания, поступающие на обработку через интервалы времени 5 ± 2 мин, занимают объем оперативной памяти размером в страницу. После трансляции первым процессором в течение 5 ± 1 мин их объем увеличивается до двух страниц и они поступают в оперативную память. Затем после редактирования во втором процессоре, которое занимает 2,5 ± 0,5 мин на страницу, объем возрастает до трех страниц. Отредактированные задания через оперативную память поступают в третий процессор на решение, требующее 1,5 ± 0,4 мин на страницу, и покидают систему, минуя оперативную память. Смоделировать работу вычислительной системы в течение 50 ч. Определить характеристики занятия оперативной памяти.

    Выдвинул следующие гипотезы для подтверждения адекватности модели:
    1)За 50 часов может поступить около 3000/(3...7)=429...1000 задания
    2)За 50 часов первый процессор обработает около 3000/(4..6) = 500..750 заданий
    3)За 50 часов второй процессор обработает около 3000(2..3)/2 = 500..750 заданий
    4)За 50 часов третий процессор обработает около 3000/(1,1...1,9)/3 = 526...909 заданий

    Сделал данную модель в GPSS и AnyLogic, но данные разнятся. GPSS выдает значения близкие к гипотезам, а вот AnyLogic почему-то заявки копятся в очереди. И не совсем понятно в чем дело, вроде по логике они должны копиться. Делал несколько запусков, смотрел, вроде верно. Есть идеи что я делаю не так? Какая из этих двух моделей не правильная? Смотрели с преподавателем, сказала что вроде все правильно, но сказала разобраться в чем проблема, почему данные не сходятся. А я даже не знаю где проблема.

    Код:
    ExpandedWrap disabled
      PU1 EQU 1
      PU2 EQU 2
      PU3 EQU 3
      RAM EQU 4
       
      SIMULATE
          GENERATE (UNIFORM(4,3,7))
          ASSIGN 1,1
       
      MQ  QUEUE RAM
          TEST E P1,1,MET2
          
      MET1    SEIZE PU1
          DEPART RAM
          ADVANCE (UNIFORM(4,4,6))
          RELEASE PU1
          ASSIGN 1,2
          ASSIGN 2,2
          TRANSFER ,MQ
       
      MET2    TEST E P1,2,MET3
       
          SEIZE PU2
          DEPART RAM
      WAIT1   ADVANCE (UNIFORM(4,2,3))
          LOOP 2,WAIT1
          RELEASE PU2
          ASSIGN 1,3
          ASSIGN 2,3
          TRANSFER ,MQ
       
      MET3    SEIZE PU3
          DEPART RAM
      WAIT2   ADVANCE (UNIFORM(4,1.1,1.9))
          LOOP 2,WAIT2
          RELEASE PU3
          TERMINATE
       
      TIME    GENERATE 3000
          TERMINATE 1
          START 1


    Касательно программы: с преподавателем решили вместо страниц ОЗУ использовать цикл во втором и третьем процессоре.




    Прикреплённый файлПрикреплённый файлModel.rar (6,28 Кбайт, скачиваний: 193)
    Прикреплённая картинка
    Прикреплённая картинка

    Прикреплённая картинка
    Прикреплённая картинка
      Для GPSS.
      Без лишних TEST'ов + корректный сбор статистики:
      ExpandedWrap disabled
        PU1 EQU 1
        PU2 EQU 2
        PU3 EQU 3
        RAM EQU 4
         
        SIMULATE
         
            GENERATE (UNIFORM(4,3,7))
         
            QUEUE RAM
                queue cpu1
            SEIZE PU1          
            depart cpu1
            ADVANCE (UNIFORM(4,4,6))
            RELEASE PU1
            ASSIGN 1,2
            ASSIGN 2,2
         
            queue RAM
            queue cpu2
            SEIZE PU2
            depart cpu2
        WAIT1   ADVANCE (UNIFORM(4,2,3))
            LOOP 2,WAIT1
            RELEASE PU2
            ASSIGN 1,3
            ASSIGN 2,3
         
            queue RAM
            queue cpu3
            SEIZE PU3
            depart cpu3
        WAIT2   ADVANCE (UNIFORM(4,1.1,1.9))
            LOOP 2,WAIT2
            RELEASE PU3
            depart RAM,3
            TERMINATE
         
        TIME    GENERATE 3000
            TERMINATE 1
            START 1

      Так тоже можно, минимум блоков:
      ExpandedWrap disabled
        WorkTime EQU 5
        WorkTime matrix ,3,2    ;время обработка заданий
        initial WorkTime,0
        initial mx5(1,1),4
        initial mx5(1,2),6
        initial mx5(2,1),2
        initial mx5(2,2),3
        initial mx5(3,1),1.1
        initial mx5(3,2),1.9
         
            GENERATE (UNIFORM(4,3,7))
            ASSIGN 1,1
            ASSIGN 2,P1
            ASSIGN 3,3
         
        met2    QUEUE RAM
                QUEUE P1
            SEIZE P1            
            DEPART P1
        met1    ADVANCE (UNIFORM(4,mx5(P1,1),mx5(P1,2)))
            LOOP 2,met1
            RELEASE P1
            ASSIGN 1+,1
            ASSIGN 2,P1
            LOOP 3,met2
         
            DEPART RAM,3
            TERMINATE
         
            GENERATE 3000
            TERMINATE 1
            START 1

      Прикреплённый файлПрикреплённый файл101.3TextCPU.7z (77,4 Кбайт, скачиваний: 794)
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0217 ]   [ 24 queries used ]   [ Generated: 19.03.24, 05:30 GMT ]