51311

Построение аналитической и имитационной моделей системы массового обслуживания

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

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

Если в свободную систему поступает заявка, то ее обслуживают совместно все каналы. Если во время обслуживания заявки поступает еще одна, то часть каналов переключается на её обслуживание и так далее, пока все каналы не окажутся занятыми. Интенсивность совместного обслуживания заявки n каналами n. Каналы распределяются равномерно между заявками.

Русский

2014-02-09

120 KB

3 чел.

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

Учреждение образования «Белорусский государственный университет

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

Кафедра ПОИТ

Отчёт по лабораторной работе №3

на тему

«Построение аналитической и имитационной моделей

системы массового обслуживания»

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

Студент группы 550502                                                                     Алексеев И.Г.

Есько Д.В.

Минск, 2008

Условие задачи

Многоканальная СМО со “взаимопомощью”

                                                                       

                            

                          

                                                      …..

 

Если в свободную систему поступает заявка, то ее обслуживают совместно все каналы. Если во время обслуживания заявки поступает еще одна, то часть каналов переключается на её обслуживание и так далее, пока все каналы не окажутся занятыми.  Интенсивность совместного обслуживания заявки n каналами n. Каналы распределяются равномерно между заявками. На вход поступает простейший поток заявок с интенсивностью . Время обслуживания – показательное с параметром .

= 7, = 1, n = 8.

Найти абсолютную и относительную пропускную способность системы

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

Диаграмма интенсивностей переходов выглядит следующим образом:

Составим по диаграмме переходов систему уравнений:


где,

 

Решая систему получим:

 p = =  

 p = 0.000062

Вычислим:

  1.  Относительную пропускную способность

 

 

 

  1.  Абсолютную пропускную способность

Результаты работы программы.

Текст программы.

// model3Dlg.cpp : implementation file

//

#include "stdafx.h"

#include <math.h>

#include "model3.h"

#include "model3Dlg.h"

#include ".\model3dlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

#define MUL 1

#define MUL_MY 10

DWORD WINAPI ThAdding(void *arg);

DWORD WINAPI ThDeleting(void *arg);

CQueue::~CQueue()                   //Удаление очереди

{

if (!first) return;

sItem *si=first;

while (si->next)

{

 first=si;

 si=si->next;

 delete first;

}

delete si;

}

void CQueue::Add(double n)                          //Добавление элемента в очередь

{ sItem *si=new sItem;

si->time=n;                                                 //Сохраняем время

if (!first) si->next=NULL;                    

else  si->next=first;

m_Len++;                                   //Увеличиваем длину очереди

m_All++;                                    //Наращиваем общее количество элементов

 m_Mx=(m_Mx*((double)m_All-1.)+m_Len)/(double)m_All;

first=si;

}

int CQueue::DelAll()                       //Удаление всех элементов из очереди

{

if (!first) return -1;

int res=0;

while (Del()>=0) res++;

return res;

}

double CQueue::Del()                    //Функция удаления

{ if (!first)  return -1;

// if (!m_isFIFO)

//  return DelSmallest();

double res;

if (!(first->next))

{ res=first->time;

 delete first;

 first=NULL;

 m_Len--;

 return res;

}

sItem *si=first;

while (si->next->next)

 si=si->next;

res=si->next->time;

delete si->next;

si->next=NULL;

m_Len--;

return res;

}

double CQueue::DelSmallest()                    //Удаление, если истекло время

{ double res;                                               пребывания в очереди

 if (!(first->next))

{ res=first->time;

 delete first;

 first=NULL;

 m_Len--;

 return res;

}

sItem *si=first, *si2=first;

while (si->next)

{

 if (si->next->time<si2->time)

  si2=si;

 si=si->next;

}

if (si2==first && si2->next->time > si2->time)

{

 res=si2->time;

 first=si2->next;

 delete si2;

 m_Len--;

 return res;

}

si=si2->next;

si2->next=si2->next->next;

res=si->time;

delete si;

m_Len--;

return res;

}

// Cmodel3Dlg dialog

Cmodel3Dlg::Cmodel3Dlg(CWnd* pParent /*=NULL*/)

: CDialog(Cmodel3Dlg::IDD, pParent)

, m_L(0)

, m_M(0)

, m_A(0)

, m_Var1(0)

, m_Var2(0)

, m_Var3(0)

, m_Var4(0)

, m_Var6(0)

, m_Var5(0)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void Cmodel3Dlg::DoDataExchange(CDataExchange* pDX)     //Изменение

{ CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_EDIT_L, m_L);

DDX_Text(pDX, IDC_EDIT_M, m_M);

DDX_Text(pDX, IDC_EDIT_A, m_A);

DDX_Text(pDX, IDC_STATIC_1, m_Var1);

DDX_Text(pDX, IDC_STATIC_2, m_Var2);

DDX_Text(pDX, IDC_STATIC_3, m_Var3);

DDX_Text(pDX, IDC_STATIC_4, m_Var4);

DDX_Text(pDX, IDC_STATIC_6, m_Var6);

DDX_Text(pDX, IDC_STATIC_5, m_Var5);

}

BEGIN_MESSAGE_MAP(Cmodel3Dlg, CDialog)                  //Сообщение

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_TIMER()

ON_WM_QUERYDRAGICON()

//}}AFX_MSG_MAP

ON_BN_CLICKED(IDC_BTN_START, OnBnClickedBtnStart)

ON_BN_CLICKED(IDC_BTN_STOP, OnBnClickedBtnStop)

ON_BN_CLICKED(IDOK, OnBnClickedOk)

END_MESSAGE_MAP()

// Cmodel3Dlg message handlers

BOOL Cmodel3Dlg::OnInitDialog()

{ CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

 CString strAboutMenu;

 strAboutMenu.LoadString(IDS_ABOUTBOX);

 if (!strAboutMenu.IsEmpty())

 {

  pSysMenu->AppendMenu(MF_SEPARATOR);

  pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

 }

}

// Set the icon for this dialog.  The framework does this automatically

//  when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE);   // Set big icon

SetIcon(m_hIcon, FALSE);  // Set small icon

// TODO: Add extra initialization here

m_tmp=0;

m_tmp2=0;

m_AllTime=0;

m_mtx=CreateMutex(NULL, FALSE, "MTXADDDEL");

m_Rand.SetParam(34875672, 345869201, 14985731);

m_L=7;

m_M=1;

m_A=8;

UpdateData(FALSE);

CheckRadioButton(1008, 1009, 1008);

CheckRadioButton(1010, 1011, 1010);

return TRUE;  // return TRUE  unless you set the focus to a control

}

void Cmodel3Dlg::OnSysCommand(UINT nID, LPARAM lParam)             //Ответ

{                                                                                            на системную команду

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

 CAboutDlg dlgAbout;

 dlgAbout.DoModal();

}

else

