Методы моделирования стохастических процессов. Формализация концептуальной модели. Выбор, описание и проверка программных средств моделирования. Интерпретация моделирующей программы для детерминированного варианта модели и для стохастической системы.
Моделирование в научных исследованиях стало использоваться еще в глубокой древности и постепенно захватывало все новые области научных знаний. В современном мире на помощь пришли компьютерные технологии, а именно компьютерное моделирование, позволяющее создать и увидеть «виртуальные» эксперименты, модели, а также и стохастические процессы. В тоже время не все явления и процессы можно представить с помощью функциональных зависимостей. В таких случаях моделируются и изучаются стохастические связи. В этом случае величине факторного признака может соответствовать несколько значений результативного показателя.Стохастическая система - это система с конечным вектором состояния и значениями входных и выходных сигналов, которые описываются стохастическими дифференциальными уравнениями. Моделирование широко используется, так как значительно облегчает научные исследования и часто оказывается единственным средством познания сложных систем. Математическое моделирование - это моделирование, при котором мы в состоянии заменить систему ее математической моделью и в дальнейшем провести эксперимент с ней, а не с самой системой. Имитационное моделирование - моделирование, при котором система заменяется на ее имитатора, и с ним проводится эксперимент с целью получения информации о системе. Данный анализ дает возможность исследовать проектируемую либо анализируемую систему по технологии операционного исследования, включая такие этапы, как смысловая постановка задачи; разработка концептуальной модели; разработка и программное реализация имитационной модели; проверка адекватности модели и оценка точности результатов моделирования; планирование экспериментов; принятие решений.pz1=1 - идет подготовка задания на сетевой машине 1; pz1=0 - сетевая машина 1 не занята; pz2=1 - идет подготовка задания на сетевой машине 2; pz2=0 - сетевая машина 2 не занята; pz3=1 - идет подготовка задания на сетевой машине 3;В большинстве случаях программы, написанные на языке С можно сравнить по скорости с программами, написанными на языке Ассемблера, но при этом они более наглядны и просты в сопровождении.Детерминированная модель [deterministic model] - аналитическое представление закономерности, операции и т. п., при которых для данной совокупности входных значений на выходе системы может быть получен единственный результат. В программе создадим очередь ocher [50] в ячейках которой мы запоминаем адрес заявки (номер сетевой машины). Вначале программа запрашивает значения параметров системы. Далее в программе идет конструкция switch (nz) устанавливающая соответствующие флажки подготовки задания. В этом блоке программы определяется, не пуста ли очередь, если не пуста, то выполняем задание из очереди, иначе выполняем заявку с сетевой машины.Преобразуем ранее созданную детерминированную модель вычислительной системы в стохастическую модель. Для этого потребуются следующие изменения детерминированной программы: - вставим программный генератор РРПСЧ, который используется для генерации времени между поступлениями заявок от пользователей файл norm-1.dat , имеющий нормальный закон распределения с m=16, D=2 для определения времени подготовки задания на 1-ой сетевой машине. файл norm-2.dat , имеющий нормальный закон распределения с m=17, D=2 для определения времени подготовки задания на 2-ой сетевой машине.Таким образом, усредненные значения выходной характеристики подтверждают данные детерминированной модели т.к. с введением вероятности прихода второго пользователя равной 0.1 в детерминированную модель теоретическое значение процента выполненных заданий поступивших от второго пользователя становится равным 10 % .Стохастическая система - это система с конечным вектором состояния и значениями входных и выходных сигналов, которые описываются стохастическими дифференциальными уравнениями. Моделирование широко применяется, так как значительно облегчает научные исследования и часто оказывается единственным средством познания сложных систем. Имитационное моделирование - моделирование, при котором система заменяется на ее имитатора, и с ним проводится эксперимент с целью получения информации о системе.
План
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
ГЛАВА 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ. КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ
1.1 Выбор метода моделирования стохастических процессов
1.2 Формализация концептуальной модели
1.3 Выбор программных средств моделирования, ее описание и проверка
ГЛАВА 2. ПРАКТИЧЕСКАЯ ЧАСТЬ
2.1 Описание моделирующей программы для детерминированного варианта модели
2.2 Описание моделирующей программы для стохастической системы
2.3 Получение и интерпретация
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ №1
ПРИЛОЖЕНИЕ №2
Вывод
Стохастическая система - это система с конечным вектором состояния и значениями входных и выходных сигналов, которые описываются стохастическими дифференциальными уравнениями. Для решения нелинейных систем используют численные модели
Моделирование широко применяется, так как значительно облегчает научные исследования и часто оказывается единственным средством познания сложных систем. Выделяют математическое и имитационное моделирование.
Для выполнения курсовой работы, мы воспользовались (имитационным) моделированием.
Имитационное моделирование - моделирование, при котором система заменяется на ее имитатора, и с ним проводится эксперимент с целью получения информации о системе.
Метод имитационного моделирования может рассматриваться как своеобразный экспериментальный метод. Отличие от обычного эксперимента заключается в том, что в качестве объекта экспериментирования выступает имитационная модель, реализованная в виде программы на ЭВМ. При таком экспериментировании с моделью (в отличие от «решения» модели при аналитическом, например, моделировании) могут быть применены статистические методы.
Список литературы
1. Б. Страуструп. Язык программирования С 2012.-1136 с.
2. Козелл Е.И. от Си к С 2013.-272 с.
3. Черненький В.М.. Имитационное моделирование. Разработка САПР. № 9. 2013.-110 с.
4. Шрайбер Г.Д. Моделирование на GPSS. 2011.-295 с.
5. Трусов П.В. редактор. Введение в математическое моделирование. 2005.-440 с.
6. Еремин Е.Л., Еремина В.В., Капитонова М.С. Математическое и компьютерное моделирование 2005.-137 с.
7. Замятина О.М. Компьютерное моделирование 2007.-115 с.
8. Ивахненко А.Г. и др. Справочник по типовым программам моделирования 1980.184 с.
9. Кузнецов Д.Ф. - Численное моделирование стохастических дифференциальных уравнений и стохастических интегралов. 1999.-344 с.
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 1;
//появление пользователя 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;
}
//подготовка задания if (pz1==1) if (tgz1==0) {pz1=0; znw=1; tgz1=ztgz1;} else tgz1=tgz1-1;
if (pz2==1) if (tgz2==0) {pz2=0; znw=2; tgz2=ztgz2;} else tgz2=tgz2-1;
if (pz3==1) if (tgz3==0) {pz3=0; znw=3; tgz3=ztgz3;} else tgz3=tgz3-1;
// запрос на выполнение 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ПЕРЕПОЛНЕНИЕ очереди!
"); return 0; } else { ocher[n]=znw; znw=0; n ; }
}
//выполнение задания на ЭВМ switch (wz)
{ case 1: if (tm==0) {wz=0; k-; tm=ztm; } else tm=tm-1; break;
case 2: if (tm==0) {wz=0; k-; w2 ; tm=ztm; } else tm=tm-1; break;
case 3: if (tm==0) {wz=0; k-; tm=ztm; } else tm=tm-1;
}
} printf("\NПРОЦЕНТ вып. заданий, поступ. от 2-го польз.=%d%",100*w2/zk);
getch();
}
Приложение № 2
//стохастическая модель системы
#include
#include
#include
#include
//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()
{ setlocale(LC_ALL, "russian_russia.1251");
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();
tgz2=normal2();
tgz3=normal3();
tm=expon();
tp=10 ravnom();
//----------- моделирующий цикл ----------------------------------- while (k!=0)
{ t=t 1;
//появление пользователя 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-1;
if (pz2==1) if (tgz2==0) {pz2=0; znw=2; tgz2=normal2();} else tgz2=tgz2-1;
if (pz3==1) if (tgz3==0) {pz3=0; znw=3; tgz3=normal3();} else tgz3=tgz3-1;
// запрос на выполнение 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ПЕРЕПОЛНЕНИЕ очереди!
"); return 0; } else { ocher[n]=znw; znw=0; n ; }
}
//выполнение задания на ЭВМ switch (wz)
{ case 1: if (tm==0) {wz=0; k-; tm=expon(); } else tm=tm-1; break;
case 2: if (tm==0) {wz=0; k-; w2 ; tm=expon(); } else tm=tm-1; break;
case 3: if (tm==0) {wz=0; k-; tm=expon(); } else tm=tm-1;
}
} printf("\NПРОЦЕНТ вып. заданий, поступ. от 2-го польз.=%d%",100*w2/500);
fclose(ravn);
fclose(norm1);
fclose(norm2);
fclose(norm3);
fclose(exp);
getch();
}
?aciauaii ia .ru
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы