на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


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


             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=Ö-2 ln 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 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

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


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

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

   Значение Х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);

}


Страницы: 1, 2


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.