51124

Моделирование непрерывно-стохастической системы массового обслуживания

Лабораторная работа

Информатика, кибернетика и программирование

На вход n-канальной СМО с отказами поступает поток заявок с интенсивностью l = 6 заявок в час. Среднее время обслуживания одной заявки 0.8 часа. Каждая обслуженная заявка приносит доход 4у.е. Содержание одного канала обходится 2 у.е./час. Определить экономически целесообразное количество каналов.

Русский

2014-02-06

106.86 KB

3 чел.

Министерство образования Республики Беларусь

Учреждение образования

«Белорусский государственный университет

информатики и радиоэлектроники»

Кафедра программного обеспечения

информационных технологий

ОТЧЕТ

по лабораторной работе №4

“ Моделирование непрерывно-стохастической системы массового обслуживания ”

Выполнил:         Проверила:

студент гр. 750503       Костюк Елена

Макаревич Владимир

Минск 2009


Задание

7)  На  вход n-канальной  СМО  с  отказами  поступает  поток  заявок  с

интенсивностью l = 6  заявок  в  час.  Среднее  время  обслуживания  одной

заявки 0.8  часа.  Каждая  обслуженная  заявка  приносит  доход 4у.е.

Содержание одного канала обходится 2 у.е./час. Определить экономически

целесообразное количество каналов.

Теоретическое моделирование

#include <conio.h>

#include <stdio.h>

double fact(long n)

{

 if ( n==0 ) return 1.0;

 else return n * fact(n-1);

}

double extent(double x, int n)

{

 if ( n==0 ) return 1.0;

 return x * extent(x, n-1);

}

//--------------------------------

double S(int n, double w)

{

 if ( n==0 ) return 1.0;

 return S(n-1,w) + extent(w, n) / fact(n);

}

double P0(int n, double w)

{

 double s = S(n, w);

 return 1 / s;

}

int main()

{

 double w, h = 6.0, u = 1 / 0.8, c = 4.0, d = 2.0, Pk, p, profit, max_p = 0;

 int max_ch;

w = h/u;

printf("Chanels | Profit\n");

printf("========|========\n");

 for (int k=0; k<16; k++)

{

 p = P0(k, w);

 Pk = p * extent(w, k) / fact(k);

 profit = h * (1-Pk) * c - k * d;

 if ( max_p<profit ) max_p = profit, max_ch = k;

 printf(" %6d | %2.3f -> %f\n", k, profit, Pk);

}

printf(" ----------------\n");

printf(" %6d | %2.3f  <- Optimal\n", max_ch, max_p);

 return _getch();

}

Практическое моделирование

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

double RandExp(double h)

{

 double R = (double)rand()/RAND_MAX;

 return -log(1-R) / h;

}

class Channel

{

private: bool busy;

public: Channel()

 { busy = false; }

public: bool Busy()

 { return busy; }

public: bool Empty()

 { return !busy; }

public: void Occupy()

 { busy = true; }

public: void Liberate()

 { busy = false; }

};

class System

{

private: Channel **channel;

private: int n, state;

private: System() {}

public: System(int N)

 {

  state = 0;

  n = N;

  channel = new Channel*[n];

  for(int i=0; i<n; i++)

   channel[i] = new Channel();

 }

public: int State()

 { return state; }

public: bool InRequest()

 {

  for(int i=0; i<n; i++)

  {

   if ( channel[i]->Empty() )

   {

    channel[i]->Occupy();

    state++;

    return true;

   }

  }

  return false;

 }

public: bool OutRequest()

 {

  for(int i=0; i<n; i++)

  {

   if ( channel[i]->Busy() )

   {

    state--;

    channel[i]->Liberate();

    return true;

   }

  }

  return false;

 }

};

int main()

{

 double w, h = 6.0, u = 1 / 0.8, c = 4.0, d = 2.0, profit;

 double t1 = RandExp(h), t2 = RandExp(u), eps = 0.1;

 long k, N = 6, TotalTime = 1000000;

System *sys = new System(N);

k = N+1;

 double *P = new double[k];

 for(int i=0; i<k; i++) P[i] = 0;

 for(int i=0; i<TotalTime; i++)

{

 if( t1<=0 )

 {

  t1 = RandExp(h);

  sys->InRequest();

 }

 if( t2<=0 )

 {

  t2 = RandExp(u);

  sys->OutRequest();

 }

 t1-=eps, t2-=eps;

 P[sys->State()]++;

}

 for(int i=0; i<k; i++) P[i] = P[i] / TotalTime;

 for(int i=0; i<k; i++)

{

 printf("P[%d] = %2.8f\n", i, P[i]);

}

profit = h * (1-P[N]) * c - N * d;

printf("\n %6d | %2.8f\n", N, profit);

 return _getch();

}


 

