DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ Звіт До лабораторної роботи № 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); } } } Результат виконання завдання: Висновок: в даній роботі я навчився формувати реалізації випадкових потоків однорідних подій із заданим законом розподілу, необхідних для моделювання виробничої системи з використанням моделі у вигляді системи масового обслуговування. Я реалізував моделюючий алгоритм імітаційного моделювання системи масового обслуговування, що представляє виробничу систему та провів імітаційне моделювання системи масового обслуговування і статистичний аналіз результатів моделювання.
Антиботан аватар за замовчуванням

2015

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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