Mưa – tuân theo luật phân bố mũ với cường độ 1 1/ngày Nắng – tuân theo luật phân bố mũ với cường độ 2 1/ngày Trời đầy mây – tuân theo luật phân bố đều từ a đến b ngày Mây thay đổi tu
Trang 11.Tên và nội dung đề bài:
Thời tiết tại thành phố Hồ Chí Minh là kết quả tổ hợp của 3 trong 4 yếu tố thời tiết sau đây:
Mưa –Trời đầy mây - Mây thay đổi-Nắng
Mưa + Trời đầy mây +Mây thay đổi Dự báo :Mưa
Mưa +Mây thay đổi +Nắng Dự báo : Mát
Trời đầy mây +Mây thay đổi + Nắng Dự báo :Nắng
Nếu ngày nào chỉ có 0,1,2 hoặc 4 yếu tố tác động thì dự báo theo xu thế thời tiét 2 ngày trước đó
Mưa – tuân theo luật phân bố mũ với cường độ 1 1/ngày
Nắng – tuân theo luật phân bố mũ với cường độ 2 1/ngày
Trời đầy mây – tuân theo luật phân bố đều từ a đến b ngày
Mây thay đổi tuân theo luật phân bố đều từ c đến d ngày
Hãy thiết lập bài toán ,chọn các thồng số của các luật phân bố và tiến hành mô phỏng dự báo thời tiết ứng với 2 mùa mưa và nắng(khô)
Đưa ra dự báo trong 1 tuần
2.Phân tích đề bài.
Như vậy đề bài yêu cầu đưa ra dự bào thời tiết tại thành phố Hồ Chí Minh trong 1 tuần Việc đưa ra dự báo mưa,nắng,mát là phụ thuộc vào các sự kiện hôm đó có xảy ra các hiện tượng nào trong 4 sự kiện:mưa,nắng ,mây thay đổi,trời đầy mây.Và các sự kiện này xuất hiện tuân theo các luật phân bố mũ
và phân bố đều như trên,việc đưa ra dự báo hoàn toàn phụ thuộc vào các giá trị xác suất được nhập vào từ người sử dụng,và việc đang là mùa mưa hay khô (nắng ) là do người sử dụng nhập vào thông qua giá trị các tham số Như vậy đây là 1 hệ thống ngẫu nhiên ,và ta sẽ sử dụng phương pháp mô phỏng hệ ngẫu nhiên để làm bài toán này
Trang 2Đặc điểm chung của phương pháp mô phỏng hệ ngẫu nhiên:nó còn
có tên là 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 Thực chất của nó 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ó tác động mang tính ngẫu nhiên của môi trường xung quanh E,trên cơ sở đó ta nhận được dáng điệu phản ứng của hệ thống và các tín hiệu đầu ra của hệ thống Mỗi lần thực hiện phép thử ta thu được 1 kết quả chứa đựng những thông tin về hệ thống Nếu
số phép thử càng lớn thì kết quả thu được lấy trung bình sẽ càng chinh xác
và ổn định
Để mô phỏng ,ta cần 1 bộ số ngẫu nhiên ,số ngẫu nhiên phân bố đầu trong khoảng (0,1) thường được làm cơ sở sinh ra các số phân bố khác Để tạo ra nó ta có thể dùng máy phát số ngẫu nhiên hoặc dùng bảng số ngẫu nhiên hoặc dùng algorithm tạo số giả ngẫu nhiên
.Để tạo phân bố mũ Expo():
Lấy U~U(0,1)
Vậy X= -*ln(U)
.Để tạo phân bố đều U(a,b):
Lấy U~U(0,1)
Vậy X=a+(b-a)*U
3.Xác định các biến ngẫu nhiên
Theo đề bài ta có các biến ngẫu nhiên là :Um(mưa),Un(nắng),Utdm(trời đầy mây),Umtd(mây thay đổi) tuân theo các luật phân bố mũ và đều U(a,b)
4.Phân tích thuật giải.
Theo yêu cầu bài toan ta có thuật giải để làm như sau:
1 Đầu tiên tạo ra bộ số ngẫu nhiên U(0,1),rồi từ đó tạo ra các bộ số ngẫu nhiên theo các luật phân bố mũ,đều tương ứng.Từ đó ta tính được xác
Trang 3suất xuất hiện các yếu tố mưa ,nắng ,trời đầy mây,mây thay đổi trong các
ngày trong tuần.Qua các số liệu thu được ta sẽ đưa ra các dự báo thích hợp
2 Tìm khoảng cách các ngày có mưa-có mưa, có nắng-có nắng
3 Tìm sự kiện thời tiết các ngày trong tuần
4 So sánh các sự kiện thời tiết tác động trong ngày với luật cho ở bài
ra để đưa ra dự báo thời tiết trong ngày
Trang 4Thời tiết 2 ngày trước
Mát+
Mát
Nắng+
nắng
Mưa+
Mát
Mưa+
Mưa
Mưa+
Nắng
Mát+ Nắng
5.Lưu đồ tính toán.
`
Mưa+Trời đầy mây+Mây thay đổi
MƯA
Mưa+Mây thay đổi+Nắng
MÁT
Trời đầy mây+Mây thay đổi+Nắng
Các thụng số thời tiết
Trang 56.Xác định các điều kiện đầu,mô phỏng và ngừng mô phỏng
Các điều kiện đầu để mô phỏng là các tham số cho phân bố mũ
lamda1,lamda2 và phân bố đều a,b,c,d và cả thời tiết của 2 ngày trước đó
(tức thứ 7 và chủ nhật tuần trước),chương trình sẽ tính toán và đưa ra các dự báo thích hợp theo các thông số nhập theo thuật toán như trên.Chương trình
sẽ dừng lại khi có yêu cầu cầu người dùng
7.Chương trình mụ phỏng.
Private Sub dubao()
'khai bao bien:
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim k1 As Integer
Dim k2 As Integer
Dim k3 As Integer
Dim k4 As Integer
Dim i As Integer
Dim Um As Double
Dim Un As Double
Dim Utdm As Double
Dim Umtd As Double
Dim lamda1 As Double
Dim lamda2 As Double
Dim ngay(1 To 10) As String
Dim mua(1 To 10) As Integer
Dim nang(1 To 10) As Integer
Dim trdmay(1 To 10) As Integer
Dim mtdoi(1 To 10) As Integer
'nhap cac gia tri tu ban phim :
lamda1 = Val(Text1.Text)
lamda2 = Val(Text2.Text)
a = Val(Text3.Text)
b = Val(Text4.Text)
Trang 6c = Val(Text5.Text)
d = Val(Text6.Text)
ngay(1) = "TROI " & UCase(Text7.Text) 'thoi tiet hom thu 7
ngay(2) = "TROI " & UCase(Text8.Text) 'thoi tiet hom chu nhat
If (lamda1 < 0) Or (lamda2 < 0) Or (a > b) Or (c > d) Or (a < 0) Or (b < 0)
Or (c < 0) Or (d < 0) Or (Text7.Text = "") Or (Text8.Text = "") Then
MsgBox ("Ban Nhap Sai Hoac Thieu So Lieu Roi! Moi Ban Nhap Lai!!") Else
'khoi tao cac gia tri ngau nhien:
Um = Rnd
Um = (-lamda1) * Log(Um) 'khoang cach giua 2 lan co mua
k1 = Abs(Round(Um, 0)) 'lam tron so
Un = Rnd
Un = (-lamda2) * Log(Un) 'khoang cach giua 2 lan co nang
k2 = Abs(Round(Un, 0)) 'lam tron so
Utdm = Rnd
Utdm = a + (b - a) * Utdm 'khoang cach giua 2 lan co troi day may
k3 = Abs(Round(Utdm, 0)) 'lam tron so
Umtd = Rnd
Umtd = c + (d - c) * Umtd 'khoang cach giua 2 lan co may thay doi k4 = Abs(Round(Umtd, 0)) 'lam tron so
For i = 1 To 9
mua(i) = 0
nang(i) = 0
trdmay(i) = 0
mtdoi(i) = 0
Next i
If (k1 > 9) Then
k1 = 9
End If
If (k2 > 9) Then
k2 = 9
End If
If (k3 > 9) Then
k3 = 9
End If
If (k4 > 9) Then
k4 = 9
End If
Trang 7
If k1 > 0 Then
For i = 1 To k1 'tim cac ngay co su kien mua
mua(i) = 1
Next i
End If
If k2 > 0 Then
For i = 1 To k2 'tim cac ngay co su kien nang
nang(i) = 1
Next i
End If
If k3 > 0 Then
For i = 1 To k3 'tim cac ngay co su kien troi day may
trdmay(i) = 1
Next i
End If
If k4 > 0 Then
For i = 1 To k4 'tim cac ngay co su kien may thay doi
mtdoi(i) = 1
Next i
End If
'du bao thoi tiet cac ngay trong tuan toi:
i = 3
Do
k1 = 0
k2 = 0
k3 = 0
If (mua(i - 2) = 1) And (nang(i - 2) = 1) And (mtdoi(i - 2) = 1) And (trdmay(i - 2) = 0) Then
ngay(i) = "TROI MAT"
k1 = 1
End If
If (mua(i - 2) = 1) And (trdmay(i - 2) = 1) And (mtdoi(i - 2) = 1) And (nang(i - 2) = 0) Then
ngay(i) = "TROI MUA"
k2 = 1
End If
If (trdmay(i - 2) = 1) And (mtdoi(i - 2) = 1) And (nang(i - 2) = 1) And (mua(i - 2) = 0) Then
Trang 8ngay(i) = "TROI NANG"
k3 = 1
End If
If (k1 = 0) And (k2 = 0) And (k3 = 0) Then
If StrComp(UCase(ngay(i - 2)), "TROI MUA") = 0 And StrComp(UCase(ngay(i - 1)), "TROI MUA") = 0 Then
ngay(i) = "TROI MUA"
End If
If StrComp(UCase(ngay(i - 2)), "TROI NANG") = 0 And StrComp(UCase(ngay(i - 1)), "TROI NANG") = 0 Then
ngay(i) = "TROI NANG"
End If
If StrComp(UCase(ngay(i - 2)), "TROI MAT") = 0 And StrComp(UCase(ngay(i - 1)), "TROI MAT") = 0 Then
ngay(i) = "TROI MAT"
End If
If StrComp(UCase(ngay(i - 2)), "TROI MUA") = 0 And StrComp(UCase(ngay(i - 1)), "TROI MAT") = 0 Then
ngay(i) = "TROI MUA"
End If
If StrComp(UCase(ngay(i - 2)), "TROI MAT") = 0 And StrComp(UCase(ngay(i - 1)), "TROI MUA") = 0 Then
ngay(i) = "TROI MUA"
End If
If StrComp(UCase(ngay(i - 2)), "TROI MUA") = 0 And StrComp(UCase(ngay(i - 1)), "TROI NANG") = 0 Then
ngay(i) = "TROI MAT"
End If
If StrComp(UCase(ngay(i - 2)), "TROI NANG") = 0 And StrComp(UCase(ngay(i - 1)), "TROI MUA") = 0 Then
ngay(i) = "TROI MAT"
End If
If StrComp(UCase(ngay(i - 2)), "TROI MAT") = 0 And StrComp(UCase(ngay(i - 1)), "TROI NANG") = 0 Then
ngay(i) = "TROI NANG"
End If
If StrComp(UCase(ngay(i - 2)), "TROI NANG") = 0 And StrComp(UCase(ngay(i - 1)), "TROI MAT") = 0 Then
ngay(i) = "TROI NANG"
End If
Trang 9End If
i = i + 1
Loop Until i = 10
'dua ra thong bao
Text9 = ngay(3)
Text10 = ngay(4)
Text11 = ngay(5)
Text12 = ngay(6)
Text13 = ngay(7)
Text14 = ngay(8)
Text15 = ngay(9)
If ngay(3) = "TROI MUA" Then mua2.Visible = True
maym2.Visible = True
mat2.Visible = False
mayn2.Visible = False
End If
If ngay(3) = "TROI NANG" Then mat2.Visible = True
mayn2.Visible = True
mua2.Visible = False
maym2.Visible = False
End If
If ngay(3) = "TROI MAT" Then mat2.Visible = True
maym2.Visible = True
mayn2.Visible = False
mua2.Visible = False
End If
If ngay(4) = "TROI MUA" Then mua3.Visible = True
maym3.Visible = True
mat3.Visible = False
mayn3.Visible = False
End If
If ngay(4) = "TROI NANG" Then mat3.Visible = True
mayn3.Visible = True
Trang 10mua3.Visible = False
maym3.Visible = False
End If
If ngay(4) = "TROI MAT" Then mat3.Visible = True
maym3.Visible = True
mayn3.Visible = False
mua3.Visible = False
End If
If ngay(5) = "TROI MUA" Then mua4.Visible = True
maym4.Visible = True
mat4.Visible = False
mayn4.Visible = False
End If
If ngay(5) = "TROI NANG" Then mat4.Visible = True
mayn4.Visible = True
mua4.Visible = False
maym4.Visible = False
End If
If ngay(5) = "TROI MAT" Then mat4.Visible = True
maym4.Visible = True
mayn4.Visible = False
mua4.Visible = False
End If
If ngay(6) = "TROI MUA" Then mua5.Visible = True
maym5.Visible = True
mat5.Visible = False
mayn5.Visible = False
End If
If ngay(6) = "TROI NANG" Then mat5.Visible = True
mayn5.Visible = True
mua5.Visible = False
maym5.Visible = False
Trang 11End If
If ngay(6) = "TROI MAT" Then mat5.Visible = True
maym5.Visible = True
mayn5.Visible = False
mua5.Visible = False
End If
If ngay(7) = "TROI MUA" Then mua6.Visible = True
maym6.Visible = True
mat6.Visible = False
mayn6.Visible = False
End If
If ngay(7) = "TROI NANG" Then mat6.Visible = True
mayn6.Visible = True
mua6.Visible = False
maym6.Visible = False
End If
If ngay(7) = "TROI MAT" Then mat6.Visible = True
maym6.Visible = True
mayn6.Visible = False
mua6.Visible = False
End If
If ngay(8) = "TROI MUA" Then mua7.Visible = True
maym7.Visible = True
mat7.Visible = False
mayn7.Visible = False
End If
If ngay(8) = "TROI NANG" Then mat7.Visible = True
mayn7.Visible = True
mua7.Visible = False
maym7.Visible = False
End If
If ngay(8) = "TROI MAT" Then
Trang 12mat7.Visible = True
maym7.Visible = True
mayn7.Visible = False
mua7.Visible = False
End If
If ngay(9) = "TROI MUA" Then muacn.Visible = True
maymcn.Visible = True
matcn.Visible = False
mayncn.Visible = False
End If
If ngay(9) = "TROI NANG" Then matcn.Visible = True
mayncn.Visible = True
muacn.Visible = False
maymcn.Visible = False
End If
If ngay(9) = "TROI MAT" Then matcn.Visible = True
maymcn.Visible = True
mayncn.Visible = False
muacn.Visible = False
End If
End If
End Sub
Private Sub Command1_Click() Call dubao
End Sub
Private Sub Command2_Click() form2.Show
End Sub
Private Sub Command4_Click() Beep
End
End Sub
Trang 138.Thiết kế giao diện
Bài này sử dụng phần mềm Visual Basic để thiết kế giao diện và tớnh toỏn
9.Kết quả
Ta được chương trình mô phỏng như sau :
10.Nhận xét
Như vậy bằng việc mô phỏng hệ ngẫu nhiên ta đã đưa ra được các
dự báo thời tiết tại TPHCM trong 1 tuần,dựa vào các thông số cần thiết được nhập Tuy nó không là 1 bài dự báo chính xác thời tiết nhưng nó là 1 ví dụ điển hình cho phương pháp mô hình hóa hệ ngẫu nhiên ,kết quả thu
được ,trong phạm vi bài toán là khá đáng tin cậy
Trang 1411.Tài liệu tham khảo
[1].Giáo trình Mô hình hóa hệ thống và mô phỏng (GS.TS Nguyễn Công Hiền)
[2].Giáo trình tự học lập trình Visual Basic 6.0 (Nguyễn Tiến,Đặng Xuân Hường,Nguyễn Văn Hoài,Trương NGọc Lan)