51190

Построить аналитическую модель и, решив ее, определить вероятности состояний

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2014-02-10

100.94 KB

9 чел.

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра ПОИТ

Отчёт

по лабораторной работе №3

Вариант 8

Проверил:          Выполнил:

Огородник Р.В.        ст.гр. 050504

Краснов А.Ю.                    

Минск 2013

Задание: 

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

   Р1

  P           2    

   Р2     

P – вероятность неприхода заявки

P1- вероятность необработки

P2-вероятность необработки

Аналитические расчеты:

Таблица переходов:

Результаты работы программы:

Код программы:

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 Mylabs_model_3

{

   public partial class Form1 : Form

   {

       List<double> massivR = new List<double>();

       int pozition = 0;

       List<Knot> Tree = new List<Knot>();

       Knot root;

       List<string> text = new List<string>();

       string[] state= new string[10000];

       double p1;

       double p2;

       double r;

       public Form1()

       {

           InitializeComponent();

           // * * * * * * * * * * * * * * * * * *

           this.textBox_state.ScrollBars = ScrollBars.Vertical;

           generator();

           //ConstructTree();

       }

       private void generator()

       {

           double a = 31234;           

           double m = 512354231;       

           double R0 = 1235;           

           double Rn = 0;

           int size = 10000;           

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

           {

               Rn = (a * R0) % m;

               double R = Rn / m;

               massivR.Add(R);

               R0 = Rn;

           }

       }

       private int RandomOfDiapozon(List<double> SpisDia)

       {

           double R = massivR[pozition];

           pozition++;

           double a = 0;

           for (int i = 0; i < SpisDia.Count; i++)

           {

               a += SpisDia[i];

               if (R < a)

               {

                   return i;

               }

           }

           return 0;

       }

       private void ConstructTree()

       {

           int size = 7;

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

           {

               Knot a = new Knot();

               Tree.Add(a);

           }

           root = Tree[0];

           //0000

           int[] a0    = { 0,3 };

           double[] b0 = { r,1.0-r };

           Tree[0].Sets(M(b0),P(a0),"0000");

           //0001

           int[] a1 = { 0 ,1,2,3};

           double[] b1 = { r * (1 - p2), r * p2, (1 - r) * p2, (1 - r) * (1 - p2) };

           Tree[1].Sets(M(b1), P(a1),"0001");

           //0011

           int[] a2 = { 0,1,2,3,4 };

           double[] b2 = {r*(1-p1)*(1-p2), r*(1-p1)*p2, r*p1*p2+(1-r)*(1-p1)*p2+(1 - r) * (1 - p2) * p1,

                             r * p1 * (1 - p2) + (1 - r) * (1 - p1) * (1 - p2), (1 - r) * p1*p2 };

         

           

           Tree[2].Sets(M(b2), P(a2),"0011");

           //0010

           int[] a3 = { 0,2,3};

           double[] b3 = { r * (1 - p1), (1 - r) * p1, r*p1 + (1 - r)*(1 - p1) };

           Tree[3].Sets(M(b3), P(a3),"0010");

           //0111

           int[] a4 = { 2,3,4,5};

           double[] b4 = {r*(1-p1)*p2+r*(1-p2)*p1+(1-r)*(1-p1)*(1-p2), r*(1-p1)*(1-p2),r*p1*p2+(1-r)*(1-p1)*p2+(1-r)*(1-p2)*p1,(1-r)*p1*p2 };

           Tree[4].Sets(M(b4), P(a4),"0111");

           //0211

           int[] a5 = { 2,4,5,6};

           double[] b5 = {r*(1-p1)*(1-p2),r*(1-p1)*p2+r*(1-p2)*p1+(1-r)*(1-p1)*(1-p2),(1-r)*p1*(1-p2)+(1-r)*(1-p1)*p2+r*p1*p2,(1-r)*p1*p2  };

           Tree[5].Sets(M(b5), P(a5),"0211");

           //2111

           int[] a6 = {4,5,6  };

           double[] b6 = {(1-p1)*(1-p2),p1*(1-p2)+p2*(1-p1),p1*p2  };

           Tree[6].Sets(M(b6), P(a6), "1211");

         

       }

       

       private List<double> M(double[] spis)

       {

           List<double> m = new List<double>();

           for (int i = 0; i < spis.Length; i++)

           {

               m.Add(spis[i]);

           }

           return m;

       }

       private List<Knot> P(int[] v)

       {

           List<Knot> m = new List<Knot>();

           for (int i = 0; i < v.Length; i++)

           {

               m.Add(Tree[v[i]]);

           }

           return m;            

       }

       private void button1_Click(object sender, EventArgs e)

       {

           pozition = 0;

           textBox1.Clear();

           text.Clear();

           Tree.Clear();

           this.textBox_state.Clear();

           if (this.textBox_p1.Text == "" || this.textBox_p2.Text == "")

           {

               MessageBox.Show("Error!!! p1 or p2 is NoN");

               return;

           }

           p1 = double.Parse(this.textBox_p1.Text);

           p2 = double.Parse(this.textBox_p2.Text);

           r = double.Parse(this.textBox_r.Text);

           ConstructTree();

        

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

           {

               root.inc();

               state[i] = root.GetName();

               root = root.GetChild()[RandomOfDiapozon(root.GetProbability())];

           }

           this.textBox_A.Text = ((1 - r) * (1 - (Tree[6].GetKol() / 10000.0))).ToString();

           double L = 0;

           

           for (int i = 0; i < Tree.Count; i++)

           {

               string rst = "Состояние:    " + Tree[i].GetName() ;

        

               Printf(rst + "   Веротяность = " + (Tree[i].GetKol() / 10000.0).ToString());

               string str = "";

               L += Tree[i].GetKol() / 10000.0 * double.Parse((str += Tree[i].GetName()[1]));

         

           }

           this.textBox_state.Lines = state;

           this.textBox_Loch.Text = L.ToString();

       }

       private void Printf(string str)

       {

           text.Add(str);

           textBox1.Clear();

           textBox1.Lines = VecToStr(text);

       }

       private string[] VecToStr(List<string> str)

       {

           string[] ms = new string[str.Count];

           for (int i = 0; i < str.Count; i++)

           {

               ms[i] = str[i];

           }

           return ms;

       }

 

   }

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Mylabs_model_3

{

   class Knot

   {

       List<double> Probability = new List<double>();

       List<Knot> child = new List<Knot>();

       string name;

       int kolvo = 0;

       public Knot(List<double> P,List<Knot> ch)

       {

           Probability = P;

           child = ch;

       }

       public Knot()

       {

           

       }

       public void Sets(List<double> P, List<Knot> ch,string str)

       {

           Probability = P;

           child = ch;

           name = str;

       }

       public List<double> GetProbability()

       {

           return Probability;

       }

       public List<Knot> GetChild()

       {

           return child;

       }

       public string GetName()

       {

           return name;

       }

       public void inc()

       {

           kolvo++;

       }

       public void Dec()

       {

           kolvo = 0;

       }

       public int GetKol()

       {

           return kolvo;

       }

   }

}

Вывод:

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

Были исследованы характеристики данных моделей.


 

А также другие работы, которые могут Вас заинтересовать

46671. Перестройка государственного аппарата и изменения в праве в годы Великой Отечественной войны и послевоенный период 25.01 KB
  Указом Президиума Верховного Совета СССР была образована Чрезвычайная Государственная комиссия по установлению и расследованию злодеяний немецкофашистских захватчиков и их сообщников и причиненного ими ущерба гражданам колхозам общественным организациям государственным предприятиям и учреждениям СССР. был создан Комитет по учету и распределению рабочей силы при СНК СССР при областных и краевых исполкомах учреждались бюро по учету и распределению рабочей силы. Особая система военной юстиции регламентировалась Указом Президиума Верховного...
46672. Подходы к оценке стоимости нематериальных активов и интеллектуальной собственности 25.04 KB
  Методы доходного подхода Метод прямой капитализации Под капитализацией понимается определение на дату проведения оценки стоимости всех будущих равных между собой или изменяющихся с одинаковым темпом величин денежных потоков от использования интеллектуальной собственности за равные периоды времени. Метод дисконтированных денежных потоков При этом под дисконтированием понимается процесс приведения всех будущих денежных потоков от использования интеллектуальной собственности к дате проведения оценки по определенной оценщиком ставке...
46673. Попытки осуществления политических и экономических реформ.Н.С.Хрущёв 25.38 KB
  В 55г начинается кукурузная кампания Хрущева. Лозунг Хрущева – догнать и перегнать Америку. 64г со всех постов и Хрущева. Однако следует отметить и глубокую враждебность Хрущева.
46674. Пеня 25.5 KB
  Сумма соответствующих пеней уплачивается помимо причитающихся к уплате сумм налога или сбора и независимо от применения других мер обеспечения исполнения обязанности по уплате налога или сбора а также мер ответственности за нарушение законодательства о налогах и сборах. Пеня начисляется за каждый календарный день просрочки исполнения обязанности по уплате налога или сбора начиная со следующего за установленным законодательством о налогах и сборах дня уплаты налога или сбора. Пени уплачиваются одновременно с уплатой сумм налога и сбора или...
46676. Метод прогонки 29.52 KB
  Метод прогонки Метод прогонки является частным случаем метода Гаусса и применяется к системам с трехпятидиагональной матрицей см. Предполагается что Метод прогонки состоит из двух этапов: прямой прогонки и обратной прогонки. В силу сказанного основу метода прогонки составляет так называемая прогоночная формула 4.
46677. Занятость населения и рынок труда 30.78 KB
  Занятость населения и рынок труда. Эффективная занятость характеризуется использованием рабочей силы без потерь при котором получается наибольший материальный результат и указывает при каком уровне производительности труда удовлетворяется потребность населения в работе какими путями достигается полная занятость. Рынок труда сфера формирования спроса и предложения на рабочую силу. Основными субъектами рынка труда являются работодатели и наемные работники.
46678. Международная корпорация в мировой экономике 32.26 KB
  ТНК – это крупные бюрократические корпорации, которые преодолевают риск в пределах корпоративной структуры, держат под контролем огромные денежные потоки, выступают в качестве подрядчиков на государственном уровне, привлекают технологии мирового класса, а также владеют массой закрытой информации.
46679. Стабилизационная политика государства в закрытой экономике 30.73 KB
  Инструменты денежнокредитной политики Банка России: ограничения динамики кредитования; учетная дисконтная политика; операции на открытом рынке; рефинансирование коммерческих банков. Современный коммерческий банк: функции операции роль в экономике. расчетнокассовые операции. Пассивные операции это такие операции банков в результате которых происходит увеличение денежных средств находящихся на пассивных счетах или активнопассивных счетах в части превышения пассивов над активами.