РефератыИнформатика, программированиеМоМоделирование работы. Simula

Моделирование работы. Simula

Моделирование работы в машинном зале в терминах
Simula


Постановка задачи.


В студенческом машинном зале расположены две мини-ЭВМ и одно устройство подготовки данных (УПД). Студенты приходят с интервалом 8±3 мин. и треть из них хочет испытать УПД и ЭВМ, а остальные только ЭВМ. Допустимое количество студентов в машинном зале 4 чел., включая работающего на УПД.


Работа на УПД занимает 9±4 мин. Работа на ЭВМ - 15±10 мин.; 20% работавших на ЭВМ возвращаются для повторного использования УПД и ЭВМ и остаются при этом в машинном зале.


Если студент пришел в машинный зал, а там уже есть 4 чел., то он ждет не более 15±2 мин. в очереди в машинный зал и, если нет возможности в течение этого времени начать работать, то он уходит.


Смоделировать работу в машинном зале в течение 48 часов.


Определить:


· загрузку УПД и обеих ЭВМ,


· максимальную длину очереди в машинный зал,


· среднее время ожидания в очереди в машинный зал,


· распределение общего времени работы студента в машинном зале,


· количество студентов, которые не дождались возможности поработать и ушли.


Решение задачи.


Текст программы.


Текст программы полностью приведен в конце данного документа.


Схема решения в терминах предметной области.


Собираясь приступить к работе в машинном зале, студент подходит к нему и проверяет, есть ли очередь в машинный зал. Если таковой нет, то он ищет в последнем свободное место, а если очередь есть, то становится в ее конец. Затем, либо входит в машинный зал, либо создает очередь, состоящую из одного человека (его самого). После этого ждет в течение 15±2 мин. Если за это время место в зале не освобождается, студент уходит, в противном же случае, он покидает очередь и попадает в машинный зал.


Работа студента в машинном зале происходит следующим образом. Студент определяет, приступить ли ему к работе УПД, а затем на одной из ЭВМ (по условию задачи, число таких студентов составляет треть от общего числа посетителей) или пройти сразу к ЭВМ (все остальные). После работы на ЭВМ каждый студент может либо покинуть машинный зал, либо приступить к повторной работе (20%), теперь уже точно на УПД и ЭВМ.


Схема решения задачи в терминах языка Симула.


Глобальные переменные и массивы.


M,U,C,P – целые числа, служащие для создания в программе четырех различных потоков независимых величин;


I – счетчик цикла FOR (используется для вывода таблицы);


MZCap – целое число, обозначающее число мест в машинном зале;


Num – число студентов, покинувших очередь;


Nmb – число студентов, дождавшихся обслуживания;


MAX – максимальная длина очереди;


Toz – суммарное время ожидания в очереди;


Pupd – время простоя УПД;


Pcomp – время простоя обеих ЭВМ;


QUEUE – очередь в машинный зал;


QUPD – очередь на УПД;


QCOMP – очередь на ЭВМ;


UPD1 – ссылка на УПД;


COMP1 – ссылка на пару ЭВМ;


Std – массив действительных чисел из 10 элементов, в которые помещаются данные о числе студентов, проделавших работу за i-й интервал времени [Ti-1,Ti];


Tim – массив действительных чисел, в котором хранятся границы временных интервалов Ti.


Процессы.


GENER – процесс, имитирующий появление студента у машинного зала;


STUDENT – процесс, описывающий действия студента;


COMP – процесс, изображающий работу двух мини-ЭВМ;


UPD – процесс, изображающий работу УПД;


Получение результатов.


Для получения результатов используются перечисленные в пункте 2.3.1 глобальные переменные и следующие соотношения:


Загрузка УПД = 1 - Pupd/time;


Загрузка ЭВМ = 1 - Pcomp/time;


Число ушедших студентов = Num;


Максимальная длина очереди = MAX;


Среднее время ожидания в очереди =Toz/(Num + Nmb)


Распределение общего времени работы студента в машинном зале получено в виде массивов std и tim.


Комментарии к программе.


Подробные комментарии приведены в тексте программы в конце данного документа.


Результаты.


Загрузка УПД = 33,8%;


Загрузка ЭВМ = 82,1%;


Число ушедших студентов = 109;


Максимальная длина очереди = 3;


Среднее время ожидания в очереди = 9,79 мин.


