Моделирование систем с разным распределением времени безотказной работы
Лабораторная работа, 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,
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.
Tmax:=STRtoFloat(ListBox1.
for i:=1 to LBCount-1 do
begin
buf:=StrToFloat(ListBox1.
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]+
end;
For i:=0 to ListBox1.Items.Count-1 do
Begin
Buf:=StrToFloat(listbox1.
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]+
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.
Tmax:=STRtoFloat(ListBox1.
for i:=1 to LBCount-1 do
begin
buf:=StrToFloat(ListBox1.
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]+
end;
For i:=0 to ListBox1.Items.Count-1 do
Begin
Buf:=StrToFloat(listbox1.
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]+
end;
t:=0;
For i:=1 to 100 do
begin
y:=(t/(T0*t0))*(exp(-(t*t)/(2*
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,
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[
pras:=(1-(1-bl1)*(1-bl2))*(1-(
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;