Tải bản đầy đủ (.doc) (19 trang)

bài tập lớn mô hình hóa đánh giá hệ số sẵn sàng của hệ thống có phục hồi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (180.17 KB, 19 trang )

Đề 24:
Đánh giá hệ số sẵn sàng của hệ thống có phục hồi
1. Tính hệ số sẵn sàng :
Tlv
Kss =
(Tlv +Tph)
2. Vẽ đường cong làm việc của hệ thống
Cho biết :
λ
, 1/giây 0.0001 0.0002 0.0003
µ
,1/ giây 0.001 0.002 0.003
Phần 1 . Giới thiệu phương pháp mô hình hoá hệ ngẫu nhiên

Ở giai đoạn nghiên cứu và thiết kế hệ thống bằng máy tính ,
người ta thường ứng dụng phương pháp thử thống kê - còn có
tên là phương pháp Monte-Carlo .Phương pháp này sử dụng các
số ngẫu nhiên có phân bố xác suất nhất định.Những mô hình dựa
trên phương pháp này được gọi là mô hình xác suất.
Thực chất của phương pháp mô hình xác suất là xây dựng
trên máy tính hệ thống S với các quan hệ nội tại của nó. Đầu vào
của hệ có tác động mang tính ngẫu nhiên như số lượng các sự
kiện xảy, thời gian giữa các sự kiện hoặc tác động của môi trường
xung quanh E. Trên cơ sở đó phân tích các tín hiệu đầu ra người
ta nhận được dáng điệu phản ứng của hệ thống. Đó là phương
pháp mô phỏng. Mỗi một lần thực hiện phép thử người ta thu
được một lời giải chứa đựng thông tin về dáng điệu của hệ thống
S. Nếu số phép thử N đủ lớn thì kết quả thu được bằng cách lấy
trung bình theo xác xuất sẽ ổn định và đạt độ chính xác cần thiết.
Trong hệ ngẫu nhiên có nhiều biến ngẫu nhiên. Các đặc trưng
quan trọng của biến ngẫu nhiên là hàm mật độ xác xuất, hàm


phân bố xác xuất , các thông số kỳ vọng toán, phương sai và một số
đặc trưng khác
Trong hệ ngẫu nhiên có nhiều đại lượng mang tính ngẫu nhiên
Bảng liệt kê một số đại lượng ngẫu nhiên trong các hệ khác nhau:
Loại hệ thống
Hệ thống sản
xuất
Hệ thống máy
tính
Hệ thống thông
tin liên lạc
Các biến ngẫu nhiên
Thời gian vận hành máy, ngừng máy do hỏng,
thời gian thao tác, số lần hỏng hóc
Thời gian giữa các lần làm việc, thời gian giải các
bài toán
Số khách hàng, thời gian giữa các lần liên lạc,
thời gian liên lạc, thời gian phục vụ
Các phân bố phổ biến trong thực tế

*Phân bố đều trong đoạn (a,b)

có hàm phân bố và hàm mật độ :
x

a
b

a
F(x)=

với a≤x≤ b
0 với giá trị còn lại của x
1
b

a
f(x)=
với a≤x≤b
0 với giá trị còn lại của x
trường hợp riêng khi a=0 , b=1 ta có phân bố đều trong (0,1)
*Phân bố mũ expo (β)

Có hàm phân bố và hàm mật độ là:
1
a
F(x)=
e
− x
/ a
với x>=0
0 với x<=0
1-
e

f(x)=
0
x / a
với x>=0
với x<=0
2

Ngoài ra ta còn có các phân bố khác như phân bố chuẩn
N(μ,σ
2
),phân bố gián đoạn,phân bố Poisson (λ).
Khi mô phỏng hệ thống người ta thường cần có các số ngẫu
nhiên phân bố theo những luật phân bố nhất định để mô phỏng
các sự kiện ngẫu nhiên xảy ra trong hệ .Số ngẫu nhiên phân bố
đều trong khoảng (0,1) thường được dùng làm cơ sở để sản sinh
ra số ngẫu nhiên có các phân bố khác nhau.Sau đây chúng ta
nghiên cứu một số phương pháp thông dụng tạo ra U(0,1).
*Dùng máy phát ngẫu nhiên

