- •Пример построения им
- •Этапы построения им
- •РРис. 1. Q – схема вычислительной системы: каналы к1 и к2 эвм1 и эвм2 соответственно; и – источник запросов
- •Моделирующая программа на языке Си
- •Int ns, /*наличие заявки на входе системы*/
- •Табличный способ
- •Порядок выполнения работы
- •Определение выборочных оценок
- •Порядок выполнения работы
- •Аппаратный способ
- •Порядок выполнения работы
- •Определение числовых характеристик (табл.1).
- •Int ns, /*наличие заявки на входе системы*/
- •Сведения о дискретных случайных величинах
- •Функция распределения непрерывных случайных величин
- •Список литературы
- •Содержание
Моделирующая программа на языке Си
#include<stdio.h>
#include<conio.h>
float
tps, /*время между приходом заявок*/
tm1, /*время обработки задания на ЭВМ1*/
tm2; /*время обработки задания на ЭВМ2*/
Int ns, /*наличие заявки на входе системы*/
sm1, /*состояние ЭВМ1
( ЭВМ1 = 0, если ЭВМ1 свободна;
ЭВМ1 = 1, если ЭВМ2 занята)*/
sm2, /*состояние ЭВМ2*/
kr1, /*количество заявок, выполненных на ЭВМ1*/
kr2, /*количество заявок, выполненных на ЭВМ2*/
kot, /*количество отказов в обслуживании пользователей*/
t, /*текущее время работы системы*/
tektm1, /*текущее время обработки задания на ЭВМ1*/
tektm2, /*текущее время обработки задания на ЭВМ2*/
tektps; /*текущее время между поступлениями заявок*/
float
proz ; /*процент заявок, выполненных на ЭВМ1*/
main()
{
/*установка начальных условий*/
ns=1; sm1=0; sm2=0;
kr1=0; kr2=0; kot=0;
tektm1=0; tektm2=0; tektps=0;
/*ввод параметров системы*/
clrscr();
printf("введите исходные данные(в ед. модельного времени):\n\r");
printf("время между приходом пользователей=>");
scanf("%f",&tps);
printf("\n\r время обработки задания на ЭВМ1=>");
scanf("%f",&tm1);
printf("\n\r время обработки задания на ЭВМ2=>");
scanf("%f",&tm2);
for (t=0; t<=480; t++) /*условие продолжения работы системы*/
{ /*изменение текущего времени между заявками*/
if (++tektps>=tps) /*поступила очередная заявка*/
{
ns=1;
tektps=0;
}
if (sm1) /*ЭВМ1 обрабатывает заявку*/
/*изменение текущего времени работы ЭВМ1*/
if (++tektm1>tm1) /*заявка выполнена*/
{
sm1=0; /*освобождаем ЭВМ1*/
tektm1=0;
kr1++;
}
if (sm2) /*ЭВМ2 обрабатывает заявку*/
/*изменение текущего времени работы ЭВМ2*/
if (++tektm2>tm2) /*заявка выполнена*/
{
sm2=0; /*освобождаем ЭВМ2*/
tektm2=0;
kr2++;
}
if (ns) /*на входе имеется заявка*/
{
if (!sm1)
{ /*ЭВМ1 свободна*/
sm1=1; /*занимаем ЭВМ1*/
tektm1++;
}
else /*ЭВМ1 занята*/
if (!sm2)
{ /*ЭВМ2 свободна*/
sm2=1; /*занимаем ЭВМ2*/
tektm2++;
}
else kot++; /*обе машины заняты*/
/*отказ в обслуживании*/
ns=0;
}
} /*переход к следующему моменту модельного времени*/
/*система отработала заданное время*/
proz=kr1*100/(kr1+kr2+kot);
/*вывод результатов на экран*/
printf("\n\n\r за 8 часов работы системы на ЭВМ1 выполнено %f",proz,
"%% поступивших заявок");
printf("\n\r на ЭВМ2 выполнено %f",(float)kr2*100/(kr1+kr2+kot),
"%% поступивших заявок");
printf("\n\r отказано в обслуживании %f",(float)kot*100/(kr1+kr2+kot),
"%% \n\r");
puts("\n\n\rнажмите на <ВВОД>");
getch();
}
Протокол работы программы
Введите исходные данные (в единицах модельного времени):
- время между приходом пользователей => 3
- время обработки задания на ЭВМ1 => 6
- время обработки задания на ЭВМ2 => 7
За 8 часов работы системы
- на ЭВМ1 выполнено 49.6 % поступивших заявок
- на ЭВМ2 выполнено 25.2 % поступивших заявок
- отказано в обслуживании 25.2 %
Нажмите на <ВВОД>
Вывод
Результаты работы моделирующей программы совпадают с рассчитанными теоретически, следовательно, программа написана и работает правильно.
Варьируя параметрами системы, можно сделать вывод о том, что минимальное время простоя оборудования (в частности, ЭВМ2) будет обеспечено, например, при уменьшении времени работы ЭВМ2. при этом не будет отказов в обслуживании.
Порядок выполнения работы
1. Изучить теоретический материал по данной теме.
2. Построить Q-схему.
3. Определить внешние воздействия параметров, характеристики модельного времени.
4. Теоретически оценить результаты ИМ.
5. Создать и отладить ИМ.
6. Сравнить полученные результаты функционирования модели с теоретическими.
7. Определить оптимальную структуру вычислительной системы.
8. Оформить и защитить отчет по лабораторной работе.
Лабораторная работа № 2
ФОРМИРОВАНИЕ И ИСПОЛЬЗОВАНИЕ ПОСЛЕДОВАТЕЛЬНОСТЕЙ РАВНОМЕРНО РАСПРЕДЕЛЕННЫХ ЧИСЕЛ.
АППАРАТНЫЙ СПОСОБ
Цель работы: изучение основных способов формирования последовательностей равномерно распределенных чисел; создание файла чисел, формируемых моделью генератора псевдослучайных чисел регистровой структуры.
При реализации статистического моделирования на ЭВМ наиболее часто используются последовательности равномерно распределенных чисел. Они представляют собой некоторое количество чисел, имитирующих выборку равномерно распределенных чисел с заданными параметрами (например, А и В – нижняя и верхняя границы интервала равномерной функции распределения на рис. 4).
При заданных значениях А и В математическое ожидание М и дисперсия D определяются следующим образом:
М = (А+В) / 2; D = (В-А)2 / 12.
Рис. 4. График функции плотности равномерного закона распределения
Широкое распространение находят как случайные числа, так и псевдослучайные. В качестве источника случайности используются физические шумы в электронных и полупроводниковых приборах, явления распада радиоактивных элементов и т.д. Числа, получаемые по определенному алгоритму, т.е. детерминированные числа, но удовлетворяющие определенным критериям случайности, называются псевдослучайными.
Если получена последовательность y1,y2,…,yn, равномерно распределенных в интервале (C, D), то для перехода к последовательностям x1,x2,…,xn из интервала (А, В) применяется следующая формула:
При C=0 и D=1 получаем: xi=(В - А)*yi + А.
При С=0 и D=М, где М – целое число, получаем
На практике используются три основных способа генерирования случайных чисел: табличный (файловый), программный и аппаратный (физический).
