Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

890541_Mod_v5

.docx
Скачиваний:
7
Добавлен:
29.07.2022
Размер:
437.46 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Факультет компьютерных систем и сетей

Кафедра ЭВМ

Отчет по контрольной работе №1

Тема: «Аналитическое моделирование дискретно-схоластической СМО»

Вариант 5

Выполнила: Игнатович А.О. группа 890541

Проверил: Русин В.Г.

Минск, 2022

Задание 1. Построить граф состояний СМО. Смысл кодировки раскрыть.

P-схема:

Э лементы:

– источник с фиксированным временем ожидания выдачи заявки и дисциплиной блокировки;

очередь на 1 заявку;

канал обработки заявок с вероятностью просеивания π1;

– канал обработки заявок с вероятностью просеивания π2.

Кодирование состояний:

с = {0,1,2} – состояние источника (0 – заблокирован, 1/2 количество тактов до выдачи заявки);

n = {0,1} – количество заявок в очереди;

k1 = {0,1} – состояние первого канала (0 – свободен, 1 – занят);

k2 = {0,1} – состояние второго канала (0 – свободен, 1 – занят).

Общая кодировка состояний системы:

Задание 2. Для СМО построить имитационную можель и исследовать ее (разработать алгоритм и написать имитирующую прогрумму, предусматривающую сбор и статичтическую обработку данных для получения оценок заданных харакреристик СМО).

Вероятности просеивания:

Цель исследования: Рбл – вероятность блокировки

Граф состояний:

Построение аналитической модели:

Нормировочное уравнение:

Решение системы в MathCad:

Исходя из полученных данных, рассчитаем теоретические значения вероятности блокировки ( ), среднее время пребывания заявки в системе (Wс) и среднее число заявок в очереди (Lоч):

Листинг программы:

#include <iostream>

#include <cstdlib>

#define N 1000000

using namespace std;

long long A0 = 117, M = 2094991, R0 = 17;

long long Rn_1, Rn;

double LehmerAlgorithm()

{

Rn_1 = Rn;

Rn = (A0 * Rn_1) % M;

return (double)Rn / (double)M;

}

int main()

