50343

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

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

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

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

Русский

2014-01-21

158.5 KB

1 чел.

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

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

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра программного обеспечения информационных технологий

Отчёт

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

на тему:

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

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

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

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

Потоня В.Л.

Цыбулько С.И.

Минск 2006

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

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

                                                                       

                            

                          

                                                      …..

 

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

= 7, = 1, n = 8.

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

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

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

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


где,

 

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

 p = =  

 p = 0.000062

Вычислим:

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

 

 

2)Абсолютную пропускную способность 

При моделировании были получены следующие значения относительной и абсолютной пропускной способности:

Вывод.

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

Листинг программы:

// 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;

}


 

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

37228. Практика и перспективы использования технических средств в учреждении культуры 40.5 KB
  Кроме финансовой затратности изготовления жестких декораций имеется и несколько отрицательных художественнопостановочных моментов их применения. Смена жестких декораций не всегда возможна в течение концерта или спектакля по техническим и экономическим причинам. Проекционные декорации создаваемые позволяют радикальным образом решить все проблемы связанные с использованием жестких декораций следующим образом. Проецируемый слайд точно вписывается в подвешенный экран без геометрических искажений создавая полную иллюзию реальности создаваемых...
37229. Электромузыкальные инструменты 69 KB
  Электромузыкальные инструменты Принцип действия Виды электромузыкальных инструментов Потребительские свойства электромузыкальных инструментов Хранение инструментов Заключение Введение Эмоциональный мир человека невозможно представить без музыки. А термин электрический музыкальный инструмент используется для обозначения инструментов звук которых воспроизводится механически и усиливается или изменяется с помощью электроники. Появлению электромузыкальных инструментов ЭМИ предшествовали инструменты построенные на...
37230. Фотоаппаратура в СКД 106 KB
  Фотоаппаратура в СКД История фотоаппаратуры Виды фотоаппаратов Основные детали фотоаппаратов Современная фотоаппаратура Управление современной фотоаппаратурой Режимы фотоаппаратов Заключение Введение Постоянный обмен информацией короткое время производства экономия финансов польза для окружающей среды вот только несколько причин которые объясняют гигантский рост интереса к фотоаппаратам . Фотоаппарат устройство для получения и фиксации неподвижных изображений материальных объектов при помощи света. Фотоаппарат фотокамера...
37231. Разработка художественно-технических приемов обеспечения проведения социально-культурного мероприятия техническими средствами СКД на основе сценарного плана социально-культурного мероприятия 141.5 KB
  Проведение школьной дискотеки 1.Интерьер помещения для дискотеки 1.Световое оборудование Заключение Введение В большинстве случаев к сожалению дискотеки в школах получают неудовлетворительную оценку. Раньше для успеха дискотеки достаточно было использовать кассету с зарубежными хитами а в качестве освещения использовать 4 фонаря и зеркальный шар.
37232. Техническое обеспечение социально-культурных мероприятий 87 KB
  Функции технических средств на каждом этапе подготовки мероприятия Технические средства и монтаж Заключение Введение В настоящее время всё больше актуализируется вопрос технического оснащения социальнокультурных мероприятий. При этом технические средства могут выступать не только в качестве оснащения социальнокультурной программы мероприятия но и содействовать при разработке этой программы от начального до завершающего этапа облегчать работу режиссёру творческой и технической группе. Если художественное оформление...
37233. Средства пожарной безопасности клубных помещений 75.5 KB
  Основные первичные средства пожаротушения: Огнетушители. Огнетушители предназначаются для тушения очагов горения в начальной их стадии а также для противопожарной защиты небольших сооружений машин и механизмов. Огнетушители бывают переносные и передвижные. Огнетушители с большим объемом заряда с массой не менее 20 но не более 400 кг; могут иметь одну или несколько емкостей с огнетушащим веществом относятся к передвижным их корпуса устанавливаются на специальные тележки.
37234. Разработка плана (схемы) технического оснащения учреждения культуры системой озвучивания 110 KB
  Важнейшей характеристикой колебаний звука является частота число показывающее сколько полных колебаний в секунду совершает например маятник часов струна и т. Система озвучивания зала в учреждении культуры представляет собой усилительную систему применяемую в случаях если звуковая мощность источника звука оратора актеров оркестра недостаточна для обеспечения нормальной слышимости на сравнительно большой зоне расположения слушателей или когда в этой зоне имеются значительные шумы или если у помещения плохие акустические свойства....
37235. Система озвучивания социально-культурных мероприятий 146.5 KB
  Система озвучивания социальнокультурных мероприятий 1. Система озвучивания На протяжении столетий в концертных залах театрах лекционных залах церквах и др. Все это вызвало существенные изменения в требованиях к акустическим параметрам современных больших залов многоцелевого назначения и привело к широкому использованию в них систем озвучивания и звукоусиления. Системой озвучивания называется комплекс электроакустических устройств состоящий из излучателей микрофонов усилителей различных корректоров и др.
37236. Теле и видео аппаратура в СКД 94 KB
  Сейчас весь мир пользуется множеством различных устройств, в разных сферах индустрии. Прогресс не стоит на месте, каждый год, месяц появляются различные устройства. Одними из таких устройств являются устройства теле и видео, которые в свою очередь считаются одними из популярных устройств