fork download
  1. * GPSS-МОДЕЛЬ УЗЛА ВЫЧИСЛИТЕЛЬНОЙ СЕТИ
  2. * =======================================
  3. * Система обработки задач трёх типов на двух компьютерах
  4. * с передачей результатов по двум каналам связи
  5.  
  6. * ============ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ И УСТРОЙСТВ ============
  7.  
  8. * Переменные для подсчёта решённых задач по типам
  9. QTYPES VARIABLE 0 ; Счётчик задач типа A
  10. QTYPEB VARIABLE 0 ; Счётчик задач типа B
  11. QTYPEC VARIABLE 0 ; Счётчик задач типа C
  12.  
  13. * Устройства (компьютеры)
  14. COMPUTER STORAGE 2 ; 2 компьютера
  15.  
  16. * Очереди задач (GPSS автоматически создаёт очереди)
  17. * Queue 1 - для компьютера 1
  18. * Queue 2 - для компьютера 2
  19.  
  20. * Каналы связи (обслуживающие устройства)
  21. CHANNEL1 SEIZE ; Канал К1
  22. CHANNEL2 SEIZE ; Канал К2
  23.  
  24. * ============ ПАРАМЕТРЫ РАСПРЕДЕЛЕНИЙ ============
  25.  
  26. * Интервалы между поступлениями задач
  27. * Средний интервал = 20 мин, λ = 1/20 = 0.05 задач/мин
  28. * Поуассоновский поток реализуется через экспоненциальное распределение
  29.  
  30. * Время обслуживания:
  31. * Тип A: средн. 10 мин, σ = 1.5 мин (нормальное)
  32. * Тип B: средн. 20 мин, σ = 1.5 мин (нормальное)
  33. * Тип C: средн. 15 мин, σ = 1.5 мин (нормальное)
  34. * Передача: средн. 3.5 мин (экспоненциальное)
  35.  
  36. * ============ ГЕНЕРАТОР ПОСТУПЛЕНИЯ ЗАДАЧ ============
  37.  
  38. GENERATE 20,,,,,1 ; Порождение задач каждые 20 мин (в среднем)
  39. * ; Экспоненциальное распределение
  40. * Определение типа задачи по вероятностям
  41.  
  42. ASSIGN TYPE, RNPO(1) ; Выбор типа задачи случайно
  43. * RNPO(1): 0.4 -> тип A, 0.25 -> тип B, 0.35 -> тип C
  44.  
  45. BRANCH 1,BEGIN
  46. .4, TYPEA ; 40% - задачи типа A
  47. .65, TYPEB ; 25% - задачи типа B (0.4 + 0.25)
  48. ,TYPEC ; 35% - задачи типа C (остальные)
  49.  
  50. * ============ ВЕТВЬ ЗАДАЧ ТИПА A ============
  51.  
  52. TYPEA ASSIGN AT, 10 ; Среднее время решения 10 мин
  53. ASSIGN ST, 1.5 ; Стандартное отклонение 1.5 мин
  54. BRANCH 1, QUEUE1
  55.  
  56. * ============ ВЕТВЬ ЗАДАЧ ТИПА B ============
  57.  
  58. TYPEB ASSIGN AT, 20 ; Среднее время решения 20 мин
  59. ASSIGN ST, 1.5 ; Стандартное отклонение 1.5 мин
  60. BRANCH 1, QUEUE1
  61.  
  62. * ============ ВЕТВЬ ЗАДАЧ ТИПА C ============
  63.  
  64. TYPEC ASSIGN AT, 15 ; Среднее время решения 15 мин
  65. ASSIGN ST, 1.5 ; Стандартное отклонение 1.5 мин
  66. BRANCH 1, QUEUE1
  67.  
  68. * ============ РАСПРЕДЕЛЕНИЕ НА КОМПЬЮТЕРЫ ============
  69.  
  70. QUEUE1 TEST NE Q(1), Q(2), COMP1 ; Если очередь 1 короче
  71. BRANCH 1, COMP2 ; Иначе компьютер 2
  72.  
  73. COMP1 QUEUE 1 ; Встать в очередь 1
  74. SEIZE COMPUTER, 1 ; Захватить место в массиве
  75. DEPART 1 ; Покинуть очередь 1
  76. ADVANCE AT, ST ; Обслуживание с нормальным распред.
  77. RELEASE COMPUTER, 1 ; Освободить компьютер
  78. BRANCH 1, TRANSMIT ; Перейти к передаче
  79.  
  80. COMP2 QUEUE 2 ; Встать в очередь 2
  81. SEIZE COMPUTER, 1 ; Захватить место в массиве
  82. DEPART 2 ; Покинуть очередь 2
  83. ADVANCE AT, ST ; Обслуживание
  84. RELEASE COMPUTER, 1 ; Освободить компьютер
  85. BRANCH 1, TRANSMIT ; Перейти к передаче
  86.  
  87. * ============ ПЕРЕДАЧА РЕЗУЛЬТАТОВ ПО КАНАЛАМ ============
  88.  
  89. TRANSMIT TEST NE FCH1, 1, CHAL1 ; Если канал К1 свободен
  90. BRANCH 1, CHAL2 ; Иначе К2
  91.  
  92. CHAL1 SEIZE CHANNEL1 ; Захватить канал К1
  93. ADVANCE 3.5, , , 1 ; Передача 3.5 мин (экспонента)
  94. RELEASE CHANNEL1 ; Освободить канал К1
  95. BRANCH 1, COUNT
  96.  
  97. CHAL2 SEIZE CHANNEL2 ; Захватить канал К2
  98. ADVANCE 3.5, , , 1 ; Передача 3.5 мин (экспонента)
  99. RELEASE CHANNEL2 ; Освободить канал К2
  100. BRANCH 1, COUNT
  101.  
  102. * ============ ПОДСЧЁТ РЕЗУЛЬТАТОВ ============
  103.  
  104. COUNT TEST EQ TYPE, 1, COUNTA ; Если тип A
  105. TEST EQ TYPE, 2, COUNTB ; Если тип B
  106. BRANCH 1, COUNTC
  107.  
  108. COUNTA SAVEVALUE QTYPES, +1 ; Увеличить счётчик A
  109. BRANCH 1, DONE
  110.  
  111. COUNTB SAVEVALUE QTYPEB, +1 ; Увеличить счётчик B
  112. BRANCH 1, DONE
  113.  
  114. COUNTC SAVEVALUE QTYPEC, +1 ; Увеличить счётчик C
  115. BRANCH 1, DONE
  116.  
  117. DONE TERMINATE ; Завершить текущую задачу
  118.  
  119. * ============ ОКОНЧАНИЕ МОДЕЛИРОВАНИЯ ============
  120.  
  121. GENERATE 6000 ; Выход через 100 часов
  122. TERMINATE 1 ; Завершить симуляцию
  123.  
  124. END
Success #stdin #stdout #stderr 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Error: near line 1: near "*": syntax error