Автор: Пользователь скрыл имя, 15 Апреля 2014 в 20:14, курсовая работа
Задание для курсового проектирования
В вычислительном центре работает 9 персональных компьютеров (ПК).
Простейший поток неисправностей имеет интенсивность 0,3 отказа в день. Среднее время устранения одной неисправности одним инженером равно 1,5 час. Компьютеры обслуживают три инженера с одинаковой производительностью. Все потоки событий простейшие. Возможны следующие варианты организации обслуживания ПК:
- три инженера обслуживают все 9 компьютеров, так, что при отказе ПК его обслуживает один из свободных инженеров, в этом случае R = 3; N = 9;
- каждый из трех инженеров обслуживает по три закрепленных за ним ПК. В этом случае R = 1; N = 3.
Необходимо выбрать наилучший вариант организации обслуживания ПК
Министерство образования и науки РК
Усть-Каменогорский колледж Экономики и Финансов
Специальность: Программное обеспечение автоматизированных систем и вычислительной техники.
Пояснительная записка к курсовому проекту.
По предмету: «Моделирование экономических и производственных процессов»
2012г.
Задание для курсового проектирования
В вычислительном центре работает 9 персональных компьютеров (ПК).
Простейший поток неисправностей имеет интенсивность 0,3 отказа в день. Среднее время устранения одной неисправности одним инженером равно 1,5 час. Компьютеры обслуживают три инженера с одинаковой производительностью. Все потоки событий простейшие. Возможны следующие варианты организации обслуживания ПК:
- три инженера обслуживают все 9 компьютеров, так, что при отказе ПК его обслуживает один из свободных инженеров, в этом случае R = 3; N = 9;
- каждый из трех инженеров обслуживает по три закрепленных за ним ПК. В этом случае R = 1; N = 3.
Необходимо выбрать наилучший вариант организации обслуживания ПК
График выполнения курсового проекта
№ этапа |
Содержание этапа |
Сроки выполнения | |
План |
Факт | ||
1 |
Раздача тем. Обзор рекомендуемой литературы |
30.01 |
30.01 |
2 |
Готовность 30%. Подбор литературы. Определение метода решения. Расчет модели по аналитическим формулам. |
7.02 |
15.02 |
3 |
Готовность 60%. Подготовка программной реализации. |
15.02 |
20.02 |
4 |
Готовность 100%. Подготовка отчета и доклада к защите. |
24.02 |
28.02 |
5 |
Защита курсового проекта. |
29.02 |
29.02 |
Введение
В задании на курсовое проектирование было выдано задание в котором необходимо произвести расчёты замкнутой модели СМО и написать программную реализацию в Delphi позволяющую производить расчёты по любым исходным данным замкнутой СМО.
Необходимо произвести расчёты по формулам и определить при каком варианте СМО будет работать эффективнее.
Целью исследования задачи является рациональный выбор структуры системы обслуживания и процесса обслуживания на основе изучения потоков требований на обслуживание, поступающих в систему и выходящие из неё, длительности ожидания и длины очередей.
1.1 Общая постановка задачи
В вычислительном центре работает 9 персональных компьютеров (ПК).
Простейший поток неисправностей имеет интенсивность 0,3 отказа в день. Среднее время устранения одной неисправности одним инженером равно 1,5 час. Компьютеры обслуживают три инженера с одинаковой производительностью. Все потоки событий простейшие. Возможны следующие варианты организации обслуживания ПК:
- три инженера обслуживают все 9 компьютеров, так, что при отказе ПК его обслуживает один из свободных инженеров, в этом случае R = 3; N = 9;
- каждый из трех инженеров обслуживает по три закрепленных за ним ПК. В этом случае R = 1; N = 3.
Необходимо выбрать наилучший вариант организации обслуживания ПК.
В задаче представлена замкнутая СМО, для решения которой необходимо произвести расчёт по формулам и выяснить, при каком из вариантов СМО будет более эффективна.
1.2 Описание модели и метода её реализации.
Общая постановка и определения СМО.
В задаче используется замкнутая СМО, которая может работать после заполнения очереди как СМО с отказами.
Замкнутой СМО называется система, в которой интенсивность потока зависит от состояния системы. У данной СМО имеются отличия от других тем, что число заявок в очереди ограниченно (не может превосходить количества обслуживаемых машин). Таким образом заявка не может остаться не обслуженной (получить отказ).
m - интенсивность обслуживания
l - интенсивность поступления заявок
N - количество машин
R - количество инженеров обслуживающих ПК
t - время обслуживания
Параметр обслуживания
Приведённая интенсивность
Вероятности перехода в k – тое состояние системы
Число ПК в очереди на обслуживание:
Среднее число ПК, находяшихся в системе:
Среднее число инженеров, простаивающих из-за отсутсвия работы:
Коэффициэнт простоя машины в очереди:
Коэффициэнт использования машин:
Коэффициэнт простоя обсуживающих инженеров:
Среднее время ожидания машины обслуживания:
1.3 Решение задачи.
Вариант 1
Исходные данные:
l = 0,0375 в час = 0,3 в день
N = 9
R = 3
t = 1,5 часа
Высчитанные показатели:
m = 0,6666667
p = 0,05625
P0=0,61088902232602
P1=0,30926256755
P2=0,06958407770
P3=0,00913291020
P4=0,00102745240
P5=0,00009632366
P6=0,00000722427
P7=0,00000040637
P8=0,00000001524
P9=0,00000000029
Lq = 0,0012434
Ls = 0,4804
Rn = 2,52
a1 = 0,0001381
a2 = 0,94666
a3 = 0,8402
Wq = 0,00389
Вариант 2
Исходные данные:
l = 0,0375 в час = 0,3 в день
N = 3
R = 1
t = 1,5 часа
Высчитанные показатели:
m = 0,6666667
p = 0,05625
P0=0,841182798304655
P1=0,14194959721
P2=0,01596932969
P3=0,00089827479
Lq = 0,017765
Ls = 0,176583
Rn = 0,841182
a1 = 0,005921
a2 = 0,9411389
a3 = 0,841182
Wq = 0,1677955
1.4 Описание программной
Программа должна обеспечить растёт замкнутой модели СМО по формулам, отрисовку графа состояния. Исходные данные вводятся в поля Edit, по нажатию кнопки Рассчитать выполняется процедура по расчёту значений. Вывод производится в виде надписи (label) и в поля Memo.
Интерфейс программы был сделан наиболее просто, содержит всего 1 форму, все действия интуитивно понятным.
Для реализации программной части были использованы счётные циклы, для однотипных данных использованы одномерные массивы. Ввод данных осуществляется в поля Edit, вывод производится в виде надписей Label и поля Memo.
Заключение
Поставленную задачу выполнил, произвел расчёты по формулам, сделал программную реализацию. Выполнил условие задачи – выяснить при каком варианте СМО будет работать эффективнее. После решения задачи мои предположения по эффективности 1 варианта подтвердились. В первом варианте ПК ожидает обслуживания 0,00389 часа, а во 2 варианте 0,1677 часа. Таким образом закрепление за 1 инженером 3-х ПК приведет к увеличению времени обслуживании всей системы. Данную программу можно будет применять экономистам, в предприятиях которых используется схожая с условием задачи система обслуживания.
Список используемой литературы:
Приложение А
Рис. 1 Главная форма
Приложение Б
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ShellAPI;
type
TForm1 = class(TForm)
Label1: TLabel;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
GroupBox2: TGroupBox;
Memo1: TMemo;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Memo2: TMemo;
Label26: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Nu,t,lyanda,P:extended;
N,R:integer;
implementation
uses Math;
{$R *.dfm}
function faktor(x:integer):integer;
var i,otvet:integer;
begin
otvet:=1;
for i:=1 to x do
otvet:=otvet*i;
faktor:=otvet;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
mas:array[1..100] of Extended;
mdb:array[1..100] of Extended;
x7,y7:integer;
step: integer;
x1,y1,x2,y2: integer; // ????? ??? ????????? ????????? ?????
x3,y3,x4,y4,x5,y5,x6,y6,k: integer;
z,i:integer;
Lq,Ls,Rn1,a1,a2,a3,Wq:
Rn:real;
v:real;
temp:string;
begin
R:=StrToInt(Edit1.Text);
N:=StrToInt(Edit2.Text);
Lyanda:=StrToFloat(Edit3.Text)
t:=StrToFloat(Edit4.Text);
{R:=3;
N:=9;
Lyanda:=0.0375;
t:=1.5; }
Nu:=1/t;
if Form1.Width<(n+1)*100+100 then
Form1.WindowState:=
P:=lyanda/Nu;
Label7.Caption:=FloatToStr(Nu)
Label9.Caption:=FloatToStr(P);
k:=1;
for i:=0 to n+1 do
begin
Form1.Memo2.Lines.Add(
inc(k);
end;
for i:=0 to n+2 do
begin
if (i=n+2) then temp:=temp+'P'+IntToStr(i)+' = 1'
else temp:=temp+'P'+IntToStr(i)+' + ';
end;
Form1.Memo2.Lines[n+2]:=temp;
for k:=1 to N do begin
if k<R then begin mas[k]:=(faktor(N)*power(p,k))
else begin mas[k]:=(faktor(N)*power(p,k))
//Memo1.Lines.Add('P'+IntToStr
end;
mas[n+1]:=1/(v+1);
Memo1.Lines.add('P0='+
for k:=1 to n do begin
mas[k]:=mas[k]*mas[n+1];
Memo1.Lines.Add('P'+IntToStr(
end;
for k:=r to n do begin
Lq:=(k-r)*mas[k]+Lq;
end;
Label11.Caption:=FormatFloat('
for k:=1 to n do
Ls:=Ls+k*mas[k];
Label14.Caption:=FormatFloat('
For k:=0 to r-1 do
if k=0 then Rn:=(R-k)*mas[n+1]+Rn else
Rn:=(R-k)*mas[k]+Rn;
Label16.Caption:=FormatFloat('
a1:=lq/n;
a2:=1-(ls/N);
a3:=Rn/r;
Label18.Caption:=FormatFloat('
Label20.Caption:=FormatFloat('
Label22.Caption:=FormatFloat('
Wq:=(1/lyanda*(1-a2)/a2)-1/Nu;
Label24.Caption:=FormatFloat('
begin
// эта часть процедуры отвечает за канву
// PatBlt(Form1.Canvas.Handle, 0, 0,0, 0, WHITENESS);
//Form1.Width:=488;
x1:=15; y1:=510;
x2:=55; y2:=550;
x3:=55; y3:=520;
x4:=115; y4:=520;
x5:=105; y5:=515;
x6:=105; y6:=525;
x7:=28; y7:=520;
step:=100;
// шаг для стрелок
for i:=0 to n+1 do // цикл для отрисовки графа на канве
begin
Form1.Canvas.Brush.Color:=RGB(
Form1.Canvas.Rectangle(x1,y1,
Form1.Canvas.TextOut(x7,y7,'S'
x1:=x1+step;
x2:=x2+step;
x7:=x7+step;
end;
x7:=28;
for i:=0 to n do
begin
// рисуем верхнюю стрелку
Form1.Canvas.MoveTo(x3,y3);
Form1.Canvas.LineTo(x4,y4);
Form1.Canvas.MoveTo(x5,y5);
Form1.Canvas.LineTo(x4,y4);
Form1.Canvas.MoveTo(x6,y6);
Form1.Canvas.LineTo(x4,y4);
// рисуем нижнюю стрелку
Form1.Canvas.MoveTo(x3,y3+20);
Form1.Canvas.LineTo(x4,y4+20);
Form1.Canvas.MoveTo(x5-35,y5+
Form1.Canvas.LineTo(x3,y4+20);
Form1.Canvas.MoveTo(x6-35,y6+
Form1.Canvas.LineTo(x3,y4+20);
// Form1.Canvas.Brush.Color:=
Form1.Canvas.TextOut(x7+50,y7-
Form1.Canvas.TextOut(x7+50,y7+
x3:=x3+step;
x4:=x4+step;
x5:=x5+step;
x6:=x6+step;
x7:=x7+step;
end;
if (x2 > Form1.Width) then // входит ли граф в форму
begin
Form1.Width:=x2-70;
x1:=15; y1:=180; // и заново отрисовываем граф
x2:=55; y2:=220;
for i:=1 to n+2 do
begin
Form1.Canvas.Rectangle(x1,y1,
x1:=x1+step;
x2:=x2+step;
end; // конец отрисовки графа
for i:=0 to n+1 do
begin
// рисуем верхнюю стрелку
Form1.Canvas.MoveTo(x3,y3);
Form1.Canvas.LineTo(x4,y4);
Form1.Canvas.MoveTo(x5,y5);
Информация о работе Курсовая работа по «Моделированию экономических и производственных процессов»