Смекни!
smekni.com

Имитационное моделирование системы массового обслуживания (стр. 7 из 7)

{

if (chislo_progonov>1) button1.Enabled = true;

richTextBox1.Clear();

richTextBox1.Text += " Показатели эффективности: \n";

work.SetDefaults();

work.chislo_kanalov_in_system = n;

work.Max_dlina_ocheredi = m;

work.Lamda = (double)numericUpDown1.Value;

work.Mu = (double)numericUpDown2.Value;

work.shag_by_time = (double)numericUpDown3.Value;

double Time = (double)numericUpDown4.Value;

while (work.t_rab_sistem < Time)

{

work.modelirovanie_sustem();

}

richTextBox1.Text += "Поступило заявок: &bsol;t&bsol;t&bsol;t" + work.chislo_post_zaijavok.ToString() + "&bsol;n";

richTextBox1.Text += "Очередь: &bsol;t&bsol;t&bsol;t&bsol;t" + work.Dlina_ocheredi.ToString() + "&bsol;n";

richTextBox1.Text += "Отклонено заявок: &bsol;t&bsol;t&bsol;t" + work.chislo_otkaz_zaijavok.ToString() + "&bsol;n";

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

double ver_otcaza = work.t_v_sostoijaniax_s_ocher[work.Max_dlina_ocheredi - 1] / work.t_rab_sistem;

P.Add(ver_otcaza);

richTextBox1.Text += "Вероятность отказа, Ротк: &bsol;t&bsol;t&bsol;t" + ver_otcaza.ToString() + "&bsol;n";

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

double otnos_prop_spos = 1 - ver_otcaza;

Q.Add(otnos_prop_spos);

richTextBox1.Text += "Относительная пропускная способность, Q: &bsol;t" + otnos_prop_spos.ToString() + "&bsol;n";

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

double absol_prop_spos = work.Lamda * otnos_prop_spos;

A.Add(absol_prop_spos);

richTextBox1.Text += "Абсолютная пропускная способность, A: &bsol;t" + absol_prop_spos.ToString() +"&bsol;n";

// Длина очереди

double dlina_ocheredi = 0;

for (int i = 0; i < work.Max_dlina_ocheredi; i++)

{

dlina_ocheredi += (i + 1) * (work.t_v_sostoijaniax_s_ocher[i] / work.t_rab_sistem);

}

Lo.Add(dlina_ocheredi);

richTextBox1.Text += "Ср длина очереди, L&bsol;x03BF: &bsol;t&bsol;t&bsol;t" + dlina_ocheredi.ToString() + "&bsol;n";

// Ср время пребывания заявки в очереди

double sr_t_preb_v_ocheredi = dlina_ocheredi / work.Lamda;

To.Add(sr_t_preb_v_ocheredi);

richTextBox1.Text += "Ср время преб-ия з. в очереди, T&bsol;x03BF, c: &bsol;t" + sr_t_preb_v_ocheredi.ToString()+"&bsol;n";

// Ср число занятых каналов

double sr_chislo_zan_can_k = absol_prop_spos / work.Mu;

K.Add(sr_chislo_zan_can_k);

richTextBox1.Text += "Ср число занятых каналов, k: &bsol;t&bsol;t" + sr_chislo_zan_can_k.ToString() + "&bsol;n";

// % отказанных заявок

double curPercents_otkaz = ((double)work.chislo_otkaz_zaijavok / (double)work.chislo_post_zaijavok) * 100d;

Percents_otkaz.Add(curPercents_otkaz);

richTextBox1.Text += "% отказанных заявок: &bsol;t&bsol;t&bsol;t" + curPercents_otkaz.ToString() + "&bsol;n";

// % обслуженных заявок

double absol_prop_sposcceptedPercents = ((double)work.chislo_obslu_zaijavok / (double)work.chislo_post_zaijavok) * 100d;

Percents_Prin.Add(absol_prop_sposcceptedPercents);

richTextBox1.Text += "% обслуженных заявок: &bsol;t&bsol;t&bsol;t" + absol_prop_sposcceptedPercents.ToString() + "&bsol;n";

// Число прогонов

chislo_progonov++;

vivod_chisla_pasch.Text = chislo_progonov.ToString();

/* if (chislo_progonov > 1)

{ RasStatistici_Click(); }*/

}

// 222222222222222 доверительные интервалы 222222222222222222222222222222222222222222222222

private void button1_Click(object sender, EventArgs e)

