Анализ работы модели вычислительного устройства

Автор работы: Пользователь скрыл имя, 22 Апреля 2013 в 09:39, курсовая работа

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

Статическое моделирование – это метод получения с помощью ЭВМ статических данных о процессах, происходящих в моделируемой системе. Для получения оценок характеристик моделируемой системы с учетом случайных воздействий внешней среды статические данные обрабатываются и классифицируются с использованием методов математической статистики.
В результате статического моделирования системы получается серия частных значений искомой характеристики, статическая обработка которых дает сведения о поведении реального объекта или процесса в произвольные моменты времени. Если количество реализаций N достаточно велико, то результаты моделирования приобретают статическую устойчивость и с достаточной точностью могут быть приняты в качестве оценок искомых характеристик процесса функционирования системы.

Содержание

Содержание 1
Введение 2
1 Разработка генераторов случайных чисел 3
1.1 Разработка генератора СЧ по нормальноу закону распределения с использованием Центральной предельной теоремы теории вероятностей 3
1.1.1 Теоретические сведения 3
1.1.2 Реализация генератора СЧ......................................................................4
1.1.3 Проверка качества последовтальности по критерию Пирсона .........5
1.2 Разработка генератора СЧ по экспоненциальному закону распределения методом Бусленко 10
1.2.1 Теоретические сведения 10
1.2.2 Реализация генератора СЧ 12
1.2.3 Проверка качества последовательности по гистограмме распределения 13
2 Разработка модели вычислительного устройства 16
2.1 Алгоритм работы вычислительного устройства 17
3 Анализ работы модели вычислительного устройства 19
Заключение 23
Список использованных источников 24

Прикрепленные файлы: 1 файл

ПЗ.doc

— 877.50 Кб (Скачать документ)

Тогда ,

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

Алгоритм определения границ интервалов:

  1. вычисляется площадь S под кривой плотности распределения на интервале ;
  2. вычисляется текущая площадь Si для определения первой границы ai .

Граница аi будет равна значению х для которого выполняется условие

где m - число интервалов разбиения.

  1. определение границы a2 по условию

Аналогичным образом определяются все границы интервалов ai которые образуют определенный массив данных.

Следовательно, заданный закон распределения  в зависимости от вида плотности  распределения влияет на расположение границ интервалов ai. Внутри интервалов случайная величина распределена по нормальному закону распределения.

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

  1. генерируется равномерно распределенное число w1 из интервала (0,1), которое определяет случайным образом номер интервала (ai, ai+1);
  2. генерируется случайное число wi+1, по которому формируется случайная величина х, равномерно распределенная в интервале (ai, ai+1)

где (ai+1 - ai) – масштабный коэффициент, определяется границами интервала.

Случайная величина хi имеет заданные закон распределения.

        1. Реализация генератора СЧ

Закон экспоненциального распределения (формула 1). Модель разработана по методу Бусленко.

где λ  = 1/Т – интенсивность отказа.

По методу Бусленко алгоритм генерации  случайных чисел включает следующие  задачи:

  1. Определение границ интервалов.

Считаем площадь всей функции  S=∫f(x)dx  на интервале от a до b.

Далее вычисляем площадь первого  прямоугольника S1=∫f(x)dx  на интервале от a до хi. , отсюда находим хi:

хi= a1 – граница первого интервала.

Далее вычисляем площадь второго  прямоугольника S2=∫f(x)dx  на интервале от a до хi. , отсюда находим хi:

хi= a2 – граница второго интервала.

И т.д. получаем границы для всех m интервалов [aa1,a1a2,a2a3,…].

  1. Получение номера интервала.

Для этого используется генератор  равномерных чисел ri

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

            xj = ai+( ai+1- ai)*ri.

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

Проведем проверку соответствия последовательности СЧ . Разработанная система позволяет варьировать параметр распределения T и параметры оценки по гистограмме распределения: m – число интервалов разбиения и n – объем выборки. Произведем проверку генератора СЧ при требуемых значениях Т. Значения коэффициента отклонения распределения d при разных m и n приведены в таблице 3. На рис. 3 и рис. 4 представлены гистограммы практического и теоретического распределений при T = 0.8  и T = 48 соответственно, m = 10, n = 500.

 

 

 

 

 

