Общая характеристика СМО

Автор работы: Пользователь скрыл имя, 13 Марта 2012 в 11:35, реферат

Краткое описание

Система массового обслуживания – совокупность последовательно связанных между собой входящих потоков требований на обслуживание (машин, самолетов, пользователей и т.д.), накопителей, очередей, каналов обслуживания (станций техобслуживания, аэродромов, ЭВМ и т.д.) и выходящих потоков требований после обслуживания.

Содержание работы

Введение
1.Общая характеристика СМО
2.Исходные данные для создания СМО
3. Построение алгоритма имитационной модели. Машинная программа модели
3.1 Построение алгоритма имитационной модели
3.2 Машинная программа модели
4. Описание функционирования математической модели
5. Анализ результатов испытаний
Заключение
Список использованных источников

Содержимое работы - 1 файл

документ.docx

— 32.91 Кб (Скачать файл)

Содержание

 

Введение

 

1.Общая характеристика  СМО

 

2.Исходные данные для  создания СМО

 

3.    Построение алгоритма  имитационной модели. Машинная программа  модели

 

3.1 Построение алгоритма  имитационной модели

 

3.2 Машинная программа  модели

 

4. Описание функционирования  математической модели

 

5. Анализ результатов испытаний

 

Заключение

 

Список использованных источников

 

Введение 

 

модель имитационная система  массового обслуживания

 

Система массового обслуживания – совокупность последовательно  связанных между собой входящих потоков требований на обслуживание (машин, самолетов, пользователей и  т.д.), накопителей, очередей, каналов  обслуживания (станций техобслуживания, аэродромов, ЭВМ и т.д.) и выходящих  потоков требований после обслуживания.

 

Имитационная СМО –  модель, отражающая поведение системы  и изменения ее состояния во времени  при заданных потоках требований, поступающих на входы системы.

 

Выходными параметрами являются величины, характеризующие свойства системы – качество ее функционирования, - например такие, как [3]:

 

ü  коэффициенты использования  каналов обслуживания;

 

ü  максимальная и средняя  длина очередей в системе;

 

ü  время нахождения требований в очередях и каналах обслуживания.

 

Модели массового обслуживания находят широкое применение при  исследовании надежности технических  систем, организации их эксплуатации и использования по назначению, а  также при анализе и синтезе  автоматизированных систем управления. СМО – это предприятие, выполняющее  заказы; станок, обрабатывающий детали, компьютер, решающий задачи; магазин, обслуживающий  покупателей, и т.д. Имитационное моделирование  дает возможность исследовать большие  системы и сложные ситуации во всей их полноте, а также реально  невоспроизводимые ситуации и объединять в процессе моделирования формальные и неформальные методы исследования. Под имитационной моделью понимают алгоритмическое описание со всей доступной  для исследования полнотой изучаемой  системы процесса ее функционирования.

 

 

1.  Общая характеристика  СМО 

 

Основными признаками реальной системы, позволяющими рассматривать  ее как своеобразную СМО, являются:

 

·  наличие объектов, нуждающихся  в случайные моменты времени  в обслуживании; эти объекты порождают  так называемый входящий поток заявок на обслуживание;

 

·  наличие объектов, которые  производят обслуживание и называются обслуживающими приборами (каналами);

 

·  возникновение задержек в обслуживании (образование очереди).

 

В качестве своеобразных СМО  могут рассматриваться:

 

·  системы связи и  ремонта;

 

·  пункты технического обслуживания;

 

·  вычислительные центры и отдельные ЭВМ: автоматизированные производственные цехи, поточные линии;

 

·  транспортные системы;

 

·  системы материального  обеспечения.

 

Обслуживающий прибор (канал) – материальный объект или совокупность объектов, одновременно участвующих  в обслуживании заявки. В каждый момент времени прибор может обслуживать  только одну заявку.

 

СМО бывают:

 

·  с отказами – если все каналы заняты – заявка покидает систему;

 

·  с ожиданием –  заявка, поступившая в систему, становится в очередь;

 

СМО с конечной очередью характеризуется  тем, что при поступлении очередной  заявки возможно:

 

·  заявка немедленно принимается  на обслуживание, если в системе  находится k-заявок и k < n, где n – число  каналов;

 

