51190

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

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

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

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

Русский

2014-02-10

100.94 KB

10 чел.

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

Кафедра ПОИТ

Отчёт

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

       }

   }

}

Вывод:

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

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


 

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

39888. Прохождение практики на Предприятии ОАО «Апатит» 177.73 KB
  Служба эксплуатации контрольноизмерительных приборов и автоматики КИП и А выполняет следующие функции: метрологический надзор; техническое обслуживание; ремонт и настройку контрольноизмерительных приборов и приборов автоматического управления. Цех КИП и А выполняет такие наиболее ответственные работы как ремонт и поверка приборов эксплуатация сложных систем автоматики и др. Внедряет новые системы автоматики осуществляет техническое руководство группами эксплуатации приборов КИП и А в других цехах предприятия организует...
39889. ОПРЕДЕЛЕНИЕ РАВНОВЕСНОЙ ТЕМПЕРАТУРЫ ВОЗДУХА В ОХЛАЖДАЕМОМ ПОМЕЩЕНИИ (НА ПРИМЕРЕ НИЗКОТЕМПЕРАТУРНЫХ ПРИЛАВКОВ И ШКАФОВ) 6.31 MB
  При включении холодильной машины в охлаждаемом помещении устанавливается температура ниже температуры наружного окружающего помещение воздуха. при балансе: При наступлении равновесия между теплопритоками и теплоотводом в камере установится определенная температура называемая равновесной температурой. Не будет теплопритока от грузов и в случае если это камера длительного хранения куда грузы заложены уже давно и их температура стала равна температуре в охлаждаемом помещении. Для ограждения не подверженного действию солнечной радиации:...
39890. Бизнес-план создания ОАО «Мебель Интерьер Центр» 300.5 KB
  Расчетные данные согласно приложениям 16 показывают что предприятие в 2013 году будет иметь стабильный экономический рост: общая выручка от реализации продукции составит 14187 млн. 7663 млн. Темп роста составит 1851; объемы реализации промышленной продукции увеличатся с 45069 млн. в 2012 году до 102270 млн.
39891. Программирование баз данных 29 KB
  Создание модуля данных Доступ к базе данных в системе DELPHI выполняется достаточно просто с использованием богатого набора невизуальных компонентов работы с СУБД. Как правило эти компоненты группируются в создаваемой программе в специальном модуле данных TDtModule. Модуль данных представляет собой хранилище объектов которое позволяет централизованно управлять их работой и отделяет программную логику связанную с базами данных от программного кода выполняющего вычислительные действия и отображение данных на форме.
39892. Объектно-ориентированное программирование. Скрытие данных в объектах 42 KB
  Наследование определение объекта и дальнейшее использование всех его свойств для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта относящегося к иерархии доступа к коду и данным всех порожденных объектов...
39893. Компоненты страницы Standard 146 KB
  Button1ClickSender: TObject; begin lbel4.Text; end; Результат работы процедуры: Пример: при изменении состояния флажка о его текущем состоянии будет выведена надпись.CheckBox1ClickSender: TObject; begin cse CheckBox1.Cption:= 'Включен'; end; end; Результат работы процедуры: Пример: при изменении состояния переключателя о его текущем состоянии будет выведена надпись.
39895. Введение в DELPHI 127.5 KB
  Модуль состоит из кода который реализует функционирование приложения а также обработку событий для формы и ее компонентов. Первый файл двоичный – он хранит образ формы и ее свойства. Свойства формы: ctive – содержит значение true если форма имеет фокус ввода; ctiveControl – объект на форме который имеет фокус ввода; BorderStyle – вид границ формы; Cnvs – область рисования формы; ClientRect ClientHeight размеры формы ClientWidth FormStyle – стиль формы; HelpFile – название файла справки для формы; Icon – значок обозначающий форму...
39896. Информационная безопасность. Защита информации. Основные составляющие информационной безопасности 1.38 MB
  Словосочетание информационная безопасность в разных контекстах может иметь различный смысл. В Доктрине информационной безопасности Российской Федерации термин информационная безопасность используется в широком смысле. Имеется в виду состояние защищенности национальных интересов в информационной сфере