ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Моделювання роботи. 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

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status