ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ
ТЕХНИКА
УДК 519.87:519.248:519.682
А. М. Журавлев, Н. В. Медведев, А. Ю. Быков
ИСПОЛЬЗОВАНИЕ МЕЖПЛАТФОРМЕННОЙ БИБЛИОТЕКИ ФУНКЦИЙ ЯЗЫКА СИ++ ДЛЯ РЕАЛИЗАЦИИ ИМИТАЦИОННЫХ МОДЕЛЕЙ ТИПОВЫХ СИСТЕМ МАССОВОГО ОБСЛУЖИВАНИЯ
Рассмотрены имитационные модели классических систем массового обслуживания, реализованные с использованием библиотеки функций языка Си++. Все приведенные системы массового обслуживания имеют аналитические решения. Представлены листинги программ и результаты решений, полученные на имитационных моделях с помощью библиотеки функций языка Си++. Для сравнения также приведены результаты решений, полученные аналитическим путем.
Для исследования сложных систем массового обслуживания (СМО) широко используется имитационное моделирование [1]. В работе [2] для имитационного моделирования СМО предложено использовать межплатформенную библиотеку функций языка Си++, а также рассмотрены особенности данной библиотеки, порядок ее использования и настройки.
Кратко определим основные отличительные особенности данной библиотеки функций:
— библиотека функций является межплатформенной, т.е. может использоваться как для операционных систем (ОС) Windows 98/ME/2000/XP/Vista, так и для UNIX-подобных ОС типа Linux, МС ВС и др.;
— библиотека функций встраивается в стандартные средства разработки приложений на основе языка Си++ типа Microsoft Visual C++ или KDevelop;
— названия основных функций библиотеки напоминают названия соответствующих операторов языка имитационного моделирования GPSS [3], построение имитационных моделей с помощью данной библиотеки функций не более трудоемкое, чем на языке GPSS;
— использовать данную библиотеку могут обычные приложения языка Си++, таким образом, можно создавать комбинированные приложения, в которых кроме задач имитационного моделирования могут решаться и другие прикладные или системные задачи.
Рассмотрим примеры имитационных моделей типовых (классических) СМО [4].
Многоканальная СМО с отказами (задача Эрланга). В качестве примера рассмотрим следующую СМО. Трехканальная СМО обслуживает пуассоновский поток заявок, время между заявками является случайной величиной, распределенной по показательному закону, интенсивность потока заявок составляет 10 заявок в минуту. Время обслуживания одной заявки также распределено по показательному закону, интенсивность потока обслуживания — 4 заявки в минуту. Если заявка приходит в момент, когда все каналы заняты, то она получает отказ в обслуживании. Требуется провести имитационное моделирование СМО в течение 100 ч и определить параметры СМО — вероятность отказа в обслуживании, вероятность того, что заявка будет обслужена, абсолютную пропускную способность (среднее число заявок, обслуживаемых в единицу времени), среднее число занятых каналов. (Примером такой СМО может являться телефонная станция.)
Данная задача имеет аналитическое решение. Основные соотношения следующие:
/ 1 1 4 -1 ро = (1 + р + 2! Р2 + ••• + пр
— вероятность того, что в системе нет ни одной заявки (р = А/р — приведенная интенсивность, А = 10 заявок в минуту — интенсивность входного потока заявок, р = 4 заявки в минуту — интенсивность обслуживания, п = 3 — число каналов обслуживания); рп = — рпр0 —
п!
вероятность того, что в системе п заявок; Ротк = рп — вероятность отказа в обслуживании; Робс = 1 — Ротк = 1---рпр0 — вероятность того,
п! 1
что заявка будет обслужена; А = АРобс = А( 1---рпр0 ) — абсолютная
п
пропускная способность; & = А/р = р( 1 — ^тр0 ) — среднее число
п!
занятых каналов.
Подставляя заданные значения, получаем следующие результаты: Ротк и 0,282; Робс и 0,718; А и 7,178 заявки в минуту, к и 1,795.
Исходный код модели и результаты решения приведены в листинге 1.
Sinelude M;;imC.h" void main()
// :3адача Эрланга (
PSTQRAGE рЗ; // Указатель на многоканальное устройство i rit №■ 0, N_0tk-0; // Переменные для подсчета вероятностей 5lart(); // Создание системной среды // Создание модельной среды
NewStorage (pS, "Уст-во", 3);// Создаем трехканальное устройство ~i-.i-Generate il, 0);// Начальной транзакт-заявка поступает в событие 1 while(Sy3Time<6000) // Цикл обработки событий - время моделирования //100 часов ( 6000 минут)
{
Plan!); i! Протяжка модельного времени switch(SysEvent) // Обработка событий 1
case 1: Generate(RandExp[10, VI)); break; //Поступает транзакт -
//заявка
case P.: N+ + ; II Подсчет общего числа транзакгов
if Enter (p;J) ; // Если ест l место, то занимаем
//многоканальное устройство
el яе {
N Otk-t ■ ; II Числи транзактов, получивших отказ Mej;t (5) ; // Транзакт получает отказ в обслуживании
]
break ;
сазе 3: Advance(RandExp(4, V2M; break;// Задержка - обработка
II заявки
case 4: Leave(pS); break; // Освобождаем многоканальное
11 устройство
case 5: Terminate(); break;// Уничтожение транзакта - заявки
I
1
Printfil1(); // Печать результатов моделирования
fp:-" i ntf [OUTFIT F., "Вер-ть отказа: %f Вер-ть обслуживания Абсолютная пропуск, способность %f",
[double)N_Otk/N, (double) (N-N_Otk)/N, [N-N_Otk)/SysTime) ;
1
СИСТЕМНОЕ ВРЕМЯ СИСТЕМНОЕ СОБЫТИЕ НОМЕР ТРАНЗАКТА ВСЕГО ВЫПОЛНЕНО СОБЫТИЙ ЗАТРАЧЕНО ВРЕМЯ СКОРОСТЬ ИСПОЛНЕНИЯ
SysTitnc= 6000.056
i;vflEVEHT= 1 TBAN3-MJOM-5S841 EVENTALL -=265533 REALTTME= 0.0Э СЕК
EVESPEED=2855193.546587 СОВ/СЕК
СРЕДНЕЕ ВРЕМЯ ИСПОПНЕНИЯ СОБЫТИЯ : MEANTТМЕ=
0.000000 СЕК/СОБ
СОЕ.# ВСЕГО
5 9841
СОЕ. i
2
ВСЕГО 5 9840
СОБ.# ВСЕГО 3 43006
СОБ.# ВСЕГО 4 4 3006
СОЕ.# ВСЕГО 5 5 9040
■у ******** V У ** * * * * * V У V -У * -V- * * * *
НАКОПИТЕЛИ ----
НАКОПИТЕЛЬ ЕМКОСТЬ ЗАГРУЗКА СРЕДН. ВРЕМЯ ТЕКУЩЕЕ МАКС. СРЕДНЕЕ ЧИСЛО
ПРЕБЫВАНИЯ СОДЕРЖ. СОДЕРЖ. СОДЕРЖ. ВХОДОВ Уст-во 3 0.596 0.^50 0 3 1.7 95 4 3006
Вер-ть отказа: 0.261317 Вер-ть обслуживания 0.716663 Абсолютная пропуск, способность 7 .167600
Одноканальная СМО с неограниченной очередью. В качестве примера рассмотрим следующую СМО. Одноканальная СМО обслуживает пуассоновский поток заявок, время между заявками является случайной величиной, распределенной по показательному закону, среднее время между заявками составляет 10 с (А = 0,1 заявки в секунду). Время обслуживания одной заявки также распределено по показательному закону, среднее время обслуживания 8 с (р = 1/8 заявки в секунду). Если заявка приходит в момент времени, когда канал занят, то она становится в очередь, длина очереди не ограничена. Требуется провести имитационное моделирование СМО при обслуживании 200 000 заявок, определить параметры СМО — параметры очереди задач (среднюю длину очереди и среднее время ожидания задачи в очереди), загрузку канала обслуживания.
По аналогии с предыдущим примером данная задача имеет аналитическое решение [4]. Основные соотношения имеют следующий вид:
р0 = 1 — р — вероятность того, что в системе нет заявок;
Ц Р2
Ц?очер =--средняя длина очереди;
1 — Р
^ Р2
Точер = -т — среднее время ожидания в очереди;
А (1 — Р)
Кзагр = 1 — р0 = р — коэффициент загрузки канала обслуживания.
Подставляя заданные значения, получаем следующие результаты:
Цочер = 3,2; ^"очер = 32 с; Кзагр = 0,8
Исходный код модели и результаты решения представлены в листинге 2.
Многоканальная СМО с неограниченной очередью. В качестве примера рассмотрим следующую СМО. Вычислительный центр состоит из 4 ПЭВМ. Задачи на решение поступают в среднем через 5 мин, время между задачами распределено по экспоненциальному закону. Каждая задача решается любой свободной ПЭВМ или ставится в очередь, если все ПЭВМ заняты, длина очереди не ограничена. Каждая задача решается в среднем 15 мин, время решения распределено по экспоненциальному закону. Требуется провести имитационное моделирование в течение 100 суток, определить загрузку вычислительного центра (среднее число занятых ПЭВМ) и параметры очереди задач (среднюю длину очереди и среднее время ожидания задачи в очереди).
Данная задача имеет аналитическое решение [4]. Основные соотношения по аналогии с рассмотренными примерами имеют следующий
(include "íJimC. h" void raain П 1
// Одноканальная СМО с неограниченной очередью РFACILITY pF; // Указатель на канал обслуживания PQUEUE pQ; // Указатель на очередь
Start[200000); // Создание системной среды, задаем значение счетчика
// завершения // Создание модельной среды NewQueue(рп, "Очередь"); // Создаем очередь NewF-ч;: (pF, "Канал"); // Создаем канал обслуживания
Irii t.Generate (1, 0); // Транзакт - заявка направляется к первому событию
while(TGÍ) //Конец моделирования, когда TG1 (счетчик завершения равен 0) 1
PlanO ;
switch ¡SysEvent.) <
case 1 :
Generate(RandExp(0.1, VI)); break; // Генерация заявок ca зe 2:
Queue(pQ); break:; II Занимаем очередь ca зe 3:
SeizefpF); break; II Занимаем канал обслуживания case 4:
Depart(pQ); break; // Освобождаем очередь case 5:
Advance[RandExp(1./8, 42)); break; II Задержка - время
//обслуживанмя
ca s е 6:
Release (pF); break; II Освобождаем какал обслуживания case 1;
Terminate(I); II Трап за кт уничтожается, счетчик // завершения уменьшается на
)
}
PrintAllf);
СИСТЕМНОЕ ВРЕМЯ : КузTiте 2002693.038
СИСТЕМНОЕ СОБЫТИЕ : £JY3EVENT= 7
TRANS NUT Т:
ВСЕГО ВЫПОЛНЕНО СОБЫТИЙ : EVENTALL=15 60380 ЗАТРАЧЕНО ВРЕМЯ : REALTIME- 0.56 СЕК
СКОРОСТЬ ИСПОЛНЕНИЯ : EVESFEEE-2771545.293063 СОБ/СЕК
СРЕДНЕЕ ВРЕМЯ ИСПОЛНЕНИЯ СОБЫТИЯ : MEANTIME- 0.000000 СЕК/СОБ
СОЕ.# ВСЕГО 1 200001
2 200001
СОВ.# ВСЕГО
3 200000
4 200000
сов.# всего
5 200000
6 200000
СОВ.# ВСЕГО
7 200000
8 0
СОВ. # ВСЕГО
очереди
ОЧЕРЕДЬ ЧИСЛО ВХОДОВ МАКС. ДЛИНА СРЕДН. BP. ОЖ. СРЕДНЯЯ
с 0
Очередь
200001 39(523
кущ. длина 34 1
БЕЗ УЧ. 0 ВХ.
32.021 39. УЗЗ
Í ВХОДОВ
ДЛИНА В ПУСТУЮ ОЧЕРЕДЬ 3.198 19.811
ПРИБОРЫ
ПРИБОР ЧИСЛО
ВХОДОВ Канал 200000
среднее время
ОБРАБОТКИ
8. 02Ъ
ЗАГРУЗКА 0.801
ЧИСЛО ЗАХВАТОВ 0
СОСТОЯНИЕ FREE
вид:
Po =
„2 _n nn+1
P P P
1+ p + 777 + ... + ^T +
2! n! n! (n — p)
1
— вероятность того, что в системе нет ни одной заявки (не решается ни одной задачи), (р = Л/р — приведенная интенсивность, Л = 0,2 задачи в минуту — интенсивность входного потока заявок, р = 1/15 задачи в минуту — интенсивность обслуживания, п = 4 — число каналов обслуживания);
/с = — = р р
— среднее число занятых каналов обслуживания (ПЭВМ);
< = Рп+1
"очер р0 . . о
р п!п (1 - р/П2
— средняя длина очереди;
очер > Qочер
1
Л"
— среднее время ожидания заявки (задачи) в очереди.
Подставляя заданные значения, получаем следующие результаты:
с = 3; <5очер и 1,5283; Точер и 7,6415 мин.
Исходный код модели и результаты решения представлены в листинге 3.
Одноканальная СМО с ограниченной очередью. В качестве примера рассмотрим следующую СМО. Одноканальная СМО обслуживает пуассоновский поток заявок, время между заявками - случайная величина, распределенная по показательному закону, среднее время между заявками составляет 10 с (Л = 0,1). Время обслуживания одной заявки также распределено по показательному закону, среднее время обслуживания 10 с (р = 0,1). Если заявка приходит в момент, когда канал занят, то она становится в очередь, максимальная длина очереди — 3 заявки, если заявка приходит в тот момент времени, когда в очереди уже находится 3 заявки, то она получает отказ в обслуживании. Требуется провести имитационное моделирование СМО в течение 100 ч, определить параметры СМО — вероятность отказа в обслуживании, параметры очереди задач (среднею длину очереди и среднее время ожидания задачи в очереди), загрузку канала обслуживания.
По аналогии с предыдущими примерами данная задача имеет аналитическое решение [4]. Так, в данной задаче р =1, поэтому основные
include <SimC.h>
int mainO {
PSTORAGE pS; //Указатель ría многоканальное устройство
PQUEUE //Указатель на очередь
Slart(l);// Задаем значение счетчика завершения равным 1
NewSí.urage(pS, "Выч. сеть\ 4); // Создаем многоканальное устройство
NcwQucue(pQ, "Очередь"),// Создаем очередь
TmlGeneratef l. <S) ji Инициализация генератора гранзаюш- задач
InitG«rterate(8, (50*24*100);// Инициализация генератора трапзактов -
/У Озраничинаем нреми моделирования: транзакт посту itaer через 100 суюк whüe(TG 1)//Цикл обработки событий Í
PlanQ; // Протяжка мод ель нога времени switch(Sys£v ent) // Обработка событий í
case 1: Generate(RandExp(0.2, V2)); break; //Поступает транзакт - задача ease 2: Qucuc(pQ); break; // Занимаем очередь case 3: T?nter(pS); break; // Занимаем м но го канальное устройство case 4: Depart(pQ); break;// Освобождаем очередь
case 5: Advance(RandExp(1 ./15, V3)); break;// Задержка - решение задачи case 6: Leave(pS); break; //Освобождаем многоканальное устройство case 7: TerminateQ; break;//Уничтожение гранзакха -задачи
case 8: TerminateQ); // Уничтожение транзакта }
PrintAÜQ; // Печать результатов моделирования return 1;
системное время системное событие ТНАНЗ-МиЪЬ всего выполнено событий затрачено время скорость исполнения
SYSTIME-
sy3event-
144000.000
eventall=215254 realtime^ с.17 сек
evespeed-1251476.744196 соб/сек
СРЕДНЕЕ ВРЕМЯ ИСПОЛНЕНИЯ СОБЫТИЯ : MEANTIME
0.000001 сек/соб
СОЕ. # 1
2
ЕС ЕГО 28 661 28 661
СОЕ. #
3
4
ВСЕГО 2S661 28661
сов. #
5
6
всего 28 Я 61 2860 9
СОБ.#
7
8
ес его 28659 1
сое.# всего
очереди
+ + * + + * * -I- Ч Ч- * *- + :*-+ Ч
очередь число входов макс. длина средн. вр. ож. средняя & входов
------------ ----------- ----------------------------длина в пустую
с 0 врем.ож. текущ.длина без уч. 0 вх. очередь
Очередь 28 661 23 7.64 4 1 .521 48.9г>.г: 14031 0 14.97ь
+ + * + + * * -I- + +
НАКОПИТЕЛИ ----
накопитель емкость загрузка средн. бремя текущее макс. среднее число
пребывания содерж. содерж. содерж. f."oflob Быч. сеть 4 0.749 15.057 2 4 2.997 2s661
соотношения имеют следующий вид:
Ро = Pi = Р2 = ••• = Pn =
п + 1:
где п = 4 — максимальное число заявок в системе (максимальная длина очереди равна п — 1); Ротк = рп — вероятность отказа в обслу-
п
живании; Qочер = Qсист - (1 - Po) = Po kpk - (1 - Po) — средняя
fc=i
Q очер
очер = -ч--среднее время ожидания в очере-
(1 - Ро) Р
ди; Кзагр = Рзан = 1 — p0 — коэффициент загрузки канала (вероятность того, что канал занят).
Подставляя заданные значения, получаем следующие результаты:
Ротк 0,2; (5очер 1)2; ■очер 15 с; ^загр 0,8.
Исходный код модели и результаты решения представлены в листинге 4.
// Одноканальная СМО с ограниченной очередью
int N_Gtk-0, N-0; 11 Переменные для подсчета вероятности отказов Star; (1); // Создание системной среды, задаем значение
InitGenerate (1, 0); // Транзакт-заявка направляется к первому событию InitGsnerate(В, 3600*100); Ц Управляющий травзакт появляется в модели
while(TG1)// Конец моделирования, когда TG1 (счетчик завершения равен 0)
if (P'Q->LQ<3) I/ Если длина очереди меньше 3, то занимаем else 1 N_Otk++; II Транзакт получает отказ в обслуживании
Замкнутая СМО с одним каналом и т источниками заявок.
Рассмотрим следующий пример СМО. Администратор обслуживает компьютерный зал, в котором находится 3 компьютера (т = 3). На работающем компьютере в среднем раз в час происходит сбой (время между сбоями распределено по экспоненциальному закону, Л = 1/60 сбоя в минуту). После сбоя администратор устраняет его последствия в среднем за 20 мин (время распределено по экспоненциальному закону, р = 1/20). Если сбой происходит, когда администратор устраняет последствия сбоя на другом компьютере, то компьютер становится в очередь на обслуживание. Требуется провести имитационное модели-
рование СМО в течение 20000 ч, определить параметры СМО — вероятность того, что все компьютеры работоспособны, вероятность того, что все компьютеры не работоспособны, загрузку канала обслуживания (администратора), параметры очереди (среднею длину очереди и среднее время ожидания в очереди).
По аналогии с предыдущими примерами данная задача имеет аналитическое решение [4]. Основные соотношения имеют следующий вид: 1
р0 = —--вероятность того, что все компьютеры работо-
£
pk m!
fco(m—k)!
m!
способны; pi = р0р^т-tt, Vi = 1, 2,...,m — вероятность того, что
(m — г)!
i компьютеров не работоспособно; Кзагр = 1 — p0 — коэффициент загрузки канала (администратора); Q очер = Q сист—(1 — p0) = m--Р° —
— (1 — p0) — среднее число заявок (компьютеров) в очереди; Точер =
Qочер у ч
= --^— — среднее время нахождения заявки (компьютера) в
(1 — Р0) Р
очереди (определяем по формуле Литла).
Подставляя заданные значения, получаем следующие результаты: Р0 - 0,346; pm и 0,077; Кзаф - 0,654; Qочер-0,385; Точер-11,7647мин.
Исходный код модели и результаты решения представлены в листинге 5.
Листинг 5
#include "SimC.h" void main()
I
// Замкнутая СМО с М источниками заявок РFACILITY pF;// Указатель на канал обслуживания PQUELtE pq; // Указатель на очередь
double Т 0=0, T М=0; // Считаем суммарную длительность, когда не было
//заявок и когда было М заявок double 11= 0, t2; // Вспомогательные переменные Start (1); // Создание системной среды,TG1 равен 1 // Создание модельной среды NewQueue(pQ, "Очередь"),- // Очередь MewFac(pF, "Канал");// Канал обслуживания
for(int i=0; i<3; i-t-t-) InitGenerate[l+3*i, 0);// Три транзакта из 3-х
// источников направляем к событиям InitGenerate[15, 60*20000); // Управляющий транзакт входит в модель
// через 20000 часов while(TGl) // Цикл обработки событий (
Plan П ; // Протяжка модельного времени switch[SysEvent) i
case 1:
TRANS->PI [0] -2; break;// Номер события, куда должен // вернуться транзакт
разе 2:
Advance[RandExp(1./60, vi)); break;// Моделирование работы
// без сбоев
case 3:
Next[9); break; // Отправляем транзакт в событие № 9 case 4:
TRANS->PI[0]=5; break;// Номер события, куда должен //вернуться транзакт
case 5:
Advance(RandExp(1./60, 42)); break;// Моделирование работы
// без сбоев
case 6:
Wext(9); break;// Отправляем транзакт в событие № 9 case 7:
TRAN5->PI[01=8; break;// Номер события, куда должен // вернуться транзакт
case 8:
Advance(RandExp[1./60, V3)); break;// Моделирование работы
// без сбоев
case 9:
// Очередь перестает быть пустой
if [pQ->LQ"-0 ££ pF->STATUS=-FREE) T_Q+-¡SysTime-tl); Queue(pQ); //Занимаем очередь
if [pQ->LQ—2) t2-SysTime; // E системе M заявок break; case 10:
Seize(pF); break;// Занимаем канал обслуживания case 11:
if (pQ-XLQ—2) T_M+-S уs T i me-12; // Считаем время, когда в
// системе было М заявок Depart[pQ); break;// Освобождаем очередь сазе 12:
Advance(RandExp(0.05, V4}); break;// Моделирование времени
// устранения сбоя
case 13:
if (pQ->LQ-=Q) tl=Sy$Time; // Б системе нет заявок Release(pF); // Освобождаем канал обслуживания break; case 14:
Next[TRANS->PI[0]); break;// Транзакт возвращается обратно
//к соответствующему событию
case 15:
if [pQ->LQ~=Q && pF->STATUS=-FREE:) T f§fr- [SysTime-tl) ; if [pQ->LQ==2) T_M+=SysTime-t2;
Tertninate(l);// Управляющий транзакт уменьшает TGI на 1
}
)
PrintAll();
fprlntf (OUTFILE, "P0-%f, P_m-%f T_0/SysTime, T_M/SysTiree>;
СИСТЕМНОЕ БРЕМЯ СИСТЕМНОЕ СОБЫТИЕ TRANS-NULL ВСЕГО ВЫПОЛНЕНО СОБЫТИЙ ЗАТРАЧЕНО ВРЕМЯ СКОРОСТЬ ИСПОЛНЕНИЯ СРЕДНЕЕ ВРЕМЯ ИСПОЛНЕНИЯ СОБЫТИЯ : MEANTIME^
SysTitne= 1200000.000 SYSEVENT= 15
EV EN TALL-318 7 93 REALTIME- 0.31 СЕК
EVESPEED-1021772.435 904 COB/СЕК
0.000001 СЕК/СОЕ
'ОБ. )l LiCäilO 1 1
COB.# ВСЕГО СОБ.8 ВСЕГО СОБ.# ВСЕГО СОБ.Й ВСЕГО 4 17 1 10 39180 13 39179
2 12 987 5 13105 8 13090 11 3918 0 14 3917 9
3 12986 6 13105 9 39180 12 39180 15 1
ОЧЕРЕДИ
ОЧЕРЕДЬ ЧИСЛО ВХОДОВ МАКС. ДЛИНА СРЕДН. BP. ОЖ. СРЕДНЯЯ ------------ ----------- -------------- ДЛИНА
С 0 ВРЕМ.ОЖ. ТЕКУЩ.ДЛИНА БЕЗ УЧ. 0 ВХ. Очередь 391В0 2 11.706
20742 0 24.874
0.3В2
% ВХОДОВ В ПУСТУЮ ОЧЕРЕДЬ 52.940
-Jt ______
ПРИБОРЫ
_____ -к
ПРИБОР ЧИСЛО
ВХОДОВ Канал 39180
Р0=0-346484, Р itt=0-076342
СРЕДНЕЕ ВРЕМЯ ОБРАБОТКИ
20.016
ЗАГРУЗКА 0.654
ЧИСЛО ЗАХВАТОЕ
о
СОСТОЯНИ SEIZED
Заключение. Полученные результаты при достаточно большом интервале времени моделирования близки к результатам, полученным на аналитических моделях. Таким образом, библиотека функций языка Си++, реализованная для различных операционных систем, пригодна для имитационного моделирования СМО.
СПИСОК ЛИТЕРАТУРЫ
1. Кельтон В., Л о у А. Имитационное моделирование. Классика CS. 3-е изд. - СПб.: Питер; Киев: Изд. группа BHV, 2004. - 847 с.
2. М е д в е д е в Н. В., Б ы к о в А. Ю., Гришин Г. А. Имитационное моделирование систем массового обслуживания с использованием межплатформенной библиотеки функций языка Си++ // Вестник МГТУ им. Н.Э. Баумана. Сер. "Приборостроение". - 2005. - № 4. - С. 85-93.
3. Кудрявцев Е. М. GPSS World. Основы имитационного моделирования различных систем. - М.: ДМК Пресс, 2004. - 320 с.
4. К л е й н р о к Л. Теория массового обслуживания. - М.: Машиностроение, 1979.-432 с.
Статья поступила в редакцию 7.12.2007
Алексей Михайлович Журавлев родился в 1981 г., окончил в 2003 г. Государственный университет управления. Специализируется в области безопасности компьютерных сетей.
A.M. Zhuravlev (b. 1981) graduated from the State University for Management in 2003. Specializes in the field of security of computer networks.
Николай Викторович Медведев родился в 1954 г., окончил в 1977 г. МГТУ им. Н.Э. Баумана. Канд. техн. наук, зав. кафедрой "Информационная безопасность" МГТУ им. Н.Э. Баумана. Автор около 50 научных работ в области исследования и разработки защищенных систем автоматической обработки информации.
N.V. Medvedev (b. 1954) graduated from the Bauman Moscow Higher Technical School in 1977. Ph. D. (Eng.), head of "Information Security" department of the Bauman Moscow State Technical University. Author of about 50 publications in the field of study and development of protected systems of automated data processing.
Александр Юрьевич Быков родился в 1969 г., окончил в 1991г. ВИКИ им. А.Ф. Можайского. Канд. техн. наук, доцент кафедры "Информационная безопасность" МГТУ им. Н.Э. Баумана. Автор около 20 научных работ в области информационной безопасности и исследования систем обработки информации и управления.
A.Yu. Bykov (b. 1969) graduated from the Military Institute for Engineering and Space n.a. A.F. Mozhaiskii in 1991. Ph. D. (Eng.), assoc. professor of "Information Security" department of the Bauman Moscow State Technical University. Author of about 20 publications in the field of study and development of data security and study of systems of data processing and control.
УДК 004.7
С. С. Баскаков РАСПРЕДЕЛЕННЫЙ АЛГОРИТМ АВТОМАТИЧЕСКОГО ВЫБОРА ОПОРНЫХ УЗЛОВ В БЕСПРОВОДНЫХ МНОГОЯЧЕЙКОВЫХ (MESH) СЕТЯХ
Предложен алгоритм автоматического выбора произвольного числа опорных узлов с различными видами их распределения по площади покрытия беспроводной многоячейковой сети. Полученные оценки сложности по времени и памяти показали, что алгоритм является оптимальным при совместном использовании с протоколами географической маршрутизации по виртуальным координатам.
В последнее время активное развитие получили технологии беспроводных сенсорных сетей, которые имеют множество практических применений, связанных с распределенным сбором, анализом и передачей информации. Беспроводная сенсорная сеть (БСС) представляет собой распределенную, самоорганизующуюся и устойчивую к отказу сеть миниатюрных электронных устройств, обменивающихся информацией по беспроводному каналу связи. Предполагается, что такие сети будут иметь многоячейковую (mesh) топологию и состоять из большого числа (до нескольких десятков тысяч) узлов, которые способны ретранслировать сообщения друг друга.