Реферат: Моделирование ЭВМ

Государственный комитет Российской Федерации по высшемуобразованию

Казанский Государственный Технический Университет имениА.Н. Туполева

-------------------------------------------------------------------------------------------------------

                         Кафедра Электронно — вычислительных машин

   


                     Пояснительная записка

       к курсовой работепо дисциплине “Моделирование”

                                                       Выполнил: студент группы 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   

/>


                                                                О    

/>/>/>/>/>/>/>/>         

/> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> />

/>/>/>/>/>          И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 приходит один из пользователей.

В начале приходит первый, иначинает подготовку своего задания на это ему потребуется 160 emb. Через 100emb приходит второй пользователь и тоже начинает подготовку задания на это емуотведено 170 emb. Вскоре после прихода 2-го пользователя (через 60 emb)заканчивает подготовку задания первый пользователь и выполняет его на ЭВМ втечении 8 emb. Через 100 emb после прихода второго пользователя приходит третийпользователь, при этом второй продолжает подготовку. Спустя 70 emb послеприхода третьего пользователя заканчивает подготовку второй и выполняет своезадание на ЭВМ за 8 emb. Третий пользователь заканчивает подготовку спустя 180emb после своего прихода, в это время

снова приходит первыйпользователь на этом заканчивается первый цикл работы системы и все повторяетсяснова.

   Таким образом за каждыйцикл с периодом Т=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 наименьшее значение 0.02 0.005 0.00059 2 наибольшее значение 0.96 0.996 0.999 3 Мат. ожидание 0.39 0.51 0.49 4 Дисперсия 0.078 0.086 0.085 5 Среднеквадратич.отклон. 0.279 0.294 0.292 6 Эксцесс -1.92 -1.024 -1.12

        

                         Определениехарактеристик корреляции

/>/>             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 и получаем некоторое значение Y, у которого 2n — разрядов: Y=X1*X2. Из2n — разрядного Y выбираем n — разрядное Х1 и Х2 и вновь полученные Х1, Х2умножаем друг на друга. Далее все повторяется до тех пор пока не будетсформировано необходимое количество чисел.

   Программа формирования ГСКна основе метода умножения приведена в Приложении № 2.

   Полученные числазаписываются в файл vi_gpsc1.dat и анализируются с помощью программы analize.

                        Определение числовых характеристик

№ Характеристика Теоретич. значение Статистич. значение 1 Мин.значение совокуп. 0.00068 2 Макс.значение совокуп 0.99995 3 Математич. ожидание 0.5 0.4928 4 Дисперсия 0.083 0.07822 5 Сред.квад.отклонение 0.1887 0.2796

  Аппроксимациястатистического распределения теоретической функцией

/>


   Проверка соответствиячисел последовательности требуемому распределению дает следующие результаты:  

   Критерий Хи-Квадрат:

          Х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 cos2p 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.35 7 Эксцесс 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 Коэфф.ассиметрии 1.682 7 Эксцесс 1.097

   Аппроксимация стат.распределения теоретической функцией

/>


   Проверка соответствиячисел последовательности требуемому закону распределения дает следующиерезультаты:

   Критерий Хи-Квадрат:

   Значение Х2=2310

   С доверительнойвероятностью 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»,«w»);

  for(i=1; i<=1000; i++) fprintf(fout,"%f",float((x=Rnd(x)))/65536);

  fclose(fout);

}

                                                                  Приложение № 3

uses crt;

var f1,f2,f3,f4:text;

    i:integer;

    x,z1,z2,y1,y2,a,y3,y4,y5,y6:real;

procedure norm1(var x1,x2:real);

begin

   z1:=random;

   z2:=random;

   x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);

   x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);

   x1:=sqrt(2)*x1+16;

   x2:=sqrt(2)*x2+16;

end;

procedure norm2(var x1,x2:real);

begin

   z1:=random;

   z2:=random;

   x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);

   x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);

   x1:=sqrt(2)*x1+17;

   x2:=sqrt(2)*x2+17;

end;

procedure norm3(var x1,x2:real);