Máy phát số ngẫu nhiên dựa trên nguyên tắc sử dụng nhiễu do
các thiết bị điện tử gây ra.
Ưu điểm : nhận được dãy số hoàn toàn ngẫu nhiên (bằng cách
thay đổi thời gian lấy mẫu T và điện áp cắt U) và số lượng không
hạn chế.
Nhược điểm : phải lắp thêm vào máy tính máy phát số ngẫu
nhiên.Khi cần làm lại quá trình mô phỏng thì không tạo được dãy số
ngẫu nhiên giống lần trước nên không thể so sánh chính xác kết
quả của 2 lần thử nghiệm.
*Dùng bảng số ngẫu nhiên .
Cách này có ưu điểm là có thể lặp lại dãy số ngẫu nhiên cho
các lần mô phỏng khác nhau,như vậy sẽ tiện cho việc theo dõi .
Nhược điểm của phương pháp này là tốn bộ nhớ
*Dùng thuật toán để tạo ra số ngẫu nhiên :
Dưới đây là một số thuật toán hay dùng :
Thuật toán lấy phần giữa của số bình phương:
Ví dụ :
X

0
=0.2152
X
0
2
=0.04631104


X
1
=0.6311
X
1
2
=0.39828721

X
2
=0.8287
Thuật toán nhân

Xn+1= phần lẻ của λ*xn trong đó λ là số có dạng ( 8t-3) hoặc
(8t+3) trong đó t là số nguyên dương
X
0
=0.37843
Lấy λ=37 thì
X
1
=0.00191

X
2
=0.07067
X
3
=0.61479
X
4
=0.74723
Như vậy ta đã tạo ra được biến ngẫu nhiên U
:
(0,1)
Khi đó nếu biến X có phân bố F(X) thì thuật toán tạo ra biến ngẫu
nhiên X là :
- Lấy U

(0,1)
- Lấy X= F
-1
(u)
Dưới đây ta đưa ra thuật toán tạo ra các biến ngẫu nhiên
có phân bố mong muốn
*Biến ngẫu nhiên có phân bố mũ expo(β)
- Lấy U

(0,1)
- Lấy X=-βln(U)
Trong đó β là thông số của phân bố mũ
*Thuật toán tạo số ngẫu nhiên có phân bố đều trong(a,b)
- Lấy U


(0,1)
- Lấy X=a+(b-a)U
Phần2. Phân tích thuật giải

1.Thuật giải

1.Gieo số ngẫu nhiên Ui ~ U(0,1) để tính thời gian làm việc
2.Thời gian làm việc :
Tlv = -
λ

ln(Ui), Ui ~ U(0,1)
3.Gieo số ngẫu nhiên Ui ~ U(0,1) để tính thời gian phục hồi
4.Thời gian phục hồi :
Tph=-
µ

ln(Ui) , Ui ~ U(0,1)
5.Đếm thời gian làm việc : Tlàm việc =

T
lvi
6.Đếm thời gian phục hồi: T phục hồi =

T
phi
7.Tính hệ số sẵn sàng :
Tlv
Kss =

(Tlv+Tph)
2. Sơ đồ thuật toán






 
  !
"#$
%&'%(&%"&
"#$
%&'%(&%"&
!%) &
!%) &









*





+


In kÕt qu¶
KÕt thóc
Phần 3. Lập trình Visual Basic
Option Explicit
Const e = 2.71828
Dim maxx, maxy, d, dt, t(10), w(10), n, f, g, Tlv, Tph, c, b As Double
Dim kx, Kss, ex, ky, Plv(10), Clv(10000) As Double
Dim muy, lamda, Tphuchoi, Tlamviec, Tongthoigiansua,
Tongthoigiankiemtra, u As Double
Dim Thoigianlamviec(1 To 10) As Double
Dim Thoigianphuchoi(1 To 10) As Double
Dim i As Long 'su dung trong cac vong lap
Dim i1 As Long 'nt
Dim i2 As Long 'nt
Dim biendem As Long ' biendem co tac dung lien ket mang cac
'thong so da tinh toan de truyen so lieu vao chuong trinh
'duoc thuc hien trong cac timer
Dim a As Double
'bien darun giup kiem tra chuong trinh da chay lan nao chua
Dim Dacapnhatthongso As Boolean
Dim darun As Boolean
Private Sub Cmdexit_Click()
Dim a As Double
a = MsgBox("Do you want to exit?", vbQuestion + vbYesNo, " Exit?")
If a = 6 Then
End
End If

