Исследование системы массового обслуживания методом имитационного моделирования

Автор работы: Пользователь скрыл имя, 15 Января 2015 в 15:57, курсовая работа

Описание работы

Проблема исследования процессов функционирования систем, которые мгновенно изменяют свое состояние под воздействием внешних и внутренних событий, является достаточно актуальной. К таким системам, в частности, относятся экономические системы, системы передачи информации по сетям связи и многие другие. Процесс исследования таких систем начинается с создания математической модели. Если целью исследования являются временные характеристики работы системы, то в качестве математической модели часто выбирается модель в виде системы или сети массового обслуживания.

Содержание работы

Введение 4
1 Разработка математической модели системы 5
1.1 Построение концептуальной модели 5
1.2 Формализация концептуальной модели 7
2 Алгоритмизация и программирование модели 8
2.1 Выбор принципа построения моделирующего алгоритма 8
2.2 Разработка моделирующего алгоритма 8
2.3 Руководство пользователя 12
3 Экспериментальное исследование системы 13
3.1 Планирование и проведение эксперимента 13
3.2 Анализ результатов моделирования 13
Заключение 16
Список использованных источников 17

Файлы: 1 файл

Отчёт.doc

— 213.50 Кб (Скачать файл)

 

Как несложно заметить, результаты моделирования очень хорошо согласуются с теоретическими данными. Кроме того, в целом, показатели эффективности данной СМО оказались очень высокими – практически все заявки были обслужены.

 

Заключение

 

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

Было разработано программное средство, позволяющее моделировать работу системы массового обслуживания и рассчитывать значения заданных показателей эффективности.

Для получения характеристик исследуемой системы над моделью был проведён ряд экспериментов. Результаты, полученные в процессе моделирования использованы для  выявления загруженности запасного канала.

 

Список использованных источников

 

1 Бусленко Н.П. Моделирование  сложных систем. – М.: Наука, 1988.

2 Советов Б.Я., Яковлев С.А. Моделирование  систем: Учебник для вузов. – М.: Высш. шк., 2001. – 343с.

3 Гультяев А. Визуальное  моделирование в среде «Matlab»: Учебный курс. – СП: Питер, 2000.

4 Вентцель Е.С., Овчаров  Л.А. Задачи и упражнения по  теории вероятностей: Учебное пособие для студ. втузов. – М.: Издательский центр «Академия», 2003. – 448.

5 Гмурман В.Е. Руководство  к решению задач по теории вероятностей и математической статистике: Учебн. пособие для вузов. – М.: Высш. шк., 2003. – 405 с.

6 Лебедев А.Н. Моделирование  в научно-технических исследованиях. – М.: Радио и связь, 1989. – 224 с.

7 Х. Шенк. Теория инженерного  эксперимента. Перевод с английского Е.Г. Коваленко. – М.: Мир, 1972. – 382 с.

8 Романцев В.В., Яковлев  С.А. Моделирование систем массового  обслуживания. – СПб.: Поликом, 1995.

9 Ермаков С.М., Мелос В.Б. Математический эксперимент с  моделями сложных стохастических  систем. – СПб.: изд. ГУ, 1993.

10 Клейнен Дж. Статистические  методы в имитационном моделировании. – М.: Статистика, 1978.

11 Шеннон Р. Имитационное  моделирование систем. Искусство  и наука. – М.: Мир, 1978.

 

Приложение A

Контрольный пример работы программы

 

Рисунок А.1 – Запуск приложения

 

Рисунок А.2 – Работа приложения

 

Приложение Б

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

#include <vcl.h>

#pragma hdrstop

 

#include "Unit1.h"

#include "Unit2.cpp"

#include <math.h>

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int total,served,zn,br,z[2],reserv;

double time_st,end_time,dt,w_time,fix_time,src_time,tk,ts,time_pos1,time_pos2,

       time_br1,time_br2,t_br1,t_br2,res;

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

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

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

 

double ExpGen(double Lambda)

{

   int rand();

   return (-1 * log(1 - double(random(10000)) / 10000) / Lambda);

}

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

 

void init()

{

  z[0] = z[1] = 0;     // канал свободен

  br = 0;              // канал работает

  tk = 0;              // время отладки основного канала

  ts = 0;              // время появления новой заявки в каждом источнике

  zn = 1;              // длина очереди накопителя

  time_st = 0; dt = 0.01;

  total = served = 0;

  w_time = 0;          // время работы канала

  src_time = Form1->Edit2->Text.ToDouble();

  fix_time = Form1->Edit3->Text.ToDouble();

  end_time = Form1->Edit1->Text.ToDouble();

  time_pos1 = ExpGen(1.0/src_time);

  time_pos2 = 0;

  reserv = 0;

  int rand();

  time_br1 = 165 + random(70);

  time_br2 = 0;

  t_br1 = ExpGen(1.0/23);

  t_br2 = 0;

}

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

 

void obs()

{

  if (!br)

  {

    if (!z[1] && zn>0)

    {

      time_st += ExpGen(1.0/fix_time);

      time_pos2 += ExpGen(1.0/fix_time);

      time_br2 += ExpGen(1.0/fix_time);

      t_br2 += ExpGen(1.0/fix_time);

      served++;

      zn--;

    }

  }

  else

  {

    if (!z[2] && zn>0)

    {

      time_st += ExpGen(1.0/fix_time);

      time_pos2 += ExpGen(1.0/fix_time);

      time_br2 += ExpGen(1.0/fix_time);

      t_br2 += ExpGen(1.0/fix_time);

      served++;

      zn--;

      reserv++;

    }

  }

}

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

 

void imit()

{

  while (time_st < end_time)

  {

    if (time_pos2 >= time_pos1)

    {

      zn++;

      time_pos1 = ExpGen(1.0/src_time);

      time_pos2 = 0;

    }

 

    obs();

 

    if (!br)

    {

      if (time_br2 >= time_br1)

      {

        time_st += 2;

        time_pos2 += 2;

        br = 1;

        t_br1 = ExpGen(1.0/23);

        t_br2 = 0;

      }

    }

    else

    {

      if (t_br2 >= t_br1)

      {

        br = 0;

        int rand();

        time_br1 = 165 + random(70);

        time_br2 = 0;

      }

    }

 

    if (!br)

      time_br2 += dt;

    else

      t_br2 += dt;

    time_st += dt;

    time_pos2 += dt;

  }

  total = zn + served;

  res = double(reserv)*100.0/total;

}

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

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

  init();

  imit();

  Form2->Label4->Caption = total;

  Form2->Label5->Caption = served;

  Form2->Label6->Caption = AnsiString(res).SetLength(4) + "%";

  Form2->ShowModal();

}

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

 

 


Информация о работе Исследование системы массового обслуживания методом имитационного моделирования