Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ
Звіт
До лабораторної роботи № 3
На тему: “ Імітаційне моделювання виробничих систем з використанням моделей систем масового обслуговування ”
З дисципліни : "Моделювання програмного забезпечення"
Мета роботи:
Сформувати реалізації випадкових потоків однорідних подій із заданим законом розподілу, необхідних для моделювання виробничої системи з використанням моделі у вигляді системи масового обслуговування.
Реалізувати моделюючий алгоритм імітаційного моделювання системи масового обслуговування, що представляє виробничу систему.
Провести імітаційне моделювання системи масового обслуговування і статистичний аналіз результатів моделювання.
Код програми
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Windows.Forms;
namespace Lab3_MPZ
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
class Zajavku
{
protected Random Rand;
protected double L, Last;
public double MaxElem { get;set;}
protected List<double> posl;
public List<double> Posl
{
get { return posl; }
set { ;}
}
public Zajavku(int nL)
{
L = nL;
MaxElem = 0;
Rand = new Random((int)DateTime.Now.Ticks);
posl = new List<double>();
Last = 0;
}
public double Next()
{
double Xi = (double)Rand.Next() / int.MaxValue;
Last += ((-1.0) / L) * Math.Log(1 - Xi);
posl.Add(Last);
return Last;
}
public double NextElement()
{
double Xi = (double)Rand.Next() / int.MaxValue;
return (((-1.0) / L) * Math.Log(1 - Xi));
}
}
private void button2_Click(object sender, EventArgs e)
{
Zajavku Come;
Zajavku Wait;
Zajavku Work;
double T;
T = double.Parse(textBox1.Text);
int L;
L = int.Parse(textBox2.Text);
// час очікування приходу і роботи
Come = new Zajavku(L);
Wait = new Zajavku(L);
Work = new Zajavku(L);
int Prujniati = 0;
int Vidhuleni= 0;
double Tj = 0, Tzv = 0, TMaxWait = 0, Tbegin = 0, Twork = 0, Twait = 0;
do
{
Tj = Come.Next();
if(Tj < T)
{ if(Tj < Tzv)
{ TMaxWait = Wait.NextElement();
if( (Tj+TMaxWait) < Tzv)
{
Vidhuleni++;
continue; }
else
{Twork = Work.NextElement();
if ( (Tzv + Twork) < T)
{ Tbegin = Tzv;
Tzv = Tbegin + Twork;
Prujniati++;
Twait += (Tbegin - Tj);
continue; }
else
{
Vidhuleni++;
continue;}}}
else
{ Twork = Work.NextElement();
if ((Tj + Twork) < T)
{ Tbegin = Tj;
Tzv = Tbegin + Twork;
Prujniati++;
Twait += (Tbegin - Tj);
continue;}
else
{
Vidhuleni++;
continue;}
} }
else
{
break;}}
while(true);
textBox3.Text = Prujniati.ToString();
textBox4.Text = Vidhuleni.ToString();
textBox5.Text = (Twait / (double)Prujniati).ToString();
textBox6.Text = ((double)Vidhuleni / (double)(Prujniati + Vidhuleni) * 100).ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Close();
}
}
}
Результат виконання завдання:
Висновок: в даній роботі я навчився формувати реалізації випадкових потоків однорідних подій із заданим законом розподілу, необхідних для моделювання виробничої системи з використанням моделі у вигляді системи масового обслуговування. Реалізував моделюючий алгоритм імітаційного моделювання системи масового обслуговування, що представляє виробничу систему та провів імітаційне моделювання системи масового обслуговування і статистичний аналіз результатів моделювання.