Автор работы: Пользователь скрыл имя, 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 Бусленко Н.П. Моделирование сложных систем. – М.: Наука, 1988.
2 Советов Б.Я., Яковлев С.А. Моделирование систем: Учебник для вузов. – М.: Высш. шк., 2001. – 343с.
3 Гультяев А. Визуальное моделирование в среде «Matlab»: Учебный курс. – СП: Питер, 2000.
4 Вентцель Е.С., Овчаров Л.А. Задачи и упражнения по теории вероятностей: Учебное пособие для студ. втузов. – М.: Издательский центр «Академия», 2003. – 448.
5 Гмурман В.Е. Руководство к решению задач по теории вероятностей и математической статистике: Учебн. пособие для вузов. – М.: Высш. шк., 2003. – 405 с.
6 Лебедев А.Н. Моделирование
в научно-технических
7 Х. Шенк. Теория инженерного эксперимента. Перевод с английского Е.Г. Коваленко. – М.: Мир, 1972. – 382 с.
8 Романцев В.В., Яковлев
С.А. Моделирование систем
9 Ермаков С.М., Мелос В.Б.
Математический эксперимент с
моделями сложных
10 Клейнен Дж. Статистические
методы в имитационном
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],
double time_st,end_time,dt,w_time,
time_br1,time_br2,t_br1,t_br2,
//----------------------------
__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();
}
//----------------------------
Информация о работе Исследование системы массового обслуживания методом имитационного моделирования