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

В студенческом машинном зале расположены две мини-ЭВМ и одно
устройство подготовки данных (УПД). Студенты приходят с интервалом 8±3 мин. и
треть из них хочет испытать УПД и ЭВМ, а остальные только ЭВМ. Допустимое
количество студентов в машинном зале 4 чел., включая работающего на
УПД. Работа на УПД занимает 9±4 мин. Работа на ЭВМ - 15±10 мин.; 20%
работавших на ЭВМ возвращаются для повторного использования УПД и ЭВМ и остаются
при этом в машинном зале. Если студент пришел в машинный зал, а там уже есть 4
чел., то он ждет не более 15±2 мин. в очереди в машинный зал и, если нет
возможности в течение этого времени начать работать, то он
уходит. распределение общего времени работы студента в машинном
зале, Схема решения в терминах предметной области. Собираясь
приступить к работе в машинном зале, студент подходит к нему и проверяет, есть
ли очередь в машинный зал. Если таковой нет, то он ищет в последнем свободное
место, а если очередь есть, то становится в ее конец. Затем, либо входит в
машинный зал, либо создает очередь, состоящую из одного человека (его самого).
После этого ждет в течение 15±2 мин. Если за это время место в зале не
освобождается, студент уходит, в противном же случае, он покидает очередь и
попадает в машинный зал. Работа студента в машинном зале происходит следующим
образом. Студент определяет, приступить ли ему к работе УПД, а затем на одной из
ЭВМ (по условию задачи, число таких студентов составляет треть от общего числа
посетителей) или пройти сразу к ЭВМ (все остальные). После работы на ЭВМ каждый
студент может либо покинуть машинный зал, либо приступить к повторной работе
(20%), теперь уже точно на УПД и ЭВМ. M,U,C,P – целые числа, служащие
для создания в программе четырех различных потоков независимых величин; MZCap – целое число,
обозначающее число мест в машинном зале; MAX – максимальная
длина очереди; QUEUE – очередь в машинный
зал; Std – массив действительных чисел из 10
элементов, в которые помещаются данные о числе студентов, проделавших работу за
i-й интервал времени [Ti-1,Ti]; GENER – процесс,
имитирующий появление студента у машинного зала; UPD – процесс, изображающий работу УПД; Для получения результатов используются перечисленные в пункте
2.3.1 глобальные переменные и следующие соотношения: Максимальная длина очереди = MAX; Распределение общего времени работы студента в машинном
зале получено в виде массивов std и tim. Максимальная длина очереди =
3; Распределение общего времени
работы студентов в машинном зале приведено в таблице 2.1. 120 –
135 Рассмотренный далее метод не претендует на абсолютную
точность, но, тем не менее, позволяет примерно оценить соответствие модели
реальной ситуации. Метод заключается в использовании внесения изменений в
начальные данные. При этом анализируются изменения получаемых
результатов. Вся информация
по измененным входным данным и полученным результатам представлена в таблице 3.1
Знаком "" отделяются значения для исходной задачи от значений для задачи,
получаемой в результате внесения изменений. Среднее время ожидания, мин. 48 100 81,2
83,6 % 3 3 Приведенные здесь результаты показывают, что
полученная модель с достаточной точностью отображает реальную ситуацию в рамках
поставленной задачи. В приведенной ниже
таблице даны искомые значения, полученные при помощи двух моделей: в реализации
на GPSS и в реализации на языке Симула. 78 Как видно, приведенные величины
отличаются друг от друга несущественно. Это означает, что обе модели с
достаточной точностью можно считать адекватными друг другу
. integer MZCap; comment вместительность
машинного зала;
Nmb; comment число студентов, дождавшихся обслуживания; integer Pupd, comment время простоя УПД;
ref (HEAD) QUPD; comment очередь на УПД; ref (COMP) COMP1; comment пара мини-
ЭВМ; real
array tim (1:9); comment интервалы гистограммы;
CREAT: activate new STUDENT; comment студент подходит к машинному залу; comment описание действий студента; на ЭВМ (1 и 2); wat; comment время, до которого студент может ждать в
очереди;
vyb:=randint(1,3,P); comment если 3, то работа на УПД и ЭВМ;
wat:=time+randint(13,17,P); comment время максимального ожидания; if (QUEUE.cardinal>=MAX) then comment если число людей в очереди
больше, while MZCap>=4 do begin comment пока в машинном
зале нет мест; if time>wat
then begin comment если текущее время превысило максимум; Toz:=Toz+time-tm; comment увеличение суммарного времени ожида-
out; comment покинуть
очередь; Nmb:=Nmb+1; comment увеличение числа студентов, дождавшихся
tm:=time; comment засечь время; UPD:
into(QUPD); comment занять очередь на УПД;
into(QCOMP); comment занять очередь на ЭВМ; if rep=5
then comment если работу нужно повторить;
histo(std,tim,time-tm,1); comment сохранить статистику; comment описание работы мини-ЭВМ; integer
Nach; comment время начала простоя;
hold(randint(5,25,C)/2); comment работает на ЭВМ;
passivate; comment ждать следующего студента; comment
описание работы УПД; integer Nach; comment время начала простоя; hold(randint(5,13,U)); comment работает на УПД; passivate; comment ждать следующего студента; comment
инициализация потоков случайных чисел; QUPD:-new HEAD; comment
создание очереди на УПД; COMP1:-new COMP; comment
создание ЭВМ; tim(5):=75; tim(6):=90;
tim(7):=105; tim(8):=120; hold(2880); comment моделирование
работы системы в течение 48 часов; outfix(1-
Pcomp/time,3,5);outimage; comment загрузка ЭВМ; outfix(MAX,0,5);outimage; comment
максимальная длина очереди; comment вывод распределения общего
времени работы студентов в машинном зале; outint(std(I),11);
comment число студентов;