Таблица 3

Средняя наработка на отказ T

Количество интервалов m

Объем выборки, n

Отклонение распределения d, %

0,8

10

100

13

0,8

10

300

9.67

0,8

10

500

7.6

0,8

20

100

18

0,8

20

300

14.33

0,8

20

500

8.7

0,8

40

100

25

0,8

40

300

15.83

0,8

40

500

10.7

48

10

100

11.5

48

10

300

7.17

48

10

500

7.8

48

20

100

14.16

48

20

300

8.67

48

20

500

7.8

48

40

100

25.5

48

40

300

14.5

48

40

500

13


 

Рис. 3 

Рис. 4

 

    1.  Разработка модели вычислительного устройства

Разрабатываемая модель содержит следующие  элементы:

  1. генератор случайных чисел №1 – длина интервала поступления заявки от датчика,
  2. генератор случайных чисел №2 – длина интервала обработки заявки,
  3. генератор случайных чисел №3 – длина интервала отказа ЭВМ
  4. генератор случайных чисел №4 – длина интервала восстановления ЭВМ.

Согласно заданию, ГСЧ1 и ГСЧ2 реализованы  по нормальному закону распределения с использованием Центральной предельной теоремы теории вероятностей. ГСЧ3 и ГСЧ4 реализованы по экспоненциальному закону распределения с использованием метода Бусленко. В системе предусмотрен накопительный буфер, объемом в 30 заявок. Буфер реализован по принципу FIFO. С целью более подробного изучения процесса в системе была реализована возможность изменения параметров генераторов и времени работы системы.

Структурная модель представлена на рис. 5.


 

 

 

 

 

 

 

 

 

Рис. 5

Алгоритм работы вычислительного  устройства


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

    1. Анализ работы модели вычислительного устройства

Режимы работы модели вычислительной системы:

1) Рабочая ЭВМ . 

2 ) Отказ ЭВМ. Начинается восстановление системы. 


 

 

 

 

 

 

 

 

3) ЭВМ включилась но не обрабатывает, так как на входе системы нет заявок.

4) Переполнение буфера ЭВМ. 

         

 

 

  1. Переполнение буфера по причине отказа ЭВМ.

 

 Была смоделирована работа системы в течении 30 дней и получены следующие результаты:

Вероятность обработки заявки P1 = 0.407;

Вероятность обработки заявки без  ожидания Р2 = 0.003;

Интенсивность поступления заявок Λ = 0.426 [1/час];

Время простоя системы  Tps = 20 часов;

Среднее время ожидания Tw = 123,121 ч.

Среднее время пребывания заявки в  системе Tpzs = 126,264 ч.

 

Заключение

На основании задания была разработана  модель вычислительного устройства. Он представляет из себя четыре генератора случайных чисел один из которых имитирует входные сообщения поступающие на вход устройства, второй имитирует время обработки сообщения ЭВМ, третий имитирует время отказа ЭВМ и четвертый имитирует время восстановления ЭВМ. Во время работы программы даются характеристики о работе модели на данный момент моделирования системы. Оценка по критерии Пирсона генераторов 1 и 2 составляет соответственно 36.83068 и 32.13055.Отклонение распределения смоделированных генераторов 3 и 4 составляет соответственно 7,8% и 7,6%. Блок анализа содержит краткие характеристики после работы системы в течении времени моделирования.

Вероятность обработки заявки P1 =  0.407;

Вероятность обработки заявки без  ожидания Р2 = 0.003;

Интенсивность поступления заявок Λ = 0.426 [1/час];

Время простоя системы  Tps = 20 часов;

Среднее время ожидания Tw = 123,121 ч.

Среднее время пребывания заявки в  системе Tpzs = 126,264 ч.

 

 

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

  1. Сигачева Т.Н., Уразбахтина Л.Б. Моделирование случайных процессов с различными законами распредпления. Методическое указание–1998.
  2. Советов Б.Я., Яковлев С.А. Моделирование систем: Учебник для вузов по спец. ЭВМ. –М.: Высш. шк. 2001.

 

 

ПРИЛОЖЕНИЕ А

Программа написана в среде Macromedia Flash MX 2004 с использованием встроенного языка программирования ActionScript 2.0

