Моделирование экономических и производственных процессов
Расчёты замкнутой модели системы массового обслуживания. Программная реализация на языке программирования Delphi, позволяющая производить расчёты по любым исходным данным замкнутой системы. Рациональный выбор структуры процесса и потоков обслуживания.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 24.04.2014 |
Размер файла | 168,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки РК
Усть-Каменогорский колледж Экономики и Финансов
Специальность: Программное обеспечение автоматизированных систем и вычислительной техники.
Пояснительная записка к курсовому проекту
«Моделирование экономических и производственных процессов»
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 - время обслуживания
Параметр обслуживания
(1.1)
Приведённая интенсивность
(1.2)
Вероятности перехода в k - тое состояние системы
(1.3)
Число ПК в очереди на обслуживание:
(1.4)
Среднее число ПК, находяшихся в системе:
(1.5)
Среднее число инженеров, простаивающих из-за отсутсвия работы:
(1.6)
Коэффициэнт простоя машины в очереди:
(1.7)
Коэффициэнт использования машин:
(1.8)
Коэффициэнт простоя обсуживающих инженеров:
(1.9)
Среднее время ожидания машины обслуживания:
(1.10)
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); // верхняя линия
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);
x3:=x3+step;
x4:=x4+step;
x5:=x5+step;
x6:=x6+step;
end;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShellExecute(Handle,'open','help.html',nil,nil, SW_SHOWNORMAL);
end;
end.
Размещено на Allbest.ru
Подобные документы
Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.
курсовая работа [487,4 K], добавлен 18.12.2014Построение имитационной модели системы массового обслуживания в среде Borland Delphi 7.0 с учетом того, что параметры модели – детерминированные величины. Моделирование случайных независимых величин и процессов. Оптимизация системы массового обслуживания.
курсовая работа [1,4 M], добавлен 28.05.2013Построение имитационной модели системы массового обслуживания, список и содержание ее активностей. Блок-схема алгоритма моделирования и текст процедуры. Моделирование случайных независимых величин и процессов. Оптимизация системы массового обслуживания.
курсовая работа [4,0 M], добавлен 28.05.2013Общая характеристика системы массового обслуживания, исходные данные для ее создания. Особенности построения алгоритма имитационной модели задачи о поступлении заявок (клиентов) в канал (парикмахерскую). Описание функционирования математической модели.
курсовая работа [154,1 K], добавлен 19.05.2011Сфера применения имитационного моделирования. Исследование и специфика моделирования системы массового обслуживания с расчетом стационарных значений системы и контролем погрешности получаемых значений. Реализация ее в GPSS и на языке высокого уровня Java.
курсовая работа [818,7 K], добавлен 23.05.2013Характеристика системы массового обслуживания, куда поступают заявки обслуживания. Особенности моделирования системы массового обслуживания. Имитация работы системы массового обслуживания с относительными приоритетами. Отчеты полного факторного плана.
курсовая работа [1,1 M], добавлен 14.07.2012Построение модели системы массового обслуживания с помощью ЭВМ с использованием методов имитационного моделирования. Моделирование проводилось с помощью GPSS World Student version, позволяющего достоверно воссоздать систему массового обслуживания.
курсовая работа [555,7 K], добавлен 29.06.2011Моделирование дневного стационара - многоканальной системы массового обслуживания с ожиданием. Определение оптимального числа койко-мест для данного количества клиентов. Практическое решение задачи с помощью программы, реализованной в среде Delphi 7.
курсовая работа [1,9 M], добавлен 15.01.2010Система GPSS World как мощная универсальная среда моделирования как дискретных, так и непрерывных процессов, предназначенная для профессионального моделирования самых разнообразных процессов и систем. Системы массового обслуживания. Листинг программы.
курсовая работа [499,6 K], добавлен 25.12.2013Методика системного исследования реальной динамической сложной системы посредством разработки ее имитационной модели. Разработка программы реализации алгоритма имитационного моделирования системы массового обслуживания "Интернет-провайдерская фирма".
курсовая работа [2,0 M], добавлен 20.01.2010