Моделирование систем с использованием непрерывно-стохастических математических систем (моделей СМО)

Развитие теории массового обслуживания. Анализ процессов в системах производства, обслуживания и управления. Интенсивность обслуживания канала. Плотность распределения показательного закона. Коэффициент загрузки системы. Среднее число занятых каналов.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 26.01.2013
Размер файла 708,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

РЕФЕРАТ

МОДЕЛЬ, ЗАДАЧА, МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ ЗАДАЧИ, АЛГОРИТМ, ПРОГРАММА.

В курсовой работе описана и реализована модель задачи СМО. Основные сведения о задаче, метод ее решения. Разработана программа по данной тематике.

ВВЕДЕНИЕ

Теория массового обслуживания опирается на теорию вероятностей и математическую статистику.

На первичное развитие теории массового обслуживания оказали особое влияние работы датского ученого А.К. Эрланга (1878-1929).

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

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

Задача теории массового обслуживания - установить зависимость результирующих показателей работы Системы Массового Обслуживания (СМО) (вероятности того, что заявка будет обслужена; математического ожидания числа обслуженных заявок и т.д.) от входных показателей (количества каналов в системе, параметров входящего потока заявок и т.д.). Результирующими показателями или интересующими нас характеристиками СМО являются - показатели эффективности СМО, которые описывают, способна ли данная система справляться с потоком заявок. Примерами СМО могут служить: телефонные станции, ремонтные мастерские, билетные кассы, стоянки такси, парикмахерские и т.п.

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

Для проверки той или иной системы на эффективность и целесообразность, производят теоретические расчеты. Часто возникает необходимость проверки полученных теоретических результатов, для чего лучшим средством служит модель. Не маловажный тот факт, что не всегда можно исследовать систему на практике, в связи с ее громоздкостью или дороговизной. В этом случае также целесообразно применять модель.

В данной работе предлагается к рассмотрению модель системы массового обслуживания с отказами. Эта система получила широкое распространение в телефонных сетях.

Задачу массового обслуживания, условно, можно разделить на две задачи: задачу анализа и задачу синтеза.

Задача анализа позволяет, на основе исходных, неизменных данных, произвести оценку эффективности заданной системы.

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

1. ОСНОВНЫЕ СВЕДЕНИЯ О ЗАДАЧЕ И МЕТОД ЕЕ РЕШЕНИЯ

1.1 ПЕРЕЧЕНЬ СОКРАЩЕНИЙ, СИМВОЛОВ И СПЕЦИАЛЬНЫХ ТЕРМИНОВ

n - количество каналов обслуживания;

л - интенсивность входящего потока заявок;

м - интенсивность обслуживания канала;

е - точность;

Р0, Р1, Р2, Р3, Р4 - вероятности состояния системы;

tср.пост. - среднее время поступления заявки в систему;

tср.обсл. - среднее время обслуживания заявки в системе;

с - коэффициент загрузки системы;

q - относительная пропускная способность системы;

А - абсолютная пропускная способность системы;

k - среднее число занятых каналов в системе;

СМО - система массового обслуживания.

1.2 ОПИСАНИЕ ЗАДАЧИ

Постановка задачи:

Пункт по ремонту радиотехники работает в режиме отказа, состоит из 4 (n) каналов обслуживания, в него поступает простейший (пуассоновский) поток заявок с интенсивностью 18 (). Интенсивность обслуживания канала - 5 (). Необходимо теоретически и практически рассчитать вероятности состояний системы, вероятность отказа, среднее время между поступлением заявок, среднее время обслуживания заявки в канале, коэффициент загрузки системы (приведенная интенсивность), относительную пропускную способность системы, абсолютную пропускную способность системы, среднее число занятых каналов.

Теоретический расчет подразумевает под собой вычисление выше приведенных величин, согласно формул для случая, когда распределение времени поступления заявок подчиняется пуассоновскому закону распределения. Необходимые формулы будут рассмотрены ниже.

В практической части необходимо построить модель системы, при условии, что время поступления заявок подчиняется пуассоновскому закону распределения, и рассчитать выше описанные величины.

Следует отметить, что теоретический расчет параметров системы для случая, когда потоки событий, переводящие систему из состояния в состояние, распределенные по закону отличному от пуассоновского, довольно сложен, т.к. на практике такой вариант встречается очень редко. Поэтому аналитические формулы для характеристик СМО удается получить только для самых простых случаев.

1.2.1 МАТЕМАТИЧЕСКОЕ ОПИСАНИЕ ЗАДАЧИ

Параметры системы:

Тип СМО: СМО с отказами

Входящий поток: пуассоновский

Интенсивность входящего потока заявок: л = 18 заявок в единицу времени

Интенсивность обслуживания канала: м = 5 заявок в единицу времени

Количество каналов обслуживания: n = 4 канала

Точность: е = 0,01

1.2.2 МЕТОД РЕШЕНИЯ

Простейшим потоком называется поток, обладающий следующими свойствами:

1. стационарность;

2. ординарность;

3. отсутствие последействия.

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

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

Ординарность означает, что поток прореженный, т.е. между любыми двумя событиями есть временной интервал.

Поток событий называется потоком без последействия, если для любых, не перекрывающихся участков времени число событий, попадающих на один из них, не зависит от числа событий, попадающих на другие.

Это означает, что заявки попадают в систему не зависимо друг от друга. Интенсивность поступления потока заявок - .

Простейшие потоки поступления заявок характеризуются показательным законом распределения.

Тогда интервал времени поступления потока заявок представляет собой случайную величину с одним и тем же распределением вероятностей F (t).

(1)

где 0 - постоянная.

