close

Вход

Забыли?

вход по аккаунту

?

Моделирование 4

код для вставкиСкачать
МОСКОВСКИ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Лабораторная работа №3.
"МОДЕЛИРОВАНИЕ СИСТЕМЫ МАССОВОГО ОБСЛУЖИВАНИЯ"
Выполнил: студент группы А-12-11
Наполов Александр
Вариант №4
Москва 2013
Задание:
* Составить список состояний СМО; * Нарисовать граф состояний СМО;
* Составить и решить систему уравнений Колмогорова;
* Рассчитать основные характеристики СМО: 1. Вероятность отказа;
2. Коэффициент загрузки;
3. Пропускная способность; 4. Среднее число заявок, обслуживаемое в СМО
5. Среднее время пребывания заявки в очереди
6. Средняя длина очереди
* Во время лабораторной работы провести численное моделирование этого же варианта СМО по методу, указанному в задании. * Сравнить основные характеристики СМО, полученные в результате аналитического и численного расчета.
.
Параметры варианта:
№Число каналовДлина очередиИнтенсивность потока событий λСреднее время обслуживания 1/μМетод численного моделирования3402.252Цепь Маркова
Ход работы:
Список состояний СМО:
Имя состоянияСколько обслуживаетсяСколько в очередиS000S110S220S330S440
Граф состояний СМО:
Система уравнений Колмогорова:
−λp0 + μp1 = 0
−λp1 − μp1+λp0+2μp2= 0
−λp2 − 2μp2+λp1+3μp3= 0
−λp3 − 3μp3+λp2+4μp4= 0 p0 + p1 + p2 + p3+ p4 = 1
Получаем:
P0=0.02912; P1=0.11648; P2=0.23296; P3=0.3106; P4=0.3106
Основные характеристики СМО:
1) Вероятность отказа Ротк = Р3 = 0,3106
2) Коэффициент загрузки Рзагр = 1 - Ро = 0,6894
3) Пропускная способность А=λ*(1 - Ротк) = 1,55115
4) Среднее число заявок, обслуживаемое в СМО:
nср = 2.7566
5) Средняя длина очереди
lcp = 0
6) Среднее время пребывания заявки в очереди
Tоч = 0
Код программы имитации СМО:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
nmax=5;
mmax=5;
Lambda=2.25;
mu=1/2;
type
TMatrix=array [1..nmax, 1..mmax] of Real;
var
Mi: TMatrix;//Матрица интенсивностей переходов для СМО
//Mi[i,j]-лямбда-и-жи, интенсивность перехода в состояние j если она была в i. i=0-нет заявок
i,j: ShortInt;
N,N1: Integer;//N-счётчик числа обслуженных заявок; N1-заданное кол-во заявок
Ti: array [1..nmax] of Real;//Ti-время пребывания системы в состоянии i
T,tmin,nsr,B,C:Real;//T-счётчик модельного времени;
tsA,tsB,k: Real;//время до перехода из текущего i в j
begin
k:=1;
//инициализируем генератор случайных чисел;
Randomize;
//ф-ция Random (без аргументов) возвращает
//cлучайное число с равномерным законом распределения на интервале[0,1)
//формула диапазона [a,b]
//x:=random(b-a+1)+a;
//-----------------------------------------//
//создаём матрицу интенсивностей переходов
for i:=1 to nmax do
for j:=1 to mmax do
begin
if (i=j+1) then begin//нижняя диагональ
Mi[i,j]:=k*mu ; k:=k+1;
end
else
begin
if (j=i+1) then//верхняя диагональ
Mi[i,j]:=Lambda
else
Mi[i,j]:=0
end;
end;
Mi[2,1]:=mu;
//-----------------------------------------//
//-----------------------------------------//
N:=0; T:=0;//N-кол-во обслуженных заявок изначально равно нулю
Writeln('Kolichestvo zayavok ');
Readln(N1);
i:=1;
while N<N1 do
begin
if ((i>1) and (i<mmax)) then //не вырожденный случай
begin
tsA:=((-1)/Mi[i,i-1])*ln(Random); {"ниже главной диагонали"}
tsB:=((-1)/Mi[i,i+1])*ln(Random); {"выше главной диагонали"}
//находим минимальный и его J
if tsA>tsB then
begin
tmin:=tsB; j:=i+1
end
else
begin
tmin:=tsA; j:=i-1
end; end
else //вырожденные случаи
begin
if i=1 then
begin
tmin:=((-1)/Mi[i,i+1])*ln(Random);
j:=i+1;
end
else
//if i=nmax then
begin
tmin:=((-1)/Mi[i,i-1])*ln(Random);
j:=i-1;
end;
end;
T:=T+tmin;//увеличиваем счётчик модельного времени
Ti[i]:=Ti[i]+tmin;//увеличиваем счётчик пребывания системы в состоянии i
if J<i then Inc(N);//увеличиваем кол-во обслуженных заявок
{if N<N1 then} i:=j;
end;
//-----------------------------------------//
//Вывод//
//-----------------------------------------//
Writeln('=======================================');
Writeln('Nacalnie dannie:');
Writeln('Lambda = 2.25');
Writeln('1/m = 2');
Writeln('K = 4');
Writeln('L = 0');
Writeln('=======================================');
Writeln('Praktika:');
Writeln('Prinyato zayavok: ', N);
Writeln('Vse zatr vremya: ', T:6:2);
Writeln('Sistema v raznih sostoyaniyah: ');
for i:=1 to nmax do
Writeln('S[',i-1,']',' ','p[',i-1,']=',Ti[i]/T:6:4);
Writeln('Otkaz: ', Ti[nmax]/T:6:4);
Writeln('Propusknaya sposobnost: ', (2.25*(1-(Ti[nmax]/T))):6:4);
//Writeln('Среднее число обслуж-ся заявок: ', ((Ti[2]+2*Ti[3])/T):6:4);
Writeln('AVG kanalov : ', ((Ti[2]+2*Ti[3]+3*Ti[4]+4*Ti[5])/T):6:4);
nsr:=0;
for i:=3 to 5 do
nsr:=nsr+Ti[i]*(i-2);
Writeln('Srednya dlina ocheredi: ', 0);
//Writeln('Ср. время преб-ния заяв. в СМО: ', (((Ti[2]+2*Ti[3]+3*Ti[4]+4*Ti[5])/T)/Lambda):6:4);
nsr:=0; C:=0; B:=0;
for i:=1 to 2 do
C:=C+Ti[i];
for i:=1 to 4 do
B:=B+i*Ti[i];
Writeln('Srednee vremya v ocheredi: ', ((B-C)/N1):6:4);
//Writeln('Cреднее время обслуживания: ', ((((Ti[2]+2*Ti[3]+3*Ti[4]+4*Ti[5])/T)-(nsr/T))/Lambda):6:4);
Writeln('Press Enter');
//-----------------------------------------//
readln;
end.
Содержание выходного файла:
Результаты
Лямбда = 3.000
Коэффициент загрузки = 1.200
Количество пришедших заявок K = 3388
Длина очереди L = 0
Число заявок : 2000
Число отказов : 1384
Время обслуживания : 1123.27865
Вероятности пребывания в состояниях :
S0: p0=0.0493
S1: p1=0.1946
S2: p2=0.3320
S3: p3=0.4242
Вероятность отказа : 0.40886
Пропускная способность : 1.78139
Среднее число занятых каналов : 2.13250
Среднее время в очереди : -0.00047
Средняя длина очереди : 0.000
Анализ полученных результатов представлен в таблице Аналитический расчетЭкспериментВероятности пребывания в состоянияхP0=0.02912P0=0.0250P1=0.11648P1=0.0899P2=0.23296P2=0.2251P3=0.3106P3=0.3270P4=0.3106P4=0.3330Вероятность отказаРотк = 0,3106Ротк = 0.3330Пропускная способностьА = 1,55115А = 1.5007Среднее число занятых каналов (среднее число обслуживаемых заявок)nср = 2.7566nср = 2.8532Среднее время пребывания заявки в очередиTоч = 0Tоч = 0Средняя длина очередиlcp = 0lcp = 0
Документ
Категория
Рефераты
Просмотров
18
Размер файла
78 Кб
Теги
моделирование
1/--страниц
Пожаловаться на содержимое документа