У нас: 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, |