Обзор рынка FSO

advertisement
Министерство образования и науки Российской Федерации
МОСКОВСКИЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ
(государственный университет)
ФАКУЛЬТЕТ РАДИОТЕХНИКИ И КИБЕРНЕТИКИ
Кафедра Инфокоммуникационных Систем и Сетей
РАЗРАБОТКА И ИССЛЕДОВАНИЕ БЕСПРОВОДНОЙ
ГИБРИДНОЙ ТЕЛЕКОММУНИКАЦИОННОЙ СИСТЕМЫ
НА БАЗЕ ЛАЗЕРНОЙ И РАДИО- ТЕХНОЛОГИЙ
Магистерская диссертация
студента 417 группы
Головина Алексея Владимировича
Научный руководитель
Вишневский В.М., д.т.н.
г. Москва
2010
Содержание
1. Введение .............................................................................................. 3
1.1. Технология АОЛС......................................................................................... 3
1.2. Обзор современного рынка FSO-оборудования ........................................ 6
1.3. Гибридное радио-оптическое оборудование............................................ 10
2. Постановка задачи и описание модели ....................................................... 14
2.1. Постановка задачи ...................................................................................... 14
2.2. Описание модели гибридной радио-оптической
телекоммуникационной системы ..................................................................... 15
3. Математическое моделирование ................................................................. 18
3.1. Стационарное распределение вероятностей состояний системы .......... 18
3.2. Матрично-аналитический метод вычисления стационарных
вероятностей ....................................................................................................... 25
3.3. Условие существования стационарного режима ..................................... 30
3.4. Характеристики производительности системы ....................................... 32
3.5. Алгоритм и компьютерная программа расчёта ....................................... 35
3.6. Примеры численных расчётов ................................................................... 38
4. Имитационное моделирование ..................................................................... 47
4.1. Описание имитационной модели и компьютерной программы ............ 47
4.2. Примеры численных расчётов ................................................................... 49
5. Заключение ....................................................................................................... 53
Список использовавшихся источников ......................................................... 55
Приложение 1. Список интернет-источников, использовавшихся при
обзоре рынка FSO-оборудования ..................................................................... 56
Приложение 2. Java-код программы расчёта ................................................ 57
2
1.
Бурное
развитие
Введение
телекоммуникационного
рынка
требует
высокоскоростных линий передачи данных. Однако внедрение проводных
технологий (например, прокладка оптического волокна) подразумевает
солидные инвестиции, да и в принципе не всегда возможна. Естественной
альтернативой в этом случае являются беспроводные линии связи.
На сегодняшний день существует несколько основных беспроводных
решений – это использование широкополосных радиоканалов WiFi / WiMax,
радиорелейных линий (РРЛС) или атмосферных оптических линий связи
(АОЛС).
Однако
беспроводная
связь
в
радиодиапазоне
ограничена
перегруженностью и дефицитом частотного диапазона, недостаточной
скрытностью, подверженностью помехам (в том числе и преднамеренным, и
с соседних каналов), повышенным энергопотреблением. Кроме того, при
эксплуатации РРЛС приходится решать вопросы, связанные с получением
разрешений на использование рабочих частот, что на сегодняшний день
представляет большую проблему. В тоже время применение лазерных
средств снимает эти сложные вопросы. Поэтому сегодня без преувеличения
можно говорить о взрывном росте интереса к беспроводной оптике.
1.1. Технология АОЛС
Сама технология АОЛС (в разных источниках также встречаются
аббревиатуры FSO – Free Space Optics, АОСП – Атмосферные Оптические
Системы Передачи данных, БОКС – Беспроводные Оптические Каналы
Связи, ЛАЛ – Лазерные Атмосферные Линии) основывается на передаче
данных модулированным излучением в инфракрасной (или видимой) части
спектра через атмосферу и их последующим детектированием оптическим
фотоприёмным устройством. При этом в качестве излучателя обычно
используются инфракрасные лазеры класса 1 или 1M (к лазерам 1-го класса
3
относят
полностью
безопасные
лазеры,
выходное
коллимированное
излучение которых не представляет опасности при облучении глаз и кожи),
для низкоскоростных коммуникаций на небольшие расстояния могут
использоваться светодиоды. В качестве приёмника используются лавинные
или кремниевые фотодиоды.
К основным преимуществам атмосферных оптических линий связи
можно отнести:
●
Высокая пропускная способность и качество цифровой связи.
Современные FSO-решения могут обеспечить скорость передачи
цифровых потоков до 10 Гбит/с при показателе битовых ошибок (BER
– bit error rate) всего 10-12, что невозможно достичь при использовании
любых других беспроводных технологий.
●
Не требуется получать разрешение на использование частотного
диапазона. Т.к. FSO-системы используют инфракрасный диапазон
электромагнитного спектра далеко за границей 400 ГГц (определенной
как верхняя граница для радиочастотного регулирования на территории
РФ), то никаких лицензий и специальных разрешений не требуется.
●
Высокая защищённость канала от несанкционированного доступа
и скрытность. Ни одна беспроводная технология передачи не может
предложить
такую
конфиденциальность
связи
как
лазерная.
Перехватить сигнал можно только установив сканеры-приемники
непосредственно в узкий луч от передатчиков. Реальная сложность
выполнения
этого
требования
делает
перехват
практически
невозможным. А отсутствие ярко выраженных внешних признаков (в
основном, это электромагнитное излучение) позволяет скрыть не
только передаваемую информацию, но и сам факт информационного
обмена. Поэтому лазерные системы применяются для разнообразных
приложений, где требуется высокая конфиденциальность передачи
данных, включая финансовые, медицинские и военные организации.
4
●
Высокий уровень помехоустойчивости и помехозащищенности.
FSO-оборудование невосприимчиво к радиопомехам и само их не
создаёт.
●
Возможность установить лазерную атмосферную линию там, где
затруднительно проложить проводную линию связи. Например, в
плотной
городской
застройке,
через
железную
дорогу
или
автомагистраль, через природные преграды (реки, озёра, горную
местность и т.д.).
●
Скорость и простота развёртывания FSO-сети.
Наряду с основными достоинствами беспроводных оптических систем
хорошо известны и их главные недостатки:
●
зависимость доступности канала связи от погодных условий (такие
погодные условия как туман, дождь, снег значительно снижают
эффективный диапазон работы FSO-систем);
●
необходимость обеспечения прямой видимости между излучателем и
приёмником;
●
ограниченная дальность связи.
Благодаря своим преимуществам АОЛС-технология позволяет решать
проблемы «последней мили», развивать городские сети передачи данных и
голоса, осуществлять подключение домашних сетей или офисов к сети
Интернет, а также организовывать резервные каналы связи или расширять
существующие каналы при высокой степени защищённости. Кроме того,
технология
используется
для
коммуникаций
аппаратами.
5
между
космическими
1.2. Обзор современного рынка FSO-оборудования
В настоящее время на рынке телекоммуникационного оборудования
существует
несколько
ведущих
компаний,
выпускающих
лазерные
атмосферные системы связи. Из отечественных производителей это:

Мостком (Рязань),

Оптические ТелеСистемы (Санкт-Петербург),

Лазер Ай-Ти-Си (Екатеринбург).
Среди зарубежных компаний, работающих в данном сегменте рынка,
стоит уделить внимание следующим:

fSONA (Канада),

LightPointe (США),

Canon (США),

MRV (США),

CBL (Германия),

PAV Data Systems (Великобритания),

CableFree (Великобритания),

Terabeam Wireless (США),