А также другие работы, которые могут Вас заинтересовать

22609. Логічне проектування баз даних 77 KB
  A6 Атрибути А1 і А3 не входять у структуру функціональної залежності. Визначення функціональної повної залежності: М2 функціонально повно залежить від М1 якщо R.M1 Зобразимо це графічно: Реляція знаходиться в 3 НФП якщо вона в 2 НФП і не має транзитивної залежності атрибутів відносно кожного квазіключа. Реляція в 3 НФП якщо вона не має має транзитивної залежності атрибутів відносно кожного квазіключа.
22610. Вимірювання електрорушійної сили ( ЕРС ) та напруг компенсаційним методом 54 KB
  Ознайомитись з компенсаційним методом вимірювання ЕРС та напруг. Компенсаційний метод вимірювання. Цей недолік усувається якщо вимірювання здійснювати методом порівняння з мірою коли невідома величина порівнюється з мірою а на шкалі відтворюються лише відносні значення.
22611. ВИЗНАЧЕННЯ ПИТОМОГО ОПОРУ ПРОВІДНИКА 37.5 KB
  Змінюючи струм від мінімального до максимального значень зніміть вольтамперну характеристику опору провідника. Визначте абсолютну похибку  будьякого окремо взятого вимірювання за формулою середнього квадратичного відхилення питомого опору S та порівняйте її з похибкою визначеною за методом НК. Дайте відповідь на запитання: Чи підвищується точність визначення питомого опору при багаторазових вимірюваннях 6.
22612. ОСЦИЛОГРАФ. Включення осцилографа 41.5 KB
  Включення осцилографа. Дочекайтесь появлення на екрані осцилографа лінії розгортки або електронної плямияка створюється електронним променем. Якщо на екрані осцилографа нема нічого установіть тумблер РАЗВЕР. Калібровка осцилографа.
22613. Вивчення коливань фізичного маятника 210.5 KB
  Вивчення коливань фізичного маятника. Експериментальне вивчення коливального руху маятникастержня у гравітаційному полі Землі. Маятникстержень макетна установка для здійснення коливального руху маятника та вимірювання періоду його коливань. У випадку фізичного маятника мал.
22614. Визначення густини твердого тіла. Особливі методи зважування 93.5 KB
  Конструкція аналітичних терезів. Коромисло головний елемент терезів це рівноплечий важіль з опорною призмою посередині та шальками терезів 2 на кінцях. Точність терезів у значній мірі залежить від якості опор коромисла тому що тертя між призмою та опорною площиною впливає на результати вимірювань. З метою зменшення тертя шальки терезів на кінцях коромисла навішують через системи вантажепід\'ємних призм та подушок.
22615. Методичні вказівки до роботи з комп'ютерними програмами обрахунку даних лабораторних робіт з механіки та вимірювального циклу 414.5 KB
  Значна кількість студентів має ускладнення з застосуванням методу найменших квадратів частинного диференціювання при обробці непрямих вимірюваньз вибором та застосуванням відповідної методики визначення похибок вимірювання. У роботі треба зробити прямі ввимірювання маси та лінійних розмірів тіл правильної геометричної форми і обрахувати густину речовиниз якої зроблене тіло. Вона зкомпонована з програми безпосередніх обчислень та програми Обробка прямих вимірювань яка використовується для обробки результатів спостереженьпов'язаних з...
22616. ВИВЧЕННЯ ПРУЖНОГО УДАРУ ДВОХ КУЛЬ 23.5 KB
  Користуючись методом найменших квадратів МНК визначити модуль пружності сталі E модуль Юнга. Дати оцінку похибки визначення модуля Юнга E за методом НК. Дати оцінку E для одного окремо взятого вимірювання вивести формулу середнього квадратичного відхилення модуля Юнга SЕ . Модуль Юнга сталі E = 20  1010 Н м2 .
22617. Вивчення коливань струни 63 KB
  Якщо у iдеально гнучкої однорiдної струни що має нескiнчену довжину i знаходиться у станi рiвноваги вiдтягнути маленьку дiлянку та потiм вiдпустити її то виникає збурення яке пересувається вздовж струни у двох протилежних напрямках утворюючи двi бiжучi поперечнi хвилi. Якщо довжина струни скiнчена то бiжучi хвилi вiдбиваються вiд її кiнцiв. Фази та амплiтуди вiдбитих хвиль залежатимуть при цьому вiд положення та засобу закрiплення кiнцiв струни.