{

 CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

//  to draw the icon.  For MFC applications using the document/view model,

//  this is automatically done for you by the framework.

void Cmodel3Dlg::OnPaint()

{

if (IsIconic())

{

 CPaintDC dc(this); // device context for painting

 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

 // Center icon in client rectangle

 int cxIcon = GetSystemMetrics(SM_CXICON);

 int cyIcon = GetSystemMetrics(SM_CYICON);

 CRect rect;

 GetClientRect(&rect);

 int x = (rect.Width() - cxIcon + 1) / 2;

 int y = (rect.Height() - cyIcon + 1) / 2;

 // Draw the icon

 dc.DrawIcon(x, y, m_hIcon);

}

else

{

 CDialog::OnPaint();

}

}

// The system calls this function to obtain the cursor to display while the user drags

//  the minimized window.

HCURSOR Cmodel3Dlg::OnQueryDragIcon()

{

return static_cast<HCURSOR>(m_hIcon);

}

void Cmodel3Dlg::OnTimer(UINT_PTR nIDEvent)              //Ответ на сообщение

{ m_Var4=m_Q.m_Len;                                                        таймера

 m_Var5=m_tmp;

m_Var6=m_Q.m_All;

m_Var1=m_Q.m_Mx;

m_Var2=m_tmp/(double)m_AllTime;

// m_Var3=m_Q.m_Mx/m_L+1./m_M;

if (m_tmp2)

{

// AfxMessageBox(_T("H"));

 m_Var3=(double)m_Q.m_All/(double)(m_tmp2+m_Q.m_All);

}

UpdateData(FALSE);

CDialog::OnTimer(nIDEvent);

}

void Cmodel3Dlg::OnBnClickedBtnStart()                               //Нажатие кнопки

{                                                                                                  Старт

// TODO: Add your control notification handler code here

UpdateData(TRUE);

m_hA=CreateThread(NULL, 0, ThAdding, this, NULL, &m_TAID);

// SleepMy(1000);

m_hD=CreateThread(NULL, 0, ThDeleting, this, NULL, &m_TDID);

SetTimer(1, 100, NULL);

}

int m_Access=0;

DWORD WINAPI ThDeleting(void *arg)

{

Cmodel3Dlg *dlg=(Cmodel3Dlg *)arg;

CQueue *q=&(dlg->m_Q);

// double t;

HANDLE mtx=OpenMutex(MUTEX_ALL_ACCESS , FALSE, "MTXADDDEL");

if (!mtx)

 return 0;

int N;

CString str;

while (1)

{

 do

 {

  

//  while (m_Access)

//   SleepMy(1);

//  m_Access=1;

 // MessageBox(GetTopWindow(NULL), _T("LL"), NULL, MB_OK);

  WaitForSingleObject(mtx, INFINITE);

  N=q->DelAll();

  ReleaseMutex(mtx);

 // str.Format(_T("%lf"), t);

 // MessageBox(GetTopWindow(NULL), str, NULL, MB_OK);

//  m_Access=0;

 } while (N<0);

// AfxMessageBox(_T("H"));

 dlg->m_tmp++;

 CString str;

 str.Format("%lf", (double)N,((double)MUL*(-log((double)dlg->m_Rand)/dlg->m_M)));

// AfxMessageBox(str);

 dlg->SleepMy(((double)MUL*(-log((double)dlg->m_Rand)/dlg->m_M/N)));

 }

return 0;

}

DWORD WINAPI ThAdding(void *arg)

{

Cmodel3Dlg *dlg=(Cmodel3Dlg *)arg;

CQueue *q=&(dlg->m_Q);

// int choice=dlg->m_isPokaz?0:1;

double d;

HANDLE mtx=OpenMutex(MUTEX_ALL_ACCESS , FALSE, "MTXADDDEL");

 if (!mtx)

 return 0;

 while (1)

{

 d=-log((double)dlg->m_Rand)/dlg->m_L;

 dlg->m_AllTime+=d;

 dlg->SleepMy(d);

//  while (m_Access)

//    SleepMy(1);

//  m_Access=1;

 WaitForSingleObject(mtx, INFINITE);  

 if (q->m_Len<8) q->Add(0);

 else  dlg->m_tmp2++;

 ReleaseMutex(mtx);

//  AfxMessageBox(_T("D"));

// m_Access=0;

//  SleepMy(10);

}

return 0;

}

void Cmodel3Dlg::OnBnClickedBtnStop()

{ // TODO: Add your control notification handler code here

 KillTimer(1);

 TerminateThread(m_hA, 0);

TerminateThread(m_hD, 0);

}

void Cmodel3Dlg::OnBnClickedOk()

{ // TODO: Add your control notification handler code here

 OnBnClickedBtnStop();

OnOK();

}

void Cmodel3Dlg::SleepMy(double delay)

{ delay*=MUL_MY;

for (ULONG i=0; i<delay; i++) Sleep(1);

}

// model3.cpp : Defines the class behaviors for the application.

//

#include "stdafx.h"

#include "model3.h"

#include "model3Dlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// Cmodel3App

BEGIN_MESSAGE_MAP(Cmodel3App, CWinApp)

ON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

// Cmodel3App construction

Cmodel3App::Cmodel3App()

{

// TODO: add construction code here,

// Place all significant initialization in InitInstance

}

// The one and only Cmodel3App object

Cmodel3App theApp;

// Cmodel3App initialization

BOOL Cmodel3App::InitInstance()

{

// InitCommonControls() is required on Windows XP if an application

// manifest specifies use of ComCtl32.dll version 6 or later to enable

// visual styles.  Otherwise, any window creation will fail.

InitCommonControls();

CWinApp::InitInstance();

AfxEnableControlContainer();

// Standard initialization

// If you are not using these features and wish to reduce the size

// of your final executable, you should remove from the following

// the specific initialization routines you do not need

// Change the registry key under which our settings are stored

// TODO: You should modify this string to be something appropriate

// such as the name of your company or organization

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

Cmodel3Dlg dlg;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

 // TODO: Place code here to handle when the dialog is

 //  dismissed with OK

}

else if (nResponse == IDCANCEL)

{

 // TODO: Place code here to handle when the dialog is

 //  dismissed with Cancel

}

// Since the dialog has been closed, return FALSE so that we exit the

//  application, rather than start the application's message pump.

 return FALSE;

}

Выводы.

Значения A, Q зависят от числа пришедших заявок (величины модельного времени), а также от R0, при генерации случайных чисел, распределенных по экспоненциальному закону.