AirLinx (США).
Среди моделей, выпускаемых данными компаниями, можно увидеть
FSO-системы с пропускной способностью от 2 Мбит/с до 10 Гбит/c, и с
максимальной рабочей дистанцией от 200 до 7500 метров. При этом, говоря о
тенденциях развития рынка АОЛС-оборудования, стоит отметить, что,
разрабатывая и выпуская новые модели, производители стремятся к
следующему:
●
Увеличение пропускной способности канала связи. И здесь,
несомненно, лидирует американская компания «MRV», которая в этом
году выпустила модель TereScope10GE (см. рис. 1) с максимальной
6
скоростью передачи данных 10 Гбит/с. Пока это единственное
подобное FSO-решение на рынке.1
Рис. 1: 10-Гбитная FSO-система TereScope10GE (MRV)
●
Увеличение максимальной рабочей дистанции. В этой области
преуспела компания «fSONA» (Канада). Она выпускает FSO-системы с
максимальной рабочей дистанцией 7.7 километра при скорости
передачи данных 52 Мбит/с, 6.4 километра при 155 Мбит/с, и 5.3
километра при скорости канала 1250 Мбит/с.2
●
Выпуск
более
дешёвых
моделей
для
использования
в
корпоративных сетях небольших организаций. Например, компания
«LightPointe» выпускает несколько серий относительно недорогих
моделей, имеющих небольшие рабочие дистанции и предназначенных
для корпоративных локальных сетей (продуктовые линейки AireLite,
FlightLite).3
Источник: http://www.mrv.com/product/MRV-TS-TS10GE
Источник: http://fsona.com/product.php?sec=models_overview
3
Источник: http://www.lightpointe.com/products/al_100.cfm
1
2
7
●
Увеличение коэффициента доступности канала и повышение
надёжности связи. Для достижения этого производители используют
такие методы как:
– выпуск оборудования с несколькими параллельно работающими
излучающими лазерами (обеспечивает защиту от пролетающих птиц,
снегопада). Например, компании «fSONA», «LightPointe» и «CBL»
производят модели с четырьмя излучающими лазерами;
– использование систем пространственной стабилизации (также
называемых как системы автотрекинга – auto tracking systems),
которые автоматически поддерживают направление оптической
связи
в
пространстве
(отказы
оптической
линии
из-за
её
разъюстировки зачастую превышают время неработоспособности
вследствие плохих погодных условий). Введение автотрекинга
позволяет
устанавливать
приёмо-передающие
модули
на
нестабильных основаниях – деревянных крышах, вышках сотовой
связи и т.д., сохраняя при этом надёжность линии связи. Системы
автотрекинга реализованы в оборудовании от компаний «Мостком»,
«LightPointe», «Canon»;
– реализация в FSO-системах резервного радиоканала, что позволяет
не прерывать передачу данных при плохих погодных условиях
(сильный
туман,
снегопад
и
т.д.).
Системы
с
резервным
радиоканалом выпускают компании «Мостком», «Лазер Ай-ТиСи», «LightPointe», «MRV», «CBL», «AirLinx».
Ниже приведена сравнительная таблица с обзором технических
характеристик FSO-оборудования разных производителей – для каждой
компании-производителя рассмотрен весь модельный ряд, представленный
на рынке на момент написания данной работы (полный список интернетисточников, использовавшихся при составлении данного обзора, приведён в
Приложении 1).
8
Макс.
скорость
передачи
Производитель
Торговая
марка
Мостком
Artolink
Оптические
ТелеСистемы
БОКС
(ЛАНтастИКа)
8 – 1000
Мбит/с
Лазер Ай-Ти-Си
ОСС
fSONA
SONAbeam
Макс.
Кол-во
Авторабочая
излуч.
трекинг
дистанция лазеров
100 – 1000
400 – 7000 м
Мбит/с
Резерв.
радиоканал
1–3
есть
есть
600 – 1800 м
1–2
нет
нет
2 – 1250
Мбит/с
400 – 2500 м
1
нет
есть
50 – 1600
Мбит/с
2600 – 7700
м
2–4
нет
нет
8 – 1485
Мбит/с
200 – 5600 м
1–4
есть
есть
FlightStrata,
FlightLite,
LightPointe
AireLite,
FlightExpress,
FlightSpectrum
Canon
Canobeam
156 – 1485
500 – 2000 м
Мбит/с
1
есть
нет
MRV
TereScope
100 Мбит/с –
350 – 4000 м
10 Гбит/с
1–3
нет
есть
AirLaser,
CBL
LaserLink
8 – 1250
Мбит/с
300 – 2000 м
1–4
нет
есть
2 – 1000
Мбит/с
200 – 4000 м
1
нет
нет
SkyCell,
PAV Data
Systems
SkyNet,
PAVLight,
PAVExpress
CableFree
CableFree
100 – 1500
200 – 4000 м
Мбит/с
1
нет
нет
Terabeam
Wireless
TeraOptic
125 Мбит/с
1000 м
1
нет
нет
AirLinx
UniFSO
100 – 155
Мбит/с
250 – 3000 м
1
нет
есть
Таблица 1: Обзор FSO-оборудования разных производителей
9
1.3. Гибридное радио-оптическое оборудование
Как известно, особые погодные условия, такие как дождь, снег, туман,
а также песчаная пыль, городской смог и различные виды аэрозолей, могут
значительно ухудшить видимость и таким образом снизить эффективный
диапазон работы лазерных атмосферных линий связи. Так, затухание сигнала
в оптическом канале при сильном тумане может доходить до критических 50100 дБ/км (см. рис. 2). Поэтому, чтобы достичь операторских (или хотя бы
близких
к
ним)
показателей
надежности
беспроводных
оптических
телекоммуникационных систем, необходимо прибегать к использованию
гибридных решений.
Рис. 2: Влияние погодных условий на дальность оптической связи
Гибридные радио-оптические системы основываются на использовании
резервного радиоканала в связке с оптическим каналом. В случае
наступления неблагоприятных погодных условий (туман, снегопад и т.п.),
когда атмосферный оптический канал становится недоступным (или уровень
битовых ошибок в канале достигает критического значения), система
переключается на резервный радиоканал и использует его до тех пор, пока
оптический (основной) канал вновь не станет доступен. При этом в качестве
технологии резервного канала обычно используются либо широкополосные
10
Wi-Fi сети (семейство стандартов IEEE 802.11), работающие в частотном
диапазоне 2.4 – 5.8 ГГц, либо радиорелейные MMW-линии, работающие в
миллиметровом диапазоне. Основное достоинство таких FSO-RF-систем
передачи
данных
заключается
в
том,
что
это
высокоскоростные
беспроводные системы операторского класса, надежно функционирующие в
любых погодных условиях (см. рис. 3).
Рис. 3: Коэффициент доступности гибридного канала связи
Среди рассмотренных в предыдущей части производителей лазерного
телекоммуникационного оборудования шесть компаний имеют в своих
продуктовых линейках модели гибридного типа (FSO-RF) – это «Мостком»,
«Лазер Ай-Ти-Си» (отечественные), «LightPointe», «MRV», «CBL» и
«AirLinx» (зарубежные).
В
таблице
ниже
приведены
технические
характеристики
существующих на данный момент на рынке моделей гибридного радиооптического оборудования:
11
Производитель
Модель
оборудования
Скорость
оптического
канала
Скорость
радиоканала
Тип радиоканала
Макс.
рабочая
дистанция
Мостком
ARTOLINK
M1 FE-R
100 Мбит/c
6 – 28 Мбит/c
Wi-Fi (5.2 –
5.8 ГГц)
7000 м
Лазер Ай-Ти-Си
ОСС1-Ethernet
100 РОД
100 Мбит/c
100 Мбит/c
MMW
(75 ГГц)
2500 м
LightPointe
FlightStrata 100 XA
100 Мбит/c
72 Мбит/с
(Half Duplex)
Wi-Fi (5.47 –
5.85 ГГц)
5000 м
MRV
TereScope Fusion
100 Мбит/с
1000 Мбит/c
10 – 20
Мбит/c
Wi-Fi (2.4 ГГц)
4000 м
CBL
AirLaser IP 100
125 Мбит/c
4.5 Мбит/c
в спец-ции не
указано
2000 м
AirLinx
UniFSO100/155
100 Мбит/c
155 Мбит/c
5 – 20 Мбит/c
Wi-Fi
3000 м
Таблица 2: Обзор представленных на рынке моделей гибридных
FSO-RF-систем
Из
представленных
выше
гибридных
решений
наибольшую
пропускную способность резервного радиоканала – 100 Мбит/c – имеет
модель компании «Лазер Ай-Ти-Си». В то же время, ввиду использования
миллиметрового радиодиапазона, данное решение имеет относительно
небольшую для гибридов максимальную рабочую дистанцию – всего 2500 м,
а его стоимость увеличивается (по сравнению с обычными FSO-системами)
почти в два раза. При этом само оборудование представляет собой два
раздельных
устройства
–
отдельно
оптический
блок,
и
отдельно
радиорелейный, что усложняет монтаж всей системы.
Остальные же модели-гибриды, основанные на Wi-Fi технологии,
имеют относительно невысокую скорость резервного канала, обычно не
превосходящую 20 Мбит/c. Особого внимания заслуживает гибридная
система ARTOLINK M1 FE-R производства компании «Мостком», в
которой используется специально откалиброванное оборудование на базе
12
Wi-Fi радиомаршрутизаторов RAPIRA (диапазон 5.2 – 5.8 ГГц) со
специализированным
программным
обеспечением.
Такое
решение
обеспечивает полнодуплексную скорость передачи данных в резервном
канале до 28 Мбит/с (при канальной скорости 108 Мбит/с), а также
возможность плавного снижения скорости и практически отсутствующее
время переключения между каналами.
Но в любом случае таких пропускных способностей недостаточно для
резервирования высокоскоростного (например, гигабитного) оптического
канала связи, что делает проблематичным использование данных решений
требовательными операторами связи.
13
2.
Постановка задачи и описание модели
2.1. Постановка задачи
Из всего сказанного выше можно сделать вывод, что, ввиду
неоспоримых преимуществ использования гибридных радио-оптических
систем передачи данных, разработка таких систем является весьма
перспективным направлением в телекоммуникационном секторе – как с
технической точки зрения, так и с точки зрения маркетинговой. Тем не
менее, на данный момент на рынке представлено лишь небольшое
количество моделей гибридного FSO-RF-оборудования, в то время как
существующие модели не всегда могут продемонстрировать технические
показатели операторского уровня – а именно высокую пропускную
способность резервного канала при относительно больших рабочих
дистанциях и коэффициенте доступности канала связи.
Это открывает огромный простор для деятельности разработчиков и
производителей
телекоммуникационного
оборудования
(в
том
числе
оборудования, основанного на АОЛС-технологии). Одним из первых этапов
разработки
любой
системы
передачи
данных
является
модельное
исследование этой системы с целью теоретического определения основных
технических
характеристик
будущего
телекоммуникационного
оборудования. И данная работа затрагивает именно эту проблему.
В работе предлагается описать и исследовать модель гибридной
системы передачи данных, основанной на базе лазерной и радиотехнологий. При этом предлагается использовать два принципиально разных
метода моделирования, а именно:
●
математическое моделирование – с использованием методов теории
массового обслуживания, а также известных алгоритмов из теории
цепей Маркова;
14
●
имитационное (машинное) моделирование – посредством написания
специализированной
компьютерной
программы,
имитирующей
информационные процессы, происходящие в телекоммуникационной
системе.
Целью данного моделирования является определение основных
характеристик
производительности
исследуемой
системы,
таких
как
коэффициент доступности канала связи, средняя пропускная способность,
доля времени использования резервного канала, средняя длина очереди и
среднее время пребывания заявки (пакета данных) в системе, а также
выявление зависимостей этих показателей от параметров модели.
2.2. Описание
модели
гибридной
радио-оптической
телекоммуникационной системы
Исследуемая модель гибридной радио-оптической системы передачи
данных представляет собой систему массового обслуживания (СМО) с двумя
возможными скоростями обслуживания (см. рис. 4). Иными словами, система
может использовать два режима работы: первый режим ( k  1 ) – когда
передача данных осуществляется по оптическому (основному) каналу, и
второй режим ( k  2 ) – передача данных осуществляется по резервному
радиоканалу.
Входящий поток заявок в систему – стационарный пуассоновский с
параметром
 . Число мест для ожидания – неограниченно. При
использовании k-й скорости (k-го режима) время обслуживания заявки
распределено экспоненциально с параметром  k , k  1,2 . При этом 1  2 ,
то есть пропускная способность оптического канала заведомо больше
пропускной способности радиоканала.
15
Рис. 4: Модель гибридного канала связи
Время использования k-режима определяется погодными условиями (а
именно, метеорологической дальностью видимости – МДВ) в некоторой
конкретной
местности,
телекоммуникационной
где
планируется
системы.
Далее
установка
будем
полагать,
исследуемой
что
время
использования k-й скорости ограниченно и характеризуется абсолютно
непрерывной величиной  k , имеющей плотность распределения
1
 2
Fk  t   pk k e k t  1  pk   k e k t ,
1
представляющего
собой
2
частный
случай
гиперэкспоненциального
распределения. Такая модель изменения погодных условий была предложена
в [5] и основана на опытных наблюдениях, полученных после шести месяцев
испытаний
в
реальных
условиях
гибридного
радио-оптического
оборудования модели ARTOLINK М1 FE-2А-R. (Конечно, такие условия,
как дальность видимости, изменчивы, тем не менее, общие сезонные
тенденции определяются климатической зоной, широтой и другими
известными географическими параметрами местности, где планируется
установка оборудования.)
16
Если время первого режима завершается (оптический канал становится
недоступным), текущее обслуживание заявки (передача пакета) прерывается
и система переходит на второй режим работы (использование резервного
радиоканала). Сразу после перехода на второй режим обслуживания передача
пакетов не производится. Система должна выждать время Q2 , и если за это
время второй режим работы не завершился
2  Q2  ,
то по истечении
времени Q2 начинается обслуживание заявки (передача пакета) на второй
скорости
(по
обслуживание
радиоканалу).
При
которой
оптическому
по
этом
предполагаем,
каналу
что
было
заявка,
прервано,
обслуживается заново.
По истечении времени работы второго режима (оптический канал
вновь становится доступным) система, продолжая обслуживать заявки во
втором режиме (т.е. продолжая передавать пакеты по радиоканалу),
отслеживает доступность оптического канала. И если оптический канал
доступен в течение некоторого времени Q1 , то по завершении этого времени
система начинает использовать первый режим (оптический канал). При этом
заявка,
в
ходе
обслуживания
которой
произошла
смена
режима,
обслуживается заново на новой скорости.
Описанная выше модель включает в себя следующие допущения:
●
экспоненциально распределенное время передачи пакета;
●
пакеты при переходе с оптического канала на радиоканал не теряются;
●
при смене скорости передачи пакета (смене канала передачи данных)
текущая передача пакета прерывается и стартует заново на новой
скорости.
Также следует отметить, что данная модель не предполагает выбора
какой-то конкретной технологии радиопередачи для использования в
резервном канале связи – это может быть, например, 802.11a, 802.11g,
802.11n, MMW-стандарты или любая другая технология передачи данных по
радиотракту.
17
Математическое моделирование
3.
В данной части предлагается построить и исследовать математическую
модель, представляющую собой систему массового обслуживания типа
M/M/1 с двумя возможными скоростями обслуживания и описывающую
функционирование
гибридного
канала
связи
(см.
рис.
2).
Целью
математического моделирования является разработка алгоритма вычисления
таких характеристик производительности системы, как стационарное
распределение и
средняя длина очереди, среднее время ожидания
обслуживания, среднее время пребывания заявки в системе.
3.1. Стационарное распределение вероятностей состояний
системы
Предположим, что система функционирует в стационарном режиме.
Условия существования стационарного режима будут получены позже. Для
упрощения дальнейших расчётов предположим также, что время перехода с
радиоканала на оптический канал ( Q1 ) задаётся не фиксированным числом, а
экспоненциально распределённой случайной величиной с параметром Q1 .
Предполагаем, что обслуживающий прибор может находиться в
четырех состояниях:
1 – работа в первом режиме (использование оптического канала);
1’ – переключение с первого режима на второй (с оптического на
радиоканал);
2 – работа во втором режиме (использование радиоканала);
2’ – переключение со второго на первый режим (с радиоканала на
оптический).
Будем
наблюдать
поведение
системы
в
моменты
завершения
обслуживания, а также моменты окончания и смены режимов работы.
18
Обозначим через tk – k-й такой момент, k  1 . Под состоянием системы в
момент tk будем понимать вектор
X k   ik , mk , mk  ,
где ik – число заявок в системе в момент времени tk  0 , mk – состояние
обслуживающего прибора в момент tk  0 , mk – состояние обслуживающего
прибора в момент tk  0 . Здесь мы полагаем, что состоянию
 i, m, m 
соответствует завершение обслуживания заявки, m 1,2,2 .
Введем стационарные вероятности состояний системы:
  i, m, m   lim P ik  i, mk  m, mk  m ,
k 
i  0, m, m  1,1,2,2.
Пусть также
fi
k 


 t 
i
 t  k t
e e
i!
0
p e
  k t
1
k
 1  pk  e
2
 k t
  dt
