рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Моделирования

Моделирования - раздел Программирование, Формализация концептуальной модели Построение формальной схемы функционирования     Значения Выходных Характеристик, Полученные П...

 

 

Значения выходных характеристик, полученные при прогонках модели с различными случайными воздействиями.

 

 

№ прогона % выполненных заданий, поступ. от 2-го пользователя
9 %
9 %
9 %
9 %
9 %
9 %
9 %
9 %
9 %
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:tpnorm-1.dat');

rewrite(f1);

assign(f3,'d:tpnorm-2.dat');

rewrite(f3);

assign(f4,'d:tpnorm-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:tpexp.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);

}

 

 

– Конец работы –

Эта тема принадлежит разделу:

Формализация концептуальной модели Построение формальной схемы функционирования

На сайте allrefs.net читайте: "Формализация концептуальной модели Построение формальной схемы функционирования"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Моделирования

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Пояснительная записка
к курсовой работе по дисциплине “Моделирование”   Выполнил : студент группы 4301 Базуев Ю.А. Руководитель : доцент кафедры ЭВМ Захаров В.М.

Системы
    Построим формальную схему (Q-схему) заданной вычислительной системы.        

Определение параметров и переменных модели
    tp - интервал между приходами пользователей tgz1 - время подготовки задания 1-ым пользователем tgz2 - время подготовки задания 2-ым пользователем

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

Выбор программных средств моделирования
  Для написания программы мы выбираем язык программирования Borland C++. Этот язык хорошо зарекомендовал себя эффективностью, лаконичностью, стройностью программ. Во многих случаях пр

Проверка достоверности программы
Смоделируем работу системы с параметрами указанными в задании. Протокол работы программы:   Введите интервал между приходами пользователей 100 Введите время

Аппаратный способ
При аппаратном способе случайные или псевдослучайные числа вырабатываются специальной электронной приставкой - генератором, который является внешним устройством ЭВМ либо входит в состав процессора.

Программный способ
При программном способе псевдослучайные числа нам необходимо сформировать методом умножения. Суть метода: выбирается два n - разрядных числа X1 и X2. X1><0, X2><0. Затем X1 умн

Выбор генератора РРПСЧ
Эффективность статистического моделирования и достоверность полученных результатов находятся в прямой зависимости от качества используемых в модели случайных последовательностей. Под качеством здес

Имеющих неравномерное распределение
Для стохастической модели требуются числа распределенные по нормальному закону и по экспоненциальному закону. Напишем функции формирования чисел по требуемому закону распределения. Эти чис

Стохастической модели
    Преобразуем ранее созданную детерминированную модель вычислительной системы в стохастическую модель. Для этого потребуются следующие изменения детерминированной прог

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги