Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сафоненко Практикум по интерфейсам последователной передачи 2012

.pdf
Скачиваний:
2
Добавлен:
12.11.2022
Размер:
4.56 Mб
Скачать
E (u(n))

E(ν) – среднее число поступлений за время обслуживания в системе с бесконечной очередью, меньше единицы, так как в системе установилось состояние равновесия.

Из определения единичной функции u(n) , следует, что равно вероятности того, что система занята, т.е. ρ:

E(u(n)) =

(u(n) pn) = pn = P(n > 0) ≡ρ.

n=0

n=1

Здесь pn , как и везде, – вероятность того, что система находится в

состоянии n. Чтобы найти E(n), воспользуемся следующим приемом: возведем в квадрат обе части равенства (29), возьмем математические ожидания и опять положим j → ∞, а значит

E(n j) = E(n j1):

n j =n j1u(n j1) j ,

E(n2) = E(n2) + E(u2) + E(ν2) − −2* E(n u(n)) + 2E(n ν) 2E(ν u(n)).

Заметив, что E(u 2) = E(u) = ρ и E(nu(n)) = E(n) , что следует из определения функции u(x) . Пусть νj – число поступлений за время обслуживания j-го пакета не зависит от nj –количества пакетов в

системе в момент ( j 1), тогда

E(nν) = E(n) + E(ν) и

E(ν u) =

=E(u)+E(υ). Получим:

 

 

 

0 = ρ + E(ν2) 2E(n) + 2E(n) ρ − 2ρ2.

 

Вынесем E(n) за скобку, учтем, что E(ν) = E(u(n)) :

 

ρ

σν2

(30)

E(n) = 2 +

 

,

2(1−ρ)

σν2 = E(ν2 ) E 2 (ν) по определению дисперсии. Определяя условную вероятность P (ν = k|τ) как вероятность поступлений k требований в течение τ секунд, с учетом выражение p(k) = (λT )k e−λT k ! для распределения Пуассона:

111

 

 

 

 

(λτ)k e−λτ f

 

 

 

P(ν = k) = P(ν = k | τ) f (τ) dτ =

(τ) dτ;

 

 

 

0

 

 

0

 

k !

 

 

 

 

k

 

 

 

 

k 1

 

 

λ

(τ)k e−λτ f (τ) dτ =e−λτ

f (τ) dτ

((λτk )1)!;

(31)

 

(k 1)!

 

 

0

 

 

0

 

k=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E(ν) = kP(ν = k).

 

 

 

 

 

 

 

 

 

k =0

 

 

 

 

 

 

 

(λτ)

k1

 

 

 

 

 

 

Учитывая, что

1)!

=exp(λτ),

 

 

 

 

 

 

 

k=1