{

richTextBox1.Text += "&bsol;n Доверительные интервалы: &bsol;n";

double sredn_Potk = 0, sredn_Q = 0, sredn_A = 0, sredn_Lo = 0, sredn_do = 0, sredn_K = 0,

sredn_Percents_otkaz = 0, sredn_Percents_Prin = 0;

double sum_Potk = 0, sum_Q = 0, sum_A = 0, sum_Lo = 0, sum_do = 0, sum_K = 0,

sum_Percents_otkaz = 0, sum_Percents_Prin = 0;

double Potk_ot = 0, Potk_do = 0, Q_ot = 0, Q_do = 0, A_ot = 0, A_do = 0,

Lo_ot = 0, Lo_do = 0, To_ot = 0, To_do = 0, K_ot = 0, K_do = 0,

Percents_otkaz_ot = 0, Percents_otkaz_do = 0,

Percents_Prin_ot = 0, Percents_Prin_do = 0;

for (int i = 0; i < chislo_progonov; i++)

{

sredn_Potk += P[i];

sredn_Q += Q[i];

sredn_A += A[i];

sredn_Lo += Lo[i];

sredn_do += To[i];

sredn_K += K[i];

sredn_Percents_otkaz += Percents_otkaz[i];

sredn_Percents_Prin += Percents_Prin[i];

}

// Математические ожидания величин

sredn_Potk /= chislo_progonov;

sredn_Q /= chislo_progonov;

sredn_A /= chislo_progonov;

sredn_Lo /= chislo_progonov;

sredn_do /= chislo_progonov;

sredn_K /= chislo_progonov;

sredn_Percents_otkaz /= chislo_progonov;

sredn_Percents_Prin /= chislo_progonov;

// Вычисление доверительных интервалов

for (int i = 0; i < chislo_progonov; i++)

{

sum_Potk += Math.Pow((P[i] - sredn_Potk), 2);

sum_Q += Math.Pow((Q[i] - sredn_Q), 2);

sum_A += Math.Pow((A[i] - sredn_A), 2);

sum_Lo += Math.Pow((sredn_Lo - Lo[i]), 2);

sum_do += Math.Pow((sredn_do - To[i]), 2);

sum_K += Math.Pow((K[i] - sredn_K), 2);

sum_Percents_otkaz += Math.Pow((Percents_otkaz[i] - sredn_Percents_otkaz), 2);

sum_Percents_Prin += Math.Pow((Percents_Prin[i] - sredn_Percents_Prin), 2);

}

Potk_ot = sredn_Potk - (2.093d) * (Math.Sqrt((sum_Potk / (chislo_progonov - 1)) / chislo_progonov));

Potk_do = sredn_Potk + (2.093d) * (Math.Sqrt((sum_Potk / (chislo_progonov - 1)) / chislo_progonov));

Q_ot = sredn_Q - (2.093d) * (Math.Sqrt((sum_Q / (chislo_progonov - 1)) / chislo_progonov));

Q_do = sredn_Q + (2.093d) * (Math.Sqrt((sum_Q / (chislo_progonov - 1)) / chislo_progonov));

A_ot = sredn_A - (2.093d) * (Math.Sqrt((sum_A / (chislo_progonov - 1)) / chislo_progonov));

A_do = sredn_A + (2.093d) * (Math.Sqrt((sum_A / (chislo_progonov - 1)) / chislo_progonov));

Lo_ot = sredn_Lo - (2.093d) * (Math.Sqrt((sum_Lo / (chislo_progonov - 1)) / chislo_progonov));

Lo_do = sredn_Lo + (2.093d) * (Math.Sqrt((sum_Lo / (chislo_progonov - 1)) / chislo_progonov));

To_ot = sredn_do - (2.093d) * (Math.Sqrt((sum_do / (chislo_progonov - 1)) / chislo_progonov));

To_do = sredn_do + (2.093d) * (Math.Sqrt((sum_do / (chislo_progonov - 1)) / chislo_progonov));

K_ot = sredn_K - (2.093d) * (Math.Sqrt((sum_K / (chislo_progonov - 1)) / chislo_progonov));

K_do = sredn_K + (2.093d) * (Math.Sqrt((sum_K / (chislo_progonov - 1)) / chislo_progonov));

Percents_otkaz_ot = sredn_Percents_otkaz - (2.093d) * (Math.Sqrt((sum_Percents_otkaz / (chislo_progonov - 1)) / chislo_progonov));

Percents_otkaz_do = sredn_Percents_otkaz + (2.093d) * (Math.Sqrt((sum_Percents_otkaz / (chislo_progonov - 1)) / chislo_progonov));

Percents_Prin_ot = sredn_Percents_Prin - (2.093d) * (Math.Sqrt((sum_Percents_Prin / (chislo_progonov - 1)) / chislo_progonov));

Percents_Prin_do = sredn_Percents_Prin + (2.093d) * (Math.Sqrt((sum_Percents_Prin / (chislo_progonov - 1)) / chislo_progonov));

richTextBox1.Text += "Вероятность отказа, Ротк: &bsol;t&bsol;nот&bsol;t" + Potk_ot.ToString() + "&bsol;nдо&bsol;t" + Potk_do.ToString() + "&bsol;n";

richTextBox1.Text += "Относительная пропускная способность, Q: &bsol;nот&bsol;t" + Q_ot.ToString() + "&bsol;nдо&bsol;t" + Q_do.ToString() + "&bsol;n";

richTextBox1.Text += "Абсолютная пропускная способность, A: &bsol;nот&bsol;t" + A_ot.ToString() + "&bsol;nдо&bsol;t" + A_do.ToString() + "&bsol;n";

richTextBox1.Text += "Ср длина очереди, L&bsol;x03BF: &bsol;t&bsol;nот&bsol;t" + Lo_ot.ToString() + "&bsol;nдо&bsol;t" + Lo_do.ToString() + "&bsol;n";

richTextBox1.Text += "Ср время преб-ия з. в очереди, T&bsol;x03BF, c: &bsol;nот&bsol;t" + To_ot.ToString() + "&bsol;nдо&bsol;t" + To_do.ToString() + "&bsol;n";

richTextBox1.Text += "Ср число занятых каналов, k: &bsol;nот&bsol;t" + K_ot.ToString() + "&bsol;nдо&bsol;t" + K_do.ToString() + "&bsol;n";

richTextBox1.Text += "% отказанных заявок: &bsol;t&bsol;nот&bsol;t" + Percents_otkaz_ot.ToString() + "&bsol;nдо&bsol;t" + Percents_otkaz_do.ToString() + "&bsol;n";

richTextBox1.Text += "% обслуженных заявок: &bsol;t&bsol;nот&bsol;t" + Percents_Prin_ot.ToString() + "&bsol;nдо&bsol;t" + Percents_Prin_do.ToString() + "&bsol;n";

button1.Enabled = false;

}

}

}