·  заявка становится в  очередь, если n ≤ k < n + m;

 

·  заявка получает отказ  и покидает систему, если k = n + m.

 

Следовательно, в любой  момент времени система может  находиться в одном из состояний.

 

2.  Исходные данные для  создания СМО 

 

В рассматриваемом примере  СМО представим как парикмахерскую. Из Таблицы исходных данных видно, что  в данной системе работают три  парикмахера, интенсивность поступления  клиентов 7 чел/час, время работы парикмахерской 7 часов. Максимальная длина очереди 4 человека. Закон распределения  времени обслуживания – экспоненциальный, это означает, что интервалы между  заявками могут быть как очень  короткими, так и очень длинными. [4]

 

Таблица исходных данных

Траб λ n m 

ЗР ε

7 7 3 4 0,5 exp 0,1

 

 

Траб – время работы СМО, час;

 

λ – интенсивность поступления  заявок, ед./час;

 

n – число обслуживающих  каналов, ед.;

 

m – максимальная длина  очереди, ед.;

 

- среднее время обслуживания, час;

 

ЗР – закон распределения  времени обслуживания, exp – экспоненциальный;

 

ε – погрешность вычислений.

 

Существует некоторый  поток заявок (клиентов), объектов, нуждающихся  в обслуживании. Также в наличии  обслуживающие приборы (парикмахеры), каналы, осуществляющие обслуживание, и задержка в обслуживании (наличие  очереди).

 

3.  Построение алгоритма  имитационной модели. Машинная программа  модели 

 

Построение алгоритма  решения и нахождения решения  с его помощью относится к  компетенции специалистов-математиков  и программистов.

 

Имеется большое количество разработанных алгоритмов для различных  моделей. Во многих случаях удается  свести решение к готовому алгоритму. В противном случае приходится строить  новый.

3.1  Построение алгоритма  имитационной модели 

 

При управлении техническими системами известны условия протекания процессов в системе и предусмотрены  способы нормализации поведения  системы в зависимости от возмущений. Поэтому процесс управления может  быть алгоритмизирован и, следовательно, автоматизирован до конца.

 

Для создания машинной программы  СМО необходимо построить алгоритм ее выполнения Рис. 3.1.1.

 

 

 

 

Рис.3.1.1 [1]

 

 

Оператор 1 – осуществляет ввод исходной информации: число каналов, параметры законов распределения  потока заявок, время работы системы, заданное число испытаний;

 

оператор 2 – устанавливает  начальное состояние системы  Т1=0, t1= t2= t3=0 и k=0;

 

оператор 3 – определяет принадлежит  ли k-я заявка заданному интервалу  времени Т;

 

оператор 4 – сравнивает между  собой моменты освобождения каналов  системы и выбирает канал, освободившийся раньше всех;

 

оператор 5 – сравнивает момент освобождения выбранного канала  с  моментов поступления k-й заявки;

 

оператор 6 – счетчик числа  отказов, после каждого отказа показание  счетчика увеличивается на единицу;

 

оператор 7 – формируется  поток заявок, определяет интервал времени между двумя последовательными  заявками;

 

оператор 8 – формирует  момент времени поступления следующей  заявки;

 

оператор 9 – формирует  номер очередной заявки;

 

оператор 10 – определяет время обслуживания k-й заявки;

 

оператор 11 – вычисляет  время освобождения  канала с  номером m;

 

оператор 12 – счетчик числа  обслуженных заявок, после каждой обслуженной заявки показание счетчика увеличивается на единицу;

 

оператор 13 – счетчик числа  испытаний;

 

оператор 14 – проверяет, получено ли уже заданное число испытаний, если  выполняется, управление передается оператору 15;

 

оператор 15 – подготовка следующего испытания;

 

оператор 16 – осуществляет статистическую обработку полученных результатов и вычисляет требуемые  показатели эффективности функционирования системы за время Т.

 

3.2  Машинная программа  модели 

 

Программа имитационной модели построена на языке Perl.

 

open(OUT,">output.txt");

 

print OUT "СИСТЕМНОЕ МОДЕЛИРОВАНИЕ\n\n";

 