Листинг программы модели:

// Реализация  системы массового обслуживания

// Флаги разрешения

var r_flag1:Boolean = false;

var r_flag2:Boolean = false;

var r_flag3:Boolean = false;

var r_flag4:Boolean = false;

// Флаги событий

var s_flag1:Boolean = false;

var s_flag2:Boolean = false;

var s_flag3:Boolean = false;

var s_flag4:Boolean = false;

// Счетчики тактов

var count1:Number = 0;

var count2:Number = 0;

var count3:Number = 0;

var count4:Number = 0;

// Генераторы  событий

// ГСЧ1 и ГСЧ2 по нормальному закону распределения

function gauss_gen(in_Mx, in_sigma):Number {

a = in_Mx-in_sigma;

b = in_Mx+in_sigma;

var x_rand:Number = 0;

for (i=0; i<5; i++) {

x_rand += (b-a)*Math.random()+a;

}

x_rand = x_rand/5;

x_rand = Math.floor(x_rand)*6+Math.round((x_rand-Math.floor(x_rand))*6);

return x_rand;

}

// ГСЧ3 и ГСЧ4  по экспоненциальному закону  распределения

function exp_gen(in_T):Number {

var ai:Array = new Array();

var x_rand:Number = 0;

exp_lamda = 1/in_T;

var w:Number = 0;

ai[0] = 0;

for (i=1; i<=10; i++) {

ai[i] = (-1*Math.log(1-0.1*i))/exp_lamda;

}

ai[10] = (ai[9]-ai[8])*2+ai[9];

w = Math.round(Math.random()*10);

if (w == 0) {

w = 1;

}

x_rand = ai[w-1]+(ai[w]-ai[w-1])*Math.random();

x_rand = Math.floor(x_rand)*6+Math.round((x_rand-Math.floor(x_rand))*6);

delete ai;

return x_rand;

}

timer._visible = false;

timer.stop();

