51190

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

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

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

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

Русский

2014-02-10

100.94 KB

12 чел.

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

Кафедра ПОИТ

Отчёт

по лабораторной работе №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;

       }

   }

}

Вывод:

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

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


 

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

73564. Кола синусоїдного змінного струму з взаємною індуктивністю 688 KB
  Магнітне поле – це невідємна складова частина електромагнітного поля, що виникає при русі електричних зарядів в просторі або в провідниках у вигляді електричного струму (постійного чи змінного), а також у вигляді молекулярних струмів в постійних магнітах.
73565. Новітня українська історіографія. Розвиток історичної науки в Галичині і на еміграції в міжвоєнний період (1919-1939) 104.5 KB
  Умови розвитку історичної науки. Наукові установи по дослідженню історії України. Державницький напрям в українській історіографії та його засновники: В.Липинський, Ст.Томашівський, Д.І.Дорошенко.
73566. Розвиток української історичної науки на еміграції (1945 – 2000-і роки) 117 KB
  Установи з дослідження української історії на еміграції. Дослідження історії України в працях Н. №12 Установи з дослідження української історії. Спробуємо охарактеризувати діяльність окремих наукових установ що займалися дослідженням історії України.
73567. Значение устойчивости сорта к вредным организмам 96 KB
  Можно выделить три этапа исторического развития сельского хозяйства когда естественная устойчивость популяций растений выработанная в процессе эволюции сменялась на агроэкосистемную : сначала физиологическую а затем и генетическую. Этапы исторического развития сельского хозяйства на которых изменялись отношения популяций и устойчивости в системе растениехозяин вредный организм выглядят следующим образом: I Сбор семян диких растений и высев их в ареалах сбора. На первоначальном этапе структура популяций растенийхозяев и...
73568. Теория вероятностей. Основные понятия 1.35 MB
  События называются равновозможными если нет оснований считать что одно из них появится в результате опыта с большей вероятностью. Вероятностью события А называется математическая оценка возможности появления этого события в результате опыта. Вероятность события А равна отношению числа благоприятствующих событию А исходов опыта к общему числу попарно несовместных исходов опыта образующих полную группу событий. Очевидно что вероятность достоверного события равна единице а вероятность невозможного равна нулю.
73569. Ринкова організація виробництва 75 KB
  Структура і функції ринку. Інфраструктура ринку та її основні елементи. Не вдаючись в гіперболізацію можна констатувати що новітня історія не знає жодного прикладу високорозвинутої гнучкої ефективно функціонуючої економіки без ринку. Першу спробу наукового визначення поняття ринку зробив французький економіст Антуан Курно.
73570. Основи саморегулювання ринкової економіки 148 KB
  Суть попиту та його детермінанти. Закон попиту і крива попиту. Ринкова пропозиція та її детермінанти. Закон пропозиції і крива пропозиції. Взаємодія попиту і пропозиції та ринкова рівновага. Ціна у ринковій економіці: суть, види та функції. Вплив держави на ціноутворення. Конкуренція та її роль у функціонуванні ринкової системи. Монополія як антипод конкуренції.
73571. Підприємництво і підприємство (фірма) 100 KB
  Зміст основні принципи та ознаки підприємництва.Організаційноправові форми підприємництва в ринковій економіці.Підприємство в системі підприємництва. Зміст основні принципи та ознаки підприємництва.