![>](style_images/1/nav_m.gif)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.192.157] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте. Задали на курсовую работу следующее задание:
Специализированная вычислительная система состоит из трех процессоров и общей оперативной памяти. Задания, поступающие на обработку через интервалы времени 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 почему-то заявки копятся в очереди. И не совсем понятно в чем дело, вроде по логике они должны копиться. Делал несколько запусков, смотрел, вроде верно. Есть идеи что я делаю не так? Какая из этих двух моделей не правильная? Смотрели с преподавателем, сказала что вроде все правильно, но сказала разобраться в чем проблема, почему данные не сходятся. А я даже не знаю где проблема. Код: ![]() ![]() 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 Касательно программы: с преподавателем решили вместо страниц ОЗУ использовать цикл во втором и третьем процессоре. Прикреплённый файл ![]() Прикреплённая картинка
Прикреплённая картинка
|
Сообщ.
#2
,
|
|
|
Для GPSS.
Без лишних TEST'ов + корректный сбор статистики: ![]() ![]() 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 Так тоже можно, минимум блоков: ![]() ![]() 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 Прикреплённый файл ![]() |