Tài liệu tham khảo Đánh giá độ tin cậy của hệ thống kĩ thuật có các phần tử nối song song
Trang 1bài tập mô hình hoá
Nội dung: Mô hình hoá hệ ngẫu nhiên
Đề bài:
Đánh giá độ tin cậy của hệ thống kỹ thuật có các phần tử nối song song
Cho hệ thống kỹ thuật có các phần tử nối song song có độ tin cậy lần lợt nh sau:
Hãy mô hình hoá để tính độ tin cậy hệ thống.
So sánh độ tin cậy theo công thức lý thuyết Phtlt với độ tin cậy thực nghiệm Phttn.
1 Phân tích đề bài.
Mô hình hoá hệ ngẫu nhiên là một trong các phơng pháp đợc dùng nhiều trong thực
tế để tìm đợc một chỉ tiêu chất lợng nào đó khi có sự tác động ngẫu nhiên của môi trờng xung quanh và sự tác động này sẽ ảnh hởng trực tiếp tới chỉ tiêu chất lợng cần xét đó Trong bài toán trên ta thờng gặp nhiều trong thực tế các hệ thống mà gồm các phần tử nối song song với nhau với điều kiện các phần tử hoạt động độc lập nhau và sự làm việc bình thờng của hệ thống phụ thuộc vào sự làm việc an toàn của một trong các phần tử Ví dụ nh
để thắp sáng một phân xởng ngời ta lắp các bóng đèn song song với nhau thì sự cố mất
điện sẽ xảy ra khi tất cả các bóng đèn đều bị hỏng Tuy nhiên nh bài toán trên thì sự hỏng hóc của các phần tử là xảy ra ngẫu nhiên với một độ tin cậy nào đó Bài toán đặt ra là phải
Trang 2tìm độ tin cậy của toàn hệ thống Những bài toán loại này thì phơng pháp mô hình hoá hệ ngẫu nhiên tỏ ra rất có hiệu quả.
Nội dung của phơng pháp mô hình hoá hệ ngẫu nhiên.
Phơng pháp mô hình hoá hệ ngẫu nhiên là xây dựng trên máy tính một quan hệ giữa
đại lợng cần xác định với sự tác động đầu vào của nó mang tính ngẫu nhiên với một phân
bố nào đó, trên có sở đó ta nhận đợc một dáng điệu của đại lợng đang xét Để thu đợc dáng điệu của đại lợng đang xét ta phải thực hiện các phép thử, sau mỗi phép thử ta sẽ thu
đợc các thông tin có liên quan đến dáng điệu đó Khi số phép thử tăng lên thì lợng thông tin thu đợc cũng tăng lên cho đến khi ta xây dựng đợc một dáng điệu gần chính xác với một sai số nhất định Nh vậy phơng pháp này có khối lợng tính toán lơn do đó nó phải đợc thực hiện trên máy tính và sau khi thử đủ các phép thử ta phải tiến hành xử lý kết quả để thu đợc kết quả mong muốn.
2 Phân tích và xác định các biến ngẫu nhiên.
Đối với từng phần tử của hệ thống nói trên thì dòng các sự kiện xảy ra hỏng hóc có các tính chất sau:
+ Dừng, cờng độ xảy ra các sự kiện là hằng số.
+ Các sự kiện xảy ra hoàn toàn độc lập nhau.
+ Tại một thời điểm chỉ có 1 sự kiện xảy ra.
Nh vậy dòng sự kiện nói trên là một dòng tối giãn Và độ tin cậy của từng thiết bị đợc
đánh giá qua xác suất thời gian làm việc tin cậy lớn hơn tuổi thọ của phần tử Nh vậy với một cờng độ hỏng hóc cho trớc thì biến ngẫu nhiên ở đây chính là thời gian làm việc tin cậy của phần tử.
Khi hệ thống gồm 3 phần tử nối song song với độ tin cậy của các phần tử cho tr ớc thì biến ngẫu nhiên là một giá trị đánh giá sự hỏng hóc của toàn hệ thống.
3 Phân tích thuật giải.
Nh ta đã biết với hệ thống có các phần tử nối song song thì độ tin cậy của toàn hệ thống phụ thuộc vào độ tin cậy của từng phần tử và đợc xác định theo biểu thức sau:
n i
i htlt ( p ) P
1
1 1
Trong đó: n là số phần tử mắc song song
pi là độ tin cậy của phần tử thứ i.
Nh vậy với bài toán trên thuật giải đợc xây dựng nh sau:
+ Lấy một số ngẫu nhiên có phân bố x = U(0,1)
+ So sánh giá trị x với từng độ tin cậy của các phần tử nếu nh p1) và x<=(1-p2) và x<=(1-p3) thì N0= N0+1.
+ Sau N lần phép thử ta có độ tin cậy của hệ thống
N
N
Phttn 0
Trên cơ sơ thuật giải ở trên lu đồ thuật toán cho hệ thống đợc mô tả dới đây.
Trang 3Nhập số liệu p1,p2,p3
Lấy x=U(0,1)
Nhập N
No = 0, i=0
x<=(1-p1)
x<=(1-p2)
x<=(1-p3)
Đ
Đ
N1=N1+1
S
S
S
No=No+1 i=i+1
i=N S
N
N
Phtnt 0
Đ
5 Trong thuật giải bài toán này đã đợc trình bày nh lu đồ thì điều kiện đầu cho trớc là các
độ tin cậy của các phần tử, ta tiến hành mô phỏng bằng cách thử lần lợt từng giá trị một của giá trị ngẫu nhiên nhận đợc với độ tin cậy của các phần tử cho đến khi số phép thử đạt đợc
đến 1 giá trị cho trớc nào đó thì cho phép ngừng mô phỏng và thực hiện việc xử lý kết quả nhận đợc.
Bài toán trên đợc mở rộng cho trờng hợp khi thay đổi số phép thử N Cũng cùng thuật giải nh trên với số các phép thử khác nhau ta sẽ thu đợc một tập các giá trị của độ tin cậy của hệ thống Các giá trị đó đợc xây dựng thành đồ thị các giá trị Phttn nh trong chơng trình dới đây.
Chơng trình mô phỏng hệ thống ngẫu nhiên trên đợc xây dựng trên ngôn ngữ C có mã nguồn nh sau:
#include"iostream.h"
#include"math.h"
#include"conio.h"
Trang 4#include"stdlib.h"
#include"dos.h"
#include"graphics.h"
#define Enter 13
#ifndef _MOU_H_
#define _MOU_H_
void mainc(void);
void Graph(void);
void Print(void);
void Result(void);
void help(void);
void button(int x1,int y1,int x2,int y2,int color,char s[],int color_s,int size);
void button2(int x1,int y1,int x2,int y2,int color,char s[],int color_s,int size);
void button1(int x1,int y1,int x2,int y2,int color);
void _line(int x1, int y1, int x2, int y2, int color);
void Write_text(int x1, int y1,double x,char*s,int color);
void Write_text1(int x1, int y1,int x,char*s,int color);
void write_value(int*x,int*y,char*s);
void read_value(int*x,int*y,char*s);
double Nhap_p1(void);
double Nhap_p2(void);
double Nhap_p3(void);
int Nhap_N(void);
int mouse_x,mouse_y;
int Reset_mouse(void)
{
_AX=0;
geninterrupt(0x33);
return(_AX);
}
void Show_mouse(void)
{
_AX=1;
geninterrupt(0x33);
}
Trang 5void Hide_mouse(void)
{
_AX=2;
geninterrupt(0x33);
}
int Click_mouse(void)
{
_AX=3;
geninterrupt(0x33);
if(_BX==0)return 0;
if(_BX==1)return 1;
if(_BX==2)return 2;
return _BX;
}
void Move_mouse(int mouse_x1,int mouse_y1)
{
_AX=4;
_CX=mouse_x1;
_DX=mouse_y1;
geninterrupt(0x33);
}
void Hori_mouse(int xmin,int xmax)
{
_AX=7;
_CX=xmin;
_DX=xmax;
geninterrupt(0x33);
}
void Vert_mouse(int ymin,int ymax )
{
_AX=8;
_CX=ymin;
_DX=ymax;
geninterrupt(0x33);
}
int Win_mouse(int x1,int y1,int x2,int y2)
{
_AX=3;
geninterrupt(0x33);
mouse_x=_CX;
mouse_y=_DX;
if(mouse_x>x1&&mouse_x<x2&&mouse_y>y1&&mouse_y<y2 ) return 1;
Trang 6else return 0;
}
int DClick_mouse(void)
{
_AX=0x05;
_BX=0;
geninterrupt(0x33);
_AX=1;
if(_BX==1)return 0;
if(_BX==2)return 1;
return _BX;
}
#endif
void Write_text(int x1, int y1,double x,char*s,int color) {
gcvt(x,5,s);
setcolor(color);
outtextxy(x1,y1,s);
}
void Write_text1(int x1, int y1,int x,char*s,int color) {
itoa(x,s,10);
setcolor(color);
outtextxy(x1,y1,s);
}
void write_value(int*x,int*y,char*s)
{
outtextxy(*x,*y,s);
*x+=textwidth(s);
}
void read_value(int*x,int*y,char*s)
{
int i=0;char ch[2];
ch[1]=0;
while(1)
{
ch[0]=getch();
if(ch[0]==Enter) break;
write_value(x,y,ch);
s[i]=ch[0];
++i;
}
Trang 7}
double Nhap_p1()
{
int xp1=80,yp1=280;
char*sp1;
read_value(&xp1,&yp1,sp1);
return atof(sp1);
}
double Nhap_p2()
{
int xp2=80,yp2=310;
char*sp2;
read_value(&xp2,&yp2,sp2);
return atof(sp2);
}
double Nhap_p3()
{
int xp3=80,yp3=340;
char*sp3;
read_value(&xp3,&yp3,sp3);
return atof(sp3);
}
int Nhap_N()
{
int xn=80,yn=370;
char*sn;
read_value(&xn,&yn,sn);
return atoi(sn);
}
void button(int x1,int y1,int x2,int y2,int color,char s[],int color_s,int size)
{
setfillstyle(1,color);
bar(x1,y1,x2,y2);
setcolor(15);
setlinestyle(0,0,1);
line(x1,y1,x2,y1);
line(x1,y1,x1,y2);
setcolor(0);
Trang 8line(x2,y2,x1,y2);
settextjustify(1,1);
settextstyle(0,0,size);
setcolor(color_s);
outtextxy((x1+x2)/2,(y1+y2)/2,s);
}
void button2(int x1,int y1,int x2,int y2,int color,char s[],int color_s,int size)
{
setfillstyle(1,color);
bar(x1,y1,x2,y2);
setcolor(0);
setlinestyle(0,0,1);
line(x1,y1,x2,y1);
line(x1,y1,x1,y2);
setcolor(15);
line(x2,y2,x2,y1);
line(x2,y2,x1,y2);
settextjustify(1,1);
settextstyle(0,0,size);
setcolor(color_s);
outtextxy((x1+x2)/2,(y1+y2)/2,s);
}
void button1(int x1,int y1,int x2,int y2,int color)
{
setfillstyle(1,color);
bar(x1,y1,x2,y2);
setcolor(0);
setlinestyle(0,0,1);
line(x1,y1,x2,y1);
line(x1,y1,x1,y2);
setcolor(15);
line(x2,y2,x2,y1);
line(x2,y2,x1,y2);
}
void _line(int x1, int y1, int x2, int y2, int color)
{
Trang 9line(x1,y1,x2,y1);
line(x2,y1,x2,y2);
line(x2,y2,x1,y2);
line(x1,y2,x1,y1);
}
void help()
{
int mh,mode;
mh=DETECT;mode=0;
initgraph(&mh,&mode," \\bgi");
setbkcolor(1);
cleardevice();
Reset_mouse();
Show_mouse();
_line(2,2,637,478,15);
_line(5,5,634,475,2);
_line(7,8,630,472,15);
_line(137,127,523,333,15);
_line(135,125,525,335,2);
settextstyle(7,0,1);
setcolor(5);
Hide_mouse();
button1(140,130,520,330,11);
setcolor(8);
settextjustify(0,0);
settextstyle(0,0,1);
outtextxy(146,150,"Phan mem mo phong va mo hinh hoa phien ban 1.0");
outtextxy(240,170,"Nhom sinh vien thiet ke:");
outtextxy(280,190,"Nguyen Le Hoa");
outtextxy(280,210,"Doan Phi Hung");
outtextxy(280,230,"Hoang Vu Hung");
outtextxy(280,250,"Lai Thien Hung");
outtextxy(165,270,"Phan mem duoc hoan thanh voi su giup do cua");
outtextxy(240,290,"PGS.TS Nguyen Cong Hien");
setcolor(12);
outtextxy(265,310," -*** -");
Show_mouse();
button(180,380,240,410,2,"Return",1,1);
button(420,380,480,410,2,"Exit",1,1);
while(1)
Trang 10Click_mouse();
if(Win_mouse(180,380,240,410)==1&&Click_mouse()==1) {
Hide_mouse();
button2(180,380,240,410,2,"Return",1,1);
delay(100);
button(180,380,240,410,2,"Return",1,1);
Show_mouse();
mainc();
}
if(Win_mouse(420,380,480,410)==1&&Click_mouse()==1) {
Hide_mouse();
button2(420,380,480,410,2,"Exit",1,1);
delay(100);
button(420,380,480,410,2,"Exit",1,1);
Show_mouse();
exit(1);
}
}
}
void Graph(void)
{
double p1,p2,p3,n1,Phttn[600],Phtlt;
int n,n0[600],i,N,N0[600],k;
char*st1;
setcolor(1);
p1=Nhap_p1();
p2=Nhap_p2();
p3=Nhap_p3();
Phtlt=1-(1-p1)*(1-p2)*(1-p3);
setcolor(RED);
outtextxy(250,80,"Phtlt=");
Write_text(300,80,Phtlt,st1,RED);
n0[0]=0;
for(i=0;i<=100;i++)
{
n=random(101);
n1=n*0.01;
if((n1<=p1)&(n1<=p2)&(n1<=p3))
n0[0]=n0[0]+1;
}
for(N=1;N<400;N++)
{
Trang 11n=rand() % 100;
n1=n*0.01;
if((n1<=(1-p1))&(n1<=(1-p2))&(n1<=(1-p3))) n0[N]=n0[N-1]+1;
else n0[N]=n0[N-1];
Phttn[N]= (N-n0[N])*0.1/(N);
}
setcolor(0);
moveto(200,290);
for(N=10;N<400;++N)
{
lineto(200+N,(int)(100-Phttn[N]*100)); delay(10);
}
}
void Result(void)
{
double p1,p2,p3,N,n1,Phtlt,Phttn;
int n,i,N0;
char*st2,*st3;
setcolor(1);
p1=Nhap_p1();
p2=Nhap_p2();
p3=Nhap_p3();
N=Nhap_N();
Phtlt=1-(1-p1)*(1-p2)*(1-p3);
Write_text(510,380,Phtlt,st2,15);
N0=0;
for(i=1;i<=N;i++)
{
n=rand() % 100;
n1=n*0.01;
if((n1<=(1-p1))&(n1<=(1-p2))&(n1<=(1-p3))) N0=N0+1;
}
Phttn=(N-N0)/N;
Write_text(510,400,Phttn,st3,15);
}
void Print(void)
{
int mh=DETECT,mode=1;
char*st;
double p1,p2,p3,n1,Phttn[600],GT;
int x1,y1,n,n0[600],n2[600],i,N,N0[600],k;
initgraph(&mh,&mode," \\bgi");
Trang 12cleardevice();
setcolor(1);
p1=Nhap_p1();
p2=Nhap_p2();
p3=Nhap_p3();
n0[0]=0; n2[0]=0;
for(i=0;i<=100;i++)
{
n=random(101);
n1=n*0.01;
if((n1<=(1-p1))&(n1<=(1-p2))&(n1<=(1-p3)))
n2[0]=n2[0]+1;
else n0[0]=n0[0]+1;
}
for(N=1;N<400;N++)
{
n=rand() % 100;
n1=n*0.01;
if((n1<=(1-p1))&(n1<=(1-p2))&(n1<=(1-p3)))
n0[N]=n0[N-1]+1;
else n0[N]=n0[N-1];
Phttn[N]= (N-n0[N])*0.1/(N);
}
_line(2,2,637,478,15);
_line(5,5,634,475,2);
_line(7,8,630,472,15);
x1=60;y1=100;GT=0;
for(i=1;i<400;i=i+4)
{
st=st+1;
GT=Phttn[i];
Write_text(x1,y1,GT,st,15);
x1=x1+140;
if(x1==620)
{
x1=60;
y1=y1+10;
}
}
outtextxy(200,50," -MOT SO GIA TRI CUA Pthtn -"); Show_mouse();
Trang 13while(1)
{
Click_mouse();
if(Win_mouse(280,380,340,410)==1&&Click_mouse()==1) {
Hide_mouse();
button2(280,380,340,410,2,"Home",1,1);
delay(100);
button(280,380,340,410,2,"Home",1,1);
Show_mouse();
mainc();
}
}
}
void mainc(void)
{
long *p;
int mh=0,mode=0;
int xmax ,ymax;
initgraph(&mh,&mode,"c:\\tc\\turboc\\tc\\bgi ");
cleardevice();
Reset_mouse();
Show_mouse();
setfillstyle(1,3);
xmax=getmaxx();
ymax=getmaxy();
bar(0,0,xmax,ymax);
Hide_mouse();
_line(2,2,637,478,15);
_line(5,5,634,475,13);
_line(7,8,630,472,15);
button1(200,50,600,291,15);
setcolor(0);
setlinestyle(1,0,1);
line(200,82,600,82);
line(200,108,600,108);
line(200,134,600,134);
line(200,160,600,160);
line(200,186,600,186);
Trang 14line(200,238,600,238);
line(200,264,600,264);
line(250,50,250,290);
line(300,50,300,290);
line(350,50,350,290);
line(400,50,400,290);
line(450,50,450,290);
line(500,50,500,290);
line(550,50,550,290);
setlinestyle(0,0,1);
line(200,50,195,55);
line(200,50,205,55);
line(600,291,595,286);
line(600,291,595,296);
Show_mouse();
settextstyle(0,0,1);
settextjustify(0,0);
setcolor(0);
outtextxy(250,30,"Do thi bieu dien gia tri Phttn"); settextstyle(0,0,1);
settextjustify(1,1);
outtextxy(200,300,"100");
outtextxy(250,300,"160");
outtextxy(300,300,"220");
outtextxy(350,300,"280");
outtextxy(400,300,"340");
outtextxy(450,300,"400");
outtextxy(500,300,"460");
outtextxy(550,300,"520");
outtextxy(600,300,"N");
outtextxy(195,40,"Phttn");
button(15,50,165,210,7,"",1,1);
button(15,220,165,430,7,"",1,1);
button(175,326,600,430,7,"",1,1);
setcolor(0);
outtextxy(400,360,"KET QUA MO PHONG");
outtextxy(350,380,"Do tin cay ly thuyet: Phtlt="); outtextxy(350,400,"Do tin cay thuc nghiem: Phttn="); outtextxy(90,240,"Nhap du lieu");
outtextxy(35,280,"p1");
Trang 15outtextxy(35,340,"p3");
outtextxy(35,370,"N");
button1(60,270,120,290,15);
button1(60,300,120,320,15);
button1(60,330,120,350,15);
button1(60,360,120,380,15);
setcolor(15);
button(25,70,75,100,2,"Help",1,1);
button(95,70,150,100,2,"Graph",1,1);
button(25,120,75,150,2,"Datain",1,1);
button(95,120,150,150,2,"Exit",1,1);
button(25,165,75,195,2,"Print",1,1);
button(95,165,150,195,2,"Reset",1,1);
while(1)
{
Click_mouse();
if( Win_mouse(25,70,75,100)==1&&Click_mouse()==1) {
Hide_mouse();
button2(25,70,75,100,2,"Help",1,1);
delay(100);
button(25,70,75,100,2,"Help",1,1);
Show_mouse();
help();
}
if( Win_mouse(25,120,75,150)==1&&Click_mouse()==1) {
Hide_mouse();
button2(25,120,75,150,2,"Datain",1,1);
delay(100);
button(25,120,75,150,2,"Datain",1,1);
Show_mouse();
Result();
}
if( Win_mouse(95,70,150,100)==1&&Click_mouse()==1) {
Hide_mouse();
button2(95,70,150,100,3,"Graph",1,1);
delay(100);
button(95,70,150,100,2,"Graph",1,1);
Show_mouse();
Graph();
}
Trang 16if(Win_mouse(95,120,150,150)==1&&Click_mouse()==1) {
Hide_mouse();
button2(95,120,150,150,2,"Exit",1,1);
delay(100);
button(95,120,150,150,2,"Exit",1,1);
Show_mouse();
exit(1);
} if(Win_mouse(95,165,150,195)==1&&Click_mouse()==1) {
Hide_mouse();
button2(95,165,150,195,2,"Reset",1,1);
delay(100);
button2(95,165,150,195,2,"Reset",1,1);
Show_mouse();
mainc();
} if(Win_mouse(25,165,75,195)==1&&Click_mouse()==1) {
Hide_mouse();
button2(25,165,75,195,2,"Print",1,1);
delay(100);
button(25,165,75,195,2,"Print",1,1);
Show_mouse();
Print();
} }
}
void main()
{
mainc();
}
7 Kết quả mô phỏng.
+ Trong trờng hợp số phép thử là cố định, ta có kết quả mô phỏng nh sau:
Nhận xét: Trong trờng hợp đợc trình bày nh hình dới thì số phép thử khi mô phỏng
đợc nhập vào là 2000 lần và cho ta kết quả theo tính toán lý thuyết là Phtlt = 0,9825 còn kết quả tính toán do thực nghiệm đa lại là Phttn = 0,8135 Nh vậy ta thấy kết quả thực nghiệm nhỏ hơn kết quả tính toán theo lý thuyết Điều này đợc giải thích là do kết quả lấy giá trị ngẫu nhiên mà có Cũng ứng với các giá trị độ tin cậy nh trên nhng số phép thử ta tăng lên
đến 3000 lần thì ta thu đợc kết quả sau Phtlt =0,985 và Phttn = 0,80733.