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

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

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

относительная погрешность по дисперсии: 1.69 %;

относительная погрешность по среднему квадратическому отклонению: 0.84%.

На рис. 5.1 приведена диаграмма визуальной оценки качества полученного набора псевдослучайных чисел.

Рис. 5.1. Диаграмма оценки равномерности совокупности псевдослучайных чисел

Задание 1

1.Провести статистическое исследование функции rand при различных объемах выборки: малых – порядка N; средних – порядка 10N; больших – порядка 100N. Сравнить результаты испытаний. Значение N – параметр лабораторного задания.

2.Построить график изменения относительных погрешностей среднего, дисперсии, стандартного отклонения от числа испытаний.

151

Задание 2

1.Написать программу формирования простых трехзначных чисел с целью их использования в качестве начальных чисел в методе Фибоначчи. Рассчитать относительные погрешности по математическому ожиданию, дисперсии, стандартному отклонению.

2.Провести статистическое исследование генератора при различных объемах выборки: малых – порядка N; средних – порядка 10N; больших – порядка 100N. Результаты испытаний усреднить и сравнить.

3.Построить график изменения относительных погрешностей среднего, дисперсии, стандартного отклонения от числа испытаний.

Задание 3

1.Написать программу формирования случайных чисел по методу срединных квадратов.

2.Начальное число выбрать следующим образом 0.[номер компьютера][номер в группе].

Примечание. Для проверки периодичности (непериодичности) формируемой случайной последовательности можно применить, например, функцию unique.

3.Провести в зависимости от N статистическое исследование генератора при различных объемах выборки: малых – порядка N; средних – порядка 10N; больших – порядка 100N. Результаты испытаний усреднить и сравнить с аналогичными результатами, которые проведены для выборки, сформированной с помощью функции rand системы MATLAB.

4.Построить в системе MATLAB гистограммы для сформированных выборок случайных чисел по методу срединных квадратов

исравнить с гистограммой для выборок, сформированных с помощью функции rand системы MATLAB.

5.Построить гистограммы для сформированных выборок.

6.Построить диаграмму визуального контроля равномерного заполнения квадрата со стороной, равной единице.

Задание 4

1. Написать в MATLAB программу формирования случайных чисел с помощью линейного конгруэнтного метода. Полагая c = 0, выбрать для расчета модуля М = [номер компьютера] * 1000.

152

2.В качестве первого случайного числа R0 (в зависимости от номера варианта) принять следующие значения:

m = primes(М) – выбрать в качестве m, основания операции вычисления остатка деления, наибольшее простое число, не превышающее М;

R0 = m([номер компьютера] * 10).

3.Вычислить период формируемой случайной последовательности (с помощью функции unigue).

4.Провести статистический анализ характеристик ГСЧ, созданного по линейному конгруэнтному методу.

5.Построить гистограммы полученных распределений случайных чисел с помощью функции hist.

6.Построить график функции плотности вероятности и распределения для сформированных выборок случайных чисел. Совместить диаграммы с графиками аналитических функциями. Привести оценку результата.

Задание 5

1.По критерию Колмогорова–Смирнова проверить выборки случайных чисел, сформированных по методу срединных квадратов.

2.По критерию Колмогорова–Смирнова протестировать выборки случайных чисел объема 100, 500, 1000, сформированных по линейному конгруэнтному методу.

Задание 6

1. Провести расчет нормированной корреляционной функции для объема выборки в соответствии с номером компьютера N =

=[номер компьютера] * 100 .

2.Выполнить первый пункт задания для анализа ГСЧ, созданного по методу срединных квадратов в MATLAB .

3.Выполнить первый пункт задания для анализа ГСЧ, созданного по методу Фибоначчи в MATLAB .

4.Выполнить первый пункт задания для анализа ГСЧ, созданного по линейному конгруэнтному методу в MATLAB .

5.Подготовить заключение о методе, в котором ГСЧ является наиболее качественным.

153

Задание 7

Написать программу формирования случайных чисел со специальными законами распределения в соответствии с вариантами табл. 6. Сравнить графики аналитических функций распределения и результатов моделирования .

Провести исследование качества ГСЧ по описанным выше критериям.

Вопросы для подготовки к работе

1.По каким причинам не имеет практического применения метод срединных квадратов?

2.Как осуществляется статистическая оценка программных генераторов псевдослучайных чисел?

3.Что означает конгруэнтность двух чисел по заданному моду-

лю?

4.В программных генераторах псевдослучайных чисел используются детерминированные методы или вероятностные?

5.Что определяет собой корреляционная функция?

6.Что означает "центрированная автокорреляционная функция"? Для чего она применяется?

7.Что определяет собой тест критерия Колмогорова–Смирнова?

8.Что определяет собой длина периода генератора псевдослучайных чисел?

Работа 6 Моделирование систем массового обслуживания в системе MATLAB

Цель работы – моделирование системы массового обслуживания с ожиданием.

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

154

меров и запускает таймеры. По истечении времени моделирования программа останавливает таймеры и выводит результаты.

Функция «обработчик прерываний первого таймера» осуществляет постановку заявки в очередь. Затем программа изменяет задержку запуска и период работы таймера. Требуемый закон распределения интенсивности поступления заявок выбирается соответствующим законом распределения задержек срабатывания таймера.

Функция «обработчик второго таймера» осуществляет обработку заявки. Изменяя задержку запуска таймера после обработки заявки, программа выполняет заданный закон распределения интенсивности обработки заявок. При отсутствии заявок в очереди таймер не запускается. Сигналы таймера позволяют отслеживать моменты поступления заявки в очередь. Так как возможности техники, на которой проводится моделирование, не позволяют вызывать обработчик чаще, чем раз в 10 мс, не следует использовать при моделировании периоды поступления и обработки заявок меньше