begin

   z1:=random;

   z2:=random;

   x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);

   x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);

   x1:=sqrt(2)*x1+18;

   x2:=sqrt(2)*x2+18;

end;

procedure expon (a:real; var x: real);

begin

   z1:=random;

   x:=-(1/a)*ln(z1);

   x:=sqrt(1/sqr(a))*x+0.8;

end;

Begin

   clrscr;

   assign(f1,'d:\tp\norm-1.dat');

   rewrite(f1);

   assign(f3,'d:\tp\norm-2.dat');

   rewrite(f3);

   assign(f4,'d:\tp\norm-3.dat');

   rewrite(f4);

   writeln(' Нормальный закон:');

   for i:=1 to 500 do

      begin

         norm1(y1,y2); write(f1,y1,' ');write(f1,y2,' ');

         norm2(y3,y4); write(f3,y3,' ');write(f3,y4,' ');

         norm3(y5,y6); write(f4,y5,' ');write(f4,y6,' ');

                                      Приложение № 3 (продолжение)

      end;

   close (f1); close (f3); close (f4);

   assign(f2,'d:\tp\exp.dat');

   rewrite(f2);

   writeln('Экспоненциальный закон ');

   writeln('Введите параметр a: '); readln(a);

   for i:=1 to 500 do begin expon(a,x);write(f2,x,' '); end;

   close(f2);

End.

                                                 Приложение № 4

//стохастическая модель системы

#include<stdio.h>

#include<conio.h>

const emb=1;    //единица машинного времени

FILE *ravn, *norm1, *norm2, *norm3, *exp;

float a;             

int ravnom()

{ fscanf(ravn,"%f ",&a);

  return int(a*5);

}

int normal1()

{ fscanf(norm1,"%f ",&a);

  return int(a*10);

}

int normal2()

{ fscanf(norm2,"%f ",&a);

  return int(a*10);

}

int normal3()

{ fscanf(norm3,"%f ",&a);

  return int(a*10);

}

int expon()

{ fscanf(exp,"%f ",&a);

  return int(a*10);

}

//------------------------- основная программа----------------------

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-гопользователя

  ravn=fopen(«ravnomer.dat»,«r»);

  norm1=fopen(«norm1.dat»,«r»);

  norm2=fopen(«norm2.dat»,«r»);

  norm3=fopen(«norm3.dat»,«r»);

  exp=fopen(«exp.dat»,«r»);

  tgz1=normal1();

                                                                     Приложение № 4 (продолжение)

  tgz2=normal2();

  tgz3=normal3();

  tm=expon();

  tp=10+ravnom();

//----------- моделирующий цикл -----------------------------------

  while (k!=0)

  { t=t+emb;

//появление пользователя

                 if (t%tp==0)

                               { tp=10+ravnom();

                                 fscanf(ravn,"%f",&a);

                                 if (a<0.4) nz=1;

                                 if (a>0.4 &&a<0.5) nz=2;

                                 if (a>0.5) nz=3;

                               }

//начало подготовки задания

                 switch (nz)

                 { case 1: pz1=1; nz=0; break;

                               case 2: pz2=1; nz=0; break;

                               case 3: pz3=1; nz=0;

                 }

//подготовка задания

                 if (pz1==1)

                               if (tgz1==0) {pz1=0; znw=1;tgz1=normal1();} else tgz1=tgz1-emb;

                 if (pz2==1)

                               if (tgz2==0) {pz2=0; znw=2;tgz2=normal2();} else tgz2=tgz2-emb;

                 if (pz3==1)

                               if (tgz3==0) {pz3=0; znw=3;tgz3=normal3();} 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=expon(); } else tm=tm-emb; break;

                               case 2: if (tm==0) {wz=0;k--; w2++; tm=expon(); } else tm=tm-emb; break;

                               case 3: if (tm==0) {wz=0;k--; tm=expon(); } else tm=tm-emb;

                 }

  }

  printf("\nПроцент вып. заданий, поступ. от 2-гопольз.=%d%",100*w2/500);

  fclose(ravn);

  fclose(norm1);

  fclose(norm2);

  fclose(norm3);

  fclose(exp);

}

еще рефераты
Еще работы по компьютерным наукам