Моделирование работы. Simula - (реферат)

Моделирование работы. Simula - (реферат)

Дата добавления: март 2006г.

    Моделирование работы в машинном зале в терминах 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



Реклама
В соцсетях
рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать рефераты скачать