У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


записується звичайно у вигляді

(4)

Експоненційний закон розподілу.

Щільність розподілу:

; ; ; (2 )

(3)

де - параметр розподілу, .

Потрібно знайти формулу для моделювання випадкової величини X за допомогою рівномірно розподіленої випадкової величини .

Знаходимо обернену стосовно F функцію. Маємо :

(4)

Так, як 1-R має той же розподіл, що і R, то зручніше при знаходженні значень випадкової величини X користуватися формулою :

(5)

Випадкове число з експонентним розподілом обчислюється по формулі

Розглянемо, як використовуючи метод оберненої функції, можна змоделювати випадкову величину, розподілену за експоненційним законом. Нехай л=1. Виконаємо апроксимацію експоненційного розподілу лінійними ділянками, щоб можна було використовувати її для моделювання методом оберненої функції. Для апроксимації достатньо 24-х точок.

У разі необхідності моделювання випадкової величини Х, роходіленої за експоненційним розподілом з л?1, яка використовується як затримка у часі (наприклад, для моделювання пуасонівського потоку надходження заявок), виконується наступним чином:

1) генерується значення випадкової величини, розподіленої за експоненційним розподілом з л=1;

2) знаходиться добуток цього значення та математичне сподівання випадкової величини Х; у результаті отримаємо шукану послідовність значень шуканої величини Х.

8.Блок-схеми

Загальна блок-схема програми.

Блок-схема потоку обслуговування.

Блок-схема гнератора випадкових чисел.

Генератор випадкових чисел з експоненційним законом розподілу(в програмі використовується з попередньо згенерованим рівномірно розподіленим випадковим числом) .

Де: r – генерується на попередньому генераторі.

9.Технічні характеристики

1. Intel – сумісний процесор з тактовою частотою >50 Мгц

2. IBM – сумісний монітор

3. IBM-сумісний відео адаптер

4. Операційна система Windows 95 і вище.

5. Пакет розробки програмного забезпечення Microsoft Visual Studio 6.0

6. 64 Мb RAM

7.IBM-сумісна клавіатура

10. Результати моделювання

Дослід 1.

Середня довжина черги клієнтів типу 1: 954

Середня довжина черги клієнтів типу 2: 513

Загальна середня довжина черги: 733

Середній час очікування заявок типу 1: 8,475 сек.

Середній час очікування заявок типу 2: -

Загальний середній час очікування: -

Дослід 2.

Середня довжина черги клієнтів типу 1: 952

Середня довжина черги клієнтів типу 2: 509

Загальна середня довжина черги: 730

Середній час очікування заявок типу 1: 8,615 сек.

Середній час очікування заявок типу 2: -

Загальний середній час очікування: -

Дослід 3.

Середня довжина черги клієнтів типу 1: 954

Середня довжина черги клієнтів типу 2: 504

Загальна середня довжина черги: 729

Середній час очікування заявок типу 1: 8,987 сек.

Середній час очікування заявок типу 2: -

Загальний середній час очікування: -

Дослід 4.

Середня довжина черги клієнтів типу 1: 957

Середня довжина черги клієнтів типу 2: 510

Загальна середня довжина черги: 733

Середній час очікування заявок типу 1: 8,991 сек.

Середній час очікування заявок типу 2: -

Загальний середній час очікування: -

Дослід 5.

Середня довжина черги клієнтів типу 1: 958

Середня довжина черги клієнтів типу 2: 509

Загальна середня довжина черги: 733

Середній час очікування заявок типу 1: 9,049 сек.

Середній час очікування заявок типу 2: -

Загальний середній час очікування: -

11.Висновки

Після проведення експериментів можна зробити такі висновки:

Система працює стабільно, але не ефективно. Дуже швидко зростає довжина черги, це пов”язане із тим, що система не справляється із поступаючим потоком заявок. Існує також проблема того, що клієнти типу 2 взагалі не обслуговуються. Ймовірність простою системи рівна нулю, оскільли заявки надходять на багато швидше ніж система може їх опрацювати.

Отже, можна дати такі рекомендації щодо покращення системи:

Зменшення часу обслуговування (особливо клієнтів типу 1).

Збільшення періоду між надходженням заявок (особливо клієнтів типу 1).

Введення в систему додаткового обслуговуючого пристрою.