(k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E(ν) = f (τ) λτ dτ =λE(τ).

 

 

 

 

 

 

 

0

 

 

 

 

 

 

Уже известно, что E 2 (ν) = (λE(τ))2 = ρ2,

осталось найти величи-

ну E(ν2).

 

 

 

 

 

 

 

 

 

Используя определение E(ν2) и формулу (31),

выполнив ряд

 

 

 

 

 

 

 

2

 

 

преобразований и используя тот факт,

что

k

ak = (a2 + a) ea,

k=0 k !

получим искомое выражение:

E(ν2) =k 2P(ν = k) 2E(τ) 2E(τ2) .

k =0

Дисперсия ν в результате равна:

σν2 = E(ν2 ) E 2 (ν) = λ2 E(τ2 ) + ρ − λ2 E 2 (τ) = λ2σ2 + ρ.

Подставив ее значение в (30) и преобразовав, получим результат:

 

 

 

 

 

ρ

 

 

 

 

 

ρ

 

 

 

2

2

 

 

 

 

 

 

E(n) =

 

 

 

 

 

 

 

1

 

 

(1

−μ σ

 

 

) .

 

 

(32)

1

−ρ

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С учетом формулы Литтла:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E(n)

 

 

1 μ

 

 

 

 

ρ

 

 

2

 

2

 

 

 

E(T) =

 

 

 

 

=

 

 

 

 

 

1

 

 

(1 −μ

 

 

σ

 

)

,

(33)

λ

 

 

 

1

−ρ

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

112

где ρ опять задается в виде λμ =λ E(τ) : λ – средняя скорость пуассоновских поступлений, а E(τ) =1μ – среднее время обслужива-

ния. Параметр σ2 – дисперсия распределения времени обслуживания.

Сравним результаты с полученными ранее для случая М/М/1. Различие равенств заключается только в поправочном коэффициен-

те. Он зависит от отношения дисперсии σ2 распределения времени обслуживания к квадрату среднего значения 1 / μ2. Вспомним,

что дисперсия показательного распределения σ2 =1/ μ2. Подста-

вив это значение дисперсии в равенства (33), приведем уравнение к результатам для системы М/М/1.

Рассмотрим частный случай, когда все поступления требуют одного и того же времени обслуживания 1/μ. Тогда σ2 = 0, и среднее

количество пакетов в системе:

 

ρ

 

 

ρ

 

 

 

E(n) =

 

 

 

 

 

1

2

 

,

(34)

 

 

 

1−ρ

 

 

 

 

 

среднее время задержки в системе:

 

 

 

 

 

 

E(T) =

1 / μ

ρ

 

 

 

1

 

.

 

 

 

1−ρ

 

2

 

 

Подставляя значения для

 

текущей

 

задачи

μ = 2000 пак/c и

ρ = 0.75, получим E(n) = 1.875 пакета , E(T) =0.00125 с.

Если сравнить результаты для системы M/G/1 с результатами для системы M/M/1, то видно, что M/G/1 работает эффективнее, так как время задержки в системе стало в два раза меньше (табл. 8).

Система с фиксированным временем обслуживания называется системой M/D/1 (от determine – определять). Таким образом, это частный случай системы M/G/1 с наименьшей возможной длиной очереди и задержкой на обработку.

Для анализа примем дисперсию равной σ2=107 используя условие σ2<1μ2 = 25 10 8 . Используя формулу (11) для расчета

113

средней длины очереди E(n) =

ρ

 

1

ρ

(1−μ2σ2 )

, получаем

 

2

 

1−ρ

 

 

 

σ2*μ2 =0.4, E(n) = 2.325.

По формуле Литтла: E(T) = E(n)/λ = 2 мс.

Теперь приравняем дисперсию распределения времени обслуживания: σ2 =106. Это больше, чем 1/ μ2. В этом случае σ2*μ2 =4,

E(n) = 6.375,

E(T) = 6 мс.

 

 

 

Таблица 8

 

Сравнительные результаты для систем M/M/G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

σ2 μ2

E(n)

 

E(T)

 

σ2 = 0

 

0

1.875

 

1

 

σ2 =107

<1 μ2

 

0.4

2.325

 

2

 

σ2 = 25 108 (М/М/1)

 

1

3

 

2

 

σ2 =106

<1 μ2

 

4

6.375

 

6

 

Найдем среднее время ожидания в очереди:

E(W ) = E(T ) 1/ μ = 0.00075 с.

Для М/М/1 E(W) = 0.0015 с.

В полудуплексном и дуплексном режимах работы системы M/G/1 время соединения:

Tc =3 Tport +2 Ttransfer +2E(T) =

= 3 5 105 + 2 3.375 107 + 0.0025 = 2.65 мс.

М/М/1 время соединения равно 4.15 мс). Таким образом, в дуплексном режиме информации передается в два раза больше.

Расчеты времени соединения для стандартных скоростей приведены в табл. 9.

В результате сравнения двух типов систем (М/М/1 и М/G/1) можно отметить следующее:

• при увеличении σ2, σ2 >1 / μ2 увеличиваются средняя длина очереди и время ожидания;

114

• при σ2 <1 / μ2 средняя длина очереди и время ожидания по

сравнению с соответствующими характеристиками системы М/М/1 уменьшаются;

• при значениях ρ << 1 величины E(n) и E(T) для систем M/M/1 и M/G/1 сравнимы;

• при ρ → 1 результаты для системы M/D/1 отличаются от соответствующих результатов для М/М/1 на 50 %.

 

Таблица 9

Время соединения для стандартных скоростей

 

 

 

Стандартные скорости

Соответствующее время соединения

 

RS-232, Кбит/с

в системе М/G/1, Tc, мс

 

19

2.8

 

28

2.67

 

32

2.65

 

56

2.59

 

Заметим, что в системе общего вида M/G/1 с бесконечной очередью независимо от закона распределения времени обработки, характерна одинаковая тенденция при ρ = λ/μ → 1: системы с большей дисперсией распределения времени обслуживания характеризуются большей длиной очереди и временем задержки. Рост дисперсии повышает вероятность появления пакета с продолжительным временем обслуживания, которое приведет к большей скученности.

Примеры

Пример 1

Рассмотрим модель интерфейса RS-232. Одно устройство передает в случайные моменты времени случайные числа. Второе устройство через равные промежутки времени опрашивает входной буфер на предмет наличия данных и, в случае их наличия, считывает их. И интервал времени между передачей данных, и сами передаваемые данные распределены по равномерному закону.

115

Для генерации случайных чисел, распределенных по равномерному закону будем использовать функцию rand(1).

Для работы создадим три m-файла: main.m, trm1.m, trm2.m.

Файл main.m:

function main %Главная функция: подготовка портов и запуск обмена

global com1 com2 period aprox rd tmrsend_period;

period=0.1; %периодчтения данных

aprox=100; %точность генерации данных и периода %передачи данных – 0.01

rd=0; %обнуление массивов rd и tmrsend_period tmrsend_period=0; %необходимо для того, чтобы при