{

Rn = R0;

char state[5] = "2000";

double pi1 = 0.75, pi2 = 0.6;

do

{

cout << endl << "pi1 = ";

cin >> pi1;

} while (pi1 < 0 || pi1 > 1);

do

{

cout << endl << "pi2 = ";

cin >> pi2;

} while (pi2 < 0 || pi2 > 1);

double pi1_cur, pi2_cur;

int P2000 = 0, P1000 = 0, P2010 = 0, P1010 = 0, P1001 = 0, P2011 = 0, P1011 = 0, P2111 = 0, P0111 = 0, P1111 = 0;

int Lo = 0, Lc = 0, L1 = 0, L2 = 0, Ac = 0, T = 0;

for (int i = 0; i < N; i++)

{

pi1_cur = LehmerAlgorithm();

pi2_cur = LehmerAlgorithm();

// 2000

if (!(strcmp(state, "2000")))

{

P2000++;

strcpy(state, "1000");

}

else

{

// 1000

if (!(strcmp(state, "1000")))

{

P1000++;

strcpy(state, "2010");

}

else

{

// 2010

if (!(strcmp(state, "2010")))

{

P2010++;

Lc++;

T++;

L1++;

if (pi1_cur <= pi1) { strcpy(state, "1010"); }

if (pi1_cur > pi1) { strcpy(state, "1000"); Ac++; }

}

else

{

// 1010

if (!(strcmp(state, "1010")))

{

P1010++;

Lc++;

L1++;

if (pi1_cur <= pi1) { strcpy(state, "2011"); }

if (pi1_cur > pi1) { strcpy(state, "2010"); Ac++; }

}

else

{

// 1001

if (!(strcmp(state, "1001")))

{

P1001++;

Lc++;

L2++;

if (pi2_cur <= pi2) { strcpy(state, "2011"); }

if (pi2_cur > pi2) { strcpy(state, "2010"); Ac++; }

}

else

{

// 2011

if (!(strcmp(state, "2011")))

{

P2011++;

Lc+=2;

T++;

L1++;

L2++;

if ((pi1_cur <= pi1) && (pi2_cur <= pi2)) { strcpy(state, "1011"); }

if ((pi1_cur <= pi1) && (pi2_cur > pi2)) { strcpy(state, "1010"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur <= pi2)) { strcpy(state, "1001"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur > pi2)) { strcpy(state, "1000"); Ac += 2; }

}

else

{

// 1011

if (!(strcmp(state, "1011")))

{

P1011++;

Lc += 2;

L1++;

L2++;

if ((pi1_cur <= pi1) && (pi2_cur <= pi2)) { strcpy(state, "2111"); }

if ((pi1_cur <= pi1) && (pi2_cur > pi2)) { strcpy(state, "2011"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur <= pi2)) { strcpy(state, "2011"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur > pi2)) { strcpy(state, "2010"); Ac += 2; }

}

else

{

// 2111

if (!(strcmp(state, "2111")))

{

P2111++;

Lo++;

Lc += 3;

T++;

L1++;

L2++;

if ((pi1_cur <= pi1) && (pi2_cur <= pi2)) { strcpy(state, "1111"); }

if ((pi1_cur <= pi1) && (pi2_cur > pi2)) { strcpy(state, "1011"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur <= pi2)) { strcpy(state, "1011"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur > pi2)) { strcpy(state, "1010"); Ac += 2; }

}

else

{

// 1111

if (!(strcmp(state, "1111")))

{

P1111++;

Lo++;

Lc += 3;

L1++;

L2++;

if ((pi1_cur <= pi1) && (pi2_cur <= pi2)) { strcpy(state, "0111"); }

if ((pi1_cur <= pi1) && (pi2_cur > pi2)) { strcpy(state, "2111"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur <= pi2)) { strcpy(state, "2111"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur > pi2)) { strcpy(state, "2011"); Ac += 2; }

}

else

{

// 0111

if (!(strcmp(state, "0111")))

{

P0111++;

Lo++;

Lc += 3;

L1++;

L2++;

if ((pi1_cur <= pi1) && (pi2_cur <= pi2)) { strcpy(state, "0111"); }

if ((pi1_cur <= pi1) && (pi2_cur > pi2)) { strcpy(state, "2111"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur <= pi2)) { strcpy(state, "2111"); Ac++; }

if ((pi1_cur > pi1) && (pi2_cur > pi2)) { strcpy(state, "2011"); Ac += 2; }

}

}

}

}

}

}

}

}

}

}

}

cout << endl << "P2000 = " << (double)P2000 / (double)N << endl;

cout << "P1000 = " << (double)P1000 / (double)N << endl;

cout << "P2010 = " << (double)P2010 / (double)N << endl;

cout << "P1010 = " << (double)P1010 / (double)N << endl;

cout << "P1001 = " << (double)P1001 / (double)N << endl;

cout << "P2011 = " << (double)P2011 / (double)N << endl;

cout << "P1011 = " << (double)P1011 / (double)N << endl;

cout << "P2111 = " << (double)P2111 / (double)N << endl;

cout << "P1111 = " << (double)P1111 / (double)N << endl;

cout << "P0111 = " << (double)P0111 / (double)N << endl << endl;

cout << "P = " << (double)P0111 / (double)N << endl;

cout << "Lo = " << (double)Lo / (double)N << endl;

cout << "Wc = " << ((double)Lo / (double)T) + ((pi1 == 1) ? 0 : ((double)L1 / (double)(Ac))) + ((pi2 == 1) ? 0 : ((double)L2 / (double)(Ac))) << endl;

return 0;

}

Результат выполнения программы:

Соседние файлы в предмете Моделирование