EMBED Equation.3  


 

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

46164. Противоэрозионная организация территории АО «Маяк» бригада III 156 KB
  Составление карты категорий эрозионноопасных земель. К факторам рельефа относятся: наличие пересеченного рельефа склоновых земель. Система противоэрозионной организации территории включает прогнозирование планирование и проектирование эрозионноопасных и эродированных земель определяет организационнохозяйственные технические действия по осуществлению противоэрозионных мероприятий на ближайшие годы. В этих документах особым образом выделяются не только...
46165. ПСИХОЛОГО-ПЕДАГОГИЧЕСКИЕ ПРОБЛЕМЫ ЛИЧНОСТИ 748 KB
  Развитие личности ребенка в учебно-воспитательном процессе развитие его индивидуальных особенностей внутри каждого возрастного периода потребностей и интересов склонностей и способностей самооценки и самосознания установок жизненных и ценностных ориентаций задача чрезвычайно сложная имеющая как теоретический прикладной так и практический характер. Поскольку физическое и психологическое развитие явление 1 природы и общественной жизни им...
46166. ОТЧЕТ по производственной практике по информационным технологиям на ООО «Ромашка» 154.5 KB
  Общая технико-экономическая характеристика предприятия Общая технико-экономическая характеристика предприятия Название предприятия: ООО Ромашка зарегистрированное ИФНС №33 РФ Свидетельство о регистрации от 7 августа 2003г. Для предприятия понятие материально-технической базы учитывает состояние компонентов: наличие и приспособленность производственных площадей возраст парка оборудования соответствие наличных материальных ресурсов производственной программе. За это время организационная структура предприятия категорично не изменялась.
46167. Товароведение непродовольственных товаров 37.82 KB
  Режим хранения это совокупность климатических и санитарно гигиенических требований обеспечивающих сохраняемость товаров. При небрежном обращении несоблюдении сроков и условий транспортировки хранения и реализации состав и качество продовольственных товаров ухудшаются. При хранении продовольственных товаров протекают физические химические биохимические и биологические процессы.
46168. Методы социально-экономического прогнозирования 1.71 MB
  Прогноз относительно будущей цены бензина не однозначен что связано с особенностями изначальных данных и разработанных моделей. Предварительная обработка данных. Использование данных методов для построения моделей описывающих изменение цен на бензин. Описание используемого математического аппарата при проведении расчетов Регрессионный анализ Регрессионный анализ метод моделирования измеряемых данных и исследования их свойств.
46169. Механизм оценки и регулирования риска кредитного портфеля банка 884 KB
  МАГИСТЕРСКАЯ РАБОТА на тему: Механизм оценки и РЕГУЛИРОВАНИя РИСКА кредитного портфеля банка Специальность Финансы 8.3 Раздел 1 Концептуальный подход к оценке и регулированию риска кредитного портфеля банка6 1.1 Особенности оценки и регулирования совокупного кредитного риска банка.2 Методологические основы оценки и регулирования кредитного портфельного...
46170. Розробка багатоконтурної системи регулювання дифузійної установки на базі контролера Реміконт-130 443.5 KB
  Вибір і обгрунтування критерію управління Для оцінки працездатності автоматичних систем керування використовуються різні показники але загальними вимогами є : стійкість – це необхідна але не достатня умова для автоматичних систем регулювання це означає збіжність перехідних процесів тобто обмежений час їх тривалості; якість – що характеризується якістю перехідних процесів : відхилення від заданого режиму в статиці та динаміці ступінь затухання і тривалість перехідних процесів; надійність яка доповнюється...
46171. Биография и проблематика конфликта в социологии Макса Вебера 108 KB
  Биография Макса Вебера Творческие периоды3 Работы. Проблематика конфликта в социологии Макса Вебера Проблематика конфликта в социологии политики.18 1 Биография Макса Вебера Макс Вебер родился в 1864 в городе Эрфурт в Германии.
46172. Миграция населения 157 KB
  В настоящей работе мы рассмотрим некоторые аспекты миграционных явлений в России в первую очередь в больших городах. Это привлекает в город студентов не только из других регионов России но и изза рубежа. Давая классификацию миграции в Европе Сергей Рязанцев2 называет следующие виды: Экономическая миграция Этническая миграция Вынужденная миграция Нелегальная миграция Как мы видим России свойственны те же миграционные тенденции. Она грозит накрыть собой крупные города европейской части России прежде считавшиеся мононациональными.