if (not !$ARGV[0])

 

{

 

print OUT "Имя файла данных: $ARGV[0]\n\n";

 

if (-e $ARGV[0])

 

{

 

open(DATA,"<$ARGV[0]");

 

while (<DATA>)

 

{

 

$_=~s/\n//gi;

 

$_=~s/\t//gi;

 

($_,$comments)=split("#",$_);

 

($q1,$q2)=split("=", $_);

 

if ($q1 eq 'T') {print OUT "время работы СМО, час [T]: $q2\n"; $T=$q2;}

 

if ($q1 eq 'L') {print OUT "интенсивность  поступления заявок, ед./час [L]: $q2\n"; $L=$q2;}

 

if ($q1 eq 'N') {print OUT "число обслуживающих  каналов, ед. [N]: $q2\n"; $N=$q2;}

 

if ($q1 eq 'M') {print OUT "максимальная  длина очереди, ед. [M]: $q2\n"; $M=$q2;}

 

if ($q1 eq 'ZR') {print OUT "закон  распределения времени обслуживания(exp/evenly) [ZR]: $q2\n"; $ZR=$q2;}

 

if ($q1 eq 'E') {print OUT "погрешность  вычислений [E]: $q2\n"; $E=$q2;}

 

if ($q1 eq 'TO'){

 

print OUT "среднее время  обслуживания [TO]: ";

 

if ($ZR eq 'evenly')

 

{

 

$q4 = 0;

 

while (length($q2) > 0)

 

{

 

($TO[$q4], $q2)=split(";", $q2);

 

$q4 = $q4 + 1;

 

}

 

$q6=1/$q4*100;

 

for ($q5=0;$q5<$q4;$q5++) # $q4 кол-во  вариантов времени обслуживания

 

{

 

if ($q5>0) {print OUT " ; ";}

 

print OUT "$TO[$q5] ($q6%)";

 

}

 

}

 

if ($ZR eq 'exp')

 

{

 

$TO = $q2;

 

print OUT " $TO";

 

}

 

print OUT "\n";

 

}

 

}

 

close(DATA);

 

print OUT "\nНеобходимое кол-во  экспериментов F=(T*T)/(E*E*L*L) при погрешности  вычислений E=$E : ";

 

$F=int(($T*$T)/($L*$L*$E*$E)) + 1; # округляем  до целого и прибавляем единицу

 

print OUT "$F \n\n\n";

 

print OUT "z - номер заявки\n";

 

print OUT "vp - время прихода  заявки\n";

 

print OUT "vno - время начала  обслуживания заявки\n";

 

print OUT "vko - время конца  обслуживания заявки\n";

 

print OUT "kanal - номер обслуживающего  канала\n";

 

print OUT "vob - время обслуживания  заявки\n";

 

print OUT "nvo - номер в очереди, 0 - очереди нет\n";

 

print OUT "voo - время ожидания  обслуживания (сколько стоит в  очереди)\n\n\n\n";

 

$srkanal = 0;

 

$skz = 0; # среднее кол-во заявок

 

$sotkaz = 0; # среднее кол-во  отказов в обслуживании

 

$svpr = 0; # среднее время простоя

 

$ssvo = 0; # среднее время ожидания

 

$smaxvoo = 0; # среднее максимальное  время ожидания

 

$sr_och = 0; # общее время ожидания, если умножить на 1, то получится  площадь очереди.

 

$svrobsl = 0; # общее время обслуживания  за все прогоны

 

for ($q7=1; $q7<=$F; $q7++) # выполняем  необходимое кол-во прогонов модели

 

{

 

print OUT "\n\n эксперимент $q7 \n\n";

 

$o0=0; # обнуление счетчика  отказов

 

$t0=0; # обнуление времени

 

$n0=0; # обнуление счетсика  заявок

 

for ($q8 = 1; $q8 <= $N; $q8++) {$N[$q8] = 0;} # обнуления состояния каналов

 

for ($q8 = 1; $q8 <= $M; $q8++) {$och[$q8] = 0;} # обнуление очереди

 

while ($t0 < $T)

 

{

 

$r=int(rand(100001))/100000;

 

$tt = int(-(1/$L)*log($r)*1000000)/1000000;

 

$t0 = $t0 + $tt;

 

if ($t0 <= $T)

 

{

 

$n0 = $n0 + 1;

 

# начало проверки состояния  очереди

 

$m0=0; # обнуление счетчика  очереди

 

for ($o=1; $o<=$M; $o++)

 

{

 

if ($och[$o] < $t0)

 

{

 

$och[$o] = 0;

 

}

 

else

 

{

 

$m0 = $m0 + 1;

 

}

 

}

 

# конец проверки состояния  очереди

 

$vp[$n0] = $t0; # время прихода  заявки

 

# определение времени  обслуживания

 

if ($ZR eq 'evenly') # для РАВНОМЕРНОГО  РАСПРЕДЕЛЕНИЯ ВРЕМЕНИ ОБСЛУЖИВАНИЯ

 

{

 

$r=int(rand(100001))/100000;

 

for ($q5=0;$q5<$q4;$q5++)

 

{

 

$dn = $q5*1/$q4;

 

$dk = ($q5+1)*1/$q4;

 

if (($r > $dn) and ($r <= $dk))

 

{

 

$vob[$n0] = $TO[$q5];

 

}

 

}

 

}

 

if ($ZR eq 'exp') # для ЭКСПОНЕНЦИАЛЬНОГО  РАСПРЕДЕЛЕНИЯ ВРЕМЕНИ ОБСЛУЖИВАНИЯ

 

{

 

$r=int(rand(100001))/100000;

 

$vob[$n0] = int(-$TO*log(1-$r)*1000)/1000;

 

$ww=log(1-$r);

 

$www=-1/$TO;

 

}

 

# конец определения времени  обслуживания

 

# выбор канала обслуживания

 

$kanal[$n0] = 0;

 

for ($q8 = 1; $q8 <= $N; $q8++)

 

{

 

if (($N[$q8] <= $vp[$n0]) and ($kanal[$n0] == 0))

 

{

 

$vno[$n0] = $vp[$n0];

 

$N[$q8]=$vno[$n0]+$vob[$n0];

 

$kanal[$n0] = $q8;

 

}

 

}

 

if ($kanal[$n0] == 0) # формирование  очереди

 

{

 

$m1 = $m0 + 1;

 

if ($m1 <= $M) # проверка длины  очереди

 

{

 

$nvo[$n0] = "$m0->$m1"; # очередь  для этой заявки

 

# > выбор канала для  заявки поставленной в очередь

 

$kanal[$n0] = 1; # выбор первого  канала для сравнения с остальными

 

for ($q8 = 1; $q8 <= $N; $q8++)

 

{

 

if ($N[$q8] < $N[$kanal[$n0]])

 

{

 

$kanal[$n0] = $q8;

 

}

 

}

 

$vno[$n0] = $N[$kanal[$n0]];

 

$och[$m1] = $vno[$n0]; # время очереди

 

$voo[$n0] = int(($N[$kanal[$n0]] - $vp[$n0])*1000000)/1000000;

 

$vko[$n0] = $vno[$n0] + $vob[$n0];

 

$N[$kanal[$n0]] = $vko[$n0]; # сдвиг времени  по данному каналу

 

}

 

else

 

{

 

$vno[$n0] = -1; # отказ в обслуживании

 

$vob[$n0] = 0;

 

$nvo[$n0] = "$m0->$m0";

 

$kanal[$n0] = '-';

 

}

 

}

 

else

 

{

 

$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;

 

print OUT "z | vp | vno | vko | kanal | nvo | vob | voo\n";

 

for ($z = 1; $z<=$n0; $z++)

 

{

 

if ($vp[$z] <= $T)

 

{

 

$ppp = $ppp + 1;

 

$svoo = $svoo + $voo[$z]; # считает время  ожидания

 

$svob = $svob + $vob[$z]; # считает время  обслуживания, чтобы вычитать время  простоя

 

if ($maxvoo < $voo[$z]) {$maxvoo = $voo[$z];}

 

if ($minvoo > $voo[$z]) {$minvoo = $voo[$z];}

 

if ($vno[$z] == -1) {$otkaz = $otkaz + 1;}

 

if (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;

Информация о работе Общая характеристика СМО