Моделирование работы станка с поломками

Автор: Пользователь скрыл имя, 10 Января 2014 в 12:16, курсовая работа

Описание работы

Целью данной курсовой работы является разработка имитационной модели с регулярным входным потоком, отсутствующей очередью и естественным отсчетом времени т.е моделирование работы больничной палаты. Основой для разработки модели в данной курсовой работе является метод имитационного моделирования. Так же курсовая работа предполагает создание программы на языке C++, обеспечивающей ввод исходной информации, ее обработку, реализацию алгоритма имитации процесса и выдачу необходимой информации.

Содержание

1. Введение………………………………………………………………………3
2. Моделирование систем массового обслуживания…………………………5
2.1 Структура и параметры эффективности и качества функционирования СМО………………………………………………………………………………5
2.2 Классификация СМО и их основные элементы………………...…………6
2.3 Процесс имитационного моделирования…………………………………12
3. Описание моделируемой системы……………………………………...…..16
3.1 Модельное время……………………………………………………….…..17
3.2 Используемые классы и объекты……………...………………….……….17
3.3 События и методы………………………………………………….………19
4. Программная реализация на С++…. ………………………………….……21
5. Анализ результатов работы программы……………………………....……35
6. Заключение……………….……………………………………………...…..38
7. Список использованной литературы…………………………………….…39

Работа содержит 1 файл

Моделирование работы станка.doc

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

  return(root);

}

 

float simpson(float A, float B, float mean, float disp)

{


 float k1, k2, k3, s, x, h1, h;

 /*шаг интегрирования принимается равным 0.01. В "товарных" реализациях метода

 применяется процедура автоматического выбора шага с помощью апостериорных оценок*/

 h=0.01;

 s=0;  h1=h/1.5;

 k1=function(mean, disp, A);

 for(x=A; (x<B)&&((x+h-B)<=h1); x=x+h)

 {

  k2=function(mean, disp, x+h/2);

  k3=function(mean, disp, x+h);

  s=s+k1+4*k2+k3;

  k1=k3;

 }

 s=s*h/6;

 return(s);

}

 

float function(float mean, float disp, float x)

{

 float result;

 result=(1.0/(disp*sqrt(2*M_PI)))*exp(-0.5*((x-mean)/disp)*((x-mean)/disp));

 return(result);

}

float equ(float bottom_bound, float top_bound, float mean, float disp, float almost_all, float eps, float right)

{

 float edge1, edge2, middle, cover, value;

 edge1=bottom_bound; edge2=top_bound;

 if (right>almost_all) return(top_bound); else;

 if (right<(1-almost_all)) return(bottom_bound); else;

 cover=0; /*введена для повышения производительности. В новой точке вычисление интеграла

 производится не от bottom_bound, а от edge1, в то время как значение интеграла от

 bottom_bound до edge1 уже накоплено в cover*/

 while((edge2-edge1)>eps)

 {

  middle=(edge1+edge2)/2; value=simpson(edge1, middle, mean, disp);

  if ( (cover+value-right)<0 ) { edge1=middle; cover=cover+value; }

  else edge2=middle;

 }


 return((edge1+edge2)/2);

}

 

Листинг программы файл erlang.h

 

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

float get_erlang(float mu, int k, float eps);

float equ(float mu, float right, int k, float eps);

float function(float mu, int k, float x);

float get_erlang(float mu, int k, float eps)

{

  int r_num; float root, right;

  r_num=rand();

  right=(float)r_num/32768;

  root=equ(mu, right, k, eps);

  return(root);

}

/*вычисление функции F(t) - левой  части уравнения - в заданной  точке t*/

float function(float mu, int k, float t)

{

 float prod, s; int i;

 prod=1; s=1;

 for(i=1;i<k; i++)

 {

  prod=prod*mu*t/i;

  s+=prod;

 }

 s=s*exp(-mu*t); return(1-s);

}

float equ(float mu, float right, int k, float eps)

{

 float edge1, edge2, middle, value;

 /*инициализация отрезка, на котором ищется корень. Правая граница - среднее плюс десятикратное среднеквадратичное отклонение*/

 edge1=0.0; edge2=(float)k/mu+10*sqrt((float)k)/mu;

 /*если длина начального отрезка все-таки мала - удваиваем его, пока корень уравнения не окажется внутри отрезка*/

 while(function(mu, k, edge2)<right) edge2*=2;

 /*итерируем, пока не достигнута заданная точность*/

 while((edge2-edge1)>eps)

 {

  middle=(edge1+edge2)/2;

  value=function(mu, k, middle); /*вычисляем значение левой части в середине текущего интервала локализации корня*/

  /*корень лежит в правой половине текущего интервала*/

  if ( (value-right)<0 )  edge1=middle;

  /*корень лежит в левой половине текущего интервала*/

  else  edge2=middle;

 }

 return((edge1+edge2)/2);

}

 