k
– вероятность того, что за время обслуживания заявки в режиме k в систему
поступят i заявок;
k 

gi  
  t  e  t e   t
k
i!
0
p 
k
1
k
  k t
1
e
 1  pk   k e
 2
2
  k t
 dt
– вероятность того, что за время обслуживания заявки в режиме k время
использования
режима
истекает,
т.е.
оптический
канал
становится
недоступным, если использовался режим 1 (k = 1), или доступным, если
использовался режим 2 (k = 2); а за неполное время обслуживания в систему
поступят i заявок;
1
hi 
Q2

0
 t 
i!
i

1
 2
e t p2 2 e 2 t  1  p2   2 e  2
1
19
2
t
 dt
– вероятность того, что время переключения с первого режима на второй
меньше Q2 и за время переключения в систему поступят i заявок;
 2
hi
 Q2 


i
1
 2
e Q2 p2e 2 Q2  1  p2  e 2
i!
Q2

– вероятность того, что время переключения с первого режима на второй
больше Q2 и за время переключения в систему поступят i заявок;

ri  
 t 
i
e t eQ1t 2e 2t dt
i!
0
– вероятность того, что за время обслуживания заявки при переключении со
второго режима на первый в систему поступят i заявок;

mi  
 t 
0
i!
i
e  t e Q1t Q1e  2t dt
– вероятность того, что за время обслуживания заявки при переключении со
второго режима на первый это переключение завершается, и за неполное
время обслуживания в систему поступят i заявок.
2
Эти вероятности (кроме hi  , которые заданы явно) могут быть
вычислены следующим образом:
fi
k 
k 
 pk
gi  pk


k  i
1
k
 k  
 k1 i
1
k
 k  


i 1
i 1
 1  pk 
 1  pk 
20


k  i
 2
k
 k  
 k 2 i
 2
k
 k  
i 1
,
k  1,2;
i 1
,
k  1,2;


hi
k

1
i
  2    Q2
 2  p2 
1
Q2m
 1
e

i

1
1


2     
m 0 m!     
2
2

1
i




       Q
 2 2 i 1  p2  
1

e
i
 2

2


2  
 2  


2
2

2



i m 


;

i m 
2
m 0 m!     
2

i

Q2m

2 i
ri 
;
i 1
Q




 1 2 
mi 
Q1 i
 Q1  2   
i 1
, i  0.
Заметим, что за время переключения со второго режима на первый в
систему как поступают заявки, так и уходят из нее. Поэтому для удобства
будем полагать, что в каждый момент завершения такого переключения с
вероятностью
  p1
 11
1
 1  Q1
 1  p1 
 1 2
 1 2  Q1
система начинает использовать первый режим работы, а с дополнительной
вероятностью (1   ) – остается работать во втором режиме. Уточним, что
величина  есть вероятность того, что начавшееся время первого режима
больше, чем время переключения, и таким образом, с этой вероятностью
система может переключиться на первый режим работы.
Далее, используя введенные выше вспомогательные вероятности,
составим уравнения равновесия для стационарных вероятностей   i, m, m 
состояний системы для i  0 :
21
i 1
  i,1,1     k ,1,1    k ,2,1    k ,1,1  fi 1k1 
k 1
   0,1,1    0,2,1    0,1,1  s1 fi   ,
(1)
1
i
  i,1,1      k ,1,1    k ,2,1    k ,1,1  gi1k 
k 1
   0,1,1    0,2,1    0,1,1  vi  ,
(2)
1
i
  i,1, r     k ,1,1 hirk ,
r  1,2,
(3)
k 0
i 1
  i,2,2      k ,2,2     k ,2,2     k ,1,2   fi  2k1 
k 1
   0,2,2     0,2,2     0,1,2   s2 f 2  ,
(4)
1
i
   gi2k 
  i,2,2      k ,2,2     k ,2,2     k ,1,2
k 1
   vi  ,
   0,2,2     0,2,2     0,1,2
(5)
2
i 1
  i,2,2      k ,2,2     k ,2,2   ri k 1 
k 1
   0,2,2     0,2,2  

  Q1
(6)
ri ,
i
  i,2,1     k ,2,2     k ,2,2   mi k 
k 1
 

Q
   0,2,2     0,2,2   
mi 1  1 Ii 0  ,
  Q1
   Q1

22
(7)
i
  i,2,1     k ,2,2     k ,2,2   mi k 1    
k 1
Q 1   
  1   

   0,2,2     0,2,2   
mi 1  1
Ii 0  ,
  Q1
   Q1

(8)
где I A – функция-индикатор события A ,
sm  pm



1

p
,


m
   m1
   m 2
vi( m)  sm gi(m1) I{i 0}  1  sm  I{i 0} ,
m  1,2,
i  0.
Заметим, что из системы (1)–(7) можно непосредственно исключить
равенства (3), таким образом получим:
i 1
i 1
  i,1,1     k ,1,1    k ,2,1  fi k 1     k ,1,1  fˆi 1k1 
1
k 1
k 1
   0,1,1    0,2,1  s1 fi   
1

(9)


1
1
1
1
  0,1,1  s1 fi    fi  1 h0   fˆi  1 ,
i
i
  i,1,1      k ,1,1    k ,2,1  gi k     k ,1,1  gˆ i1k 
1
k 1
k 1
   0,1,1    0,2,1  vi  
(10)
1


1
1
1
1
1
  0,1,1  gˆ i   h0  gi   vi  h0  ,
i 1
i 1
  i,2,2      k ,2,2     k ,2,2   fi k 1    k ,1,1  fˆi  2k1 
 2
k 1
2
   0,2,2     0,2,2   s2 fi   


k 1
(11)

2
2
2
2
  0,1,1  s2 fi    fi  1 h0   fˆi  1 ,
23
i 1
i
  i,2,1      k ,2,2     k ,2,2   gi k     k ,1,1  gˆ i2k 
 2
k 1
   0,2,2     0,2,2   vi  
k 1
(12)
2


2
2
2
2
2
  0,1,1  gˆ i   h0  gi   vi h0  ,
i 1
  i,2,2      k ,2,2     k ,2,2   ri k 1 
k 1
   0,2,2     0,2,2  

  Q1
(13)
ri ,
i
  i,2,1     k ,2,2     k ,2,2   mi k 
k 1
 

Q
   0,2,2     0,2,2   
mi 1  1 Ii 0  ,
  Q1
   Q1

(14)
i
  i,2,1     k ,2,2     k ,2,2   mi k 1    
k 1
Q 1   
  1   

   0,2,2     0,2,2   
mi 1  1
Ii 0  ,
  Q1
   Q1

где
i
fˆi ( m )   hk( m ) fi ( mk ) ,
k 0
gˆ
i
(m)
i
  hk( m ) gi(mk) ,
24
k 0
i  0, m  1,2.
(15)
3.2. Матрично-аналитический
метод
вычисления
стационарных
вероятностей
стационарных вероятностей
Для
вычисления

 (за исключением   i,1, r  , которые могут
  i, m, m , i  0, m, m1,1,2,2
быть легко вычислены по формулам (3)) применим матрично-аналитический
подход, который основан на идее сенсорных цепей Маркова. Алгоритмы
такого рода изложены в работах [6, 7].
Введем
в
рассмотрение
векторы
стационарных
вероятностей
 i    i,1,1 ,   i,1,1 ,   i,2,2 ,   i,2,2 ,   i,2,2 ,   i,2,1 ,  i,2,2  .
Тогда систему уравнений равновесия можно переписать в векторноматричной форме:
i 1
 i    k Pk ,i ,
i  0,
(16)
k 0
где матрицы Pi ,l , i  0, l  min i  1,0 , имеют вид:
 Al
P0, l  O24

 Cl
 f 01
 1
 fˆ0

 0
Pi , i 1   0

 0
 ˆ 1
 f0
 0

0
O33 
Bl 

O23 
0
0
0
0
2
fˆ  
0
0
0
0
2
fˆ0 
0
0
0
0
0 r0
0
0
0 r0
0
0
2
fˆ  
0
0
0
0
0
0
25
(17)
0 0

0 0

0 0
0 0  , i  1,

0 0

0 0
0 0 
(18)
и для l  i :
 fl 1i1
 1
 fˆl i 1

 0
Pi , l   0

 0
 1
 fl i 1
 0

gli
0
0
0
0
1
gˆ li
2
fˆl  i  1
1
gˆ li
0
0
0
fl i  1
2
gli
0
0
0
0
0
rl i 1  ml i
0
0
0
rl i 1  ml i
gli
0
0
0
0
0
fl i  1
gli
0
0
1
1
2
2
2


0


0

1    ml i  ,
1    ml i 

0


0

0
(19)
где
 sl fl 1

1
Al   yl 

 0
vl 
1

1
1
1
1
gˆ l   h0  vl   gl 
0

yl
 
rl



Q
1
Bl  
 
rl

   Q1

  Q1
ml 1 
Q1
I
  Q1 l 0

Q
ml 1  1 Il 0
  Q1
  Q1
 s1 f l 1
Cl  
 0

2
s2 fl 
0
vl 
1
0
0
s1 fl
 2

0
2

2
2
2
2
gˆ l   h0  vl   gl 
vl
2



,


 1   
Q 1   

ml 1  1
Il 0 
  Q1
  Q1


 1   
Q1 1   
m 
I 
  Q1 l 1
  Q1 l 0 
0 
,
 2
vl 
m
m
m
m
m
yi   sm fi    fi  1  h0   fˆi  1  ,
,
l  0,
m  1,2, i  0.
Отметим, что известные алгоритмы, основанные на идее сенсорных
цепей Маркова, предполагают, что счетная компонента цепи Маркова,
описывающей поведение системы (в нашем случае компонента ik цепи
X k , k  1 ), совершает переход не более чем на единицу влево, за один шаг.
26
 k , k  1 для цепи
Сенсорная цепь Маркова
X k , k  1 строится
следующим образом. Значения счетной компоненты in ограничиваются
некоторым фиксированным числом N *  0 . Состояние сенсорной цепи
совпадает с состоянием цепи X k , k  1 , если in  0, N * . Когда состояние
компоненты in цепи X k , k  1 становится больше, чем N * , компонента in
сенсорной цепи принимает значение N * , а конечные компоненты этой цепи
изменяют состояния так же, как и соответствующие компоненты цепи
X k , k  1.
Зафиксируем целое число N *  0 и для цепи Маркова X k , k  1
построим сенсорную цепь  k , k  1 с пространством состояний 0,1,..., N *
счетной
компоненты
in .
Обозначим через
N 
*
Pi ,l , i, l  0, N *
матрицы
одношаговых вероятностей переходов сенсорной цепи  k , k  1. Нетрудно
видеть, что
N 
*
Pi ,l
 Pi ,l , i  0, N * , l  0, N *  1.
Определим матрицы
N 
*
Pi ,l
при
l  N * . Для этого необходимо
проследить переходы исходной цепи X k , k  1 в области in  N * от момента,
когда значение компоненты in стало больше, чем N * , и до момента, когда in
N 
*
вновь вернется в состояние N * . Введем обозначение Pi , N *  Pi , N * .
Пусть G 
k
есть матрица вероятностей переходов конечных компонент
цепи Маркова X k , k  1 за время, в течение которого значение счетной
компоненты уменьшится с
k  1 до
удовлетворяют соотношениям:
27
k,
k  0 . Матрицы
G  , k  0
k
G
k 
 Pk 1, k 

P
i  k 1
G  G 
i 1
k 1, i
i 2 
 G   ,
k
k  0.
(20)
Анализируя поведение цепи Маркова X k , k  1 от момента, когда
значение компоненты in становится больше, чем N * , до момента первого
возвращения этой компоненты в состояние N * , получаем равенства вида
Pi , k  Pi , k 
l k

 P  G
l  k 1
i,l
l n 
i  0, k , k  0
,
(21)
n 1
для матриц Pi , N * , i  0, N * , полагая в (21) k  N * .
Векторы стационарных вероятностей состояний сенсорной цепи
 k , k  1 и векторы  i , i  0, N * удовлетворяют одной и той же системе
алгебраических уравнений
l 1

 N* 



P
 l  i i ,l ,

i 0

N*
*
   P N 
i i,N*
 N * 
