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;

}


 

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

78478. Клинико-этиологические различия атипичных пневмоний (вызванных микоплазмой, хламидиями или легионеллой). Принципы диагностики и выбора эмпирической антимикробной терапии 88 KB
  Характеристика: передается от человека человеку воздушнокапельным путем; пневмонии часто предшествуют воспаление верхних дыхательных путей; вызывает очаговое или сегментарное воспаление легочной ткани; чаще течение не тяжелое; начало постепенное: субфебрильная температура кашель с небольшим отделяемым вязкой мокроты; кашель становится упорным появляются выраженные симптомы интоксикации миалгии артралгии перикардит и др. Характеристика: пневмонии также часто предшествуют воспаление верхних дыхательных путей; сухой кашель...
78479. Вторичные пневмонии: гипостатическая (застойная), инфарктная, эозинофильная, перифокальная, посттравматическая. Этиопатогенетические, клинико-рентгенологические и лабораторные различи 99.5 KB
  В периферической крови отмечаются минимальные изменения лейкоцитоз выражен мало или отсутствует; Лечение: борьба с гипостазами и ликвидация их является основным профилактическим мероприятием для предотвращения развития гипостатической пневмонии; Инфарктная пневмония – локальный воспалительный процесс в легком развивающийся как следствие эмболии тромбоэмболии сосудов легких в результате осложнения основного заболевания или одного из его проявлений.; банки горчичники компрессы на грудную клетку противопоказаны; в случаях когда...
78480. Синдром плеврального выпота (ПВ). Наиболее частые причины ПВ. Тактика ведения больных с плевральным выпотом. Диагностическое и дифференциально-диагностическое значение исследования плеврального пунктата 124.5 KB
  Синдром плеврального выпота (ПВ) - это синдром, характеризующийся скоплением жидкости (воспалительного/невоспалительного характера) в плевральной полости, являясь чаще всего синдромом и осложнением других заболеваний.
78481. Спонтанный пневмоторакс: основные причины его возникновения, принципы диагностики и лечения. Осложнения пневмоторакса 101.5 KB
  Классификация: Спонтанный возникающий без предшествующего травматического воздействия или других явных причин; Травматический вызванный прямой или опосредованной травмой грудной клетки; Ятрогенный пневмоторакс который возникает как непреднамеренное или неизбежное следствие диагностического или терапевтического вмешательства; Спонтанный пневмоторакс: Первичный идиопатический возникают у ранее здоровых лиц в результате разрыва субплевральных эмфизематозных булл обычно расположенных в верхушечных отделах легкого. Вторичный...
78482. Синдром бронхиальной обструкции (БО). Основные причины развития БО. Функциональные характеристики обратимой и необратимой БО 88.5 KB
  Синдром бронхиальной обструкции БОС – это патологическое состояние связанное с нарушением бронхиальной проходимости и последующим увеличением сопротивления потоку воздуха при вентиляции. Причины механизмы развития БОС: Инфекционный ОРВИ бронхит бронхиолит ХОБЛ пневмония туберкулез; Аллергический бронхиальная астма экзогенный аллергический альвеолит бронхолегочный аспергиллез; Обтурационный инородные тела дыхательных путей; Гемодинамический заболевания сердечно-сосудистой системы с развитием сердечной недостаточности;...
78483. Обратимая бронхиальная обструкция: бронхиальная астма (БА). Критерии постановки диагноза и тактика ведения больных при интермиттирующем и персистирующем течении БА 132 KB
  Бронхиальная астма (БА) - хроническое персистирующее воспаление бронхиального дерева с преобладающей ролью эозинофилов и тучных клеток, ведущее к гиперреактивности бронхов с их транзиторным спазмом, отеком слизистой оболочки, гиперсекрецией вязкой мокроты, обструктивными нарушениями
78484. Необратимая бронхиальная обструкция: хроническая обструктивная болезнь легких (ХОБЛ). Основные причины развития ХОБЛ. Критерии постановки диагноза с учетом фенотипических различий ХОБЛ 124.5 KB
  Основные причины развития ХОБЛ. Критерии постановки диагноза с учетом фенотипических различий ХОБЛ синего и розового типа. Хроническая обструктивная болезнь легких ХОБЛ это собирательное понятие объединяющее хронические воспалительные заболевания респираторной системы с преимущественным поражением дистальных отделов дыхательных путей с необратимой или частично обратимой бронхиальной обструкцией которые характеризуются постоянным прогрессированием и нарастающей хронической ДН.
78485. Игра в обучении детей младшего дошкольного возраста 43.04 KB
  Игра в обучении детей младшего дошкольного возраста Отечественные учёные рассматривают игру как своеобразную форму деятельности детей дошкольного возраста. Игра занимает важное место в педагогическом процессе ДОУ и как одна из форм организации жизни детей может определять и развивать другие виды их деятельности обучение труд. Гипотеза исследования: дидактические игры и игровые упражнения повышают уровень эффективности процесса формирования словаря детей 34 лет. Совместные самостоятельные игры детей создают условия для...
78486. Педагогические условия организации сюжетно-ролевой игры в старшей возрастной группе ДОУ 42.49 KB
  Педагог учит их осуществлять игровые действия с предметами строить ролевые взаимоотношения развивать сюжетную линию игры. На современном этапе данная проблема широко рассматривается на страницах периодической печати где авторы раскрывают педагогические условия формирования сюжетноролевой игры у дошкольников. сама по себе игра и ребенок без...