Компьютерное моделирование стохастических процессов - Курсовая работа

бесплатно 0
4.5 99
Методы моделирования стохастических процессов. Формализация концептуальной модели. Выбор, описание и проверка программных средств моделирования. Интерпретация моделирующей программы для детерминированного варианта модели и для стохастической системы.


Аннотация к работе
Моделирование в научных исследованиях стало использоваться еще в глубокой древности и постепенно захватывало все новые области научных знаний. В современном мире на помощь пришли компьютерные технологии, а именно компьютерное моделирование, позволяющее создать и увидеть «виртуальные» эксперименты, модели, а также и стохастические процессы. В тоже время не все явления и процессы можно представить с помощью функциональных зависимостей. В таких случаях моделируются и изучаются стохастические связи. В этом случае величине факторного признака может соответствовать несколько значений результативного показателя.Стохастическая система - это система с конечным вектором состояния и значениями входных и выходных сигналов, которые описываются стохастическими дифференциальными уравнениями. Моделирование широко используется, так как значительно облегчает научные исследования и часто оказывается единственным средством познания сложных систем. Математическое моделирование - это моделирование, при котором мы в состоянии заменить систему ее математической моделью и в дальнейшем провести эксперимент с ней, а не с самой системой. Имитационное моделирование - моделирование, при котором система заменяется на ее имитатора, и с ним проводится эксперимент с целью получения информации о системе. Данный анализ дает возможность исследовать проектируемую либо анализируемую систему по технологии операционного исследования, включая такие этапы, как смысловая постановка задачи; разработка концептуальной модели; разработка и программное реализация имитационной модели; проверка адекватности модели и оценка точности результатов моделирования; планирование экспериментов; принятие решений.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 с.

10. Половников В.А. Финансовая математика: Математическое моделирование.2008.-357с.

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

// ЗАДАНИЕ 1. Детерминированная модель системы.

#include

#include

#include

//const emb=1; //единица машинного времени 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-го пользователя 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
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?