Автор работы: Пользователь скрыл имя, 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
Тогда ,
что означает, что площади прямоугольников равны и разыгрывание номера интервала можно проводить с помощью генератора случайных чисел с равномерным законом распределения.
Алгоритм определения границ интервалов:
Граница аi будет равна значению х для которого выполняется условие
где m - число интервалов разбиения.
Аналогичным образом определяются все границы интервалов ai которые образуют определенный массив данных.
Следовательно, заданный закон распределения в зависимости от вида плотности распределения влияет на расположение границ интервалов ai. Внутри интервалов случайная величина распределена по нормальному закону распределения.
После формирования массива аi производиться генерация совокупности чисел, распределенных по заданному закону. Для этого выполняют следующие действия:
где (ai+1 - ai) – масштабный коэффициент, определяется границами интервала.
Случайная величина хi имеет заданные закон распределения.
Закон экспоненциального
где λ = 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,…].
Для этого используется генератор равномерных чисел ri
3) Получение числа xj описываемого с заданной плотностью распределения.
xj = ai+( ai+1- ai)*ri.
Проведем проверку соответствия последовательности СЧ . Разработанная система позволяет варьировать параметр распределения 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 и ГСЧ2 реализованы по нормальному закону распределения с использованием Центральной предельной теоремы теории вероятностей. ГСЧ3 и ГСЧ4 реализованы по экспоненциальному закону распределения с использованием метода Бусленко. В системе предусмотрен накопительный буфер, объемом в 30 заявок. Буфер реализован по принципу FIFO. С целью более подробного изучения процесса в системе была реализована возможность изменения параметров генераторов и времени работы системы.
Структурная модель представлена на рис. 5.
Рис. 5
Режимы работы модели вычислительной системы:
1) Рабочая ЭВМ .
2 ) Отказ ЭВМ. Начинается восстановление системы.
3) ЭВМ включилась но не обрабатывает, так как на входе системы нет заявок.
4) Переполнение буфера ЭВМ.
Была смоделирована работа системы в течении 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 ч.
Список использованных источников
Программа написана в среде 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.
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_
}
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.
x_rand = Math.floor(x_rand)*6+Math.
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.
r_col.setRGB(0xD70F0F);
} else if (buf<30) {
buf++;
buf_arr[buf] = cicle_count;
var r_col:Color = new Color(["main_buf.r"+Math.
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.
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/
if (cicle_count == work_time) {
P1 = Math.round(M1/z_num*1000)/
out_panel.text = "P1 = "+String(P1)+"\n";
P2 = Math.round(M4/z_num*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_
out_panel.text += "tw = "+String(tw)+"\n";
if (i_tpzs == 0) {
i_tpzs = 1;
}
tpzs = Math.round(Math.floor(tpzs/6)/
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);
Информация о работе Анализ работы модели вычислительного устройства