Автор работы: Пользователь скрыл имя, 20 Декабря 2012 в 14:37, курсовая работа
Целью данной курсовой работы является построение простейшей статистической модели системы массового обслуживания и написание универсальной программы по её реализации. Для достижения этой цели в работе решены следующие задачи:
изучен алгоритм построения простейшей модели системы массового обслуживания;
изучены основные характеристики простейшей модели системы массового обслуживания
выбран язык программирования, позволяющий реализовать указанную модель;
Q = 1 + 1 = 2 (при
IV событие
Ттек=0.54 – время поступления четвёртой заявки.
Сгенерируем время поступления пятой заявки:
R=0.230243
T5 = Tтек. + P5 = 0.54 – (1/5)* ln 0.230243=0.83
Так как система работает, ставим заявку в очередь и увеличиваем длину очереди:
Q = 2 + 1 = 3 (при
V событие
Tтек = 0.81 – время окончания обслуживания второй заявки.
Так как очередь не пустая, то берем на обслуживание следующую в очереди заявку , генерируем время её обслуживания и вычисляем время окончания обслуживания:
R = 0.595449
R>0.5 q = q2 = 0.6
Tок.2 = Tтек. + q = 0.81 + 0.6 = 1.41
Изменяем длину очереди:
Q = 3 – 1 = 2 (при
Определим время ожидания обслуживания:
W = 0+ ( 0.81-0.35 ) = 0.46
VI событие
Ттек=0.83 – время поступления пятой заявки.
Сгенерируем время поступления шестой заявки:
R= 0.542293
T6 = Tтек. + P6 = 0.84 – (1/5)* ln 0.542293=0.96
Так как система работает, ставим заявку в очередь и увеличиваем длину очереди:
Q = 2 + 1 = 3 (при
Примем период моделирования Т=0.9 и определим основные параметры системы.
Определить коэффициент
Kпрост. = Tпрост. / T * 100% = 0.21/0.9 * 100 = 23.3%
Определим среднее время ожидания обслуживания:
W = 0.46 + ( 0.9 – 0.37 ) = 0.98
Ŵ = W / n = 0.99 / 5 =0.196
Определим среднюю длину очереди:
Q = 0 0 <= T < 0.35 A = 0
Q = 1 0.35 <= T < 0.38 A = 0 + 1 * (0.38 – 0.35) = 0.03
Q = 2 0.37 <= T < 0.54 A = 0.03 + 2 * (0.54 – 0.38) = 0.35
Q = 3 0.54 <= T < 0.81 A = 0.35 + 3 * (0.81 – 0.54) = 1.16
Q = 2 0.81 <= T < 0.84 A = 1.16 + 2 * (0.84 – 0.81) = 1.22
Q = 3 0.84 <= T < 0.9 A = 1.23 + 3 * (0.9 – 0.84) = 1.4
Q = A / T = 1.41 / 0.9 = 1.56
Первые задачи теории систем
массового обслуживания (ТСМО) были
рассмотрены сотрудником
Примерами СМО (см. табл. 1) могут служить:
Пример 1. Телефонная связь времен Эрланга представляла из себя телефонную станцию, связанную с большим числом абонентов. Телефонистки станции по мере поступления вызовов соединяли телефонные номера между собой.
Задача: Какое количество телефонисток (при условии их полной занятости) должно работать на станции для того, чтобы потери требований были минимальными.
Пример 2. Система скорой помощи некоего городского района представляет собой пункт (который принимает требования на выполнение), некоторое количество автомашин скорой помощи и несколько врачебных бригад.
Задача:
Определить количество врачей, вспомогательного
персонала, автомашин, для того чтобы
время ожидания вызова было для больных
оптимальным при условии
Пример 3. Важной задачей является организация морских и речных перевозок грузов. При этом особое значение имеют оптимальное использование судов и портовых сооружений.
Задача: Обеспечить определенный объем перевозок при минимальных расходах. При этом сократить простои судов при погрузочно-разгрузочных работах.
Пример 4. Система обработки информации содержит мультиплексный канал и несколько ЭВМ. Сигналы от датчиков поступают на мультиплексный канал, где буферизуются и предварительно обрабатываются. Затем поступают в ту ЭВМ, где очередь минимальна.
Задача: Обеспечить ускорение обработки сигналов при заданной суммарной длине очереди.
Таблица 1 | ||||||||||||||||||||||
|
При сравнении данных, полученных
при решении задачи линейного
программирования, приведённых в
разделе 2 «Решение задачи», с результатами,
полученными в ходе работы программы,
можно сделать вывод, что программа,
реализующая моделирование СМО,
работает верно.
В ходе данного курсового проектирования была написана программа по построению модели простейшей системы массового обслуживания. Программный продукт был реализован в среде программирования Delphi 7.0 и протестирована на платформе Windows 7 Начальная 32-разрядная, Процессор Intel(R) Atom(TM) CPU N570 1.66 GHz (4 CPus) ОЗУ 2 Гб
Написанная программа позволяет построить модель простейшей системы массового обслуживания и провести анализ данной модели на такие параметры, как: среднее время ожидания обслуживания, средняя длина очереди, коэффициент простоя. Программа позволяет отражать процесс решения в виде временной диаграммы, что значительно облегчает проверку хода решения и повышает наглядность. Ввод данных в программу осуществляется через поля, специально запрограммированные на отказ от неверного ввода данных и сообщающие об этом в специальном поле. Все эти программные решения и расчёты были реализованы с помощью объектно-ориентированного языка Delphi (на диалекте Object Pascal в среде разработки Delphi 7.0). Данный язык программирования предоставляет множество достаточно мощных и в тоже время простых для понимания компонентов, позволяющих создать интуитивно-понятный и настраиваемый пользовательский интерфейс, что позволяет сосредоточиться на программной логике кода и написании сложных алгоритмов для решения практически любых задач.
Рассмотрим Delphi подробнее.
Язык программирования Паскаль
(Pascal) был создан Н. Виртом в 1968 году
специально для обучения студентов.
Язык Паскаль представлял собой
квинтэссенцию технологий программирования
середины 60-х — эпохи создания
структурного программирования. Язык
был популярен в
Объектно-ориентированные
средства языка Паскаль прошли большой
путь от простейших объектных расширений
в TurboPascal 5.5 до современной объектной
модели Delphi, не уступающей по своим
потенциальным возможностям ни одному
объектно-ориентированному языку. Объектная
модель Delphi поддерживает все средства
которые могут понадобиться при
объектно-ориентированном
Но основным преимуществом Delphi является его среда программирования с визуальным конструктором программ. Эта среда (вместе с объектной библиотекой VCL) позволяет эффективно программировать под MS Windows, не отвлекаясь на выяснение всех деталей Win API, а работать над логикой программы.
Среди этих достоинств Delphi:
Достоинствами разработанной программы можно считать:
К недостаткам программы можно отнести:
unit Kurs;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, Grids, ComCtrls, Menus;
type
TForm1 = class(TForm)
pnl1: TPanel;
lbl1: TLabel;
pnl2: TPanel;
lbl2: TLabel;
edt11: TEdit;
lbl3: TLabel;
edt12: TEdit;
edt13: TEdit;
edt14: TEdit;
lbl4: TLabel;
lbl5: TLabel;
lbl6: TLabel;
mmo1: TMemo;
btn1: TButton;
Image1: TImage;
BitBtn1: TBitBtn;
Memo1: TMemo;
Panel1: TPanel;
ScrollBar1: TScrollBar;
strngrd1: TStringGrid;
edt1: TEdit;
ud1: TUpDown;
Panel2: TPanel;
Edit1: TEdit;
BitBtn3: TBitBtn;
Label1: TLabel;
LabeledEdit1: TLabeledEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
BitBtn4: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ScrollBar1Change(Sender: TObject);
procedure ud1Click(Sender: TObject; Button: TUDBtnType);
procedure BitBtn3Click(Sender: TObject);
procedure strngrd1KeyPress(Sender: TObject; var Key: Char);
procedure edt11KeyPress(Sender: TObject; var Key: Char);
procedure edt1KeyPress(Sender: TObject; var Key: Char);
procedure edt12KeyPress(Sender: TObject; var Key: Char);
procedure edt13KeyPress(Sender: TObject; var Key: Char);
procedure edt14KeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn4Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
//procedure N21Click(Sender: TObject);
// procedure prov(Sender: TObject);
private
{ Private declarations }
public
procedure prov;
{ Public declarations }
end;
var
Form1: TForm1;
buf,li,lin:integer;
tprost:double;
znach:array of double; // ìàññèâ ÿíà÷åíèé íà ëèíèè
och,pom:array of Integer; // ìàññèâ î÷åðåäè è ïîìåòîê
zap:array of boolean;
implementation
//uses Unit2;
{$R *.dfm}
procedure TForm1.prov;
var i:integer;
begin
if panel2.Visible=false then
begin
mmo1.Clear;
li:=0;
lin:=0;
for i:=0 to strngrd1.Rowcount-1 do if (strngrd1.Cells[0,i]<>'')and
(strtofloat(strngrd1.Cells[0,
memo1.lines.Add(inttostr(li));
if li<>strngrd1.RowCount then begin
mmo1.Lines.Add('Ñëó÷àéíûå ÷
mmo1.Lines.add('
end;
if (edt11.text='') or (strtofloat(edt11.text)=0)or(
mmo1.Lines.Add('Íå ââåäåíî
end else lin:=lin+1;;
if (edt12.text='') or (strtofloat(edt12.text)=0)or (strtofloat(edt12.Text)>=1)
mmo1.Lines.Add('Íå ââåäåíî
//mmo1.Lines.Add('.');
end else lin:=lin+1;
if (edt13.text='') or (strtofloat(edt13.text)=0) or (strtofloat(edt13.Text)>=1) then begin
mmo1.Lines.Add('Íå ââåäåíî
//mmo1.Lines.Add('');
end else lin:=lin+1;
if (edt13.text='') or (strtofloat(edt13.text)=0) then begin
memo1.Lines.Add('Íå ââåäåí
end else lin:=lin+1;
if (li=strngrd1.RowCount) and (lin=4) then btn1.Enabled:=true else btn1.Enabled:=false;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
r: array of Double; // ìàññèâ ðàíäîìíûõ ÷èñåë
q,i,q1,q2,pprost,tok,ttek,
shag,s1,s2,l,prost,qo,a,z,j,f,
begin
setlength(r,strngrd1.RowCount+
setlength(znach,strngrd1.
setlength(och,strngrd1.
setlength(pom,strngrd1.
for j:=0 to strngrd1.RowCount-1 do r[j+1]:=StrToFloat(strngrd1.
l:=StrToInt(edt11.Text); //çàíåñåíèå ëÿìáäû
q1:=StrToFloat(edt12.Text);
q2:=StrToFloat(edt13.Text);
i:=StrToFloat(edt14.Text);
shag:=1;
s1:=1; //ñ÷¸ò÷èê äëÿ ðàíäîìíûõ ÷èñåë
tpost:=0;
s2:=0;
ttek:=0;
tok:=0;
prost:=0;
q:=0;
qo:=0;
znach[0]:=0;
strngrd1.Options:=[
edt11.ReadOnly:=true;
edt12.ReadOnly:=true;
edt13.ReadOnly:=true;
edt14.ReadOnly:=true;
//ïåðâàÿ èòåðàöèÿ
znach[1]:=ttek+(-(1/l)*ln(r[
mmo1.Lines.Add(floattostr(
znach[1]:=(round(znach[1]*100)
mmo1.Lines.Add(floattostr(