Распределение общего времени работы студентов в машинном зале приведено в таблице 2.1.


Таблица 2.1
































Число студентов Интервалы времени
14 0 – 15
86 15 – 30
56 30 – 45
20 45 – 60
19 60 – 75
24 75 – 90
12 90 – 105
9 105 – 120
8 120 – 135

Исследование адекватности модели.


Метод исследования.


Рассмотренный далее метод не претендует на абсолютную точность, но, тем не менее, позволяет примерно оценить соответствие модели реальной ситуации.


Метод заключается в использовании внесения изменений в начальные данные. При этом анализируются изменения получаемых результатов.


Применение метода к поставленной задаче.


Вся информация по измененным входным данным и полученным результатам представлена в таблице 3.1 Знаком “|” отделяются значения для исходной задачи от значений для задачи, получаемой в результате внесения изменений.


Таблица 3.1












































Параметр Загрузка УПД, % Загрузка ЭВМ, % Максимальная длина очереди, чел. Среднее время ожидания, мин. Число ушедших студентов, чел.

Время работы системы


48 | 100


часов


33,8 | 32,0


81,2 | 83,1


3 | 3


9,79 | 9,72


109 | 324


Число мини-ЭВМ


2 | 1


шт.


33,8 | 21,4


81,2 | 81,0


3 | 3


9,79 | 12,12


109 | 229


Число человек в зале


4 | 2


33,8 | 31,8


81,2 | 83,6


3 | 3


9,79 | 9,76


109 | 149


Интервал между приходами студентов


8±3 | 1


33,8 | 34,0


81,2 | 83,2


3 | 18


9,79 | 14,36


109 | 2650


Число желающих использовать УПД и ЭВМ


33 | 66


%


33,8 | 47,1


81,2 | 76,6


3 | 3


9,79 | 11,17


109 | 192



Приведенные здесь результаты показывают, что полученная модель с достаточной точност

ью отображает реальную ситуацию в рамках поставленной задачи.


Сравнительный анализ моделей.


В приведенной ниже таблице даны искомые значения, полученные при помощи двух моделей: в реализации на GPSS и в реализации на языке Симула.


Таблица 4.1


























Величина GPSS Симула
Загрузка УПД 55,2 33,8
Загрузка ЭВМ 96,5 81,2
Число ушедших студентов 78 109
Максимальная длина очереди 4 3
Среднее время ожидания 9,02 9,79

Как видно, приведенные величины отличаются друг от друга несущественно. Это означает, что обе модели с достаточной точностью можно считать адекватными друг другу .


SIMULATION begin


integer M,U,C,P,I; comment потоки случайных величин и счетчик цикла;


integer MZCap; comment вместительность машинного зала;


integer Num, comment число студентов, покинувших очередь;


Nmb; comment число студентов, дождавшихся обслуживания;


integer MAX; comment максимальная длина очереди;


integer Toz; comment суммарное время ожидания в очереди;


integer Pupd, comment время простоя УПД;


Pcomp; comment суммарное время простоя двух ЭВМ;


ref (HEAD) QUEUE; comment очередь в машинный зал;


ref (HEAD) QUPD; comment очередь на УПД;


ref (HEAD) QCOMP; comment очередь на ЭВМ;


ref (UPD) UPD1; comment УПД;


ref (COMP) COMP1; comment пара мини-ЭВМ;


real array std (1:10); comment число студентов в i-м интервале;


real array tim (1:9); comment интервалы гистограммы;


comment описание работы генератора, имитирующего появление студентов;


PROCESS class GENER;


begin


CREAT: activate new STUDENT; comment студент подходит к машинному залу;


hold(randint(5,11,M)); comment интервал перед приходом следующего;


goto CREAT;


end GENER;


comment описание действий студента;


PROCESS class STUDENT;


begin


integer vyb, comment возможность выбора работы: на УПД и ЭВМ (3) или только


на ЭВМ (1 и 2);


rep, comment возможность повтора работы (5);


wat; comment время, до которого студент может ждать в очереди;


integer tm; comment фактическое время ожидания или работы;


vyb:=randint(1,3,P); comment если 3, то работа на УПД и ЭВМ;


rep:=randint(1,5,P); comment если 5, то повторить работу;


wat:=time+randint(13,17,P); comment время максимального ожидания;


tm:=time; comment засечь время;


into(QUEUE); comment встать в очередь в машинный зал;


