Моделирование систем с разным распределением времени безотказной работы

Лабораторная работа, 03 Июня 2013, автор: пользователь скрыл имя

Описание работы


Задание. Разработать программу, моделирующую работу систем, описанных экспоненциальным распределением и распределением Релея. Приложение должно обеспечивать следующие функции:
Переключение вида распределения;
Задание параметра распределения;
Задание количества испытаний

Файлы: 1 файл

Отчёт.docx

— 186.43 Кб (Скачать файл)

 

Министерство образования  и науки Российской Федерации

Государственное образовательное  учреждение высшего

профессионального образования

«Ярославский государственный  технический университет»

Кафедра «Информационные  системы и технологии»

 

 

 

 

Отчёт защищён

с оценкой (______________)

Преподаватель доцент каф  ИС

(_________) А. Б. Раухваргер

31.05.2012

 

 

 

 

 

 

 

Отчёт о лабораторных работах 

по дисциплине “Надёжность  информационных систем”

 

ЯГТУ 230201.65-001 ЛР

 

 

 

 

 

 

 

Отчёт выполнил   

студент гр. ЭИС - 44

         (________) А.А. Шепелев

31.05.2012

 

 

 

 

 

 

 

 

2012

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

«Моделирование  систем с разным распределением

времени безотказной работы»

Задание. Разработать программу, моделирующую работу систем, описанных экспоненциальным распределением и распределением Релея. Приложение должно обеспечивать следующие функции:

  • Переключение вида распределения;
  • Задание параметра распределения;
  • Задание количества испытаний;
  • Вычисление по введённым данным случайных значений времени безотказной работы, накопление их в списке, вычисление значений параметров распределения по экспоненциальным данным;
  • Отображение на диаграмме экспоненциального распределения и расчётного графика.

 

Выполнение работы

Расчётные формулы:

Экспоненциальное распределение:

 

 

 

 

Распределение Релея:

 

 

 

 

Расчет экспериментальных  параметров:

Интенсивность отказов:

 

Наиболее вероятное время  безотказной работы:

 

Где – средняя продолжительность работы.

 

 

частота попадания  в диапазон

 число диапазонов

число попаданий  в диапазон

 

плотность вероятней

Интерфейс программы

Рисунок 1 – Окно работающей программы

Листинг кода

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;

type

  TForm1 = class(TForm)

    RadioButton1: TRadioButton;

    RadioButton2: TRadioButton;

    Edit1: TEdit;

    Label1: TLabel;

    Edit2: TEdit;

    Label2: TLabel;

    Button1: TButton;

    ListBox1: TListBox;

    Label3: TLabel;

    Chart1: TChart;

    Edit3: TEdit;

    Label4: TLabel;

    Button2: TButton;

    Series1: TLineSeries;

    Series2: TLineSeries;

    Button3: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure Button3Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

t,t0,tsred,lamda,x,tsum,expert,k:real;

n,i,ICount:integer;

 memo:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

n:=strtoint(edit2.text);

lamda:=strtofloat(Edit1.Text);

t0:=strtofloat(Edit1.Text);

if radiobutton1.Checked then

begin

randomize;

for i:=1 to n do

begin

x:=random;

t:=((-1)/lamda)*ln(1-x);

tsum:=tsum+t;

memo:=floattostr(t);

listbox1.Items.Add(memo);

end;

tsred:=tsum/n;

expert:=1/tsred;

edit3.Text:=floattostr(expert);

end;

if radiobutton2.Checked then

begin

randomize;

for i:=1 to n do

begin

x:=random;

t:=t0*sqrt(-2*ln(1-x));

tsum:=tsum+t;

memo:=floattostr(t);

listbox1.Items.Add(memo);

end;

tsred:=tsum/n;

expert:=(2*tsred)/(sqrt(2*pi));

edit3.Text:=floattostr(expert);

end;end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

expert:=0;

n:=0;

 tsred:=0;

tsum:=0;

memo:='';

t:=0;

x:=0;

listbox1.Clear;end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

radiobutton1.Checked:=true;

end;

procedure TForm1.Button3Click(Sender: TObject);

var

Interwal: array [1..20] of real;