Плотность распределения показательного закона задается формулой

где >0 - интенсивность поступления заявок.

Необходимо учесть, что данная система является СМО с отказами - это означает, что в момент, когда система занята (все каналы заняты), то пришедшая заявка получает отказ и покидает систему.

Если в системе свободен хотя бы один канал обслуживания, то пришедшая заявка немедленно поступает на обслуживание в этот канал.

Длительность обслуживания потока заявок также представляет собой случайную величину, подчиняющуюся показательному закону распределения.

Интенсивность обслуживания потока заявок - . Длительность обслуживания потока заявок представляет собой случайную величину с одним и тем же распределением вероятностей F (t).

где 0 - постоянная.

Плотность распределения показательного закона задается формулой:

где >0, - интенсивность обслуживания потока заявок.

Изобразим граф состояний заданной СМО:

Схема 1 - граф состояний заданной СМО

л л л л

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

м 2 м 3 м 4 м

в котором: S0 - все каналы свободны (система свободна); S1 - занят один канал; S2 - занято два канала; S3 - занято три канала; S4 - все каналы заняты (система занята)

Из свободного состояния в состояние обслуживания, систему переводит поток заявок с интенсивностью л. Тогда как освобождение каналов от обслуживания происходит по такому принципу:

Из состояния Sn в состояние Sn-1 , систему переводит интенсивность потока n*м.

Если заявка поступает в момент времени, когда система свободна или свободен хотя бы один канал обслуживания, то она немедленно поступает на обслуживание. Если же все каналы заняты, то заявка покидает систему.

1.2.3 ВЫВОД ОСНОВНЫХ ФОРМУЛ

Среднее время поступления заявок в систему:

tпост. = 1/л

Данный параметр является интервалом времени, из которого генерируется появление заявки.

Среднее время (интервал) обслуживания одной заявки одним каналом:

tобс. = 1/м

Для того чтобы узнать какое количество заявок поступит в систему за время обслуживания одной заявки, необходимо:

с = л/м

с - приведенная интенсивность или коэффициент загрузки системы.

Составим уравнения Колмогорова для данной системы:

,

,

Уравнения называться уравнениями Эрланга, в которых начальными условиями, для их решения, являются:

р0(0)=1;

р1(0)= р2(0)= р3(0)=…= рn(0)=0,

т.е. в начальный момент времени - система свободна.

Рассмотрим предельные вероятности состояний P0, P1, P2,…, Pn, которые характеризуют установившийся режим работы СМО при t - > ?.

Р1= * P0;

Р2= * P0;

Р3= * P0;

Р4= * P0;

Р0 =

Зная все вероятности системы, можно найти характеристики СМО:

Вероятность отказа:

Ротк = Р4 - т.е. все каналы заняты

Относительная пропускная способность:

q = 1 - Ротк

Абсолютная пропускная способность:

А = л*q

Важной характеристикой СМО с отказами, является среднее число занятых каналов (в данном случае оно совпадает со средним числом заявок, находящихся в системе):

k = 0*Р0+1*Р1+2*Р2+3*Р3+4*Р4 ,

или

k = А/м

2. ДЕТАЛЬНОЕ ОПИСАНИЕ ПРОГРАММЫ

Данная программа написана в среде разработки Visual C# с использованием визуальных компонентов управления.

Результирующая программа СМО.exe является полностью законченным программным продуктом. Для ее нормальной работы необходимы следующие условия:

- IBM совместимый компьютер с процессором старше 386 серии;

