Курсовая работа по «Моделированию экономических и производственных процессов»

Автор: Пользователь скрыл имя, 15 Апреля 2014 в 20:14, курсовая работа

Краткое описание

Задание для курсового проектирования

В вычислительном центре работает 9 персональных компьютеров (ПК).
Простейший поток неисправностей имеет интенсивность 0,3 отказа в день. Среднее время устранения одной неисправности одним инженером равно 1,5 час. Компьютеры обслуживают три инженера с одинаковой производительностью. Все потоки событий простейшие. Возможны следующие варианты организации обслуживания ПК:
- три инженера обслуживают все 9 компьютеров, так, что при отказе ПК его обслуживает один из свободных инженеров, в этом случае R = 3; N = 9;
- каждый из трех инженеров обслуживает по три закрепленных за ним ПК. В этом случае R = 1; N = 3.
Необходимо выбрать наилучший вариант организации обслуживания ПК

Файлы: 1 файл

Kursovaya_.doc

— 182.00 Кб (Скачать)

Министерство образования и науки РК

 

Усть-Каменогорский колледж Экономики и Финансов

 

 

 

 

 

 

 

Специальность: Программное обеспечение автоматизированных систем и вычислительной техники.

 

 

 

 

 

 

Пояснительная записка к курсовому проекту.

 

По предмету: «Моделирование экономических и производственных процессов»

 

 

 

 

 

 

                                                     

 

 

 

                                     

 

 

 

 

 

 

 

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.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. Исследование операций в экономике: Учеб. пособие для вузов / Н.Ш. Кремер, Б.А. Путко, И.М. Тришин, М. Н. Фридман; Под ред. Проф. Н.Ш. Кремер. – М.: ЮНИТИ, 2004.
  2. Бережная Е. В., Бережной В.И. Математические методы моделирования экономических систем: Учеб. пособие. – М.: Финансы и статистика, 2001
  3. Шелобаев С.И. Математические методы и модели в экономике, финансах, бизнесе: Учеб. пособие для вузов. – М.: ЮНИТИ-ДАНА, 2001.
  4. Вентцель Е. С. Исследование операций. Задачи, принципы, методология: Учеб. пособие для вузов. – 3-е изд., стереотип. – М.: Дрофа, 2004.
  5. Косоруков О.А., Мищенко А.В. Исследование операций: Учебник / Косоруков О.А., Мищенко А.В. // Под общ. ред. д.э.н., проф. Н.П. Тихомирова. – М.: Издательство «Экзамен», 2003.

 

 

Приложение А

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 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:Extended;

Rn:real;

v:real;

temp:string;

begin

R:=StrToInt(Edit1.Text);

N:=StrToInt(Edit2.Text);

Lyanda:=StrToFloat(Edit3.Text)/8;

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:=wsMaximized;

 

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(FloatToStr(lyanda)+'P'+ FloatToStr(k-1) +' = '+ FormatFloat('0.0000',nu) + 'P' + FloatToStr(k)+CHR(13));

    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))/(faktor(k)*faktor(N-k)); v:=v+mas[k]; end

   else begin mas[k]:=(faktor(N)*power(p,k))/(faktor(R)*power(r,k-r)*faktor(N-k)); v:=v+mas[k]; end;

   //Memo1.Lines.Add('P'+IntToStr(k)+'='+FloatToStr(mas[k]));

  end;

mas[n+1]:=1/(v+1);

Memo1.Lines.add('P0='+FloatToStr(mas[n+1]));

for k:=1 to n do begin

mas[k]:=mas[k]*mas[n+1];

  Memo1.Lines.Add('P'+IntToStr(k)+'='+FormatFloat('0.00000000000',mas[k]));

end;

  for k:=r to n do begin

  Lq:=(k-r)*mas[k]+Lq;

  end;

Label11.Caption:=FormatFloat('0.00000000000',Lq);

  for k:=1 to n do

  Ls:=Ls+k*mas[k];

Label14.Caption:=FormatFloat('0.00000000000',Ls);

  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('0.00000000000',Rn);

  a1:=lq/n;

  a2:=1-(ls/N);

  a3:=Rn/r;

Label18.Caption:=FormatFloat('0.00000000000',a1);

Label20.Caption:=FormatFloat('0.00000000000',a2);

Label22.Caption:=FormatFloat('0.00000000',a3);

  Wq:=(1/lyanda*(1-a2)/a2)-1/Nu;

  Label24.Caption:=FormatFloat('0.00000000000',Wq);

 

   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(233,233,233);  // задаем цвет фона текста - серый

    Form1.Canvas.Rectangle(x1,y1,x2,y2);   // рисуем элемент графа

    Form1.Canvas.TextOut(x7,y7,'S'+IntToStr(i)); // подписываем граф состояний  S1,S2..SN

 

    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+20);                 // верхняя линия

    Form1.Canvas.LineTo(x3,y4+20);

 

    Form1.Canvas.MoveTo(x6-35,y6+20);                 // нижняя линия

    Form1.Canvas.LineTo(x3,y4+20);

 

   // Form1.Canvas.Brush.Color:=clWhite;                // задаем цвет фона текста - белый

    Form1.Canvas.TextOut(x7+50,y7-15,FormatFloat('0.000',(n-i)*lyanda));  // подписываем лямбды

    Form1.Canvas.TextOut(x7+50,y7+21,FormatFloat('0.000',Nu*(i+1)));  // подписываем мю

 

    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,x2,y2);

          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);                 // верхняя линия

Информация о работе Курсовая работа по «Моделированию экономических и производственных процессов»