End Sub
Private Sub CmdResult_Click()
'Neu chuong trinh chua chay lan nao thi nut lenh nay
'se co tac dung nhu la nut len run cua chuong trinh vay
'**********************************************
If Not darun Then
darun = True
If Not Dacapnhatthongso Then
capnhatthongso
End If
Khoitaotudau
Tinhtoan
Timer1.Enabled = True
End If
'**********************************************
Label15.Caption = "" & CStr(Round(Tongthoigiankiemtra, 2)) & "h"
Label16.Caption = "" & CStr(Round(Tongthoigiansua, 2)) & "h"
Label7.Caption = CStr(Round(Kss, 2))
End Sub
Private Sub CmdReset_Click()
Text1.Text = "0.0001"
Text2.Text = "0.001"
lamda = 0.0001
muy = 0.001
Khoitaotudau
End Sub
Private Sub CmdRun_Click()
'chay moi thi cac thong so tinh tong thoi gian da thay doi, vi vay ma
'cac nhan thong so cu phai duoc xoa di
Label15.Caption = ""

Label16.Caption = ""
'***********************************************
darun = True
If Not Dacapnhatthongso Then
capnhatthongso
End If
Khoitaotudau
Tinhtoan
Timer1.Enabled = True
End Sub
Private Sub Command1_Click()
End Sub
Private Sub Form_Load()
Khoitaotudau
End Sub
Private Sub khoitaothongso()
Text1.Text = "0.0001"
Text2.Text = "0.001"
lamda = 0.0001
muy = 0.001
Dacapnhatthongso = False
darun = False
End Sub
Private Sub Khoitaotudau()
Picture3.Cls
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
'Khoi dong lai vi tri thanh progress
Picphantram.Move -Picprogress.Width, 0, Picprogress.Width,

Picprogress.Height
'Khoi tao lai gia tri hien thi tren cac nhan
Label8.Caption = " 0"
Label9.Caption = " 0"
Label7.Caption = " "
Label15.Caption = " "
Label16.Caption = " "
Label17.Caption = " ARE YOU READY?"
End Sub
Private Sub capnhatthongso()
Dacapnhatthongso = True
lamda = CDbl(Text1.Text)
muy = CDbl(Text2.Text)
End Sub
Private Sub Tinhtoan()
'khoi dong lai cac thong so
biendem = 0
i = 0
i1 = 0
'Tinh toan va ghi cac gia tri tuc thoi vao mot mang gia tri
For i = 1 To 10
u = Rnd
Tlamviec = -1 / lamda * Log(u) / Log(e)
Thoigianlamviec(i) = Tlamviec
u = Rnd
Tphuchoi = -1 / muy * Log(u) / Log(e)
Thoigianphuchoi(i) = Tphuchoi
Next i
'Tinh tong cac thong so tuc thoi vao cac bien se hien thi trong bang
Result