N: array [1..20] of integer;

y,buf,tmax,deltaT,Fi:real;

i,j,LbCount:integer;

begin

Icount:=StrToint(edit2.Text);

if Listbox1.Items.Count<>0 then

 begin

 Chart1.Series[0].Clear;

 Chart1.Series[1].Clear;

 begin

  if RadioButton1.Checked then

 begin

 for I:=1 to 20 do n[i]:=0;

 LBcount:=ListBox1.Items.Count;

 Tmax:=STRtoFloat(ListBox1.Items.Strings[0]);

 for i:=1 to LBCount-1 do

  begin

   buf:=StrToFloat(ListBox1.Items.Strings[i]);

   If buf>Tmax then Tmax:=buf;

  end;

  DeltaT:=Tmax/20;

  Interwal[1]:=0;

  For i:=2 to 20 do

   Begin

   interwal[i]:=Interwal[i-1]+DeltaT;

   end;

  For i:=0 to ListBox1.Items.Count-1 do

   Begin

   Buf:=StrToFloat(listbox1.Items.Strings[i]);

    For j:=1 to 20 do

     begin

      if (buf>=Interwal[j]) and (buf<interwal[j+1]) then

       N[j]:=N[j]+1;

     end;

   end;

  For i:=1 to 20 do

   begin

    fi:=N[i]/(ICount*deltaT);

    Series2.AddXY(Interwal[i],Fi);

    Series2.AddXY(Interwal[i]+Deltat,Fi);

   end;

  t:=0;

  lamda:=Strtofloat(Edit1.text);

  For i:=1 to 100 do

   begin

    y:=lamda*(exp(-lamda*t));

    Series1.AddXY(t,y);

    t:=t+Tmax/100

end;end;

if RadioButton2.Checked then

 begin

 t:=0;

 for I:=1 to 20 do n[i]:=0;

 LBcount:=ListBox1.Items.Count;

 Tmax:=STRtoFloat(ListBox1.Items.Strings[0]);

 for i:=1 to LBCount-1 do

  begin

   buf:=StrToFloat(ListBox1.Items.Strings[i]);

   If buf>Tmax then Tmax:=buf;

  end;

  DeltaT:=Tmax/20;

  Interwal[1]:=0;

  For i:=2 to 20 do

   Begin

   interwal[i]:=Interwal[i-1]+DeltaT;

   end;

  For i:=0 to ListBox1.Items.Count-1 do

   Begin

   Buf:=StrToFloat(listbox1.Items.Strings[i]);

    For j:=1 to 20 do

     begin

      if (buf>=Interwal[j]) and (buf<interwal[j+1]) then

       N[j]:=N[j]+1;

     end;

   end;

  For i:=1 to 20 do

   begin

    fi:=N[i]/(ICount*deltaT);

    Series2.AddXY(Interwal[i],Fi);

    Series2.AddXY(Interwal[i]+Deltat,Fi);

   end;

  t:=0;

  For i:=1 to 100 do

   begin

    y:=(t/(T0*t0))*(exp(-(t*t)/(2*T0*t0)));

    Series1.AddXY(t,y);

    t:=t+Tmax/100

   end;end;end;end;end;end.

Вывод

Была разработана и  отлажена программа, моделирующая работу системы, подчиняющейся экспоненциальному  распределению или распределению Релея с помощью датчика случайных чисел. Так же была выявлена закономерность того, что чем больше   число испытаний тем меньше экспериментальные значения расходятся с расчетными.

 

 

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

«Логико – вероятностное моделирование  работы системы с заданной схемой надёжности»

Задание. Разработать и отладить программу, реализующую расчёт работы системы с заданной схемой надёжности. Программа должна осуществлять следующие действия:

  • Ввод вероятностей безотказной работы каждого элемента;
  • Логико – вероятностная оценка вероятности безотказной работы системы;
  • Ввод числа испытаний;
  • Расчёт вероятностей безотказной работы всей системы по формулам последовательного и параллельного соединения.

 

Выполнение работы

Последовательное соединение:

 

Параллельное соединение:

 

Интерфейс программы

Рисунок 2 – Схема надёжности системы

 

Листинг кода