200 мс.

Функция «обработчик третьего таймера» осуществляет через равные промежутки времени мониторинг длины очереди.

%основная функция %Т1 – мат ожидание периода поступления заявок, мсек

%Т2 – мат ожидание времени обработки заявок, мсек function [mvl, mvw] = seq(T1,T2)

global in_q res_q var_len

in_q = 0; res_q = 0; var_len=1;

tm1 = timer('ExecutionMode', 'fixedRate'); %создание tm2 = timer('ExecutionMode', 'fixedRate');

tm3 = timer('ExecutionMode', 'fixedRate');

%функция, вызываемая по событиютаймера tm1.timerfcn=@len1;

155

%задание начального периода поступлерния заявок, изменяется случайно

tm1.StartDelay=T1/1000;

%задание мат ожидания периода поступлерния заявок, изменяется случайно

tm1.UserData = T1;

%функция, вызываемая по событиютаймера tm2.timerfcn=@len2;

%задание постоянного периода опросаочереди tm2.period=max(min(T1,T2)/1000/100,0.001);

%задание начального времени обработки заявки, изменяется случайно

tm2.StartDelay=T2/1000;

%задание мат ожидания времени обработки заявки, изменяется случайно

tm2.UserData = T2;

%функция, вызываемая по событиютаймера tm3.timerfcn=@len3;

%задание постоянного периода опросаочереди tm3.period=max(min(T1,T2)/1000/10,0.01);

%запуск start(tm1); start(tm2); start(tm3);

%вся работа происходит не восновномцикле, а по событиям. %Ожидаем300 секунд.

TM = 30; for i = 1: TM

pause(10);

disp(sprintf('%2.0f %%',i*100/TM)); end

156

%остановка stop(tm1); stop(tm2); stop(tm3);

%вычисление средней длины очереди %вычисление среднего времени ожидания последним элемен-

том

var_wait = res_q-in_q(1:length(res_q)); mvl = mean(var_len);

mvw = mean(var_wait);

msg = sprintf('len = %f\ntime = %f', mvl, mvw); disp(msg);

figure subplot(211)

plot((1:length(var_len))*tm3.period,var_len) grid

title('Длина очереди') ylabel('Количество') xlabel('Время') subplot(212) plot(var_wait)

grid

title('Время ожидания') ylabel('Секунды') xlabel('Номерзапроса')

%функция вызываемая по таймеру1 function len1 (object,~)

global in_q

%время поступления запросов in_q(length(in_q)+1)=in_q(end) + object.StartDelay;

157

%генерируем случайное число var=round(-object.UserData*log(rand()))/1000;

%устанавливаем новое случайное значение периода stop(object);

object.StartDelay=var;

start(object);

%функция вызываемая по таймеру2 function len2 (object, ~)

global in_q res_q

%количество обработанных запросов cnt = length(res_q);

% длинаочереди

len = length(in_q) – cnt;

if (len > 0)

%время началаобработки заявки %если время поступления текущей заявки меньше времени

начала обработки %предыдущей+ время обработки предыдущей заявки

if in_q(cnt+1) < res_q(cnt) + object.StartDelay res_q(cnt+1) = res_q(cnt) + object.StartDelay;

else

res_q(cnt+1) = in_q(cnt+1); end

%генерируем случайное число var=round(-object.UserData*log(rand()))/1000;

%устанавливаем новое случайное значениевремени обработ-

ки

158

stop(object);

object.StartDelay=var;

start(object); end

function len3 (~, ~)

global in_q res_q var_len

% длинаочереди

var_len(length(var_len)+1) = length(in_q) – length(res_q);

Задание и порядок выполнения работы

1.Провести моделирование данной системы, T1 = [номер в группе] * 400, Т2 = {0.5, 1, 1.5} * T1, размерность полученных величин считать миллисекундами. Время моделирования {500 с, 1000 c, 1500 c}.

2.Сравнить полученные данные с теоретическими.

3.Подготовить отчет о выполненной работе.

Вопросы для подготовки к работе

1.Какие виды систем массового обслуживания существуют?

2.Какие изменения необходимо внести в программу для моделирования других типов систем массового обслуживания?

3.Какие ограничения накладывают средства моделирования?

4.Какую закономерность и для каких систем описывает формула Литтла?

Пример работы программы

Выполним программу для значений время моделирования 600 с, Т1 = 250 мс, Т2 = 200 мс. Теоретические расчеты для данной системы дают следующие результаты:

len = 3.2 – средняя длина очереди,

time = 0.8 – среднее время ожидания в очереди.

159

В результате работы программы получены статистики по длине

очереди и времени ожидания (рис. 6.1).

 

 

 

 

20

 

 

Длина очереди

 

 

 

 

 

 

 

 

 

 

 

Количество

15

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00

100

200

300

400

500

600

700

 

 

 

 

Время

 

 

 

 

 

6

 

 

Время ожидания

 

 

 

 

 

 

 

 

 

 

 

Секунды

4

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

00

 

500

1000

1500

 

2000

2500

 

 

 

 

Номер запроса

 

 

 

Рис. 6.1. Статистика по длине очереди и времени ожидания

По результатам статистических испытаний получены средние зачения:

len = 2.855376 – средняя длина очереди,

time = 0.742845 – среднее время ожидания в очереди.

Результаты статистических испытаний и теоретических расчетов совпадают в пределах погрешности 10 %.

160

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