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

mô hình hóa các hệ thống ngẫu nhiên bản tin dự báo thời tiết của tp hồ chí minh

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 (127.76 KB, 14 trang )

1.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.
Đặ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
suấ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.
NẮNG
Thờ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
Mưa Nắng Mát Mưa Mát Nắng
Các thụng số
thời tiết
6.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)
c = 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

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

ngay(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
End 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
mua3.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

End 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
mat7.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
8.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.
11.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)

×