Tongthoigiansua = 0
Tongthoigiankiemtra = 0
For i = 1 To 10
Tongthoigiansua = Tongthoigiansua + Thoigianphuchoi(i)
Tongthoigiankiemtra = Tongthoigiankiemtra + Thoigianlamviec(i)
Next i
c = (Tongthoigiansua + Tongthoigiankiemtra) / 1000
'Tinh he so san sang
Kss = (Tongthoigiankiemtra) / (Tongthoigiansua +
Tongthoigiankiemtra)
End Sub
Private Sub Image2_Click()
End Sub
Private Sub mnuchay_Click()
'chay moi thi cac thong so tinh tong thoi gian da thay doi, vi vay ma
'cac nhan thong so cu phai duoc xoa di
Label15.Caption = ""
Label16.Caption = ""
'***********************************************
darun = True
If Not Dacapnhatthongso Then
capnhatthongso
End If
Khoitaotudau
Tinhtoan
Timer1.Enabled = True
End Sub
Private Sub mnudanhsachnho_Click()
Dim an As Integer
an = MsgBox("Nguyen Quoc Thang" & Chr(13) & "Nguyen Van

Giang" & Chr(13) & _
"Hoang Van Tung" & Chr(13) & "Cung Dinh Vinh", vbOKOnly, "Danh
Sach Nhom 3")
End Sub
Private Sub mnuexit_Click()
End
End Sub
Private Sub mnuresult_Click()
'Neu chuong trinh chua chay lan nao thi nut lenh nay
'se co tac dung nhu la nut len run cua chuong trinh vay
'**********************************************
If Not darun Then
darun = True
If Not Dacapnhatthongso Then
capnhatthongso
End If
Khoitaotudau
Tinhtoan
Timer1.Enabled = True
End If
'**********************************************
Label15.Caption = "" & CStr(Round(Tongthoigiankiemtra, 2)) & "h"
Label16.Caption = "" & CStr(Round(Tongthoigiansua, 2)) & "h"
Label7.Caption = CStr(Round(Kss, 2))
End Sub
Private Sub mnureset_Click()
Text1.Text = "0.0001"
Text2.Text = "0.001"
lamda = 0.0001
muy = 0.001

Khoitaotudau
End Sub
Private Sub Text1_Change()
Dacapnhatthongso = False
darun = False
End Sub
Private Sub Text2_Change()
Dacapnhatthongso = False
darun = False
End Sub
Private Sub Timer1_Timer()
'tang bien dem len 1 de goi so lieu moi trong mang so lieu da tinh
biendem = biendem + 1
'hien thi cac thong so tren cac nhan tu mang da tinh toan
Label8.Caption = ""
Label9.Caption = ""
Timer1.Enabled = False
Label17.Caption = " WORKING"
'Hien thi thoi gian lam viec len man hinh
Label8.Caption = " " & CStr(Round(Thoigianlamviec(biendem), 2)) & "
h"
Tlv = Thoigianlamviec(biendem)
Tph = Thoigianphuchoi(biendem)
'Tinhh gia tri exp(-lamda*t)
Plv(0) = 0
Plv(biendem) = Exp(-lamda * Tlv)
'Khoi dong timer2 de bat dau qua trinh kiem tra oto
Timer2.Enabled = True
Image1.Visible = True
Image2.Visible = False

'Ve cac truc toa do
maxx = Picture3.ScaleWidth
maxy = Picture3.ScaleHeight
Picture3.DrawStyle = 0
Picture3.Line (500, 200)-(500, maxy - 200), QBColor(9)
Picture3.Line -(maxx - 200, maxy - 200), QBColor(9)
'Ve mui ten dau truc T(h)
Picture3.Line -Step(-50, -50), QBColor(9)
Picture3.Line -Step(0, 100), QBColor(9)
Picture3.Line -Step(50, -50), QBColor(9)
Picture3.CurrentX = maxx - 500
Picture3.CurrentY = maxy - 200
Picture3.Print "T(h)"
'Ve mui ten dau truc P(t)
Picture3.Line (500, 200)-(550, 250), QBColor(9)
Picture3.Line -Step(-100, 0), QBColor(9)
Picture3.Line -Step(50, -50), QBColor(9)
Picture3.CurrentX = 200
Picture3.CurrentY = 100
Picture3.Print "P(t)"
ky = (maxy - 200)
ex = (maxx - 200)
kx = (maxx - 1000)
b = ky / 12
'Ve cac duong dong nam ngang va danh so
For i = 0 To 9
Picture3.DrawStyle = 2
Picture3.Line (480, ky - (i + 1) * b)-(ex, ky - (i + 1) * b), QBColor(7)
Picture3.CurrentX = 0
Picture3.CurrentY = (ky - (i + 1) * b - 50)

Picture3.Print Format(Round((i + 1) / 10, 2))
Next
'Danh so diem'0'
Picture3.CurrentX = 400
Picture3.CurrentY = maxy - 200
Picture3.Print Format(0)
'Ve cac vach doc tren truc nam ngang va danh so
dt = c * 100
For i = 1 To 10
Picture3.DrawStyle = 0
Picture3.Line (500 + i * (kx - 500) / 10, maxy - 240)-(500 + i * (kx -
500) / 10, maxy - 160), QBColor(5)
Picture3.CurrentX = 250 + i * (kx - 500) / 10
Picture3.CurrentY = maxy - 200
Picture3.Print Format(i * dt, "0")
Next
've ghi chu
Picture3.Line (ex - 1500, 100)-(ex - 1000, 100), QBColor(2)
Picture3.Print " WORK "
Picture3.Line (ex - 1500, 300)-(ex - 1000, 300), QBColor(12)
Picture3.Print " RESTORE "
Picture3.CurrentX = 2000
Picture3.CurrentY = 100
Picture3.Print "STATUS OF OPERATION CHART"
'Ve thoi gian lam viec theo ham cong e mu
d = (kx - 500) / 1000
Tlv = Thoigianlamviec(biendem)
Tph = Thoigianphuchoi(biendem)
t(0) = 0
t(0) = 0

t(biendem) = t(biendem - 1) + (Tlv / c) * d
w(biendem) = w(biendem - 1) + (Tph / c) * d
n = Tlv / c
For f = 0 To n
Clv(f) = Exp(-lamda * f * c)
Next f
For g = 1 To n
Picture3.Line (500 + t(biendem - 1) + w(biendem - 1) + d * (g - 1), ky -
10 * ky / 12 + (1 - Clv(g - 1)) * 10 * ky / 12)-(500 + w(biendem - 1) +
t(biendem - 1) + g * d, ky - 10 * ky / 12 + (1 - Clv(g)) * 10 * ky / 12),
QBColor(2)
Next g
've duong dong xuong
Picture3.DrawStyle = 2
Picture3.Line (500 + t(biendem) + w(biendem) - (Tph / c) * d, ky - 10 *
ky / 12 + (1 - Plv(biendem)) * 10 * ky / 12)-(500 + t(biendem) +
w(biendem) - (Tph / c) * d, ky + 40)
End Sub
Private Sub Timer2_Timer()
' dua ra thong bao ve thoi gian can phuc hoi
Label9.Caption = " " & CStr(Round(Thoigianphuchoi(biendem), 2)) &
" h"
'dung lai doi phuc hoi
Timer2.Enabled = False
'Khoi dong timer3 de bat dau qua trinh phuc hoi
Timer3.Enabled = True
Image1.Visible = False
Image2.Visible = True
'Ve duong phuc hoi
Picture3.DrawStyle = 0

Picture3.Line (500 + t(biendem) + w(biendem) - (Tph / c) * d, ky - 10 *
ky / 12 + (1 - Plv(biendem)) * 10 * ky / 12)-(500 + t(biendem) +
w(biendem), ky - 10 * ky / 12), QBColor(12)
'Ve duong dong
Picture3.DrawStyle = 2
Picture3.Line -(500 + t(biendem) + w(biendem), ky + 40)
End Sub
Private Sub Timer3_Timer()
'Bien i1, i2 co tac dung la cac bien dem thoi gian tao ra
'cac ham tre thoi gian theo y muon
i1 = i1 + 1
i2 = i2 + 1
If i2 >= 10 Then
If Picphantram.Left < 0 Then
Label17.Caption = " RESTORING "
Picphantram.Move Picphantram.Left + 10
i1 = 0
End If
'sau khi phuc hoi xong dua ra thong bao DA PHUC HOI
If Picphantram.Left >= 0 And i1 = 0 Then
Label17.Caption = " RESTORED ALREADY "
End If
'***************************************
End If
If i1 >= 100 Then
i2 = 0
If biendem < 10 Then
Label17.Caption = " ARE YOU READY?"
Timer3.Enabled = False
Timer1.Enabled = True

End If
'Sau khi lam viec 10 lan roi thi hien thi bang report thong bao
'cho nguoi thi hanh biet ket qua chay cua chuong trinh
'*******************************************************
If biendem >= 10 Then
Label17.Caption = " TRY AGAIN "
Label15.Caption = " " & CStr(Round(Tongthoigiankiemtra, 2)) & " h"
Label16.Caption = " " & CStr(Round(Tongthoigiansua, 2)) & " h"
Label7.Caption = CStr(Round(Kss, 2))
Timer3.Enabled = False
End If
'Thiet lap lai thanh phan tram
i1 = 0
Picphantram.Left = -Picphantram.Width
End If
End Sub
Phần 4 Thiết kế và nhận xét
1.Thiết kế giao diện :
Giao diện được thiết kế như sau :
Sau khi ấn nút Run để chạy chương trình , trên giao diện sẽ nói rõ
quá trình làm việc và quá trình phục hồi, đồng thời sẽ vẽ ra đồ thị
tương ứng với các quá trình đó.
2.Kết quả mô phỏng :
Ví dụ sau khi chạy chương trình, với các số liệu ban đầu là :
λ
= 0,0001 (1/giờ)
µ
= 0,001 (giờ)
ta cú kết quả mụ phỏng:
Tổng thời gian làm việc : 109796.46h

Tổng thời gian phục hồi : 7784.83h
Hệ số sẵn sàng : 0.93
3.Nhận xét bình luận kết quả mô phỏng :
Mô hình mô phỏng hoàn toàn phù hợp với yêu cầu của bài toán.
Em đã hoàn thành bài tập môn mô hình hóa với đề tài : “Đánh
giá hệ số sẵn sàng của hệ thống có phục hồi”. Một lần nữa em xin
chân thành cảm ơn cô giáo Phạm Thị Hồng Anh đã hướng dẫn giúp
em thực hiện tốt bài tập này.
TÀI LIỆU THAM KHẢO
1.Mô hình hóa hệ thống và mô phỏng. Gs.Ts.Nguyễn công
Hiền
Ts.Nguyễn Phạm Thục Anh
NXB Khoa học kỹ thuật HN
2.Giáo trình xác suất thống kê. Tống Đình Quỳ
NXB Giáo dục HN
3.Lập trình cơ sở dữ liệu 6.0. Nguyễn thị ngọc Mai
NXB Thống Kê
4.Tự học lập trình Visual Basic trong 21 Ngày
NXB Giáo Dục

×