Моделирование системы массового обслуживания
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
voo[$n0] = int(($N[$kanal[$n0]] - $vp[$n0])*1000000)/1000000;
$vko[$n0] = $vno[$n0] + $vob[$n0];
$N[$kanal[$n0]] = $vko[$n0]; # сдвиг времени по данному каналу
}
{
$vno[$n0] = -1; # отказ в обслуживании
$vob[$n0] = 0;
$nvo[$n0] = "$m0->$m0";
$kanal[$n0] = '-';
}
}
{
$voo[$n0] = 0; # для данной заявки время ожидания = 0
$nvo[$n0] = 0; # для данной заявки очереди нет
$vko[$n0] = $vno[$n0] + $vob[$n0];
}
# конец выбора канала обслуживания
}
}
# ВЫВОД РЕЗУЛЬТАТОВ
$ppp = 0;
$svoo = 0;
$svob = 0;
$rabot = 0;
$otkaz = 0;
$maxvoo = $voo[1];
$minvoo = $voo[1];
$sr_voo = 0;
$skanal[$q7] = 0;
OUT "z | vp | vno | vko | kanal | nvo | vob | voo\n";($z = 1; $z<=$n0; $z++)
{($vp[$z] <= $T)
{
$ppp = $ppp + 1;
$svoo = $svoo + $voo[$z]; # считает время ожидания
$svob = $svob + $vob[$z]; # считает время обслуживания, чтобы вычитать время простоя
if ($maxvoo $voo[$z]) {$minvoo = $voo[$z];}($vno[$z] == -1) {$otkaz = $otkaz + 1;}(not $kanal[$z] eq '-') {$skanal[$q7] = $skanal[$q7] + $kanal[$z];}
$aa="$z"; $aaa=length($aa); for ($aaaa=1; $aaaa < 4-$aaa; $aaaa++) {$aa="$aa ";} $z=$aa;
$aa="$vp[$z]"; $aaa=length($aa); for ($aaaa=1; $aaaa < 9-$aaa; $aaaa++) {$aa="$aa ";} $vp=$aa;
$aa="$vno[$z]"; $aaa=length($aa); for ($aaaa=1; $aaaa < 11-$aaa; $aaaa++) {$aa="$aa ";} $vno=$aa;
$aa="$vko[$z]"; $aaa=length($aa); for ($aaaa=1; $aaaa < 11-$aaa; $aaaa++) {$aa="$aa ";} $vko=$aa;
$aa="$kanal[$z]"; $aaa=length($aa); for ($aaaa=1; $aaaa < 7-$aaa; $aaaa++) {$aa="$aa ";} $kanal=$aa;
$aa="$nvo[$z]"; $aaa=length($aa); for ($aaaa=1; $aaaa < 6-$aaa; $aaaa++) {$aa="$aa ";} $nvo=$aa;
$aa="$vob[$z]"; $aaa=length($aa); for ($aaaa=1; $aaaa < 7-$aaa; $aaaa++) {$aa="$aa ";} $vob=$aa;
$aa="$voo[$z]"; $aaa=length($aa); for ($aaaa=1; $aaaa < 9-$aaa; $aaaa++) {$aa="$aa "; $sr_voo = $sr_voo + $voo[$z];} $voo=$aa;
OUT "$z| $vp| $vno| $vko| $kanal| $nvo| $vob| $voo\n";
$vp[$z] = '-';
$vno[$z] = '-';
$vko[$z] = '-';
$kanal[$z] = '-';
$nvo[$z] = '-';
$vob[$z] = '-';
$voo[$z] = '-';
}
}
$srkanal = $srkanal + $skanal[$q7] / $ppp;
print OUT "\n\nОкончание обслуживания каждым каналом:\n";
$max_T = $N[1]; # время работы СМО
for ($q8 = 1; $q8 <= $N; $q8++)
{OUT "канал $q8 : $N[$q8]\n";($N[$q8] < $T) {$rabot = $rabot + $T;} else {$rabot = $rabot + $N[$q8];}($max_T < $N[$q8]) {$max_T = $N[$q8];}
}
$vrp = $rabot - $svob;
$svrobsl = $svrobsl + $svob;
$sr_och = $sr_och + $sr_dl_och;
$skz = $skz + $ppp;
$sotkaz = $sotkaz + $otkaz;
$svpr = $svpr + $vrp;
$smaxvoo = $smaxvoo + $maxvoo;
$vrp = int($vrp * 100) / 100;
$rabot = int($rabot * 100) / 100;
print OUT "\n\n\nСуммарное время простоя на $N каналах обслуживания за общее время $rabot часов, час: $vrp\n";
$svo = int(($svoo / $ppp)*1000000)/1000000;OUT "Минимальное время ожидания: $minvoo\n";OUT "Максимальное время ожидания: $maxvoo\n";OUT "Среднее время ожидания: $svo\n";
$potkaz = int($otkaz/$ppp*10000)/100;OUT "Количество отказов: $otkaz, $potkaz%\n";
$sr_dl_och = int($sr_voo / $max_T * 100) / 100;
print OUT "Средняя длина очереди: $sr_dl_och\n\n";
$ssvo = $ssvo + $svo;
$ppp = 0;
$otkaz = 0;
$rabot = 0;
$svob = 0;
$svo = 0;
$manvoo = 0;
$maxvoo = 0;
}
$skz = int($skz / $F*1)/1;
$sotkaz = int($sotkaz / $F*100)/100;
$svpr = int($svpr / $F*100)/100;
$ssvo = int($ssvo / $F*100)/100;
$smaxvoo = int($smaxvoo / $F*100)/100;
$sr_och = int($sr_och / $F * 100) / 100;OUT "\n\nОТЧЕТ:\n\n";
print OUT "Среднее кол-во заявок за рабочий период: $skz\n";
$spotkaz = int($sotkaz/$skz*10000)/100;OUT "Среднее кол-во отказов: $sotkaz, $spotkaz%\n";
$vodsl = 100 - $spotkaz;OUT "Вероятность обслуживания: $vodsl%\n";
$ops = 1 - $spotkaz / 100;OUT "Относительная пропускная способность: $ops\n";
$aps = int($ops * $L*100) / 100; OUT "Абсолютная пропускная способность [ед./час]: $aps\n";OUT "Среднее время простоя на $N каналах обслуживания за период $T часов, час: $svpr\n";
$vprost = int($svpr / $T / $N * 10000) / 100;
print OUT "Вероятность простоя СМО: $vprost%\n";
$kz = 100 - $vprost;OUT "Коэффициент загузки СМО: $kz%\n";
$srkanal = int($srkanal / $F * 100) / 100;OUT "Среднее число занятых каналов: $srkanal из $N\n";OUT "Среднее время ожидания: $ssvo\n";
$svprzay = int(($ssvo + $svrobsl / $F / $skz) * 100) / 100;
print OUT "Среднее время пребывания заявки в СМО (ожидание + обслуживание): $svprzay\n";OUT "Среднее максимальное время ожидания: $smaxvoo\n";OUT "Средняя длина очереди: $sr_och\n\n";
}
{"файл данных не найден\n";
}
}
{"файл данных не задан\n";
}(OUT);
4.Описание функционирования математической модели
Приведем формулы, необходимые для вычислений:
1.
расчет времени поступления заявок в СМО, где ? - интенсивность потока заявок,
R - случайная величина, равномерно распределенная в интервале (0,1),
Тk-1 - время поступления предыдущей заявки;
2. - вычисляет время обслуживания канала m;
3. - определяет интервал времени между двумя последовательными заявками (между k-й и k+1);
. - формирует момент поступления следующей заявки;
. - расчет среднего времени ожидания;
Под характеристиками СМО с ограничением на количество заявок в очереди будем понимать величины, по которым можно оценивать эффективность работы СМО и выбирать лучший из нескольких вариантов СМО.
Величины эффективности:
Ротк - вероятность отказа, показывает, какая доля всех поступающих заявок не обслуживается системой из-за занятости ее каналов или большого количества заявок в очереди (для СМО без ограничений на очередь Ротк = 0);
Ротк=kотк/k,4.1
где kотк - количество заявок, получивших отказ, k - общее количество заявок, поступивших в СМО
Робсл - вероятность обслуживания (относительная пропускная прособность), показывает, какая доля всех поступающих заявок обслуживается системой,
Робсл=1-Ротк 4.2
(для СМО без отказов Робсл = 1);
U - коэффициент загрузки СМО, показывает, какую часть от общего времени своей работы СМО выполняет обслуживание заявок; желательно, чтобы коэффициент загрузки СМО имел значение на уровне 0,75-0,85. Значения U < 0,75 указывают, что СМО простаивает значительную часть времени, т.е. испол?/p>