Учебная работа. Реферат: Моделирование ЭВМ
Казанский Муниципальный технический Институт имени А.Н. Туполева
——————————————————————————————————-
Кафедра Электронно — вычислительных машин
Объяснительная записка
к курсовой работе по дисциплине “Моделирование”
Выполнил : студент группы 4301 Базуев Ю.А.
Управляющий : доцент кафедры ЭВМ Захаров В.М.
Оценка:5(отл.)
Казань 1996
Содержание
1.Задание……………………………………………………………………………………3
2. Формализация концептуальной модели…………………………………………4
2.1. Построение формальной схемы функционирования системы……..4
2.2. Определение характеристик и переменных модели………………………..5
2.3. Определение единицы модельного времени………………………………6
2.4. Определение закона функционирования системы………………………6
3. Алгоритмизация модели и ее машинная реализация………………………..7
3.1. Выбор программных средств моделирования……………………………7
3.2. Описание моделирующей программки………………………………………7
3.3. Проверка достоверности программки……………………………………….8
3.4. Моделирование случайных действий…………………………………..9
3.4.1. Моделирование случайных действий, имеющих
равномерное распределение……………………………………………….9
3.4.1.1. Аппаратный метод……………………………………………………..9
3.4.1.2. Программный метод………………………………………………….12
3.4.1.3. Выбор генератора РРПСЧ……………………………………………13
3.4.2. Моделирование случайных действий, имеющих
неравномерное распределение………………………………………….14
3.5. Описание моделирующей программки для стохастической
модели…………………………………………………………………………………18
4. Получение и интерпретация результатов моделирования……………….19
5. Литература ………………………………………………………………………………..20
2. Формализация концептуальной модели
2.1. Построение формальной схемы функционирования
системы
Построим формальную схему (Q-схему) данной вычислительной системы.
И1
О
И2К
И3
Рис. 1 Q — схема вычислительной системы
тут:
К — ЭВМ
О — Очередь
И1 — И3 — Сетевые машинки
2.2.Определение характеристик и переменных модели
tp — интервал меж приходами юзеров
tgz1 — время подготовки задания 1-ым юзером
tgz2 — время подготовки задания 2-ым юзером
tgz3 — время подготовки задания 3-им юзером
tm — время выполнения задания на ЭВМ
k — количество промоделированных на ЭВМ заданий
nz — наличие заявки на входе системы:
nz=0 — нет заявок ___
nz=i — наличие заявки на i-ой сетевой машине ( i=1-3 )
pz1 — подготовка задания сетевой машине 1
pz1=1 — идет подготовка задания на сетевой машине 1
pz1=0 — сетевая машинка 1 не занята
pz2 — подготовка задания сетевой машине 2
pz2=1 — идет подготовка задания на сетевой машине 2
pz2=0 — сетевая машинка 2 не занята
pz3 — подготовка задания сетевой машине 3
pz3=1 — идет подготовка задания на сетевой машине 3
pz3=0 — сетевая машинка 3 не занята
znw — наличие заявки на выполнение задания
znw=0 — заявки отсутствуют ___
znw=i — наличие заявки от сетевой машинки i ( i=1-3 )
wz — выполнение задания на ЭВМ
wz=0 — ЭВМ свободна
wz=i — ЭВМ делает заявку i
ocher[50] — очередь
в очереди хранятся номера сетевых машин с которых получены
заявки
n — индекс вольного элемента в очереди
w2 — количество вып. заданий от 2-го юзера
На первом шаге имитационного моделирования сделаем детерминированную модель данной вычислительной системы, заменяя стохастические потоки их математическими ожиданиями:
— интервал меж приходами юзеров 10 мин
— возможность прихода всякого из юзеров 0.33
— время подготовки задания 1-ым юзером 16 мин
— время подготовки задания 2-ым юзером 17 мин
— время подготовки задания 3-им юзером 18 мин
— время выполнения задания на ЭВМ 0.8 мин
2.3. Определение единицы модельного времени
За единицу модельного времени (emb) принимается малый интервал настоящего времени, в течение которого система не меняет собственного состояния. В данной задачке за emb целенаправлено принять время равное
0.1 мин.
2.4. Определение закона функционирования системы
Работу данной вычислительной системы отразим временными диаграммами.
юзер
emb
160
И1
170
И2
180
И3
ЭВМ
Рис 2. Временные диаграммы работы системы
В машинный зал с интервалом 100 emb приходит один из юзеров.
Сначала приходит 1-ый, и начинает подготовку собственного задания на это ему будет нужно 160 emb. Через 100 emb приходит 2-ой юзер и тоже начинает подготовку задания на это ему отведено 170 emb. Скоро опосля прихода 2-го юзера (через 60 emb) кончает подготовку задания 1-ый юзер и делает его на ЭВМ в течении 8 emb. Через 100 emb опосля прихода второго юзера приходит 3-ий юзер, при всем этом 2-ой продолжает подготовку. Спустя 70 emb опосля прихода третьего юзера кончает подготовку 2-ой и делает свое задание на ЭВМ за 8 emb. 3-ий юзер кончает подготовку спустя 180 emb опосля собственного прихода, в это время
опять приходит 1-ый юзер на этом завершается 1-ый цикл работы системы и все повторяется опять.
Таковым образом за любой цикл с периодом Т=300 emb производится три задания от всякого юзера. Они все производятся сходу же опосля подготовки и не задерживают друг друга, т. к. ЭВМ к моменту поступления этих заявок свободна. Все время работы очередь остается пустой. За время цикла производится одно задание от 2-го юзера, как следует процент выполненных заданий, поступивших от второго юзера равен 33,3 %.
Нам необходимо смоделировать выполнение 500 заданий, как следует общее время работы системы равно (500/3)*300=50.000 emb. За это время ЭВМ проработала 500*8=4000 emb , как следует загрузка ЭВМ равна 8%.
3. Алгоритмизация модели и ее машинная реализация
3.1. Выбор программных средств моделирования
Для написания программки мы избираем язык программирования Borland C++. Этот язык отлично зарекомендовал себя эффективностью, краткостью, стройностью программ. В почти всех вариантах программки, написанные на языке С++ сравнимы по скорости с программками, написанными на языке Ассемблера, при всем этом они наиболее наглядны и ординарны в сопровождении. В системное свита языка С++ заходит много библиотек, в том числе библиотеки подходящих нам обычных функций.
программка для детерминированной модели приведена в Приложении № 1.
3.2. Описание моделирующей программки для
детерминированного варианта модели
характеристики и переменные данной программки описаны в пт 2.2.
Потому что в избранном языке программирования недозволено сделать параллельные процессы, то мы применим принцип псевдораспараллеливания.
В программке организуем очередь ocher[50] в ячейках которой мы запоминаем адресок заявки (номер сетевой машинки). Также вводим ряд вспомогательных переменных ( ztgz1, ztgz2, ztgz3, ztm, zk ) нужных для хранения значений начальных характеристик системы.
Данная моделирующая программка работает последующим образом:
Сначала программка запрашивает значения характеристик системы. Дальше организуется главный цикл, который производится k раз. Первым действием в цикле является оператор добавления единицы машинного времени t=t+emb. Опосля проверяем не пришел ли юзер, если пришел то определяем какой ( система switch (cikl) ). Дальше в программке идет система switch (nz) устанавливающая надлежащие флажки подготовки задания. Опосля идет группа критерий выполняющая уменьшение времени подготовки задания. Если задание подготовлено то подается запрос на выполнение. В этом блоке программки определяется не пуста ли очередь, если не пуста то исполняем задание из очереди по другому исполняем заявку с сетевой машинки. Перед выполнением заявки проверяем занята ли ЭВМ , если занята то ставим заявку в очередь. Дальше если на ЭВМ выполняемся задачка то уменьшаем время выполнения данной для нас задачки. Опосля что цикл повторяется. Опосля окончания цикла производим подсчет процента выполненных заданий, поступивших от второго юзера.
3.3. Проверка достоверности программки
Смоделируем работу системы с параметрами обозначенными в задании.
Протокол работы программки:
Введите интервал меж приходами юзеров 100
Введите время подготовки задания 1-ым юзером 160
Введите время подготовки задания 2-ым юзером 170
Введите время подготовки задания 3-ым юзером 180
Введите время выполнения задания на ЭВМ 8
Введите количество промоделированных на ЭВМ заданий 500
Процент вып. заданий, поступ. от 2-го польз.= 33%
Вывод:
Результаты работы моделирующей программки совпадают с рассчитанными на теоретическом уровне, как следует программка написана и работает верно.
Определим лучшую структуру вычислительной системы: лучшая структура вычислительной системы обеспечивающая малое время простоя оборудования достигается при последующих параметрах:интервал меж приходами юзеров 2
время подготовки задания 1-ым юзером 1
время подготовки задания 2-ым юзером 1
время подготовки задания 3-ым юзером 1
время выполнения задания на ЭВМ 1
3.4. Моделирование случайных действий
3.4.1. Моделирование случайных действий имеющих
равномерное распределение
3.4.1.1. Аппаратный метод
При аппаратном методе случайные либо псевдослучайные числа вырабатываются специальной электрической приставкой — генератором, который является наружным устройством ЭВМ или заходит в состав микропроцессора. Наибольшее распространение на практике отыскали генераторы псевдослучайных чисел (ГПСЧ), построенные на базе регистра сдвига с реализацией некой логической функции в цепи оборотной связи (ОС) (в нашем случае это сумматор по модулю два).
Так как проведение натуральных опытов с различными схемами ГПСЧ трудоемко, то мы будем употреблять программное средство позволяющее строить и изучить разные ГПСЧ на программных моделях. Для этих целей подступают автоматическая система подготовки и обработки статистической инфы (АСПОСИ), которая представляет собой комплекс программных средств, позволяющих строить математические модели разных ГПСЧ и изучить их свойства.
Для получения ПСЧ будем воспользоваться программкой gener.
Работая в диалоговом режиме с ПВМ мы определяем структуру генератора, т. е. некую начальную информацию: разрядность регистра сдвига ГПСЧ, вид ОС, количество и номера присоединенных в цепь ОС разрядов регистра, количество генерируемых чисел и др.
Приобретенные числа записываются в файл и анализируются (строится гистограмма) при помощи программки analize.
Для генерации чисел мы избрали 3 разные структуры ГПСЧ:
1) файл vihod1.dat
Разрядность: 50
Оборотная связь: 30
Количество чисел: 1000
Разрядность числа: 25
Число сдвигов: 2
2) файл vihod2.dat
Разрядность: 50
Оборотная связь: 30
Количество чисел: 1000
Разрядность числа: 25
Число сдвигов: 3
3) файл vihod3.dat
Разрядность: 70
Оборотная связь: 35
Количество чисел: 1000
Разрядность числа: 25
Число сдвигов: 6
Проверим свойство чисел в файлах программкой analize.
Построим гистограммы:
vihod1.dat
vihod2.dat
vihod3.dat
Проверка соответствия чисел в последовательностях требуемому распределению дает последующие результаты: теоретические и статистические данные во всех 3-х файлах по аспектам Колмогорова и Х2 не согласуются.
Определение числовых черт
№
Черта
vihod1.dat
vihod2.dat
vihod3.dat
1
меньшее Определение черт корреляции
r(t) r(t)
1 1
0 t 0 t
5 5
vihod1.dat vihod2.dat
r(t)
1
0 t
5
vihod3.dat
Вывод:
1) С повышением числа сдвигов свойства чисел улучшаются.
2) Из приведенных 3-ех файлов самые высококачественные числа находятся в
файле vihod3.dat , т. к. числа в последовательности довольно
независимы. Но в то же время нет согласованности по обеим
аспектам.
3.4.1.2. Программный метод
При программном методе псевдослучайные числа нам нужно сформировать способом умножения.
Сущность способа: выбирается два n — разрядных числа X1 и X2. X1><0, X2><0. Потом X1 умножаем на X2 и получаем некое друг на друга. Дальше все повторяется до того времени пока не будет сформировано нужное количество чисел.
Программка формирования ГСК на базе способа умножения приведена в Приложении № 2.
Приобретенные числа записываются в файл vi_gpsc1.dat и анализируются при помощи программки analize.
Определение числовых черт
№
Черта
Теоретич. Аппроксимация статистического распределения теоретической функцией
Проверка соответствия чисел последовательности требуемому распределению дает последующие результаты:
Аспект Хи-Квадрат
:
Х2=12.9
С доверительной вероятностью 0.166 можно утверждать о согласованности теоретических и статистических данных.
Аспект Колмогорова
:
Наибольшая разность max| F(x)-F*(x) | = 0.0885
С доверительной вероятностью 0.999 можно утверждать о согласованности теоретических и статистических данных.
Определение черт корреляции
r(t)
1
0 t
5
Рис. 3. График конфигурации коэфф.
корреляции
Вывод:
Приобретенная по способу умножения последовательность СЧ, имеющих равномерный законраспределения удовлетворяет предъявленным требованиям по качеству и быть может применен в задачках моделирования, т. к.:
1) есть согласованность по аспекту Колмогорова
2) числа не зависят друг от друга, о чем гласит график (Рис. 3.)
3.4.1.3. Выбор генератора РРПСЧ
Эффективность статистического моделирования и достоверность приобретенных результатов находятся в прямой зависимости от свойства применяемых в модели случайных последовательностей. Под качеством тут понимается соответствие чисел последовательности данной функции распределения (плотности распределения) и ее характеристикам: М.О. и т.д.; независимость чисел последовательности друг от друга, т.е. отсутствие автокорреляции в последовательности случайных чисел.
Выберем генератор РРПСЧ, который употребляется для генерации времени меж поступлениями заявок от юзеров.
Последовательность чисел, приобретенных аппаратным методом и хранящихся в файле vihod3.dat не совершенно удовлетворяет предъявленным требованиям по качеству, т.к. нет согласия по аспектам теоретических и статистических данных.
В пт 3.4.1.2. мы делая вывод уже гласили о том, что генератор РРПСЧ сформированный программным методом (по способу умножения) можно употреблять в задачках моделирования, но для простоты будем употреблять встроенную функцию random( ), ординарную в программировании и имеющую отличные свойства.
3.4.2. Моделирование случайных действий,
имеющих неравномерное распределение
Для стохастической модели требуются числа распределенные по нормальному закону и по экспоненциальному закону.
Напишем функции формирования чисел по требуемому закону распределения. Эти числа запишем в файл. Оценим свойство приобретенных последовательностей ПСЧ, пользуясь автоматической системой analize. Проанализируем результаты исследования и создадим вывод о качестве каждой последовательности и о способности их использования в стохастической модели.
Сведения о непрерывных случайных величинах
законраспределения случайных величин
Обычный
N(m,s)
Экспоненц-ый
s(1,1/l)=Э(l)
Аналитическое выражение плотности вероятности f(x)
1 -(x-m)
f(x)=—-—-
e 2s
sÖ2p
-lx
f(x)=l e
Определяющие характеристики
| m | <
s > 0
l > 0
Числовые m свойства D
m
s
1/l
1/l
Метод получения случайной величины
______
xi=Ö-2ln z1 co
s2p z2
xi+1=Ö-2 ln z1 cos2p z2
( m=0; D=1 )
1
xi=- —- ln zi
l
Область значений случайной величины
исследование последовательности нормально распределенных ПСЧ.
(Программка в приложении № 3)
Определение числовых черт
№
Черта
Теоретическое
Статистическое
1
Мин.знач.совокупы
11
12.31
2
Макс.знач.совокуп-ти
24
25.23
3
Мат. ожидание
16
16.02
4
Дисперсия
2
2.07
5
Сред.квадр.отклонение
1
1.439
6
Коэфф.ассиметрии
0
0.35
7
Эксцесс
0
2.716
Аппроксимация стат. распределения теоретической функцией.
Проверка соответствия чисел последовательности требуемому распределению дает последующие результаты:
Аспект Хи-Квадрат
:
Х2=0.0000813
С доверительной вероятностью 0.999 можно утверждать о согласованности теоретических и статистических данных.
Аспект Колмогорова
:
Наибольшая разность max| F(x)-F*(x) | = 0.0823
С доверительной вероятностью 0.999 можно утверждать о согласованности теоретических и статистических данных.
Определение черт корреляции
r(t)
1
0 t
5
Рис. 4. График конфигурации коэффициента корреляции.
Вывод:
Приобретенная последовательность ПСЧ, имеющая обычный законраспределения, удовлетворяет предъявленным требованиям по качеству и быть может применена в задачках моделирования, т. к.
— числовые свойства имеют незначимое отклонение от
теоретических значений,
— по аспектам согласия получены удовлетворительные значения
доверительных вероятностей,
— числа последовательности довольно независимы, о чем свидетельствует
график (Рис. 4.)
Последовательности ПСЧ для 2-го и 3-го юзеров генерируются аналогично, с той только различием, что мат. ожидание у их 17 и 18 соответственно.
исследование последовательности экспоненциально распределенных ПСЧ
(Программка в приложении № 3)
Определение числовых черт
№
Черта
Теоретическое
Статистическое
1
Мин.знач.совокупы
0.5
0.8
2
Макс.знач.совокуп-ти
3.5
2.358
3
Мат. ожидание
0.8
1.06
4
Дисперсия
0.08
0.066
5
Сред.квадр.отклонение
0.5
0.2575
6
Коэфф.ассиметрии
0
1.682
7
Эксцесс
0
1.097
Аппроксимация стат. распределения теоретической функцией
Проверка соответствия чисел последовательности требуемому закону распределения дает последующие результаты:
Аспект Хи-Квадрат:
С доверительной вероятностью 0.999 можно утверждать о согласованности теоретических и статистических данных.
Аспект Колмогорова
:
Наибольшая разность max| F(x)-F*(x) | = 0.023
С доверительной вероятностью 0.91 можно утверждать о согласованности теоретических и статистических данных.
Определение черт корреляции
r(t)
1
0 t
5
Рис. 5. График конфигурации коэффициента корреляции.
Вывод:
Приобретенная последовательность ПСЧ, имеющих экспоненциальный законраспределения, удовлетворяет предъявленным требованиям по качеству и быть может применена в задачках моделирования, т. к.
— числовые свойства имеют незначимое отклонение от
теоретических значений,
— по аспектам согласия получены удовлетворительные значения
доверительных вероятностей,
— числа последовательности довольно независимы, о чем свидетельствует
график (Рис. 5.)
3.5. Описание моделирующей программки для
стохастической модели
Преобразуем ранее сделанную детерминированную модель вычислительной системы в стохастическую модель. Для этого потребуются последующие конфигурации детерминированной программки:
— вставим программный генератор РРПСЧ — встроенную функцию random( )
возвращающую РРПСЧ в интервале (0,1) — для определения времени
меж приходами юзеров.
— файл norm-1.dat , имеющий обычный законраспределения с m=16 , D=2
для определения времени подготовки задания на 1-ой сетевой машине.
— файл norm-2.dat , имеющий обычный закон распределения с m=17 , D=2
для определения времени подготовки задания на 2-ой сетевой машине.
— файл norm-3.dat , имеющий обычный закон распределения с m=18 , D=2
для определения времени подготовки задания на 3-ей сетевой машине.
— файл expon.dat , имеющий экспоненциальный закон распределения с m=0.8
для определения времени выполнения задания на ЭВМ .
— уберем функции ввода с клавиатуры которые использовались для ввода
характеристик системы.
Стохастическая моделирующая программка приведена в Приложении № 4.
4. Получение и интерпретация результатов
моделирования
значения выходных черт, приобретенные при прогонках модели с разными случайными действиями.
№ прогона
% выполненных заданий, поступ. от 2-го юзера
1
9 %
2
9 %
3
9 %
4
9 %
5
9 %
6
9 %
7
9 %
8
9 %
9
9 %
10
9 %
сред.зн.
9 %
Вывод:
Усредненные значения выходной свойства подтверждают данные детерминированной модели т.к. с введением вероятности прихода второго юзера равной 0.1 в детерминированную модель теоретическое второго юзера становится равным 10 % .
Литература
1. Разработка САПР. № 9
В.М. Черненький. Имитационное моделирование.
2. Лекции по курсу “Моделирование”.
3. Б. Страуструп. язык программирования С++.
4. Шрайбер Г.Д. Моделирование на GPSS.
5. Е.И. Козелл. от Си к С++.
приложение № 1
// ЗАДАНИЕ 15. Детерминированная модель системы.
#include<stdio.h>
#include<conio.h>
const emb=1; //единица машинного времени
main()
{ int tp=100; //интервал меж приходами юзеров
int tgz1=160; //время подготовки задания 1-ым юзером
int tgz2=170; //время подготовки задания 2-ым юзером
int tgz3=180; //время подготовки задания 3-им юзером
int tm=8; //время выполнения задания на ЭВМ
int k=500; //количество промоделированных на ЭВМ заданий
int t=0; //время
char nz=0; //наличие заявки на входе системы
char cikl=0; //цикл прихода заявок
char pz1=0; //подготовка задания на сетевой машине 1
char pz2=0; //подготовка задания на сетевой машине 1
char pz3=0; //подготовка задания на сетевой машине 1
char znw=0; //наличие заявки на выполнение задания
char wz=0; //выполнение задания на ЭВМ
char ocher[50]; //очередь
char n=0; //индекс вольного элемента в очереди
int w2=0; //количество вып. заданий от 2-го юзера
int ztgz1,ztgz2,ztgz3,ztm,zk; //перем.для запоминания характеристик системы
printf(«Введите интервал меж приходами юзеров «); scanf(«%d»,&tp);
printf(«Введите время подготовки задания 1-ым юзером «);
scanf(«%d»,&tgz1); ztgz1=tgz1;
printf(«Введите время подготовки задания 2-ым юзером «);
scanf(«%d»,&tgz2); ztgz2=tgz2;
printf(«Введите время подготовки задания 3-ым юзером «);
scanf(«%d»,&tgz3); ztgz3=tgz3;
printf(«Введите время выполнения задания на ЭВМ «); scanf(«%d»,&tm); ztm=tm;
printf(«Введите количество промоделированных на ЭВМ заданий «);
scanf(«%d»,&k); zk=k;
//———— моделирующий цикл ————————————
while (k!=0)
{ t=t+emb;
//возникновение юзера
if (t%tp==0)
switch (cikl)
{ case 0: nz=1; cikl=1; break;
case 1: nz=2; cikl=2; break;
case 2: nz=3; cikl=3; break;
case 3: nz=1; cikl=0;
}
//начало подготовки задания
switch (nz)
{ case 1: pz1=1; nz=0; break;
case 2: pz2=1; nz=0; break;
case 3: pz3=1; nz=0;
}
приложение № 1 (продолжение)
//подготовка задания
if (pz1==1)
if (tgz1==0) {pz1=0; znw=1; tgz1=ztgz1;} else tgz1=tgz1-emb;
if (pz2==1)
if (tgz2==0) {pz2=0; znw=2; tgz2=ztgz2;} else tgz2=tgz2-emb;
if (pz3==1)
if (tgz3==0) {pz3=0; znw=3; tgz3=ztgz3;} else tgz3=tgz3-emb;
// запрос на выполнение
if (n!=0 && wz==0) { wz=ocher[n-1]; n—; } //если очередь не пуста а ЭВМ свобода
// то выпол. заявку из очереди
if (znw!=0) //если имеется заявка на выполнение
if (wz==0) { wz=znw; znw=0; } //если ЭВМ не занята
else //если ЭВМ занята, то ставим заявку в очередь
{ if (n>=50) { printf(«nПереполнение очереди!n»); return 0; }
else { ocher[n]=znw; znw=0; n++; }
}
//выполнение задания на ЭВМ
switch (wz)
{ case 1: if (tm==0) {wz=0; k—; tm=ztm; } else tm=tm-emb; break;
case 2: if (tm==0) {wz=0; k—; w2++; tm=ztm; } else tm=tm-emb; break;
case 3: if (tm==0) {wz=0; k—; tm=ztm; } else tm=tm-emb;
}
}
printf(«nПроцент вып. заданий, поступ. от 2-го польз.=%d%»,100*w2/zk);
}
приложение № 2
//Генерирование умеренно распределенных случайных величин
#include<stdio.h>
long x=7533; //псевдослучайное число
long Rnd(long x) // процедура формирования еще одного псевдослучайного числа
{ int l=5169;
long k=65536;
return (l*x)%k;
}
void main()
{ FILE *fout; //выходной файл случайных величин
int i; //параметр цикла
fout=fopen(«vi_gpsc1.dat