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 nhưng 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.
19 trang |
Chia sẻ: huong.duong | Lượt xem: 1612 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài tập mô hình hoá - Mô hình hoá hệ ngẫu nhiên, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
bà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:
p1
p2
p3
0,7
0,75
0,8
0,75
0,7
0,6
0,6
0,7
0,6
0,85
0,75
0,8
0,65
0,8
0,7
0,75
0,2
0,8
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 tì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:
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ư x<=(1-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
4. Lưu đồ thuật toán.
Trên cơ sơ thuật giải ở trên lưu đồ thuật toán cho hệ thống được mô tả dưới đây.
5. Trong thuật giải bài toán này đã được trình bày như lưu đồ 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.
6. Viết chương trình mô phỏng.
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"
#include"stdio.h"
#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);
}
void 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_xy1&&mouse_y<y2 ) return 1;
else 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;
}
s[i]=0;
}
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);
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 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)
{
setcolor(color);
line(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)
{
Click_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++)
{
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);
}
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");
setbkcolor(1);
cleardevice();
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();
button(280,380,340,410,2,"Home",1,1);
while(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);
line(200,212,600,212);
line(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");
outtextxy(35,310,"p2");
outtextxy(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();
}
if(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 nhưng 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.
9. Kết quả dưới dạng đồ thị.
+ Trong trường hợp thay đổi số phép thử ta thu được kết quả dưới dạng một đồ thị các giá trị của Phttn như sau:
Tương ứn với đồ thị trên, ta in ra được một số kết quả sau:
10.Nhận xét kết quả mô phỏng
Từ kết quả bằng đồ thị ở trên ta nhận thấy khi số phép thử càng lớn thì kết quả Phttn càng gần với Phtlt, tức là kết quả càng chính xác. Bằng cách thay đổi bước tính càng lớn thêm thì ta được kết quả sẽ chính xác hơn.
11. Tài liệu tham khảo.
Giáo trình Mô hình hoá hệ thống và mô phỏng-PGS.TS Nguyễn Công Hiền.
Các file đính kèm theo tài liệu này:
- DAN355.doc