%повторномвызове программы %удалялисьпредыдущиеданные

com1=serial('com3'); %создание объектапорта com2=serial('com4'); %создание объектапорта com1.timerfcn=@tmr1; %назначение функции для

%передачи данных %вызывается по событиюсрабатывания таймера)

com2.timerfcn=@tmr2; %назначение функции для

%приема данных (вызываемой по %срабатываниютаймера)

com2.timerperiod=period; %установление периода

%обмена данными fopen(com1); %открытие порта fopen(com2); %открытие порта

pause(60); %имитация работы фоновой программы %втечении периода60 секунд

fclose(com1); %закрытие порта fclose(com2); %закрытие порта delete(com1); %удаление объектапорта

116

delete(com2); %удаление объектапорта clear com1; %удаление переменной com1 clear com2; %удаление переменной com1 % выводграфическихобъектов figure(1); %на первомграфике....

rd=create_distribution(rd,0,aprox);

plot_F(rd,'Распределение величин передаваемых значений'); %...строится Распределение величин

%передаваемых значений figure(2); %на втором графике...

tmrsend_period=create_distribution(tmrsend_period,0,aprox); plot_F(tmrsend_period,'Распределение интервалов передачи');

%...строится Распределениеинтервалов %передачи

function plot_F (P, plot_title) %функция принимает массив слу-

чайных чисели %строит график плотности распределение. Второй

%принимаемый параметр – имя графика

plot(1:numel(P),P,'k'); %строимграфик grid on; %включаемсетку title(plot_title); %название графика xlabel('x'); %названиеабсциссы ylabel('F_x'); %название ординаты

function f=create_distribution (rnd, offset, aprox) %функция формирует матрицу %случайныхчисел. Входные значения: %случайныечисла, распределение %которых следует оценить

global j cnt;

cnt=0; %очистка массиваcnt для возможности %повторного запуска

117

rnd_sort=sortrows(rnd'); %сортировка значений...

rnd_sort=rnd_sort'; %...матрицы по возрастанию

for i=1:(max(rnd_sort)+offset)*aprox %обнуление...

cnt(i)=0; %...массива cnt end

j=1; %счетчик

rnd_sort=[rnd_sort 0]; %добавление крайнего

%элемента необходимого для обработки

for i=2:numel(rnd_sort) %цикл, который измеряет

%относительные частоты вхождения в совокупность повторяющихся чисел

if rnd_sort(i) == rnd_sort(i-1) && i < numel(rnd_sort) %так как числаупорядочены, то количество

%равных чисел суммируем в счетчике j=j+1; % увеличиваем счетчик

else %иначе...

cnt(floor((rnd_sort(i- 1)+offset)*aprox+1))=j/(numel(rnd_sort)-1); %находим вероятность наблюдения чисел

j=1; %«сбрасываем» счетчик

end

end

sum=0; %устанавливаемначальное значение

for i=1:numel(cnt) %находим распределение sum=sum+cnt(i);

f(i)=sum; %f(x) равное вереоятноститого, %что x<i

end

Файл tmr1.m:

function tmr1 (object, event) %функция, обработки срабатыванию таймера

118

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

%стандартные для функции события %объекта serial

global com1 period aprox tmrsend_period;

var=ceil(rand(1)*100); %генерация случайного числа в %интервале 0~100

fwrite(com1,var); %вывод(запись)числа в %порт com1

tmp=ceil(rand(1)*period*aprox)/aprox; %генерация

%случайного числа винтервале 0~0.1 с %точностью0.01

if tmrsend_period(1)==0 %если функция tmr1 %вызывается впервые, то это значение %будет нулевым

tmrsend_period=tmp; %тогда первымзначением %матрицы tmrsend_period будет tmp

else

tmrsend_period=[tmrsend_period tmp]; %иначе

%в матрицу будет добавлено значение tmp

end

fclose(com1); %закрытие порта(изменять timerperiod %можно только на закрытом порте) com1.timerperiod=tmp; %изменениеинтервала вызова

%данной функции fopen(com1); %открытие порта

Файл tmr2.m:

function tmr2 (object, event) %функция обработки срабатыванию таймера

%второго порта. Выполняет роль приемника данных

119

%Входные данные – стандартные для функции события %объекта serial

global com2 rd;

while com2.bytesavailable>0 %если впорту есть

%данные...

if rd(1)==0 %если функция tmr2

%вызывается впервые, то это значение %будет нулевым

rd=fread(com2,1); %тогда первым значением %матрицы rd будет 1 байт, прочитанный

%из com2

else

rd=[rd fread(com2,1)]; %иначе

%этот прочитанный байт будет добавленв %матрицу

end

end

В результате работы программы, по истечении 60 секунд, будут выведены графики. На рис. 25 и рис. 26 приведены результаты расчетов.

Рис. 25. Тест равномерности распределения: результат моделирования

120

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]