unit Unit1;

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    Shape1: TShape;

    Edit1: TEdit;

    Shape2: TShape;

    Shape3: TShape;

    Shape4: TShape;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Shape5: TShape;

    Shape6: TShape;

    Shape7: TShape;

    Shape8: TShape;

    Shape9: TShape;

    Shape10: TShape;

    Shape11: TShape;

    Shape12: TShape;

    Shape13: TShape;

    Shape14: TShape;

    Edit5: TEdit;

    Edit6: TEdit;

    Shape15: TShape;

    Shape16: TShape;

    Edit7: TEdit;

    Shape17: TShape;

    Shape18: TShape;

    Shape19: TShape;

    Shape20: TShape;

    Shape21: TShape;

    Edit8: TEdit;

    Edit9: TEdit;

    Shape22: TShape;

    Shape23: TShape;

    Edit10: TEdit;

    Shape24: TShape;

    Shape25: TShape;

    Edit11: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  i,n,j,tru,fals:integer;

  p:array[1..10] of boolean;

  blok:array[1..10] of boolean;

  p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,x,pexp,pras,bl1,bl2,bl3,bl4:real;

  r:array[1..10]of real;

  t:boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

pexp:=0;

tru:=0;

n:=strtoint(edit11.Text);

randomize;

r[1]:=strtofloat(edit1.Text);

r[2]:=strtofloat(edit2.Text);

r[3]:=strtofloat(edit3.Text);

r[4]:=strtofloat(edit4.Text);

r[5]:=strtofloat(edit5.Text);

r[6]:=strtofloat(edit6.Text);

r[7]:=strtofloat(edit7.Text);

r[8]:=strtofloat(edit8.Text);

r[9]:=strtofloat(edit9.Text);

r[10]:=strtofloat(edit10.Text);

for j:=1 to n do

begin

for i:=1 to 10 do

begin

x:=random;

p[i]:=(x<=r[i]);

end;

begin

blok[1]:=p[1] and p[2];

blok[2]:=p[3] or p[4];

blok[3]:=(p[5] and p[6])or p[6];

blok[4]:= (p[8] or p[9])and p[10];

t:= (blok[1]or blok[2]) and (blok[3]or blok[4]);

if t= true then tru:=tru+1

else fals:=fals+1;

end;

end;

bl1:=r[1]*r[2];

bl2:=1-(1-r[3])*(1-r[4]);

bl3:=1-(1-r[5]*r[6])*(1-r[7]);

bl4:=(1-(1-r[8])*(1-r[9]))*(r[10]);

pras:=(1-(1-bl1)*(1-bl2))*(1-(1-bl3)*(1-bl4));

pexp:=tru/n;

 label2.Caption:='Вероятность безотказной работы всей системы ='+' '+floattostr(pexp);

 label3.Caption:='Расчетная вероятнось работы всей системы ='+' '+floattostr(pras);

end; end.

 

Вывод

Была разработана и  отлажена программа, моделирующая систему, работающую по заданной схеме надежности, с помощью моделирования безотказной  работы каждого элемента на основе датчика случайных чисел.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

«Моделирование  распределения числа отказов  за заданный промежуток времени»

Задание. Для системы, подчиняющейся экспоненциальному распределению, разработать и отладить программу, моделирующую число отказов за заданный промежуток времени с использованием датчика случайных чисел. Входные данные:

  • Интенсивность отказов;
  • Число испытаний;
  • Промежуток времени.

В результате должны строиться  диаграммы распределения числа  отказов по экспериментальным данным и расчётный график по формуле  Пуассона.

Выполнение работы

Экспоненциальное распределение:

 

Распределение Пуассона:

 

k – число отказов,

λ – интенсивность отказов,

t – время работы.

Интерфейс программы

Рисунок 3 – Окно работающей программы

Листинг кода

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series, Math;

type

  TForm1 = class(TForm)

    Chart1: TChart;

    Edit1: TEdit;

    Label1: TLabel;

    Edit2: TEdit;

    Label2: TLabel;

    Edit3: TEdit;

    Label3: TLabel;

Информация о работе Моделирование систем с разным распределением времени безотказной работы