timer.onEnterFrame = function() {

if ((timer._currentframe != 1) && (!stop_flag)) {

but_start.enabled = false;

var dat_col:Color = new Color(main_dat.fon);

var err_col:Color = new Color(main_VM.fon);

var evm_col:Color = new Color(main_VM.evm);

dat_col.setRGB(0xFFFFFF);

// Генерация  интервала заявки

if (r_flag1) {

count1 = gauss_gen(gsv1_Mx, gsv1_sigma)+1;

r_flag1 = false;

}

// Момент поступления заявки в систему

if (count1 == 0) {

dat_col.setRGB(0x00F21E);

s_flag1 = true;

z_num++;

if (buf == 30) {

if (r_flag4) {

M3++;

} else {

M2++;

}

var r_col:Color = new Color(["main_buf.r"+Math.floor((buf-1)/3)]);

r_col.setRGB(0xD70F0F);

} else if (buf<30) {

buf++;

buf_arr[buf] = cicle_count;

var r_col:Color = new Color(["main_buf.r"+Math.floor((buf-1)/3)]);

r_col.setRGB(0x00F21E);

}

r_flag1 = true;

} else {

count1--;

}

// Генерация  интервала отказа

if ((r_flag3) && (!r_flag4)) {

count3 = exp_gen(gsv3_T)+1;

err_col.setRGB(0x91EE95);

r_flag3 = false;

}

// Момент отказа

if ((count3 == 0) && (!r_flag3)) {

s_flag3 = true;

s_flag4 = false;

err_flag = true;

err_col.setRGB(0xFF8080);

main_VM.err.text = "Отказ";

if (z_flag) {

M5++;

z_flag = false;

}

r_flag3 = true;

} else if (!r_flag3) {

count3--;

}

// Генерация  интервала обработки

if (s_flag1 || buf != 0) {

if (r_flag2 && !r_flag4) {

main_VM.info.text = "Обработка";

evm_col.setRGB(0x31C6FD);

if (buf != 0) {

buf--;

emp_flag = false;

if (buf == 0) {

emp_flag = true;

}

}

if (buf/3-Math.floor(buf/3) == 0) {

var r_col:Color = new Color(["main_buf.r"+Math.floor(buf/3)]);

r_col.setRGB(0xFFFFFF);

}

for (i=0; i<=30; i++) {

if (i<=buf) {

buf_arr[i] = buf_arr[i+1];

} else {

buf_arr[i] = 0;

}

}

z_flag = true;

if (cicle_count-buf_arr[0] != 0) {

i_tw++;

tw += cicle_count-buf_arr[0];

}

count2 = gauss_gen(gsv2_Mx, gsv2_sigma)+1;

err_flag = false;

r_flag2 = false;

}

s_flag1 = false;

}

// Момент завершения  обработки заявки

if ((count2 == 0) && (!r_flag2) && (!r_flag4)) {

s_flag2 = true;

main_VM.info.text = "Свободно";

evm_col.setRGB(0x04EE21);

if (!err_flag) {

M1++;

if (emp_flag) {

M4++;

z_flag = false;

}

if (tps_int != 0) {

tps += tps_int;

tps_int = 0;

}

i_tpzs++;

tpzs += cicle_count-buf_arr[0];

}

r_flag2 = true;

} else if (!r_flag2 && !r_flag4) {

count2--;

}

// Генерация  интервала восстановления системы

if (s_flag3) {

if (!r_flag4) {

count4 = exp_gen(gsv4_T)+1;

}

s_flag3 = false;

r_flag4 = true;

}

// Момент восстановления  системы

if ((count4 == 0) && (r_flag4)) {

s_flag4 = true;

count2 = 0;

r_flag2 = true;

main_VM.info.text = "Свободно";

evm_col.setRGB(0x04EE21);

main_VM.err.text = "Работа";

err_col.setRGB(0x91EE95);

r_flag4 = false;

} else if (r_flag4) {

count4--;

}

if (!z_flag) {

tps_int++;

}

out_z_num.text = String(z_num);

out_buf.text = String(buf);

out_M1.text = String(M1);

out_M2.text = String(M2);

out_M3.text = String(M3);

out_M4.text = String(M4);

out_M5.text = String(M5);

out_time.text = String(Math.floor(cicle_count/6));

if (cicle_count == work_time) {

P1 = Math.round(M1/z_num*1000)/1000;

out_panel.text = "P1 = "+String(P1)+"\n";

P2 = Math.round(M4/z_num*1000)/1000;

out_panel.text += "P2 = "+String(P2)+"\n";

tps = Math.floor(tps/6);

out_panel.text += "tps = "+String(tps)+"\n";

if (i_tw == 0) {

i_tw = 1;

}

tw = Math.round(Math.floor(tw/6)/i_tw*1000)/1000;

out_panel.text += "tw = "+String(tw)+"\n";

if (i_tpzs == 0) {

i_tpzs = 1;

}

tpzs = Math.round(Math.floor(tpzs/6)/i_tpzs*1000)/1000;

out_panel.text += "tpzs = "+String(tpzs)+"\n";

intens = z_num/Math.floor(work_time/6);

out_panel.text += "intens = "+String(intens)+"\n";

timer.gotoAndStop(1);

}

cicle_count++;

}

};

but_start.onRelease = function() {

work_time = 6*Number(inp_work_time.text);

if (isNaN(work_time) || (work_time<0) || (work_time>5000)) {

errors.text = "Неправильное значение!";

inp_work_time.text = "";

model_fl = false;

}

gsv1_Mx = Number(inp_gsv1_Mx.text);

if (isNaN(gsv1_Mx) || (gsv1_Mx<0) || (gsv1_Mx>10)) {

errors.text = "Неправильное значение!";

inp_gsv1_Mx.text = "";

model_fl = false;

}

gsv1_sigma = Number(inp_gsv1_sigma.text);

if (isNaN(gsv1_sigma) || (gsv1_sigma<0) || (gsv1_sigma>10)) {

errors.text = "Неправильное  значение!";

inp_gsv1_sigma.text = "";

model_fl = false;

}

gsv2_Mx = Number(inp_gsv2_Mx.text);

if (isNaN(gsv2_Mx) || (gsv2_Mx<0) || (gsv2_Mx>10)) {

errors.text = "Неправильное значение!";

inp_gsv2_Mx.text = "";

model_fl = false;

}

gsv2_sigma = Number(inp_gsv2_sigma.text);

Информация о работе Анализ работы модели вычислительного устройства