Построение и исследование аналитической модели дискретно-стохастической системы массового обслуживания
Автор: ziabaub • Октябрь 7, 2020 • Лабораторная работа • 6,177 Слов (25 Страниц) • 525 Просмотры
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ и РАДИОЭЛЕКТРОНИКИ
Факультет КСиС
Кафедра ПОИТ
Моделирование
и
Системный анализ и машинное моделирование
Лабораторная работа № 3
Построение и исследование аналитической модели дискретно-стохастической системы массового обслуживания
Вариант № 11
Выполнил
студент: гр. 751003 Плескач К. С.
Проверил: Мельник Н. И.
Минск
2020
Построить граф состояний P-схемы
11.[pic 1][pic 2][pic 3][pic 4][pic 5][pic 6][pic 7][pic 8][pic 9][pic 10][pic 11][pic 12]
Элементы:
[pic 13][pic 14][pic 15][pic 16][pic 17]
[pic 18][pic 19][pic 20][pic 21][pic 22][pic 23][pic 24]
Кодирование состояний:
t = {2, 1} – количество тактов до появления следующей заявки;
n = {0, 1, 2} – количество заявок в очереди;
k1 = {0, 1} – состояние первого канала (0 – свободен, 1 – занят);
k2 = {0, 1} – состояние второго канала (0 – свободен, 1 – занят).
Общая кодировка состояний системы:
[pic 25]
Вероятности просеивания (не обслуживания заявки):
π1 = 0,5
π2 = 0,5
Граф состояний:
[pic 26]
Решение системы в MathCad:
[pic 27]
[pic 28]
[pic 29]
Решение системы:
[pic 30]
Исходя из полученных данных рассчитаем теоретические значения показателей эффективности:
Ротк – вероятность отказа; Рбл – вероятность блокировки; Lоч – средняя длина очереди; Lc – среднее число заявок, находящихся в системе; Q – относительная пропускная способность; А – абсолютная пропускная способность; Wоч – среднее время пребывания заявки в очереди; Wс – среднее время пребывания заявки в системе, Kкан – коэффициент загрузки канала (вероятность занятости канала).
[pic 31]
[pic 32]
[pic 33]
Код программы:
class DataProvider: NSObject {
private let N = 1_000_000
private let A0 = 117
private let M = 2094991
private let R0 = 17
private var Rn_1 = 0
private var Rn = 0
// MARK: - Public
var P2000 = Float.zero
var P1000 = Float.zero
var P2010 = Float.zero
var P1001 = Float.zero
var P1010 = Float.zero
var P2011 = Float.zero
var P2110 = Float.zero
var P1011 = Float.zero
var P1110 = Float.zero
var P2111 = Float.zero
var P2210 = Float.zero
var P1111 = Float.zero
var P1210 = Float.zero
var P2211 = Float.zero
var P1211 = Float.zero
var A = Float.zero
var Q = Float.zero
var Potk = Float.zero
var pBock = Float.zero
var srVremyaNahojdenuaZayavkiVSisteme = Float.zero
var wOcheredi = Float.zero
var srDlinaOcheredi = Float.zero
var srChisloZayavok = Float.zero
var k1 = Float.zero
var k2 = Float.zero
var koefZagryzkiKanala1 = Float.zero
var koefZagryzkiKanala2 = Float.zero
func LehmerAlgorithm() -> Float {
Rn_1 = Rn;
Rn = (A0 * Rn_1) % M;
return Float(Rn) / Float(M);
}
func generateResult(p: Float, p1: Float, p2: Float) {
Rn = R0
var state = "2000"
var p1_cur = Float.zero
var p2_cur = Float.zero
for _ in 0..
p1_cur = LehmerAlgorithm();
p2_cur = LehmerAlgorithm();
switch state {
case "2000":
P2000 += 1
...