Імітаційне моделювання виробничих систем з використанням моделей систем масового обслуговування

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2009
Тип роботи:
Звіт
Предмет:
Моделювання
Група:
ПІ

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ Звіт До лабораторної роботи № 3 На тему: “ Імітаційне моделювання виробничих систем з використанням моделей систем масового обслуговування ” З дисципліни : "Моделювання програмного забезпечення" Мета роботи: Сформувати реалізації випадкових потоків однорідних подій із заданим законом розподілу, необхідних для моделювання виробничої системи з використанням моделі у вигляді системи масового обслуговування. Реалізувати моделюючий алгоритм імітаційного моделювання системи масового обслуговування, що представляє виробничу систему. Провести імітаційне моделювання системи масового обслуговування і статистичний аналіз результатів моделювання. Код програми using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lab3_MPZ { class ExponentDistribution { protected Random Rand; protected double L; protected double Last; protected double maxElem; public double MaxElem { get { return maxElem; } set { maxElem = value; } } protected List<double> sequence; public List<double> Sequence { get { return sequence; } set { ;} } protected ExponentDistribution() { } public ExponentDistribution(int nL) { L = nL; MaxElem = 0; Rand = new Random((int)DateTime.Now.Ticks); sequence = new List<double>(); Last = 0; } public ExponentDistribution(int nL, int nMaxElem) { L = nL; MaxElem = nMaxElem; Rand = new Random((int)DateTime.Now.Ticks); sequence = new List<double>(); Last = 0; } public virtual double Next() { double Xi = (double)Rand.Next() / int.MaxValue; Last += ((-1.0) / L) * Math.Log(1 - Xi); Sequence.Add(Last); return Last; } public virtual double NextElement() { double Xi = (double)Rand.Next() / int.MaxValue; return (((-1.0) / L) * Math.Log(1 - Xi)); } public double this[int pos] { get { if (pos <= (Sequence.Count - 1)) return Sequence[pos]; else return Sequence[Sequence.Count - 1]; } } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Lab3_MPZ { class EvenDistribution : ExponentDistribution { protected double B; public EvenDistribution(int nL) : base(nL) { B = 2.0 / L; } public EvenDistribution(int nL, int nMaxElem) : base(nL, nMaxElem) { B = 2.0 / L; } public override double Next() { double Xi = (double)Rand.Next() / int.MaxValue; Last += B * Xi; Sequence.Add(Last); return Last; } public override double NextElement() { double Xi = (double)Rand.Next() / int.MaxValue; return (B * Xi); } } } 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 Lab3_MPZ { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void ModelingButton_Click(object sender, EventArgs e) { ExponentDistribution ComeTime; ExponentDistribution WaitTime; ExponentDistribution WorkTime; double T; try { T = double.Parse(TInputBox.Text); } catch { MessageBox.Show("Помилка при введенні часу функціонування системи"); TInputBox.Text = ""; return; } int L; try { L = int.Parse(LInput.Text); } catch { MessageBox.Show("Помилка при введенні L"); LInput.Text = ""; return; } if (ComeExponent.Checked) ComeTime = new ExponentDistribution(L); else ComeTime = new EvenDistribution(L); if (WaitExponent.Checked) WaitTime = new ExponentDistribution(L); else WaitTime = new EvenDistribution(L); if (WorkExponent.Checked) WorkTime = new ExponentDistribution(L); else WorkTime = new EvenDistribution(L); int NAccepted = 0; int NDenied = 0; double Tj = 0; double Tzv = 0; double TMaxWait = 0; double Tbegin = 0; double Twork = 0; double Twait = 0; do { Tj = ComeTime.Next(); if(Tj < T) { if(Tj < Tzv) { TMaxWait = WaitTime.NextElement(); if( (Tj+TMaxWait) < Tzv) { NDenied++; continue; } else { Twork = WorkTime.NextElement(); if ( (Tzv + Twork) < T) { Tbegin = Tzv; Tzv = Tbegin + Twork; NAccepted++; Twait += (Tbegin - Tj); continue; } else { NDenied++; continue; } } } else { Twork = WorkTime.NextElement(); if ((Tj + Twork) < T) { Tbegin = Tj; Tzv = Tbegin + Twork; NAccepted++; Twait += (Tbegin - Tj); continue; } else { NDenied++; continue; } } } else { break; } } while(true); OutputBox.Text = string.Format("Виконано заявок : {0}\r\nВідхилено заявок : {1}\r\nСередній час очікування в черзі : {2}" + "\r\n\r\nПроцент відкидання заявок : {3:F2}%", NAccepted, NDenied, Twait / (double)NAccepted, (double)NDenied / (double)(NAccepted + NDenied) * 100); } } } Результат виконання завдання: Висновок: в даній роботі я навчився формувати реалізації випадкових потоків однорідних подій із заданим законом розподілу, необхідних для моделювання виробничої системи з використанням моделі у вигляді системи масового обслуговування. Я реалізував моделюючий алгоритм імітаційного моделювання системи масового обслуговування, що представляє виробничу систему та провів імітаційне моделювання системи масового обслуговування і статистичний аналіз результатів моделювання.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!