if (QUEUE.cardinal>=MAX) then comment если число людей в очереди больше,


чем ранее;


MAX:=QUEUE.cardinal; comment записать новое значение;


while MZCap>=4 do begin comment пока в машинном зале нет мест;


hold(0.1); comment подождать 6 секунд;


if time>wat then begin comment если текущее время превысило максимум;


out; comment покинуть очередь;


Num:=Num+1; comment увеличение числа ушедших студентов;


Toz:=Toz+time-tm; comment увеличение суммарного времени ожида-


ния;


goto STOP; comment завершить все действия;


end;


end;


out; comment покинуть очередь;


Toz:=Toz+time-tm; comment увеличение суммарного времени ожидания;


Nmb:=Nmb+1; comment увеличение числа студентов, дождавшихся


обслуживания;


MZCap:=MZCap+1; comment уменьшение числа мест в машинном зале;


tm:=time; comment засечь время;


if (vyb=3) or (vyb=2) then begin comment если студент собирался работать на УПД;


UPD: into(QUPD); comment занять очередь на УПД;


activate UPD1 delay 0; comment занять УПД;


passivate; comment ждать конца выполнения работы;


end;


into(QCOMP); comment занять очередь на ЭВМ;


activate COMP1 delay 0; comment занять ЭВМ;


passivate; comment ждать конца выполнения работы;


if rep=5 then comment если работу нужно повторить;


begin


rep:=1; comment сброс повторения;


goto UPD; comment перейти к УПД;


end;


histo(std,tim,time-tm,1); comment сохранить статистику;


MZCap:=MZCap-1; comment освободить место в зале;


STOP: comment завершение всех действий;


end STUDENT;


comment описание работы мини-ЭВМ;


PROCESS class COMP;


begin


ref (STUDENT) S; comment студент, занимающий место;


integer Nach; comment время начала простоя;


START: S:-QCOMP.first; comment первый студент в очереди;


S.out; comment покидает ее,;


hold(randint(5,25,C)/2); comment работает на ЭВМ;


activate S; comment и переходит к следующему действию;


Nach:=time; comment засечь время;


passivate; comment ждать следующего студента;


Pcomp:=Pcomp+(time-Nach)/2; comment увеличить время общего простоя;


goto START;


end;


comment описание работы УПД;


PROCESS class UPD;


begin ref (STUDENT) S; comment студент, занимающий УПД;


integer Nach; comment время начала простоя;


START: S:-QUPD.first; comment первый студент в очереди;


S.out; comment покидает ее,;


hold(randint(5,13,U)); comment работает на УПД;


activate S; comment и переходит к следующему действию;


Nach:=time; comment засечь время;


passivate; comment ждать следующего студента;


Pupd:=Pupd+time-Nach; comment вычислить общее время простоя;


goto START;


end UPD;


comment инициализация потоков случайных чисел;


M:=2;U:=1;C:=3;P:=4;


QUEUE:-new HEAD; comment создание очереди в машинный зал;


QUPD:-new HEAD; comment создание очереди на УПД;


QCOMP:-new HEAD; comment создание очереди на ЭВМ;


UPD1:-new UPD; comment создание УПД;


COMP1:-new COMP; comment создание ЭВМ;


comment установка временных интервалов гистограммы;


tim(1):=15; tim(2):=30; tim(3):=45; tim(4):=60;


tim(5):=75; tim(6):=90; tim(7):=105; tim(8):=120;


tim(9):=135;


comment создание и запуск генератора студентов;


activate new GENER;


hold(2880); comment моделирование работы системы в течение 48 часов;


comment вывод полученных значений;


outfix(1-Pupd/time,3,5);outimage; comment загрузка УПД;


outfix(1-Pcomp/time,3,5);outimage; comment загрузка ЭВМ;


outfix(Num,0,5);outimage; comment число ушедших студентов;


outfix(MAX,0,5);outimage; comment максимальная длина очереди;


outfix(Toz/(Num+Nmb),2,5);outimage; comment среднее время ожидания в очереди;


comment вывод распределения общего времени работы студентов в машинном зале;


for I:=1 step 1 until 9 do


begin


outint(tim(I),11); comment время работы;


outint(std(I),11); comment число студентов;


outimage;


end;


end

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Моделирование работы. Simula

Слов:1801
Символов:16047
Размер:31.34 Кб.