i 0
l  0, N *  1
(22)
Эта система имеет ранг  N *  1 H  1 и определяет векторы  l , l  0, N *
с точностью до константы, которая может быть определена из условия
нормировки.
Далее не будем считать число N * фиксированным и для исходной цепи
Xk, k 1
последовательно
построим
сенсорные
цепи
с
величиной
N *  0,1,2,... . Используя для каждого N * уравнение для  N * системы (22), с
N 
*
учетом обозначения Pi , N *  Pi , N * нетрудно получить соотношения:
 k   0 k , k  1,
28
(23)
где  0  I ,
k 1

 k   i Pi ,k I  Pk ,k
i 0

1
, k  1.
(24)
Система уравнений для вектора  0 составляется из последнего
уравнения системы (22) при N *  0 и условия нормировки для равенств (23):


  I  P0, 0  0,

 
 0   i1  1.
 i 0
(25)
В силу того, что матрицы Pi , l зависят лишь от разницы l  i , то
матрицы G 
k
в (20) не зависят от k (будем полагать, что все G    G ) и
k
определяются как решение матричного уравнения:

G   Pi , l G l i 1
(26)
l i 1
Уравнение (26) решается итерационно, например, с помощью
итерационной схемы:
1
G0  I ,



Gk   I   Pi , l Gkl 1i  Pi , i 1 ,
l i


а матрица G определяется как
G  lim Gk .
k 
29
k  1,
(27)
3.3. Условие существования стационарного режима
Для установления условий существования стационарного режима
представим
рассматриваемую
систему
как
систему
с
отдыхами
обслуживающего прибора, в которой под отдыхом прибора понимается
время между моментами, когда завершился первый режим работы до
следующего момента, когда система вновь переключилась на первый режим.
Заметим, что дисциплина обслуживания заявок в системе – ограниченная
(это значит, что время обслуживания очереди ограничено значением
случайной величины 1 ).
Для таких систем необходимое и достаточное условие существования
стационарного режима получено в работе [8] и имеет вид:
1  V / G  1,
где 1   / 1 , V – средняя длительность отдыха, G – среднее максимальное
число заявок, которые могут быть обслужены в очереди между соседними
отдыхами. Заметим, что поскольку для системы в [8] обслуживания заявок во
время отдыха прибора не производится, а в нашем случае – наоборот, то
условие существования стационарного режима будет достаточным.
Величина G определяется как
 p1 1  p1 
G  1  1   2  .
1 
 1
Найдем теперь среднюю длительность отдыха V:
V  1V1,1  1  1  V1, 2  V2  V2  ,
где
1  1  p2e
1
2 Q2
 2
 1  p2  e  2
30
Q2
– вероятность того, что переключение с первого режима на второй
завершилось переходом на второй режим;
V1,1 
p2
 21

1  p2
 2 2
– средняя длительность переключения с первого режима
на второй, которое завершилось переходом на первый режим;
V1,2  Q2 – средняя длительность переключения с первого режима на
второй, которое завершилось переходом на второй режим;
V2 
p2
 21

1  p2
 2 2
– средняя длительность второго режима;
V2 – средняя длительность переключения со второго режима на первый (с
учетом возможных "возвратов" на второй режим), которое завершилось
переходом на первый режим.
Найдем величину V2 . С вероятностью  имеем V2 
1
. Напомним,
Q1
что  – вероятность того, что переключение со второго режима на первый
завершается переходом на первый режим. С вероятностью 1   
m1
 за
время от момента завершения второго режима до перехода на первый
последует m  1 "возвратов" на второй режим, и на m-м переключении
произойдет переход на первый режим, m  2 . Средняя длительность такого
периода равна
m

m 1

m

1
V
1


,





2

Q
m2 


и таким образом
V2 

11

V
1




.
  Q 2

31
Далее получаем, что средняя
длительность отдыха V определяется
равенством:
 p 1 p 

1
V 
V  1  12   2 2   1  1   Q2 
 2 .
 Q1  
2 

 2
Таким
образом,
для
существования
стационарного
режима
в
рассматриваемой системе достаточно, чтобы
1
 p 1 p 
1  1V  11   2 1   1.
1 
 1
3.4. Характеристики производительности системы
Под состоянием системы в произвольный момент времени t  0 будем
понимать состояние процесса X t  it , mt  , t  0 , где it – число заявок в
системе в момент времени t, mt – состояние обслуживающего прибора,
m 1,1,2,2 .
Стационарное распределение вероятностей состояний системы в
произвольный момент времени определяется как предельное распределение
процесса X t , t  0 . На основании результатов работы [9] достаточным
условием существования стационарных вероятностей
p  i, m   lim P it  i, mt  m , i  0, m  1,1,2,2
t 
является существование стационарного распределения вложенной цепи
Маркова X k , k  1 .
Стационарные
вероятности
p  i, m  , i  0
состояний
системы
произвольный момент времени удовлетворяют следующим равенствам:
32
в
p  i, r      0, r , r     0,1, r     0,2, r   
pr Ii 0 1  pr  Ii 0 

  sr fi 1 


1
 2


 r
 r


(28)
i
    k , r , r     k ,1, r     k ,2, r   f i k ,
k 0
при
i  0, r  1,2,
i
p  i, 1      k ,1,1 hi k ,
i0
(29)
k 0
Ii 0 
 




p  i, 2      0,2 ,2     0,2,2   
g 

   Q i 1   Q 
1
1

(30)
i
    k ,2,2     k ,2,2   gi k ,
k 1
где

fi  r   
0

hi 
Q2

0

 t 
i
i!
  t  e  t e   t
i
r
i!
pr  i
  

1
r
r
p2 i
i 1

1
  
 2
   
1
i 1

1
 p2    2
1  p2   i
   
 2
2
i 1


 2 t
1  pr   i
e  t p2e  2 t  1  p2  e  2
2



1
pr e  r t  1  pr  e  r
t
 1  p2     2
 2

r
r
m
33
,
 Q2  eQ e  Q
 i  m !
  


 2 
m 0     2 
i

i 1
 dt 
  


1 
m 0     2 
i
 2
 dt 
i m
2
m
1
2
2

 Q2  e Q e  Q ,
 i  m !
i m
2
2
2
2

gi  
 t 
0
Вычислив
i
 t  2t  Q1t
e e
i!
e
стационарное
dt 
i
   2  Q1 
распределение
i 1
, i  0.
вероятностей
состояний
системы в произвольный момент времени, находим характеристики
производительности системы:
●
Доля времени, в течение которого система работает в r-м режиме:

qr   p  i, r  ,
r  1,2.
i 0
●
Средняя длина очереди, когда обслуживающий прибор находится в
состоянии r:

Lr   ip  i, r ,

.
r 1,1,2,2
i 0
●
Средняя длина очереди в произвольный момент времени:
L  L1  L1  L2  L2 .
●
Среднее время ожидания обслуживания в системе (вычисляется по
формуле Литтла):
W  L/ .
34
3.5. Алгоритм и компьютерная программа расчёта
На основе результатов, полученных выше, можно определить алгоритм
вычисления
стационарных
вероятностей
и
основных
характеристик
производительности исследуемой системы:
1. Формируем матрицы Pi , l , i, l  0 , с помощью равенств (17)–(19).
2. Находим матрицу G как решение матричного уравнения (26) с
помощью итерационной схемы (27).
3. Вычисляем матрицы Pi , k , k  0, i  0, k , из (21).
4. Находим вектор  0 как решение системы уравнений (22).
5. Вычисляем остальные векторы  i , i  1 , из равенств (23)–(24).
6. По
полученным
стационарным
вероятностям
вычисляем
характеристики производительности системы (среднюю длину очереди
и среднее время ожидания в системе).
Для реализации описанного алгоритма и производства численных
вычислений
в
рамках
данной
работы
была
написана
специальная
компьютерная программа на языке программирования JAVA (JDK 1.5). При
этом, с целью уменьшения времени исполнения программы (т.е. уменьшения
количества процессорных операций), была произведена соответствующая
оптимизация вычислительного алгоритма.
Полный код программы приведён в Приложении 2. Ниже следует
описание Java-классов:

Main – управляющий класс, который инициализирует одиночный
расчёт или серию расчётов, а также считывает входные параметры из
файла и записывает результаты в выходной файл;
35

ScalarCalculator – класс, отвечающий за вычисление скалярных
функций, необходимых для формирования матриц Pi , l ;

MatrixCalculator
–
класс,
реализующий
алгоритмы
вычисления
матрицы G, матриц Pi , k , векторов стационарных вероятностей  i , а
также средней длины очереди L;

Matrix – вспомогательный класс, используемый для хранения матриц
(векторов) и выполнения математических операций над матрицами
(умножение матриц, нахождение обратной матрицы и т.д.).
Входные параметры рассчитываемой модели задаются в текстовом
файле (по умолчанию, “input.txt”); среди них: интенсивность входного потока
заявок (  ), интенсивность обслуживания заявок в оптическом и радиоканале ( 1 и  2 соответственно), время переключения между каналами ( Q1 и
Q2 ), параметры гиперэкспоненциального распределения времени работы в
каждом из режимов ( pk ,  k  ,  k  ), а также ещё два дополнительных
1
2
параметра, определяющих точность проводимых вычислений (а именно,
точность вычисления матрицы G по итерационной схеме и точность
вычисления средней длины очереди как суммы бесконечного количества
элементов). Результаты работы программы (результаты промежуточных
вычислений и искомые характеристики производительности) выводятся на
экран и в текстовый файл (по умолчанию, “output.txt”).
Стандартный вывод программы выглядит следующим образом:
Calculating f[i], g[i], h[i], r[i], m[i]...
f(1)=0 when i>104
f(2)=0 when i>154
g(1)=0 when i>101
g(2)=0 when i>151
r=0 when i>154
m=0 when i>152
h(1)=0 when i>127
h(2)=0 when i<0
h(2)=0 when i>689
36
Calculating v[i], f^[i], g^[i]...
v(1)=0 when i>102
v(2)=0 when i>152
f^(1)=0 when i>229
f^(2)=0 when i>689
g^(1)=0 when i>226
g^(2)=0 when i>681
Calculating matrices P[i,l]...
P[0,l] = O when l>688
P[1,l] = O when l>689
Stochastic property of SUM(P[i,l]):
Line 1, elements sum = 1.0
Line 2, elements sum = 0.9999999999999956
Line 3, elements sum = 0.9999999999999998
Line 4, elements sum = 1.0
Line 5, elements sum = 1.0
Line 6, elements sum = 1.0
Line 7, elements sum = 0.9999999999999998
Calculating matrix G...
Max k = 6
Stochastic property of G:
Line 1, elements sum = 0.9999999999999981
Line 2, elements sum = 0.9999999999999916
Line 3, elements sum = 0.9999999999999998
Line 4, elements sum = 1.0000000000000002
Line 5, elements sum = 0.9999999999999999
Line 6, elements sum = 0.9999999999999982
Line 7, elements sum = 1.0
Calculating matrices Y[i,l]...
Y[0,l] = O when l>688
Y[1,l] = O when l>689
Calculating vectors Pi[i]...
pi[0] = 0.027140620633010815
2.8189088608862957E-5
2.817130381757086E-5
1.7141102077598734E-8
0.028189090568129096
0.9366204437986994
1.778674860092839E-8
pi[100] =
1.75867548165511E-12
1.0355484200499182E-21
8.17060670834796E-9
2.1838347373879208E-15
1.7123431644562498E-14
9.989897141992435E-23
1.58223649418794E-19
Max i = 126
SUM(pi[i])*1 = 0.9999999999729698
Calculating L value...
L = 0.00814387402654322
Total calculation time: 1 sec.
37
3.6. Примеры численных расчётов
В
данном
подразделе
приводятся
несколько
серий
расчётов
характеристик производительности гибридной радио-оптической системы
передачи данных, произведённых с помощью описанной выше программы.
Рассчитывались такие характеристики, как средняя длина очереди и среднее
время пребывания заявки (пакета данных) в системе.
При проведении расчётов варьировались следующие параметры
модели: пропускная способность оптического канала ( 1 ), пропускная
способность резервного радиоканала (  2 ), интенсивность входного потока
(  ), время переключения с основного канала на резервный и обратно ( Q2 и
Q1 соответственно). В то же время параметры модели, определяющие
характер изменения погодных условий (иными словами, определяющие
функции распределения для времени работы каждого из каналов), брались
постоянными со следующими численными значениями:
p1  0.65,
 11  9.5E-5,
 1 2  4.019E-6;
p2  0.8,
 21  3.72E-3,
 2 2  1.684E-4.