- Операционная система Windows `98 и выше;

-Монитор класса VGA;

2.1 ПРИНЦИП ОРГАНИЗАЦИИ ПРОГРАММЫ

Рисунок 1- программа в рабочем состоянии

Данная программа (Рисунок 1) является универсальной для данного типа задач.

Для удобства управления, введения данных, просмотра результатов, присутствует графическая часть (формы, кнопки, поля ввода, поля вывода результатов и т.п.).

Работа программы начинается с формы введения данных.

После того как данные введены, необходимо нажать на кнопку «Пуск», на форме программы, для запуска работы основной части программы.

Для просмотра отчета необходимо нажать на кнопку «Отчет», после чего появиться форма результатов работы программы с рассчитанными характеристиками СМО.

Основные переменные в программе, являются глобальными переменными. После того как пользователь ввел все необходимые данные в основном окне программы, переменным присваиваются введенные характеристики СМО.

теория массовый обслуживание канал

3. РЕЗУЛЬТАТЫ ИСПЫТАНИЯ ПРОГРАММЫ

Входящие данные:

Интенсивность входящего потока заявок: л = 18 заявок в единицу времени

Интенсивность обслуживания канала: м = 5 заявок в единицу времени

Количество каналов обслуживания: n = 4 канала

Точность: е = 0,01

3.1 РЕЗУЛЬТАТ РАСЧЕТА ТЕСТОВОЙ ЗАДАЧИ

Таблица 1 - Результат расчета

Аналитический расчет

Программа

с (коэф. нагрузки)

3,6

4,5

Ротказа

27 %

35,96 %

q (отн. пропускная способн.)

0,73

0,64

A (абс. пропускная способн.)

13,14

10,89

k (ср.число занятых каналов)

2,63

2,9

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

4. РЕЗУЛЬТАТЫ ИССЛЕДОВАНИЯ И ИХ АНАЛИЗ

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

ВЫВОДЫ

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

· вероятности состояний Pi;

· вероятность Ps

· среднее число заявок в системе Ns

· среднее число заявок в очереди Qоч.

при заданных начальных условиях :

· число каналов обслуживания n ;

· интенсивность поступления заявок ;

· интенсивность обслуживания ;

· параметр распределения случайного времени ожидания

· визуально проследить работу системы и сравнить теоретические и практические результаты расчетов.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Павловская Т.А. Программирование на языке высокого уровня С#

[электронный ресурс] - Питер, 2008 г.

2. Либерти Д. Программирование на С#. - СПб.: Символ - Плюс, 2003.- 688 с

3. Шилдт Г. С# Учебный курс. Программирование. СПб.: Питер, 2003.

4. Жибинова И.А, С.Р. Зельцер, А.Н.Жибинов, О.В.Михайлова. Оформление учебных, научных, проектных работ студентов. Методические указания.: Новокузнецк 2012.

5. Советов Б.Я., Яковлев С.А. Моделирование систем. Высшая школа, 2001. - 340 с.

6. Статистические методы для ЭВМ/ Под ред. К.Энслейна: Пер. с англ. Под ред. М.Б.Малютова.- М.:Наука. Гл.ред. физ. Мат., лит. 1986.-464с.

ПРИЛОЖЕНИЕ А

ЛИСТИНГ ПРОГРАММЫ

WorkForm.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace CMO

{

public partial class WorkForm : Form

{

private int InOrders;

private int ServiceOrders;

private int NumOfChannels;

private double Precision = 0;

private double OrderInterval;

private double ChannelInterval;

private int TotalTime;

private double CmoTime;

private ulong NumOfOrders = 0;

private ulong ServedOrders;

private int CmoPosition;

private int[] ChannelBusy;

private double[] ServiceTimeOfChannel;

private Random rand = new Random();

// функция которая преобразовывает точность для дальнейшего использования в программе и функциях

private int Precition(double e)

{

int Tochnost = 0;

if (e == 0.1)

Tochnost = 10;

if (e == 0.01)

Tochnost = 100;

if (e == 0.001)

Tochnost = 1000;

return Tochnost;

}

// Число знаков для округления исходя из точности

private int ChisloZnakov(double Prec)

{

int a = 0;

if (Prec == 0.1)

a = 1;

if (Prec == 0.01)

a = 2;

if (Prec == 0.001)

a = 3;

return a;

}

// функция которая возвращает интервал времени между заявками, либо интер. времени обслуж. канала

private double OrdersInterval(int NumOfOrders, double Tochnost)

{

int CelayaChast;

double Ostatok;

CelayaChast = Precition(Tochnost) / NumOfOrders;

Ostatok = (Precition(Tochnost) / (double)NumOfOrders - CelayaChast) * 10;

if (Ostatok >= 5)

CelayaChast++;

return (double)(CelayaChast / (double)Precition(Tochnost));

}

// генератор моментов времени

private double TimeGenerator(bool FirstOrder, double Interval, double Tochnost)

{

double NewTime;

int GenerationInterval = (int)(Interval * Precition(Tochnost) + 1);

// только если это не первая заявка

if (!FirstOrder)

{

// исключение генерации нуля => повторяющееся время

do

{

NewTime = (double)(rand.Next() % GenerationInterval) / Precition(Tochnost);

} while (NewTime == 0);

}

else

NewTime = (double)(rand.Next() % GenerationInterval) / Precition(Tochnost);

return Math.Round(NewTime,ChisloZnakov(Tochnost));

}

// проверяет наличие новой заявки

private bool NewOrder(double TimeOfCmo, double IntervalOfOrder, ulong NumberOfOrders)

{

if (TimeOfCmo >= IntervalOfOrder * (NumberOfOrders))

{

return true;

}

else return false;

}

// проверка системы в текущий момент времени

private void CmoCheck(int TotalTime, double CmoTime, int NumOfChannels)

{

int i = 0;

if (CmoPosition != 0)

{

while (i < NumOfChannels)

{

if (ChannelBusy[i] == 1)

{

if (((ServiceTimeOfChannel[i] <= CmoTime) && (CmoTime <= TotalTime)) || ((CmoTime > TotalTime) && (ServiceTimeOfChannel[i] <= TotalTime)))

{

ChannelBusy[i] = 0;

ServiceTimeOfChannel[i] = 0;

CmoPosition--;

richTextBox1.Text += (i + 1).ToString() + "-й канал обслужил заявку" + "\n";

ServedOrders++;

}

}

i++;

}

}

}

// запись заявок в каналы и генерация времени обслуживания в канале + окончание обслуживания

private void CmoWork(double CmoTime, int NumOfChannels, double ChannelInterval, double e)

{

double ChannelWorkTime;

int i = 0;

// если система свободна, то запись осуществляется в первый канал

if (CmoPosition == 0)

{

ChannelBusy[0] = 1;

ChannelWorkTime = TimeGenerator(false, ChannelInterval, e);

ServiceTimeOfChannel[0] = CmoTime + ChannelWorkTime;

CmoPosition++;

InfoOrder(CmoTime, 0, ChannelWorkTime);

}

else // иначе, идет запись в первый свободный канал

{

if (CmoPosition != NumOfChannels)

{

while (i < NumOfChannels)

{

if (ChannelBusy[i] == 0)

{

ChannelBusy[i] = 1;

ChannelWorkTime = TimeGenerator(false, ChannelInterval, e);

ServiceTimeOfChannel[i] = CmoTime + ChannelWorkTime;

CmoPosition++;

InfoOrder(CmoTime, i, ChannelWorkTime);

break;

}

i++;

}

}

else

{

richTextBox1.Text += "Заявка не может быть принята на обслуживание - КАНАЛЫ ЗАНЯТЫ" + "\n";

richTextBox1.Text += "Состояние СМО: " + CmoPosition.ToString() + "\n";

for (i = 0; i < NumOfChannels; i++)

{

richTextBox1.Text += "Состояние " + (i + 1).ToString() + "-го канала : " + Convert.ToString(ChannelBusy[i]) + "\n";

richTextBox1.Text += "Время окончания обслуживания в " + (i + 1).ToString() + " канале: " + Convert.ToString(ServiceTimeOfChannel[i]) + "\n";

}

}

}

}

// информация о поступившей заявке

private void Info(double CmoTime, ulong NumOfOrders)

{

richTextBox1.Text += "Время поступления " + NumOfOrders.ToString() + "-й заявки: " + CmoTime.ToString() + "\n";

}

private void InfoOrder(double CmoTime, int Index, double TimeOfChannel)

{

richTextBox1.Text += "Заявка принята на обслуживание: " + CmoTime.ToString() + " в " + (Index + 1).ToString() + "-й канал" + "\n";

richTextBox1.Text += "Время обслуживания заявки в канале: " + TimeOfChannel.ToString() + "\n";

richTextBox1.Text += "Время окончания обслуживания: " + ServiceTimeOfChannel[Index].ToString() + "\n";

}

// конструктор формы

public WorkForm()

{

InitializeComponent();

}

private void btnExit_Click(object sender, EventArgs e)

{

Application.Exit();

}

// ПУСК

private void btnStart_Click(object sender, EventArgs e)

{

// Считывание данных

if (TBoxOrders.Text != "" && TBoxOrderService.Text != "" && TBoxChannels.Text != "" && comboBoxPrecision.Text != "" && TBoxCmoWork.Text != "")

{

this.Enabled = false;

InOrders = Convert.ToInt32(TBoxOrders.Text);

ServiceOrders = Convert.ToInt32(TBoxOrderService.Text);

NumOfChannels = Convert.ToInt32(TBoxChannels.Text);

Precision = Convert.ToDouble(comboBoxPrecision.SelectedItem.ToString());

richTextBox1.Text = "";

int i = 0;

// установление размерности массивов

ChannelBusy = new int[NumOfChannels];

ServiceTimeOfChannel = new double[NumOfChannels];

TotalTime = Convert.ToInt32(TBoxCmoWork.Text);

// Перевод системы в первоначальное состояние (обнуление всех переменных)

CmoTime = 0;

CmoPosition = 0;

NumOfOrders = 0;

ServedOrders = 0;

while (i <= NumOfChannels - 1)

{

ChannelBusy[i] = 0;

ServiceTimeOfChannel[i] = 0;

i++;

}

// Генерация поступления первой заявки

CmoTime = TimeGenerator(true, OrderInterval, Precision);

richTextBox1.Text += "\n" + "-----------------------" + "\n";

richTextBox1.Text += "Текущее время СМО :" + CmoTime.ToString();

richTextBox1.Text += "\n" + "-----------------------" + "\n";

NumOfOrders++;

Info(CmoTime, NumOfOrders);

CmoCheck(TotalTime, CmoTime, NumOfChannels);

CmoWork(CmoTime, NumOfChannels, ChannelInterval, Precision);

// Последующая работа системы

do

{

// Генерация следующих моментов времени СМО

CmoTime = Math.Round((CmoTime + TimeGenerator(false, OrderInterval, Precision)),ChisloZnakov(Precision));

richTextBox1.Text += "\n" + "-----------------------" + "\n";

richTextBox1.Text += "Текущее время СМО :" + CmoTime.ToString();

richTextBox1.Text += "\n" + "-----------------------" + "\n";

// Проверка системы в текущий момент времени

CmoCheck(TotalTime, CmoTime, NumOfChannels);

// Появление новой заявки

if ((NewOrder(CmoTime, OrderInterval, NumOfOrders)) && (CmoTime <= TotalTime))

{

NumOfOrders++;

Info(CmoTime, NumOfOrders);

CmoWork(CmoTime, NumOfChannels, ChannelInterval, Precision);

}

} while (CmoTime < TotalTime);

richTextBox1.Text += "Количество поступивших заявок: " + NumOfOrders.ToString() + "\n";

richTextBox1.Text += "Количество обслуженных заявок: " + ServedOrders.ToString() + "\n";

this.Enabled = true;

this.Focus();

btnResult.Enabled = true;

}

else MessageBox.Show("Все поля обязательны для заполнения!");

}

// проверка вводимых значений

private bool Check(string Txt)

{

try

{

Convert.ToInt32(Txt);

}

catch (Exception)

{

MessageBox.Show("Вводимое значение должно быть целым числом");

return false;

}

return true;

}

// ввод входящего потока

private void TBoxOrders_TextChanged(object sender, EventArgs e)

{

TBoxOrderService.Enabled = true;

}

// ввод интенсивности обслуживания

private void TBoxOrderService_TextChanged(object sender, EventArgs e)

{

TBoxChannels.Enabled = true;

}

// ввод количества каналов

private void TBoxChannels_TextChanged(object sender, EventArgs e)

{

TBoxCmoWork.Enabled = true;

}

// выбор точности

private void comboBoxPrecision_TextChanged(object sender, EventArgs e)

{

Precision = Convert.ToDouble(comboBoxPrecision.SelectedItem.ToString());

TBoxOrders.Enabled = true;

}

// завершение ввода входящего потока

private void TBoxOrders_Leave(object sender, EventArgs e)

{

if (TBoxOrders.Text != ""&&(btnExit.ContainsFocus==false))

{

if (Check(TBoxOrders.Text))

{

InOrders = Convert.ToInt32(TBoxOrders.Text);

OrderInterval = OrdersInterval(InOrders, Precision);

labelOrdersInterval.Text = OrderInterval.ToString()+" ед.вр.";

}

else TBoxOrders.Focus();

}

}

// завершение ввода интенсивности обслуживания

private void TBoxOrderService_Leave(object sender, EventArgs e)

{

if (TBoxOrderService.Text != "" && (btnExit.ContainsFocus == false))

{

if (Check(TBoxOrderService.Text))

{

ServiceOrders = Convert.ToInt32(TBoxOrderService.Text);

ChannelInterval = OrdersInterval(ServiceOrders, Precision);

labelChannelInterval.Text = ChannelInterval.ToString() + " ед.вр.";

}

else TBoxOrderService.Focus();

}

}

// завершение ввода количества каналов

private void TBoxChannels_Leave(object sender, EventArgs e)

{

if (TBoxChannels.Text != "" && (btnExit.ContainsFocus == false))

{

if (Check(TBoxChannels.Text))

{

NumOfChannels = Convert.ToInt32(TBoxChannels.Text);

}

else TBoxChannels.Focus();

}

}

// ОТЧЕТ

private void btnResult_Click(object sender, EventArgs e)

{

ResultForm FResult = new ResultForm(this,NumOfChannels,Precision,TotalTime,NumOfOrders,ServedOrders);

FResult.Show();

}

private void WorkForm_Load(object sender, EventArgs e)

{

btnResult.Enabled = false;

}

}

}

ResultForm.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace CMO

{

public partial class ResultForm : Form

{

private Form MForm;

private double inOrders;

private double ordersInService;

private int numOfChannels;

private double precision;

private double ordersInterval;

private double channelsInterval;

private int workTime;

private ulong totalInOrders;

private ulong servedOrders;

//------------------------

private double koefNagruzki;

private double otkaz;

private double otnSposob;

private double absolSposob;

private double zanyatKanaly;

private double Po;

//------------------------

public ResultForm(Form MainF, int NumChan,double Prec, int TotTime,ulong TotOrd,ulong ServOrd)

{

this.MForm = MainF;

numOfChannels = NumChan;

precision = Prec;

workTime = TotTime;

totalInOrders = TotOrd;

servedOrders = ServOrd;

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

MForm.Enabled = true;

ResultForm.ActiveForm.Close();

}

private void ResultForm_Load(object sender, EventArgs e)

{

int i = 0;

double[] P=new double[numOfChannels+1];

dataGridView1.ColumnCount=numOfChannels+1;

string[] row = new string[numOfChannels + 1];

MForm.Enabled = false;

// Расчеты

// Расчет ср. числа потупивших заявок в ед. времени (Лямда)

inOrders = totalInOrders / (double)workTime;

// Расчет ср. числа обслужваемых заявок одним каналом (Мю)

ordersInService = (servedOrders / (double)workTime) / (double)numOfChannels;

// Расчет ср. интервала времени между поступл. заявок

ordersInterval = 1 / inOrders;

// Расчет срю интервала времени обслуживания канала

channelsInterval = 1 / ordersInService;

// Коеффициент загрузки

koefNagruzki = inOrders / ordersInService;

// Р0

Po = 1 / (1 + Sum(koefNagruzki, numOfChannels));

// Вероятность отказа

otkaz = ((Stepen(koefNagruzki, numOfChannels) / Factor(numOfChannels)) * Po);

// Относительная пропускная способность

otnSposob = 1 - otkaz;

// Абсолютная пропускная способность

absolSposob = (totalInOrders / (double)workTime) * otnSposob;

// Число занятых каналов

zanyatKanaly = absolSposob / (double)((servedOrders / (double)workTime) / (double)numOfChannels);

// Вывод на форму

labelInOrders.Text = Math.Round(inOrders,ChisloZnakov(precision)).ToString()+" заявок в ед.вр.";

labelServiceOrders.Text = Math.Round(ordersInService, ChisloZnakov(precision)).ToString() + " заявок в ед.вр.";

labelNumOfChannels.Text = numOfChannels.ToString();

labelPrecision.Text = precision.ToString();

labelOrdersInterval.Text = Math.Round(ordersInterval, ChisloZnakov(precision)).ToString() + " ед.вр.";

labelChannelsInterval.Text = Math.Round(channelsInterval, ChisloZnakov(precision)).ToString() + " ед.вр.";

labelWorkTime.Text = workTime.ToString() + " ед.вр.";

labelTotalOrders.Text = totalInOrders.ToString() + " заявок";

labelServedOrders.Text = servedOrders.ToString() + " заявок";

labelZagruzka.Text = Math.Round(koefNagruzki, ChisloZnakov(precision)).ToString() + " заявок";

labelOtkaz.Text = (Math.Round(otkaz * 100, ChisloZnakov(precision))).ToString() + " %";

labelOtnPropusk.Text = (Math.Round(otnSposob * 100, ChisloZnakov(precision))).ToString() + " %";

labelAbsPropusk.Text = (Math.Round(absolSposob, ChisloZnakov(precision))).ToString() + " заявок";

labelZanChannels.Text = (Math.Round(zanyatKanaly,ChisloZnakov(precision))).ToString();

// Вероятности состояния системы

while (i <= numOfChannels)

{

if (i == 0)

{

P[i] = Po; dataGridView1.Columns[i].Name = "P" + i.ToString();

row[i] = Math.Round(P[i] * 100, ChisloZnakov(precision)).ToString() + " %";

}

else

{

P[i] = (Stepen(koefNagruzki, i) / Factor(i)) * Po;

dataGridView1.Columns[i].Name = "P" + i.ToString();

row[i] = Math.Round(P[i] * 100, ChisloZnakov(precision)).ToString() + " %";

}

i++;

}

dataGridView1.Rows.Add(row);

}

// Сумма в знаменателе для расчета Ро

private double Sum(double ro, int numChan)

{

double summa = 0;

int n=1;

while (n <= numChan)

{

summa = summa + Stepen(ro,n) / (double)Factor(n);

n++;

}

return summa;

}

// Факториал

private ulong Factor(int num)

{

ulong factor = 1;

int n=0;

while (n <= num)

{

if ((n == 0) || (n == 1))

return 1;

else

factor = factor * (ulong)n;

n++;

}

return factor;

}

// Возведение в степень

private double Stepen(double X, int step)

{

int n=1;

double result=X;

if (X == 0)

return 0;

if (X == 1)

return 1;

if (step == 1)

return X;

if (step == 0)

return 1;

while (n <= step)

{

if (n>1)

result = result * X;

n++;

}

return result;

}

// Число знаков после запятой для округления

private int ChisloZnakov(double Prec)

{

int a=0;

if (Prec == 0.1)

a = 1;

if (Prec == 0.01)

a = 2;

if (Prec == 0.001)

a = 3;

return a;

}

}

}

ПРИЛОЖЕНИЕ Б

ЛАБОРАТОРНАЯ РАБОТА №1

Математические схемы.

Непрерывно-детерминированные модели:

моделирование с использованием

типовых звеньев ТАР\ТАУ

Цель: Оценить реакцию модели на наборы типовых воздействий.

Построение концептуальной модели (описание модели, входов, выходов).

Исходные данные:

1. Модель канала регулирования в виде инерционного звена первого порядка с запаздыванием

(1)

где Т = (9 ± 3) час - постоянная времени инерции; ф = (3±3) час - запаздывание; k = (1,0 ± 0,2) - коэффициент передачи. Первая цифра в скобках - базовый уровень факторов; цифра после знаков (±) - верхний и нижний уровни факторов (+1 и -1 в нормированном пространстве соответственно)

2.Типовые входные воздействия V(t) - ступенчатое, импульсное, синусоидальное, в виде случайного сигнала с нормальным законом распределения.

Требуется:

1. Заменив дифференциал из (1) конечной разностью (2) вида

(2)

привести выражение (1) к дискретному виду, пригодному для программирования.

В (2) обозначено: i, i+1 - моменты отсчета времени (или, что то же самое - моменты контроля выходной величины y); ?t = 0,1 Т - интервал дискретизации времени.

Запаздывание приводится к дискретному виду через очевидное соотношение: дф = ф\Дt.

При моделировании запаздывание учитывается сдвижкой выходной переменной относительного входного сигнала на число отсчетов, равное дф.

2. По матрице табл. 1 выбрать параметры модели для «своего» варианта опытов. Номер строки табл. 1 соответствует месту исполнителя в списке группы.

3. Составить алгоритм, программу и рассчитать реакцию модели (1) при выбранных параметрах на ступенчатое, импульсное, синусоидальное и случайное воздействие. Необходимые воздействия генерировать из условий: диапазон изменения ± 1 (отн.); длительность воздействия ? 3Т; статистические параметры случайного воздействия - произвольные.

Таблица 1 - Поле комбинаций настроечных параметров

№№ вариантов

Нормированные уровни факторов

Время инерции

Запаздывание

Коэффициент передачи

ххх

6

+1

-1

+1

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Рисунок 1 - Примеры типовых входных воздействий

Реализация:

1). В данной работе используется модель в виде дифференциального уравнения, описывающего последовательное соединение инерционного звена первого порядка с запаздыванием. Такая модель относится к непрерывно-детерминированным математическим схемам и хорошо подходит для описания большинства технологических объектов управления.

2). Типовые входные сигналы

T=

12

+

тау=

0

-

k=

1,2

+

dt=

1,2

v=

1

где Т = (12 ± 3) час - постоянная времени инерции; ф = (0±3) час - запаздывание; k = (1,2 ± 0,2) - коэффициент передачи

3). Представление данных в табличной форме

i

ступень

v

импульс

1

0

0

0

2

0

0

0

3

0

0

0

4

0

0

0

5

0

0

0

6

0

0

0

7

0,12

1

0,12

8

0,228

0

0,108

9

0,3252

0

0,0972

10

0,41268

0

0,08748

11

0,491412

0

0,078732

12

0,562271

0

0,070859

13

0,626044

0

0,063773

14

0,683439

0

0,057396

15

0,735095

0

0,051656

16

0,781586

0

0,04649

17

0,823427

0

0,041841

18

0,861085

0

0,037657

19

0,894976

0

0,033892

20

0,925478

0

0,030502

21

0,952931

0

0,027452

22

0,977638

0

0,024707

23

0,999874

0

0,022236

24

1,019886

0

0,020013

25

1,037898

0

0,018011

26

1,054108

0

0,01621

27

1,068697

0

0,014589

28

1,081827

0

0,01313

29

1,093645

0

0,011817

30

1,10428

0

0,010636

31

1,113852

0

0,009572

32

1,122467

0

0,008615

33

1,13022

0

0,007753

34

1,137198

0

0,006978

35

1,143478

0

0,00628

36

1,149131

0

0,005652

37

1,154218

0

0,005087

38

1,158796

0

0,004578

39

1,162916

0

0,00412

40

1,166625

0

0,003708

41

1,169962

0

0,003338

42

1,172966

0

0,003004

43

1,175669

0

0,002703

44

1,178102

0

0,002433

45

1,180292

0

0,00219

46

1,182263

0

0,001971

47

1,184037

0

0,001774

48

1,185633

0

0,001596

49

1,18707

0

0,001437

50

1,188363

0

0,001293

51

1,189526

0

0,001164

52

1,190574

0

0,001047

53

1,191516

0

0,000943

54

1,192365

0

0,000848

55

1,193128

0

0,000764

56

1,193815

0

0,000687

57

1,194434

0

0,000618

58

1,194991

0

0,000557

59

1,195491

0

0,000501

60

1,195942

0

0,000451

61

1,196348

0

0,000406

62

1,196713

0

0,000365

63

1,197042

0

0,000329

64

1,197338

0

0,000296

65

1,197604

0

0,000266

66

1,197844

0

0,00024

67

1,198059

0

0,000216

68

1,198253

0

0,000194

69

1,198428

0

0,000175

70

1,198585

0

0,000157

71

1,198727

0

0,000141

72

1,198854

0

0,000127

73

1,198969

0

0,000115

74

1,199072

0

0,000103

75

1,199165

0

9,28E-05

76

1,199248

0

8,35E-05

77

1,199323

0

7,52E-05

78

1,199391

0

6,77E-05

79

1,199452

0

6,09E-05

80

1,199507

0

5,48E-05

81

1,199556

0

4,93E-05

82

1,1996

0

4,44E-05

83

1,19964

0

4E-05

84

1,199676

0

3,6E-05

85

1,199709

0

3,24E-05

86

1,199738

0

2,91E-05

87

1,199764

0

2,62E-05

88

1,199788

0

2,36E-05

89

1,199809

0

2,12E-05

90

1,199828

0

1,91E-05

91

1,199845

0

1,72E-05

92

1,199861

0

1,55E-05

93

1,199875

0

1,39E-05

94

1,199887

0

1,25E-05

95

1,199898

0

1,13E-05

96

1,199909

0

1,02E-05

97

1,199918

0

9,14E-06

98

1,199926

0

8,23E-06

99

1,199933

0

7,4E-06

100

1,19994

0

6,66E-06

4). Представление данных в графической форме

ПРИЛОЖЕНИЕ В

ЛАБОРАТОРНАЯ РАБОТА № 2

Технология имитационного моделирования.

Разработка комплекса алгоритмов и программ

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

Моделирование доменной плавки по каналу "влажность дутья - содержание кремния в чугуне".

Цель: Определение зависимости показателей доменной плавки (содержание кремния в чугуне) от имитируемой влажности дутья.

Дано:

1. Реализация натурной (реализованной на действующем агрегате) влажности дутья (входное воздействие) и соответствующее ей содержание кремния в чугуне (выход), где номер выпуска чугуна из доменной печи i =1,2,…,N

2. Реализация имитируемой влажности дутья, вырабатываемая в ходе моделирования изучаемой или проверяемой подсистемой (например, алгоритмом регулирования): имитируемая влажность дутья на каждом выпуске принимает значения.

3. Математическая модель (частичная) канала “” в приращениях к фактическим уровням соответствующих переменных в виде последовательного соединения инерционного звена первого порядка и звена запаздывания со значениями динамических параметро

часа; часа.

Для перехода к разностному уравнению рассчитаем коэффициенты C1 и C2 при выбранном интервале дискретизации Д=1.5 час (в соответствии с частотой поступления информации о содержании кремния в чугуне по выпускам). Отсюда

;

Запаздывание учитывается за счет сдвига графиков - реализации и друг относительно друга на соответствующую величину, как это сделано на рис.3.2.

Требуется:

Определить содержание кремния в чугуне (имитируемое) при заданных значениях имитируемой влажности на интервале в N выпусков.

Таблица 1 - Исходные данные

T=

3

с1=1-dt/T

0,5

k=

-0,025

c2=k*dt/T

-0,0125

t=

0,5

Реализация

Таблица 2 - результаты расчета

№№

п/п

1

2

3

4

5

6

7

0

0,83

24

28

-4

0,00

0,83

1

1,02

24

29

-5

0,05

0,97

2

0,75

28

27

1

0,09

0,66

3

0,71

24

26

-2

0,03

0,68

4

0,85

24

25

-1

0,04

0,81

5

0,64

22

24

-2

0,03

0,61

6

0,60

22

23

-1

0,04

0,56

7

0,72

20

22

-2

0,03

0,69

8

0,90

20

21

-1

0,04

0,86

9

1,04

20

22

-2

0,03

1,01

10

0,98

-

-

-

0,04

0,94

Таблица 2 заполняется следующим образом.

В столбцы 2 и 3 заносятся фактические значения переменных и , в столбец 4 - имитируемое входное воздействие. Для заполнения столбца 5 выполняется операция , а столбца 6 - операция

Запись означает, что при расчетах следует взять значения переменных из предыдущей строки.

В столбец 7 заносится алгебраическая сумма, составленная в соответствии с выражением

При i=0 в столбец 6 заносится . Это означает, что моделирование начинается с фактического значения выходной переменной , i=0. Искомая реализация представлена на рисунке 1.

Рисунок 1 - Реализации натурных и модельных переменных

ПРИЛОЖЕНИЕ Г

ЛАБОРАТОРНАЯ РАБОТА № 3

Моделирование случайных чисел.

Исследование алгоритмов обработки временных рядов данных.

Цель:

1. Практическое ознакомление с помехозащищенными алгоритмами обработки временных рядов данных, методиками их настройки и исследования качества.

2. Формирование навыков оформления и представления результатов НИР.

Постановка задачи. Исходные условия и данные:

1. Задан временной ряд данных (ВРД) с моделью следующего вида:

, где (1)

2. Заданы исследуемые алгоритмы обработки ВРД:

а). релейно-экспоненциального сглаживания

, где … (3)

3. Критерий оценки качества сглаживания - среднемодульный

, где … (4)

Требуется:

С помощью программы «Батенев» или самостоятельно разработанной программы сгенерировать ВРД, соответствующий модели (1). Примечание: Ограничения на свойства полезного сигнала, нормальных помех и выбросов определяются только возможностями генерирующей программы и воображением исследователя (в данном конкретном случае)

С использованием схемы ПФЭ, исследовать качество оценивания полезного сигнала с использованием РЭС II; построить графические зависимости качества сглаживания от вариации настроек фильтров

С использованием схемы ПСМ, осуществить оптимизацию настроек РЭС II по критерию (4);

Реализация:

1. Объект исследования - сглаживающий фильтр РЭС II (релейно-экспоненциальный 2-го порядка) с настроечными коэффициентами (параметрами) «альфа» и «бета»

2. Модель контролируемого сигнала - см. п.1 «Исходных данных»

3. Критерий качества оценивания полезного сигнала в виде средне-модульного отклонения; см. п.4 «Исходных данных», тема 1

4. Модель объекта исследования в виде

(*)

где f(х) -- функция отклика (неслучайная функция факторов); е(х) -- ошибка эксперимента (случайная величина); х -- точка в факторном пространстве (определенное сочетание уровней факторов).

5. Матрица (план) полного факторного эксперимента mn , где n - число варьируемых факторов (принять равным 3); m - число уровней варьирования каждого из факторов (принять равным 2)

6. Варьируемые факторы: любые, из возможных параметров шума, которыми можно управлять в программе-генераторе сигналов

Таблица 1 - Матрица полного факторного эксперимента

Номер опыта

Фактор х1

Фактор х2

Фактор х3

Функция отклика

1

+1

+1

+1

y11,y12,y13

y1ср

2

+1

+1

-1

Y2

3

+1

-1

+1

Y3

4

+1

-1

-1

Y4

5

-1

+1

+1

Y5

6

-1

+1

-1

Y6

7

-1

-1

+1

Y7

8

-1

-1

-1

Y8

Номер опыта

Фактор х1

Фактор х2

Фактор х3

Функция отклика

1

норм

0,5

2,0

0,179

0,166

0,168

0,151

2

норм

0,5

0,5

0,142

0,142

0,145

0,138

3

норм

0,0

2,0

0,058

0,056

0,051

0,058

4

норм

0,0

0,5

0,009

0,014

0,015

0,018

5

равн

0,5

2,0

0,186

0,193

0,205

0,188

6

равн

0,5

0,5

0,152

0,175

0,174

0,199

7

равн

0,0

2,0

0,121

0,117

0,105

0,125

8

равн

0,0

0,5

0,026

0,027

0,031

0,024

Размещено на Allbest.ru


Подобные документы

  • Определение характеристик системы массового обслуживания – вероятность обслуживания заявки, занятости любого канала системы, среднее число занятых каналов. Описание блок-схемы алгоритма. Разработка имитационной и аналитической моделей и их сравнение.

    курсовая работа [860,4 K], добавлен 24.12.2013

  • Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.

    курсовая работа [487,4 K], добавлен 18.12.2014

  • Имитационное моделирование как один из наиболее широко используемых методов при решении задач анализа и синтеза сложных систем. Особенности имитационного моделирования систем массового обслуживания. Анализ структурной схемы системы передачи пакетов.

    курсовая работа [1,2 M], добавлен 28.05.2013

  • Основные подходы при построении математических моделей процессов функционирования систем. Применение непрерывно-стохастического подхода для формализации процессов обслуживания. Функции моделирующего алгоритма. Использование языков программирования.

    контрольная работа [262,7 K], добавлен 04.06.2011

  • Основные сведение о системе моделирования GPSS и блоки, используемые при моделировании одноканальных и многоканальных систем массового обслуживания. Разработка модели работы ремонтного подразделения в течение суток с использованием программы GPSS World.

    курсовая работа [36,4 K], добавлен 11.02.2015

  • Характеристика системы массового обслуживания, куда поступают заявки обслуживания. Особенности моделирования системы массового обслуживания. Имитация работы системы массового обслуживания с относительными приоритетами. Отчеты полного факторного плана.

    курсовая работа [1,1 M], добавлен 14.07.2012

  • Торговый центр как однофазная многоканальная система с одной очередью конечной длины Структура и элементы моделей системы массового обслуживания. Очередь и дисциплины ее обслуживания. Принципы и этапы моделирования средств массового обслуживания на ЭВМ.

    лабораторная работа [93,2 K], добавлен 04.06.2009

  • Построение модели системы массового обслуживания с помощью ЭВМ с использованием методов имитационного моделирования. Моделирование проводилось с помощью GPSS World Student version, позволяющего достоверно воссоздать систему массового обслуживания.

    курсовая работа [555,7 K], добавлен 29.06.2011

  • Моделирование как основная функция вычислительных систем. Разработка концептуальной модели для системы массового обслуживания и ее формализация. Аналитический расчет и алгоритмизация модели, построение блок-диаграмм. Разработка и кодирование программы.

    курсовая работа [164,8 K], добавлен 18.12.2011

  • Система GPSS World как мощная универсальная среда моделирования как дискретных, так и непрерывных процессов, предназначенная для профессионального моделирования самых разнообразных процессов и систем. Системы массового обслуживания. Листинг программы.

    курсовая работа [499,6 K], добавлен 25.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.