Листинг программы функция main()

 

#include "stdafx.h"

#include "iostream"

#include "10.h"

int main()

{


 int i,j;

 int N = 0;

 setlocale(LC_ALL, "Russian");

 cout << "Введите время моделирования = ";

 cin >> N;

 int s = 1;

 cout << "Введите количество станков = ";

 cin >> s;

 Machine *m = new Machine[s];

 que=fopen("que", "wt");

 sojourn=fopen("sojourn", "wt");

 srand((unsigned)time(0));

 for(total=0L;total<N;total++)

for(j=0;j<s;j++)

m[j].run();

 fclose(sojourn);

 fclose(que);

 

 cout << "Всего поступило заявок " << entered << endl;

 cout << "Всего завершило обслуживание " << completed << " заявок" << endl;

 cout << "Доля заявок, прервавших обслуживание " << ((float)completed1)/completed << endl;

 cout << "Доля заявок, прервавших обслуживание " << ((float)completed2)/completed << endl;

 cout << "Средняя длина очереди " << que_ave << endl;

 cout << "Среднее время пребывания " << soj_ave/60 << endl;

 cout << "Коэффициент загрузки станков " << ro_ave << endl;

 _gettch();

}

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

5. Анализ результатов работы программы

 

Моделирование системы при заданных условиях (1 станок, 500 ч) дало следу- 
ющие результаты:

 

 

 

Рис. 3. Снимок работы программы


 

  • количество выполненных заданий — 512;
  • доля заданий, не возвращавшихся в очередь, — 0,977;
  • доля заданий, возвращавшихся в очередь, — 0,023;
  • средняя длина очереди — 2,934;
  • среднее время пребывания в системе — 3,3 ч:
  • коэффициент загрузки станка — 0,5.

 

На рис. 4 и 5 приведены примеры реализаций случайной величины и слу- 
чайной функции — соответственно, времени пребывания заявок в системе и длины 
очереди к станку. Периодические всплески на этих графиках связаны с поломка- 
ми станка. В самом деле, если обратиться к рис. 5 и провести горизонтальную 
линию приблизительно на уровне шести (напомним, что среднее значение — 3.65), 
то зафиксируем приблизительно 11-12 всплесков, доходящих до этого уровня. 
Количество поломок на протяжении 500 часов также устойчиво показывает при 
имитационных экспериментах значение 11-12.


 

 

Рис. 4. Пример реализации случайной величины — среднего времени пребывания заявки в системе

 

Мы видим, что при среднем  времени обслуживания 30 мин заявка проводит 
в системе в среднем довольно много времени — 4 ч. Насколько улучшится ситуа- 
ция, если добавить второй станок? Вот результаты:

  • средняя длина очереди — 0,115;
  • среднее время пребывания заявки в системе — 0,6 ч (36 мин);
  • коэффициент загрузки станков — 0,24.

Таким образом, добавление второго  станка полностью решает проблемы —  среднее время пребывания заявки в системе становится практически  равным среднему времени обслуживания. Поэтому добавлять третий станок не имеет смысла.

 

 

 

 

 


 

 

Рис. 5. Пример реализации случайной функции — длины очереди

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6. Заключение


Сам напиши

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Список использованной литературы

 

  1. Труб И. И. «Объектно-ориентированное моделирование на С++»: Учебный курс.-СПб.:Питер, 2006.-411с.:ил.
  2. Бережная Е.В., Бережной В.И. Математические методы моделирования экономических систем: Учебное пособие. –М.: Финансы и статистика, 2005. -426 с.
  3. Гинзбург А.И. Экономический анализ: Предмет и методы. Моделирование ситуаций. Оценка управленческих решений: учебное пособие. СПб.: Питер, 2010. -622 с.
  4. Кремер Н.Ш. Исследование операций в экономике. –М.: Банки и биржи, 2009. -407 с.
  5. Ларичев О.Н. Теория и методы принятия решений. М.: Логос, 2006. -392 с.
  6. Синюк В.Г. Использование информационно-аналитических технологий при принятии управленческих решений: Учебное пособие. –М.: Экзамен, 2006. -237 с.
  7. Шикин Е.В. Математические методы и модели в управлении. –М.: Финансы и статистика, 2008. -430 с.
  8. Эддоус М., Стэнсфилд Р. Методы принятия решений. – М.: ЮНИТИ, 2007. -425 с.
  9. Холод Н.И. Экономико-математические методы и модели. –Мн.: БГЭУ, 2006. -318 с.

 


Информация о работе Моделирование работы станка с поломками