Особисто на мій погляд, найкращим є третій варйант. Він дає можливість розвантажити систему, але без зменшення її продуктивності.

Список використаної літератури

Саати Т. Л. Элементы теории обслуживания. М.: Советское радио , 1971.

Гнеденко Б. В., Коваленко И. Н. Введение в теорию массового обслуживания , 2-е изд. М.:Наука , 1987.

Советов Б.Я., Яковлев С.А. “Моделирование систем” Учебник для ВУЗов- М.: Высшая школа , 1985.

Рябов В.Ф.,Советов Б.Я.Яковлев С.А. Машинное моделирование при проектировании больших систем .Л., 1978

Сочнев А.В.,Яковлев С.А. Методические указания к выполнению курсовой работы по дисциплине “Моделирование систем” Л.,1986.

Якимов И.М.,Мосунов В.Е.,Яхина З.Т. Имитационное моделирование сложных систем. Казань,1984.

Ивахненко А.Г.,Юрачковский Ю.П. Моделирование сложных систем по экспериментальным данным.М., 1987.

Имитационное моделирование в задачах синтеза структуры сложных систем /А.Д.Цвиркун и др.М.,1985.

Додаток 1.

Лістинг програми на мові С++

Файл functions.h

#include <math.h>

#define a 16807

#define m 2147483647;

#define LAMBDAi 2;

double p = (int)GetTickCount();

//генератор нормально розподілених випадкових чисел

double Rand(double p0)

{

double t, x, q;

x = a * p0;

t = x / m;

q = (int)t;

p = x - q * m;

t = p / m

return t;

}

// генератор випадкових чисел, розподілених по експоненційному закону

double Exponent(UINT lambda)

{

double r;

r = Rand(p);

return ( (-1 / lambda) * log(r) );

}

//return -1000 ... +1000

int Generator()

{

double d1;

int res;

static bool b = TRUE;

d1 = Exponent(900000);

res = (int)d1;

if(res<0) res *= -1;

while(res>1000)

{

res = (int)res / 2;

}

if(b) res *= -1;

b = !b;

return res;

}

//////////////////////////////////////////////////////////////////////////////

void IntToStr(char *lpResultBuff, int iDigit)

{

// PARAMETRS:

// lpResult -- buffer, wich will get string

// iDigit -- integer digit, wich will translated to string

wsprintf(lpResultBuff, "%d", iDigit);

return;

}

#define MESSAGE(szText) MessageBox(0, szText, "Kursova", 0);

Файл types.h

typedef struct _CLIENT

{

UINT uIn;

UINT uOut;

UINT uNumber;

} CLIENT;

Файл Kursova.cpp

#include "stdafx.h"

#include <shlwapi.h>

#include <fstream.h>

#include "resource.h"

#include "functions.h"

#include "types.h"

////////// all times in miliseconds

#define CLIENT1_SERVTIME 3000

#define CLIENT2_SERVTIME 2000

#define CLIENT1_COMETIME 1500

#define CLIENT2_COMETIME 3000

#define TIME_RATIO 1 //1 - 1min == 1sec

//0.5 - 1min == 0.5sec

// prototipes ///////////////////////////////////////////////////////////////////////

LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM);

DWORD WINAPI ServerThread(HWND);

DWORD WINAPI Client1Thread(HWND);

DWORD WINAPI Client2Thread(HWND);

VOID CALLBACK TimerProc(HWND, UINT, UINT, DWORD);

void Serving(CLIENT*, UINT, UINT);

/////////////////////////////////////////////////////////////////////////////////////

// global variables /////////////////////////////////////////////////////////////////

char szResults[150];

UINT uWorkingTime = 0;

HANDLE hServerThread, hClient1Thread, hClient2Thread;

DWORD dwServerID, dwTread1ID, dwTread2ID;

HWND hMainWindow;

HANDLE hSemaphore;

UINT uTimerID;

//controls

UINT uTurn1 = 0;

UINT uTurn2 = 0;

UINT uTurn = 0;

//turns

bool bCMOWork = TRUE;

CLIENT Turn1[5000] = {0, 0, 0};

UINT uAmount1 = 0; //кількість

CLIENT Turn2[5000] = {0, 0, 0};

UINT uAmount2 = 0;

// code /////////////////////////////////////////////////////////////////////////////

int APIENTRY WinMain(HINSTANCE hInstance,


Сторінки: 1 2 3 4 5 6