Такие значения были получены в результате шести месяцев испытаний
в
реальных
условиях
гибридного
FSO-RF-оборудования
(испытания
проводила компания «Мостком»), и описывают приближённую модель
изменения погодных условий в местности, где проводились данные
испытания.
Стоит
также
отметить,
что
таким
коэффициентам
гиперэкспоненциального распределения соответствуют следующие средние
значения:
tfso 
p1
 1(1)

1  p1
 1(2)
93928 с 26 часов
38
– среднее время непрерывной работы системы в первом режиме (когда
оптический канал доступен);
trf 
p2
 2(1)

1  p2
 2(2)
1403 с 23 минуты
– среднее время непрерывной работы системы во втором режиме (когда
оптический канал недоступен и передача данных ведётся по резервному
радиоканалу).
Ниже
приводятся
примеры
расчётов
характеристик
производительности исследуемой системы при различных параметрах
модели, с соответствующими таблицами и графиками.
1. Зависимость средней длины очереди и среднего времени ожидания от
интенсивности входного потока.
А)
Возьмём пропускную способность оптического канала равной 125
Мбит/с, а пропускную способность радиоканала – 20 Мбит/с (такими
характеристиками обладает гибридная система ARTOLINK M1 FE-R
производства компании «Мостком»). Следовательно, 1  15260 пакетов в
секунду,  2  2440 пакетов в секунду. Здесь и далее полагаем, что длина
пакета фиксирована и равна 1024 байт. Возьмём Q1  0.1 с1 (т.е. среднее
время переключения с радиоканала на оптический равно 10 секунд),
Q2  1 с . Интенсивность входного потока (  ) варьируется от 100 до 2400
пакетов в секунду. Соответствующие расчёты приведены ниже (в таблице
также указано время выполнения вычисления на компьютере).
39
,
Выч.
пак/с
L, пак W, мс время,с
100 0,042 0,418
0
200 0,087 0,437
0
300 0,137 0,457
0
400 0,192 0,479
1
500 0,252 0,504
2
600 0,319 0,531
3
700 0,393 0,562
3
800 0,477 0,596
5
900 0,571 0,634
6
1000 0,678 0,678
7
1100 0,802 0,729
9
1200 0,945 0,787
10
,
Выч.
пак/с
L, пак W, мс время,с
1300 1,113 0,856
11
1400 1,314 0,938
13
1500 1,557 1,038
14
1600 1,858 1,161
16
1700 2,241 1,318
19
1800 2,742 1,524
22
1900 3,430 1,805
23
2000 4,430 2,215
26
2100 6,019 2,866
29
2200 8,931 4,059
33
2300 16,002 6,958
40
2400 58,430 24,346
72
Таблица 3: Зависимость средней длины очереди и среднего времени
ожидания от интенсивности входного потока (А)
График 1: Средняя длина очереди (логарифмическая шкала)
40
График 2: Среднее время ожидания (логарифмическая шкала)
Б)
Пусть теперь пропускная способность оптического канала равна
1 Гбит/с, радиоканала – 100 Мбит/с (такую пропускную способность
радиоканала
возможно
реализовать,
используя,
например,
Wi-Fi
оборудование стандарта IEEE 802.11n). Следовательно, 1  122070
пак/с,  2  12207 пак/с, Q1  0.1 с1 , Q2  1 с . Интенсивность входного
потока (  ) варьируется от 1000 до 12000 пак/с. Соответствующие
расчёты приведены ниже (в таблице также указано время выполнения
вычисления на компьютере).
,
пак/с
L, пак
1000 0,088
1200 0,107
1400 0,128
1600 0,149
1800 0,170
2000 0,193
2200 0,217
2400 0,241
2600 0,267
2800 0,293
3000 0,321
Выч.
W, мс время,с
0,088
6
0,089
8
0,091
10
0,093
13
0,095
16
0,096
19
0,098
22
0,100
26
0,103
30
0,105
34
0,107
38
41
,
пак/с
L, пак
6600 1,158
6800 1,237
7000 1,323
7200 1,415
7400 1,514
7600 1,623
7800 1,741
8000 1,870
8200 2,013
8400 2,170
8600 2,345
Выч.
W, мс время,с
0,175 162
0,182 172
0,189 179
0,196 189
0,205 199
0,214 209
0,223 221
0,234 230
0,245 241
0,258 253
0,273 268
3200
3400
3600
3800
4000
4200
4400
4600
4800
5000
5200
5400
5600
5800
6000
6200
6400
0,350
0,380
0,412
0,445
0,480
0,516
0,555
0,595
0,638
0,683
0,730
0,781
0,834
0,891
0,951
1,016
1,084
0,109
0,112
0,114
0,117
0,120
0,123
0,126
0,129
0,133
0,137
0,140
0,145
0,149
0,154
0,159
0,164
0,169
43
48
55
58
64
70
76
85
91
97
104
111
119
127
136
145
153
8800
9000
9200
9400
9600
9800
10000
10200
10400
10600
10800
11000
11200
11400
11600
11800
12000
2,540
2,759
3,008
3,292
3,620
4,003
4,454
4,996
5,657
6,483
7,544
8,957
10,930
13,882
18,779
28,488
56,959
0,289
0,307
0,327
0,350
0,377
0,408
0,445
0,490
0,544
0,612
0,699
0,814
0,976
1,218
1,619
2,414
4,747
277
289
302
315
329
345
360
412
386
405
420
437
456
478
504
614
614
Таблица 4: Зависимость средней длины очереди и среднего времени
ожидания от интенсивности входного потока (Б)
График 3: Средняя длина очереди (логарифмическая шкала)
42
График 4: Среднее время ожидания (логарифмическая шкала)
2. Зависимость средней длины очереди от пропускной способности
радиоканала.
Возьмём пропускную способность оптического канала равной 1 Гбит/с
( 1  122070 пак/с), Q1  0.1 с1 , Q2  1 с . Интенсивность входного потока
–   2400 пак/с. Интенсивность обработки пакетов в радиоканале (  2 )
варьируется от 2500 до 12000 пакетов в секунду (т.е. пропускная
способность радиотракта варьируется от 20 Мбит/с до 100 Мбит/с).
Соответствующие расчёты приведены ниже.
2 ,
пак/с
2500
2750
3000
3250
3500
3750
4000
4250
4500
4750
5000
2 ,
L, пак
23,372
6,680
3,898
2,752
2,127
1,734
1,463
1,266
1,116
0,997
0,902
пак/с
7500
7750
8000
8250
8500
8750
9000
9250
9500
9750
10000
43
L, пак
0,461
0,440
0,420
0,402
0,386
0,371
0,357
0,344
0,332
0,321
0,310
5250
5500
5750
6000
6250
6500
6750
7000
7250
0,823
0,757
0,700
0,652
0,610
0,573
0,540
0,511
0,485
10250
10500
10750
11000
11250
11500
11750
12000
0,300
0,291
0,283
0,274
0,267
0,260
0,253
0,246
Таблица 5: Зависимость средней длины очереди от пропускной способности
радиоканала
График 5: Средняя длина очереди (логарифмическая шкала)
3. Зависимость средней длины очереди от времени переключения с
оптического канала на радиоканал.
Возьмём пропускную способность оптического канала равной 125 Мбит/с
( 1  15260 пак/с), пропускную способность радиоканала – 20 Мбит/с
(  2  2440 пак/с), интенсивность входного потока –   2300 пак/с. Время
переключения с оптического на радио- канал ( Q2 ) варьируется от 0 до 6.5
секунд, Q1  0.1 с1 . Соответствующие расчёты приведены ниже (в
таблице также указано время выполнения вычисления на компьютере).
44
Q2 , с
0,0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1,0
1,1
1,2
1,3
1,4
1,5
1,6
1,7
1,8
1,9
2,0
2,1
2,2
L, пак
15,968
15,968
15,969
15,971
15,973
15,976
15,980
15,984
15,990
15,996
16,002
16,010
16,018
16,027
16,036
16,046
16,057
16,069
16,082
16,095
16,109
16,123
16,138
Выч.
время,с
6
22
20
8
11
15
19
24
29
36
41
47
52
59
65
73
80
88
96
104
112
122
133
Q2 , с
2,3
2,4
2,5
2,6
2,7
2,8
2,9
3,0
3,1
3,2
3,3
3,4
3,5
3,6
3,7
3,8
3,9
4,0
4,5
5,0
5,5
6,0
6,5
L, пак
16,154
16,171
16,189
16,207
16,226
16,245
16,266
16,287
16,308
16,331
16,354
16,378
16,403
16,428
16,454
16,481
16,507
16,537
16,688
16,858
17,046
17,252
17,475
Выч.
время,с
140
154
160
170
181
227
220
214
225
237
254
262
275
284
298
312
321
341
417
596
721
716
1132
Таблица 6: Зависимость средней длины очереди от времени переключения с
оптического на радио- канал
График 6: Средняя длина очереди
45
4. Зависимость средней длины очереди от времени переключения с
радиоканала обратно на оптический канал.
Значения параметров 1 ,  2 ,  возьмём такие же, как и в предыдущем
эксперименте. Параметр распределения времени переключения с радиона
оптический
канал
( Q1 )
варьируется
от
0
до
10,
Q2  1 с .
Соответствующие расчёты приведены ниже.
Q1 , с1
0,0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1,0
1,5
1
L, пак Q1 , с
16,4286
2,0
16,0023
2,5
16,2091
3,0
16,2808
3,5
16,3172
4,0
16,3392
4,5
16,3540
5,0
16,3645
6,0
16,3725
7,0
16,3787
8,0
16,3836
9,0
16,3986 10,0
L, пак
16,4061
16,4106
16,4136
16,4157
16,4173
16,4186
16,4196
16,4211
16,4222
16,4230
16,4236
16,4241
Таблица 7: Зависимость средней длины очереди от времени переключения с
радио- на оптический канал
График 7: Средняя длина очереди
46
4.
Имитационное моделирование
4.1. Описание имитационной модели и компьютерной
программы
В предыдущей части методами математического моделирования были
получены выражения для основных характеристик производительности
гибридной радио-оптической системы передачи данных, описанной в
разделе 2.2. Кроме этого, в данной работе предлагается исследовать такую
систему, построив имитационную модель.
Имитационное (машинное) моделирование реализуется посредством
написания специализированной компьютерной программы, алгоритм работы
которой
имитирует
информационные
процессы,
происходящие
в
исследуемой телекоммуникационной системе (получение входящих пакетов,
передача пакетов на заданной скорости, переключение с оптического канала
на радиоканал и обратно, и т.д.). Как и в случае с программой для расчёта
математической модели, имитационная программа реализована на языке
программирования
JAVA
(JDK
1.5).
Основным
преимуществом
имитационной модели (по сравнению с математической моделью) является
её гибкость – пользуясь имеющимися программными функциями и Javaклассами, можно осуществлять вычисления любых требуемых характеристик
производительности системы посредством добавления в программный код
несложных функций.
Основным отличием от математической модели, представленной в
данной работе, является то, что в случае имитационного моделирования:
●
время переключения с резервного канала на основной ( Q1 ) задаётся
фиксированным числом, а не экспоненциально распределённой
случайной величиной;
47
●
время работы системы в каждом из режимов (передача данных по
оптическому,
либо
по
радио-
каналу)
задаётся
не
только
гиперэкспоненциальным распределением (как описано в разделе 2.2),
но также может браться из файла-журнала с записями об изменении
погодных условий (метеорологической дальности видимости) в
конкретной местности.
Имеющаяся
реализация
имитационной
программы
позволяет
вычислять следующие характеристики производительности гибридной
системы передачи данных:
●
средняя длина очереди;
●
среднее время задержки пакета;
●
максимальная длина очереди и максимальное время задержки пакета
(для заданной длительности проведения имитационного эксперимента);
●
средняя пропускная способность гибридного канала связи;
●
коэффициент доступности / недоступности канала связи;
●
среднее количество переключений между режимами (каналами) в
день.
В
программе имеется
возможность
проводить
как
одиночные
вычисления, так и серию вычислений в указанном диапазоне входных
параметров. При этом параметры рассчитываемой модели и схема
эксперимента
задаются
в
текстовом
файле
(по
умолчанию,
“experiment.properties”), а результаты работы программы – расчётные
значения характеристик производительности системы и скрипты для
построения графиков в среде MatLab – записываются в текстовый файл
(по умолчанию, “out.txt”).
48
4.2. Примеры численных расчётов
Ниже
приводятся
производительности
несколько
исследуемой
примеров
расчётов
характеристик
телекоммуникационной
системы
(с
соответствующими графиками), выполненных с помощью описанной выше
программы.
1. Зависимость
характеристик
производительности
системы
от
интенсивности входного потока.
Определим
следующие
входные
параметры
модели:
пропускная
способность оптического канала равна 1 Гбит/с ( 1  122070 пак/с),
пропускная способность радиоканала – 100 Мбит/с (  2  12207 пак/с),
время переключения с оптического на радио- канал – Q2  1 с , время
переключения с радиоканала обратно на оптический – Q1  10 с .
Интенсивность входного потока (  ) варьируется от 300 до 5000 пак/с.
Период имитационного моделирования взят 10 лет. Соответствующие
графики представлены ниже.
График 8: Средняя длина очереди
49
График 9: Максимальная длина очереди
График 10: Среднее время задержки пакета
График 11: Максимальное время задержки пакета
50
2. Зависимость характеристик производительности системы от времени
переключения между режимами (с одного канала на другой).
Возьмём входной поток равным   2000 пак/с . Остальные параметры
модели такие же, как и в предыдущем эксперименте. Время переключения
с оптического канала на радиоканал ( Q2 ) варьируется от 0 до 3 секунд,
время переключения с радиоканала на оптический ( Q1 ) – от 0 до 50
секунд.
Период
имитационного
моделирования
–
Соответствующие графики представлены ниже.
График 12: Пропускная способность гибридного канала
График 13: Коэффициент недоступности канала
51
10
лет.
График 14: Средняя длина очереди
График 15: Среднее время задержки пакета
52
Заключение
5.
Последние несколько лет технология атмосферных оптических линий
связи активно развивается и завоёвывает всё большую популярность в
телекоммуникационном секторе. К сожалению, в других странах мира
продвижение её на рынок идёт существенно более быстрыми темпами, чем в
России (причём это относится не только к таким технологически
продвинутым регионам, как западная Европа и США, но и ко многим
развивающимся
странам).
Основная
причина
востребованности
этой
технологии заключается в огромном потенциале передавать большие объемы
данных на высоких скоростях в нелицензируемом диапазоне длин волн
(свыше 400 ГГц), существенно снижая таким образом административные
издержки.
Среди
всемирно
известных
операторов
и
разработчиков
телекоммуникационных сетей, принявших на вооружение беспроводную
оптическую технологию – Vodafone, Sprint, Nextel, Verizon, Вымпелком,
Motorola, Siemens.
Но кроме неоспоримых преимуществ технология FSO имеет и свои
недостатки, главный из которых – зависимость доступности канала связи от
погодных условий (а именно, от метеорологической дальности видимости).
Решить
эту
проблему
призваны
беспроводные
гибридные
телекоммуникационные системы на базе лазерной и радио- технологий. На
их основе как операторы связи, так и другие потребители могут создавать
скоростные каналы связи с надежностью более 99,99% на трассах в
несколько километров.
Целью
данной
работы
являлось
создание
научных
методов
исследования гибридных FSO-RF-систем передачи данных и определения их
основных характеристик производительности, основываясь на принципах
математического и имитационного моделирования. Следует отметить, что
данная работа не предполагает выбора каких-то конкретных характеристик
53
телекоммуникационной системы, в том числе выбора какой-то определённой
технологии радиопередачи для использования в резервном канале связи.
В заключении стоит добавить, что экономическая целесообразность
«гибридизации» оптической системы наступает только для продвинутых
лазерных систем, которые сами по себе могут обеспечивать неплохую
надежность на трассах в несколько километров. В случае системы со вторым
каналом, построенным на технологии Wi-Fi, это позволяет минимизировать
время работы радиоканала и тем самым увеличить среднюю пропускную
скорость и скрытность гибридного канала. При использовании MMW
требования к FSO также высоки, так как этот канал должен обеспечивать
надежную работу системы в сильный дождь, когда не работает радиотракт.
Можно с уверенностью сказать, что беспроводные гибридные радиооптические телекоммуникационные системы в силу своих преимуществ уже
сейчас пользуются вниманием у операторов связи, и будут в значительной
степени востребованы в ближайшем будущем.
54
Список использовавшихся источников
1. В.М.Вишневский, А.И.Ляхов, Широкополосные беспроводные сети
передачи информации, «Техносфера», Москва, 2005.
2. В. Вишневский, С. Кузнецов, Д. Лаконцев, С. Поляков, Гибридное
оборудование на базе радио– и лазерной технологий // Первая миля,
2007, № 1.
3. Поляков С.Ю., Кузнецов С.Н., Беспроводная связь – вопросы
выбора // Технологии и средства связи, 2007, №3, часть 2.
4. Кирилл Дыхов, Андрей Максимов, АОЛС – технология будущего //
Вестник связи № 2 / 2006
5. С.Кузнецов, Б.Огнев, С.Поляков, «4,5 километра FSO-соединения с
операторской
надёжностью.
Практические
результаты»
//
Технологии и средства связи, №6/2008.
6. Ramaswami V.A. A stable recursion for the steady state vector in
Markov chains of M/G/1 type // Commun. Statist.-Stochastic Models.
1988. Vol.4. P. 183-188.
7. Семенова О.В. Устойчивый алгоритм расчета стационарного
распределения системы обслуживания BMAP|SM|1 с марковским
потоком сбоев и двумя режимами работы // Автоматика и
вычислительная техника. 2004. №1. С. 75-84.
8. Fricker C., Jaibi R. Monotonicity and stability of periodic polling models
// Queueing Systems. 1994. Vol. 15. P. 211-238.
9. Cinlar E. Introduction to stochastic processes. New Jersey: Prentice-Hall,
1975. 400 p.
10. Н.А. Вязовик, Программирование на Java – Курс лекций //
Интернет-Университет Информационных технологий, Москва, 2003
11.Scott Bloom, Eric Korevaar, John Schuster, Heinz Willebrand,
Принципы работы FSO-систем // June 2003 / Vol. 2, No. 6 / JON
12. Интернет-ресурсы, перечисленные в Приложении 1.
55
Приложение
1.
Список
интернет
-
источников,
использовавшихся при обзоре рынка FSO-оборудования
Производитель
Мостком
Полное название
компании
Интернет-источник
ООО "МОСТКОМ" http://www.moctkom.ru/fsomdrus.htm
Оптические
ТелеСистемы
“Оптические
ТелеСистемы”
http://www.optica.ru/?page=optica_21LAN2.htm
http://www.optica.ru/?page=optica_21LAN3.htm
Лазер Ай-Ти-Си
ЗАО "Лазер
АйТиСи"
http://laseritc.ru/?id=50
http://laseritc.ru/?id=34&news_year=2009&new
s_month=09&news_id=28
fSONA
fSONA Networks
Corp.
http://fsona.com/product.php?sec=models_over
view
LightPointe
LightPointe, Inc.
http://www.lightpointe.com/products/default.cfm
http://www.airlinx.com/products.cfm/product/19176-0.htm
http://www.airlinx.com/products.cfm/product/19177-0.htm
Canon
Canon U.S.A., Inc.
http://www.usa.canon.com/html/industrial_cano
beam/canobeam/index.html
MRV
MRV
Communications,
Inc.
http://www.mrvfso.com/
http://www.mrv.com/optical-transport/terescope/
CBL
CBL GmbH
http://www.cbl.de/englisch/free_space_optics/in
dex.html
PAV Data
Systems
http://www.pavdata.com/en/products/products.h
tml
PAV Data Systems http://www.pavdata.ru/catalog.php
http://www.micromax.ru/catalog/catalog.shtml/re
write/i/7
CableFree
CableFree Solutions
http://www.cablefree.co.uk/products_fso.htm
Ltd.
Terabeam
Wireless
Terabeam Wireless http://www.terabeam.com/solutions/p(Proxim Wireless) p/avara_fso.php
AirLinx
AIRLINX
Communications,
Inc.
http://www.airlinx.com/products.cfm/product/19212-0.htm
56
Приложение 2. Java-код программы расчёта
Класс “Main.java”
package ru.mipt.golovin.fsorf.mathmodel;
import java.io.*;
public class Main {
static final String INPUT_FILE = "input.txt";
static final String OUTPUT_FILE = "output.txt";
public static void main(String[] args) throws Exception {
double[] ip = loadInputParams();
double lmb = ip[0];
double[] mu = {0, ip[1], ip[2]};
double[] Q = {0, ip[3], ip[4]};
double[] p = {0, ip[5], ip[6]};
double[] gm1 = {0, ip[7], ip[8]};
double[] gm2 = {0, ip[9], ip[10]};
double G_precision = ip[11];
double pi_precision = ip[12];
int maxIndex = (int)
Math.round(lmb * 10);
for (double lambda = 100; lambda <= 2500; lambda += 100) {
doExperiment(lambda, mu, Q, p, gm1, gm2,
G_precision, pi_precision, maxIndex);
}
}
public static void doExperiment(double lmb, double[] mu, double[] Q,
double[] p, double[] gm1, double[] gm2,
double G_prec, double pi_prec, int
maxIndex) throws Exception {
String inputParams = lmb + ";" + mu[1] + ";"
+ mu[2] + ";" + Q[1] + ";" + Q[2] + ";"
+ G_prec + ";" + pi_prec + ";" + maxIndex;
long startTime = System.currentTimeMillis();
ScalarCalculator scalc =
new ScalarCalculator(lmb, mu, Q, p, gm1, gm2);
scalc.doCalculations(maxIndex);
MatrixCalculator mcalc =
new MatrixCalculator(scalc);
double L = mcalc.
doCalculations(maxIndex, G_prec, pi_prec);
long time = (System.currentTimeMillis() - startTime)/1000;
System.out.println("Total calculation time: "
+ time + " sec." + "\n\n\n");
PrintWriter writer = new PrintWriter(
new FileWriter(OUTPUT_FILE, true));
writer.println(inputParams + ";"
+ L + ";" + time);
writer.close();
}
public static double[] loadInputParams() throws IOException {
BufferedReader reader = new BufferedReader(
57
new FileReader(INPUT_FILE));
double[] inputParams
= new double[13];
String line;
int i = 0;
while (true) {
line = reader.readLine();
if (line == null) break;
if (line.equals("")) continue;
inputParams[i] = Double.valueOf(
line.split("\t")[0]);
i++;
}
return inputParams;
}
}
Класс “ScalarCalculator.java”
package ru.mipt.golovin.fsorf.mathmodel;
import java.math.BigDecimal;
import java.math.MathContext;
public class ScalarCalculator {
private double lmb;
private double[] mu;
private double[] Q;
private double[] p;
private double[] gm1;
private double[] gm2;
public double alfa;
public double[] s
= new double[3];
public BigDecimal[] factorial;
public
public
public
public
public
double[][] f;
double[][] g;
double[][] h;
double[] r;
double[] m;
public double[][] v;
public double[][] fx;
public double[][] gx;
public ScalarCalculator(double lmb, double[] mu, double[] Q, double[] p,
double[] gm1, double[] gm2) {
this.lmb = lmb;
this.mu = mu;
this.Q = Q;
this.p = p;
this.gm1 = gm1;
this.gm2 = gm2;
alfa = p[1] * gm1[1] / (gm1[1] + Q[1])
+ (1 - p[1]) * gm2[1] / (gm2[1] + Q[1]);
s[1] = p[1] * lmb / (lmb + gm1[1])
+ (1 - p[1]) * lmb / (lmb + gm2[1]);
58
s[2] = p[2] * lmb / (lmb + gm1[2])
+ (1 - p[2]) * lmb / (lmb + gm2[2]);
}
public void doCalculations(int maxIndex) throws Exception {
System.out.println(
"Calculating f[i], g[i], h[i], r[i], m[i]...");
factorial = calcFactorials(maxIndex);
f
g
r
m
=
=
=
=
calc_f(maxIndex);
calc_g(maxIndex);
calc_r(maxIndex);
calc_m(maxIndex);
h = new double[3][];
h[1] = calc_h1(maxIndex);
h[2] = calc_h2(maxIndex);
System.out.println();
System.out.println(
"Calculating v[i], f^[i], g^[i]...");
v = calc_v(maxIndex);
fx = calc_fx(maxIndex);
gx = calc_gx(maxIndex);
System.out.println();
}
public double[][] calc_f(int maxIndex) throws Exception {
double[][] array
= new double[3][maxIndex + 1];
for (byte k=1; k <= 2; k++) {
for (int i=0; i <= maxIndex; i++) {
array[k][i] = checkVal(p[k] * mu[k] / (gm1[k] + mu[k] + lmb)
* Math.pow(lmb / (gm1[k] + mu[k] + lmb), i)
+ (1 - p[k]) * mu[k] / (gm2[k] + mu[k] + lmb)
* Math.pow(lmb / (gm2[k] + mu[k] + lmb), i), i);
if (array[k][i] == 0) {
System.out.println("f(" + k + ")=0 when i>" + (i-1));
break;
}
}
}
return array;
}
public double[][] calc_g(int maxIndex) throws Exception {
double[][] array
= new double[3][maxIndex + 1];
for (byte k=1; k <= 2; k++) {
for (int i=0; i <= maxIndex; i++) {
array[k][i] = checkVal(p[k] * gm1[k] / (gm1[k] + mu[k] + lmb)
* Math.pow(lmb / (gm1[k] + mu[k] + lmb), i)
+ (1 - p[k]) * gm2[k] / (gm2[k] + mu[k] + lmb)
* Math.pow(lmb / (gm2[k] + mu[k] + lmb), i), i);
if (array[k][i] == 0) {
System.out.println("g(" + k + ")=0 when i>" + (i-1));
break;
}
}
}
return array;
59
}
public double[] calc_r(int maxIndex) throws Exception {
double[] array
= new double[maxIndex + 1];
for (int i=0; i <= maxIndex; i++) {
array[i] = checkVal(mu[2] / (Q[1] + mu[2] + lmb)
* Math.pow(lmb / (Q[1] + mu[2] + lmb), i), i);
if (array[i] == 0) {
System.out.println("r=0 when i>" + (i-1));
break;
}
}
return array;
}
public double[] calc_m(int maxIndex) throws Exception {
double[] array
= new double[maxIndex + 2];
array[0] = 0;
for (int i=0; i <= maxIndex; i++) {
array[i+1] = checkVal(Q[1] / (Q[1] + mu[2] + lmb)
* Math.pow(lmb / (Q[1] + mu[2] + lmb), i), i);
if (array[i+1] == 0) {
System.out.println("m=0 when i>" + (i-1));
break;
}
}
return array;
}
public double[] calc_h1(int maxIndex) throws Exception {
double[] array
= new double[maxIndex + 1];
BigDecimal res1, res2;
MathContext mc = new MathContext(20);
BigDecimal
BigDecimal
BigDecimal
BigDecimal
argLmb
argQ =
arg1 =
arg2 =
= BigDecimal.valueOf(lmb);
BigDecimal.valueOf(Q[2]);
BigDecimal.valueOf(gm1[2] + lmb);
BigDecimal.valueOf(gm2[2] + lmb);
BigDecimal exp = new BigDecimal(
"2.71828182845904523536");
BigDecimal exp1 = exp.pow((int)
Math.round((gm1[2] + lmb) * Q[2]), mc);
BigDecimal exp2 = exp.pow((int)
Math.round((gm2[2] + lmb) * Q[2]), mc);
BigDecimal sum1 = BigDecimal.ONE;
BigDecimal sum2 = BigDecimal.ONE;
for (int i=0; i <= maxIndex; i++) {
if (i > 0) {
sum1 = sum1.divide(arg1, mc).
add(argQ.pow(i, mc).
divide(factorial[i], mc), mc);
sum2 = sum2.divide(arg2, mc).
add(argQ.pow(i, mc).
divide(factorial[i], mc), mc);
}
res1 = BigDecimal.ONE.divide(
60
arg1.pow(i, mc), mc);
res1 = res1.subtract(
sum1.divide(exp1, mc), mc);
res1 = res1.multiply(
argLmb.pow(i, mc), mc);
res2 = BigDecimal.ONE.divide(
arg2.pow(i, mc), mc);
res2 = res2.subtract(
sum2.divide(exp2, mc), mc);
res2 = res2.multiply(
argLmb.pow(i, mc), mc);
array[i] = checkVal(res1.doubleValue() *
gm1[2] * p[2] / (gm1[2] + lmb)
+ res2.doubleValue() *
gm2[2] * (1 - p[2]) / (gm2[2] + lmb), i);
if (array[i] <= 0) {
System.out.println("h(1)=0 when i>" + (i-1));
array[i] = 0;
break;
}
}
return array;
}
public double[] calc_h2(int maxIndex) throws Exception {
double[] array
= new double[maxIndex + 1];
BigDecimal res;
MathContext mc = new MathContext(20);
boolean nullCheck = false;
BigDecimal exp = new BigDecimal(
"2.71828182845904523536");
exp = exp.pow((int)
Math.round(lmb * Q[2]), mc);
BigDecimal koef = BigDecimal.valueOf(
p[2] * Math.exp(-gm1[2]*Q[2])
+ (1 - p[2]) * Math.exp(-gm2[2]*Q[2]));
koef = koef.divide(exp, mc);
BigDecimal arg = BigDecimal.
valueOf(lmb * Q[2]);
for (int i=0; i <= maxIndex; i++) {
res = arg.pow(i, mc);
res = res.divide(factorial[i], mc);
res = res.multiply(koef, mc);
array[i] = checkVal(
res.doubleValue(), i);
if ((array[i] > 0) && (!nullCheck)) {
System.out.println("h(2)=0 when i<" + i);
nullCheck = true;
}
if ((array[i] == 0) && (nullCheck)) {
System.out.println("h(2)=0 when i>" + (i-1));
break;
}
}
return array;
}
61
public double[][] calc_v(int maxIndex) throws Exception {
double[][] array
= new double[3][maxIndex + 1];
for (byte k=1; k <= 2; k++) {
for (int i=0; i <= maxIndex; i++) {
if (i > 0)
array[k][i] = checkVal(s[k] * g[k][i-1], i);
else
array[k][i] = checkVal(1 - s[k], i);
if (array[k][i] == 0) {
System.out.println("v(" + k + ")=0 when i>" + (i-1));
break;
}
}
}
return array;
}
public double[][] calc_fx(int maxIndex) throws Exception {
double[][] array
= new double[3][maxIndex + 1];
double sum;
for (byte k=1; k <= 2; k++) {
boolean nullCheck = false;
for (int i=0; i <= maxIndex; i++) {
sum = 0;
for (int l=0; l <= i; l++) {
sum = sum +
h[k][l] * f[k][i-l];
}
array[k][i] = checkVal(sum, i);
if ((array[k][i] > 0) && (!nullCheck)) {
if (i != 0)
System.out.println("f^(" + k + ")=0 when i<" + i);
nullCheck = true;
}
if ((array[k][i] == 0) && (nullCheck)) {
System.out.println("f^(" + k + ")=0 when i>" + (i-1));
break;
}
}
}
return array;
}
public double[][] calc_gx(int maxIndex) throws Exception {
double[][] array
= new double[3][maxIndex + 1];
double sum;
for (byte k=1; k <= 2; k++) {
boolean nullCheck = false;
for (int i=0; i <= maxIndex; i++) {
sum = 0;
for (int l=0; l <= i; l++) {
sum = sum +
h[k][l] * g[k][i-l];
}
array[k][i] = checkVal(sum, i);
62
if ((array[k][i] > 0) && (!nullCheck)) {
if (i != 0)
System.out.println("g^(" + k + ")=0 when i<" + i);
nullCheck = true;
}
if ((array[k][i] == 0) && (nullCheck)) {
System.out.println("g^(" + k + ")=0 when i>" + (i-1));
break;
}
}
}
return array;
}
public static BigDecimal[] calcFactorials(int maxIndex) {
BigDecimal[] array
= new BigDecimal[maxIndex + 1];
array[0] = BigDecimal.ONE;
for (int i=1; i <= maxIndex; i++) {
array[i] = array[i-1].multiply(
BigDecimal.valueOf(i),
new MathContext(20));
}
return array;
}
public static byte I(boolean condition) {
if (condition)
return 1;
else
return 0;
}
public Matrix Pmatrix(int i, int l) {
if (i == 0)
return PmatrixCase1(l);
else if (l == i-1)
return PmatrixCase2();
else if (l >= i)
return PmatrixCase3(l-i);
else
return null;
}
private Matrix PmatrixCase1(int i) {
Matrix matrix = Matrix.getNullMatrix(7,7);
matrix.el[0][0]
matrix.el[0][1]
matrix.el[1][0]
matrix.el[1][1]
matrix.el[1][2]
matrix.el[1][3]
matrix.el[2][2]
matrix.el[2][3]
=
=
=
=
=
=
=
=
s[1] * f[1][i];
v[1][i];
(s[1] * f[1][i] - f[1][i+1]) * h[1][0] +fx[1][i+1];
gx[1][i] + h[1][0] * (v[1][i] - g[1][i]);
(s[2] * f[2][i] - f[2][i+1]) * h[2][0] +fx[2][i+1];
gx[2][i] + h[2][0] * (v[2][i] - g[2][i]);
s[2] * f[2][i];
v[2][i];
matrix.el[3][4] = lmb / (lmb + Q[1]) * r[i];
matrix.el[3][5] = lmb * alfa / (lmb + Q[1]) * m[i-1+1]
+ Q[1] * alfa / (lmb + Q[1]) * I(i==0);
matrix.el[3][6] = lmb * (1-alfa) / (lmb + Q[1]) * m[i-1+1]
+ Q[1] * (1-alfa) / (lmb + Q[1]) * I(i==0);
matrix.el[4][4] = matrix.el[3][4];
matrix.el[4][5] = matrix.el[3][5];
matrix.el[4][6] = matrix.el[3][6];
63
matrix.el[5][0]
matrix.el[5][1]
matrix.el[6][2]
matrix.el[6][3]
=
=
=
=
s[1] * f[1][i];
v[1][i];
s[1] * f[2][i];
v[2][i];
return matrix;
}
private Matrix PmatrixCase2() {
Matrix matrix = Matrix.getNullMatrix(7,7);
matrix.el[0][0]
matrix.el[1][0]
matrix.el[1][2]
matrix.el[2][2]
matrix.el[3][4]
matrix.el[4][4]
matrix.el[5][0]
matrix.el[6][2]
=
=
=
=
=
=
=
=
f[1][0];
fx[1][0];
fx[2][0];
f[2][0];
r[0];
r[0];
f[1][0];
f[2][0];
return matrix;
}
private Matrix PmatrixCase3(int i) {
Matrix matrix = Matrix.getNullMatrix(7,7);
matrix.el[0][0]
matrix.el[0][1]
matrix.el[1][0]
matrix.el[1][1]
matrix.el[1][2]
matrix.el[1][3]
matrix.el[2][2]
matrix.el[2][3]
matrix.el[3][4]
matrix.el[3][5]
matrix.el[3][6]
matrix.el[4][4]
matrix.el[4][5]
matrix.el[4][6]
matrix.el[5][0]
matrix.el[5][1]
matrix.el[6][2]
matrix.el[6][3]
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
f[1][i+1];
g[1][i];
fx[1][i+1];
gx[1][i];
fx[2][i+1];
gx[1][i];
f[2][i+1];
g[2][i];
r[i+1];
alfa * m[i+1];
(1 - alfa) * m[i+1];
r[i+1];
alfa * m[i+1];
(1 - alfa) * m[i+1];
f[1][i+1];
g[1][i];
f[2][i+1];
g[2][i];
return matrix;
}
private static double checkVal(double val, int i) throws Exception {
if (Double.isNaN(val)
|| Double.isInfinite(val))
throw new Exception(
"i=" + i + ", val=" + val);
else
return val;
}
}
Класс “MatrixCalculator.java”
package ru.mipt.golovin.fsorf.mathmodel;
public class MatrixCalculator {
private ScalarCalculator scalc;
public Matrix[][] P;
64
public Matrix G;
public Matrix[][] Y;
public Matrix[] F;
public Matrix[] pi;
public MatrixCalculator(ScalarCalculator scalc) {
this.scalc = scalc;
}
public double doCalculations(int maxIndex, double G_prec,
double pi_prec) throws Exception {
System.out.println(
"Calculating matrices P[i,l]...");
P = calc_P(maxIndex);
System.out.println("\n" +
"Stochastic property of SUM(P[i,l]):");
Psum(1,0).printStochastics(0);
System.out.println("\n" +
"Calculating matrix G...");
G = calc_G(G_prec);
System.out.println("\n" +
"Stochastic property of G:");
G.printStochastics(0);
System.out.println("\n" +
"Calculating matrices Y[i,l]...");
Y = calc_Y(maxIndex);
System.out.println("\n" +
"Calculating vectors Pi[i]...");
Matrix pi0 = calc_pi0();
pi = calc_piVectors(
pi0, maxIndex, pi_prec);
System.out.println("\n" +
"Calculating L value...");
double L = calc_L();
System.out.println("L = " + L);
System.out.println();
return L;
}
public Matrix[][] calc_P(int maxIndex) {
Matrix[][] P_array
= new Matrix[2][maxIndex + 1];
for (int i = 0; i <= 1; i++) {
for (int l=0; l < maxIndex + i; l++) {
P_array[i][l] = scalc.Pmatrix(i,l);
if (P_array[i][l].equals(
Matrix.getNullMatrix(7,7))) {
System.out.println(
"P[" + i + ",l] = O when l>" + (l-1));
break;
}
}
}
return P_array;
}
public Matrix calc_G(double precision) throws Exception {
Matrix prevG =
65
Matrix.getIdentityMatrix(7);
Matrix nextG;
for (int k=1; k <= Integer.MAX_VALUE; k++) {
nextG = Matrix.getIdentityMatrix(7);
nextG = nextG.subtractMatrix(
PGsum(1, 1, prevG, 0));
nextG = nextG.getInverseMatrix().
multiplyByMatrix(P[1][0]);
if (Matrix.diffPrecision(
prevG, nextG) < precision) {
System.out.println("\nMax k = " + k);
return nextG;
}
if (k/10 == (double)k/10)
System.out.print(".");
prevG = nextG;
}
return null;
}
public Matrix[][] calc_Y(int maxIndex) throws Exception {
Matrix[][] Y_array
= new Matrix[2][maxIndex + 1];
boolean searchNotNull;
for (int i = 0; i <= 1; i++) {
searchNotNull = true;
for (int l = maxIndex; l > i; l--) {
if (P[i][l] == null)
continue;
if (searchNotNull) {
Y_array[i][l] = P[i][l];
System.out.println(
"Y[" + i + ",l] = O when l>" + (l-1));
searchNotNull = false;
}
Y_array[i][l-1] = Y_array[i][l].
multiplyByMatrix(G).
addMatrix(P[i][l-1]);
}
}
return Y_array;
}
public Matrix calc_pi0() throws Exception {
Matrix pi0 = new Matrix(1,7);
double[] stochFsum
= Fsum().getStochastics(0);
Matrix X = Matrix.getIdentityMatrix(7).
subtractMatrix(Y[0][0]);
for (byte k=0; k < 7; k++) {
X.el[k][0] = stochFsum[k];
}
X = X.getInverseMatrix();
pi0.el[0] = X.el[0];
System.out.print("pi[0] =" + pi0);
return pi0;
}
66
public Matrix[] calc_piVectors(Matrix pi0, int maxIndex,
double precision) throws Exception {
Matrix[] pi =
new Matrix[maxIndex + 1];
pi[0] = pi0;
double curElSum;
double elSum =
pi0.getStochastics(0)[0];
Matrix factor = Matrix.getIdentityMatrix(7).
subtractMatrix(Y[1][1]).
getInverseMatrix();
for (int i=1; i <= maxIndex; i++) {
pi[i] = pi0.
multiplyByMatrix(
Fmatrix(i, factor));
curElSum = pi[i].getStochastics(0)[0];
elSum = elSum + curElSum;
if (i/100 == (double)i/100) {
System.out.print("\n" +
"pi[" + i + "] =" + pi[i]);
System.out.println(
"SUM(pi[i])*1 = " + elSum);
}
if (curElSum < 0) {
System.out.println("\nCalculation error: " +
"pi[" + i + "]*1 < 0 !!!");
System.exit(1);
}
if (curElSum < precision) {
System.out.println("\nMax i = " + i);
System.out.println("SUM(pi[i])*1 = " + elSum);
return pi;
}
}
return pi;
}
public double calc_L() {
double L = 0;
double elSum;
for (int i=1; i < pi.length; i++) {
if (pi[i] == null)
break;
elSum = pi[i].getStochastics(0)[0];
L = L + (i * elSum);
}
return L;
}
public Matrix Psum(int i, int init_l) {
Matrix Psum = Matrix.getNullMatrix(7,7);
for (int l = init_l; l < P[i].length; l++) {
if (P[i][l] != null)
Psum = Psum.addMatrix(P[i][l]);
else break;
}
67
return Psum;
}
public Matrix PGsum(int i, int init_l, Matrix G, int init_Gpow) {
Matrix PGsum = Matrix.getNullMatrix(7,7);
Matrix powG = G.powerMatrix(init_Gpow);
for (int l = init_l; l < P[i].length; l++) {
if (l > init_l)
powG = powG.multiplyByMatrix(G);
if (P[i][l] != null)
PGsum = PGsum.addMatrix(
P[i][l].multiplyByMatrix(powG));
else break;
}
return PGsum;
}
public Matrix Ysum(int i) {
Matrix Ysum = Matrix.getNullMatrix(7,7);
for (int l=1; l < Y[i].length; l++) {
if (Y[i][l] != null)
Ysum = Ysum.addMatrix(Y[i][l]);
else break;
}
return Ysum;
}
public Matrix Fsum() throws Exception {
Matrix X, Fsum;
X = Matrix.getIdentityMatrix(7).
subtractMatrix(Ysum(1)).
getInverseMatrix();
Fsum = Ysum(0).
multiplyByMatrix(X).
addMatrix(Matrix.getIdentityMatrix(7));
return Fsum;
}
public Matrix Fmatrix(int l, Matrix factor) throws Exception {
if (F == null) {
F = new Matrix[100000];
F[0] = Matrix.getIdentityMatrix(7);
}
F[l] = Matrix.getNullMatrix(7,7);
Matrix curY;
for (int i=0; i <= l-1; i++) {
if ((i == 0) &&
(Y[0].length > l))
curY = Y[0][l];
else if ((i >= 1) &&
(Y[1].length > l-i+1))
curY = Y[1][l-i+1];
else
curY = null;
if (curY != null)
F[l] = F[l].addMatrix(
F[i].multiplyByMatrix(curY));
}
F[l] = F[l].
multiplyByMatrix(factor);
68
return F[l];
}
}
Класс “Matrix.java”
package ru.mipt.golovin.fsorf.mathmodel;
/**
* Created by IntelliJ IDEA.
* User: LeLik
* Date: 24.11.2009
* Time: 2:34:18
* To change this template use File | Settings | File Templates.
*/
public class Matrix {
public int rows;
public int cols;
public double[][] el;
public Matrix(int rows, int cols) {
this.rows = rows;
this.cols = cols;
this.el = new double[rows][cols];
}
public static Matrix getNullMatrix(int rows, int cols) {
Matrix matrix = new Matrix(rows, cols);
for (int i=0; i < rows; i++) {
for (int k=0; k < cols; k++){
matrix.el[i][k] = 0;
}
}
return matrix;
}
public static Matrix getIdentityMatrix(int size) {
Matrix matrix = Matrix.getNullMatrix(size, size);
for (int i=0; i < size; i++) {
matrix.el[i][i] = 1;
}
return matrix;
}
public static double multiplyVectors(double[] v1, double[] v2) {
double res = 0;
for (int i=0; i < v1.length; i++) {
res = res +
v1[i] * v2[i];
}
return res;
}
public static double multiplyVectors(double[] v1, Matrix m2, int col) {
double res = 0;
for (int i=0; i < v1.length; i++) {
res = res +
v1[i] * m2.el[i][col];
}
69
return res;
}
public static double diffPrecision(Matrix m1, Matrix m2) {
Matrix diff = m2.
subtractMatrix(m1);
double max = 0;
double ratio;
for (int i=0; i < m1.rows; i++) {
for (int k=0; k < m1.cols; k++) {
if (m2.el[i][k] != 0) {
ratio = Math.abs(
diff.el[i][k] / m2.el[i][k]);
max = Math.max(ratio, max);
}
}
}
return max;
}
public Matrix addMatrix(Matrix m2) {
Matrix resMatrix =
new Matrix(rows, cols);
for (byte i=0; i < rows; i++) {
for (byte k=0; k < cols; k++){
resMatrix.el[i][k] =
this.el[i][k] + m2.el[i][k];
}
}
return resMatrix;
}
public Matrix subtractMatrix(Matrix m2) {
Matrix resMatrix =
new Matrix(rows, cols);
for (byte i=0; i < rows; i++) {
for (byte k=0; k < cols; k++){
resMatrix.el[i][k] =
this.el[i][k] - m2.el[i][k];
}
}
return resMatrix;
}
public Matrix multiplyByIndex(double index) {
Matrix resMatrix =
new Matrix(rows, cols);
for (byte i=0; i < rows; i++) {
for (byte k=0; k < cols; k++){
resMatrix.el[i][k] =
this.el[i][k] * index;
}
}
return resMatrix;
}
public Matrix multiplyByMatrix(Matrix m2) {
Matrix resMatrix =
Matrix.getNullMatrix(rows, m2.cols);
for (byte row=0; row < rows; row++) {
70
for (byte col=0; col < m2.cols; col++) {
resMatrix.el[row][col] = multiplyVectors(
this.el[row], m2, col);
}
}
return resMatrix;
}
public Matrix powerMatrix(int power) {
Matrix resMatrix =
Matrix.getIdentityMatrix(rows);
for (int i=1; i <= power; i++) {
resMatrix = resMatrix.
multiplyByMatrix(this);
}
return resMatrix;
}
public Matrix getInverseMatrix() throws Exception {
Matrix A = this.
multiplyByIndex(1);
Matrix Inv = Matrix.
getIdentityMatrix(rows);
double diagEl, index;
for (byte i=0; i < rows; i++) {
swapMatrix(A, Inv, i);
diagEl = A.el[i][i];
if (diagEl == 0)
throw new Exception("Inverting matrix error");
for (byte k=0; k < cols; k++) {
A.el[i][k] = A.el[i][k] / diagEl;
Inv.el[i][k] = Inv.el[i][k] / diagEl;
}
for (byte k=0; k < rows; k++) {
if (k == i) continue;
index = A.el[k][i];
A.subtractLine(i, k, index);
Inv.subtractLine(i, k, index);
}
}
return Inv;
}
private void swapRows(int i, int j) {
double x;
for (int k=0; k < cols; k++) {
x = this.el[i][k];
this.el[i][k] = this.el[j][k];
this.el[j][k] = x;
}
}
private void swapCols(int i, int j) {
double x;
for (int k=0; k < rows; k++) {
x = this.el[k][i];
this.el[k][i] = this.el[k][j];
this.el[k][j] = x;
}
}
private void swapMatrix(Matrix A, Matrix Inv, int i) {
71
for (int i2 = i; i2 < rows; i2++) {
for (int j2 = i; j2 < cols; j2++) {
if (A.el[i2][j2] != 0) {
A.swapRows(i, i2);
A.swapCols(i, j2);
Inv.swapRows(i, i2);
Inv.swapCols(i, j2);
return;
}
}
}
}
private void subtractLine(int i, int k, double index) {
for (int j=0; j < cols; j++) {
this.el[k][j] = this.el[k][j] this.el[i][j] * index;
}
}
public void printStochastics(int precision) {
double sum;
for (int i=0; i < rows; i++) {
sum = 0;
for (int k=0; k < cols; k++){
sum = sum + this.el[i][k];
}
if (precision > 0) {
sum = Math.round(sum *
Math.pow(10, precision));
sum = sum /
Math.pow(10, precision);
}
System.out.println("Line " + (i+1)
+ ", elements sum = " + sum);
}
}
public double[] getStochastics(int precision) {
double[] stoch
= new double[rows];
double sum;
for (int i=0; i < rows; i++) {
sum = 0;
for (int k=0; k < cols; k++){
sum = sum + this.el[i][k];
}
if (precision > 0) {
sum = Math.round(sum *
Math.pow(10, precision));
sum = sum / Math.pow(10, precision);
}
stoch[i] = sum;
}
return stoch;
}
public boolean equals(Matrix matrix) {
for (int i=0; i < rows; i++) {
for (int k=0; k < cols; k++){
if (this.el[i][k] != matrix.el[i][k])
return false;
}
72
}
return true;
}
public String toString() {
String res = "";
for (int i=0; i <
for (int k=0;
res = res
+
}
rows; i++) {
k < cols; k++){
+ "\t"
this.el[i][k];
res = res + "\n";
}
return res;
}
}
73
Download