Курсовая работа: Имитационное моделирование системы массового обслуживания
SysCondition currentSystemCondition; // Текущее состояние системы
Задание состояний системы. Выделим у данной 2-х канальной системы 7 различных состояний: S0 , S1 . S6 . СМО находится в состоянии S0 , когда система свободна; S1 – хотя бы один канал свободен; в состоянии S2 , когда все каналы заняты, и есть место в очереди; в состоянии S6 – все каналы заняты, и очередь достигла максимальной длины (queueLength = 4).
Определяем текущее состояние системы с помощью функции GetCondition()
SysCondition GetCondition()
{
SysCondition p_currentCondit = SysCondition.S0;
int k = 0;
int busyChannelCount = 0;
for (int i = 0; i < channelCount; i++)
{
if (timeOfFinishProcessingReq[i] > 0)
{
k = 1;
busyChannelCount++;
}
else
{k = 0;}
p_currentCondit += k * (i + 1);
}
if (busyChannelCount > 1)
{p_currentCondit ++;}
return p_currentCondit + (int) QueueLength;
}
Изменение времени пребывания СМО в состояниях с длиной очереди 1, 2,3,4. Это реализуется следующим программным кодом:
if (queueLength > 0)
{
timeInQueue[queueLength– 1] += timeStep;
if (queueLength > 1)
{timeInQueue [queueLength – 2] += timeStep;}