PHƯƠNG PHÁP MONTE CARLO và THUẬT TOÁN

47 64 0
PHƯƠNG PHÁP MONTE CARLO và THUẬT TOÁN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 Bộ GIáO DụC Và ĐàO TạO Trờng Đại học Vinh ******************** phơng pháp monte carlo thuật toán giải toán quy hoạch KhóA LUậN cử nhân khoa học Ngành toán tin ứng dụng Vinh, 2011 Bộ GIáO DụC Và ĐàO TạO Trờng Đại học Vinh ******************** phơng pháp monte carlo thuật toán giải toán quy hoạch Ngời hớng dẫn khoa học: ThS Nguyễn thị hiền Vinh, 2011 Mục lục Trang Mở đầu: Chơng Phơng pháp Monte Carlo thuật toán .3 1.1 Phơng pháp Monte Carlo 1.1.1 Giíi thiƯu chung ph¬ng ph¸p Monte Carlo 1.1.2 C¸c néi dung phơng pháp Monte Carlo 1.2 Sơ lợc Thuật toán 1.2.1 Bài toán Quy hoạch .9 1.2.2 Tht to¸n Monte Carlo tỉng quát 10 1.2.2.1 Định nghĩa .10 1.2.2.2 Định lý .11 1.2.3 ThuËt toán Monte Carlo theo toạ độ 13 Chơng Thiết lập chơng trình ngôn ngữ lập tr×nh Visual Basic 14 2.1 Giíi thiƯu Visual Basic 14 2.1.1 Visual Basic lµ gì? .14 2.1.2 Cài ®Ỉt Visual Basic 15 2.1.3 Khëi ®éng Visual Basic 15 2.1.4 Thoát chơng trình Visual Basic 16 2.1.5 Hóng dẫn cài đặt chơng trình mô thuật toán Monte Carlo theo tọa độ (đà đợc ®ãng gãi) 16 2.1.6 Tõ khãa, tªn, quy tắc đặt tên số câu lệnh thờng gỈp 18 2.1.6.1 Tõ khãa .18 2.1.6.2 Tên quy tắc đặt tên 18 2.1.6.3 Một số câu lệnh thờng gặp 18 2.1.6.4 Câu lệnh, khối lệnh, bẫy lỗi Visual Basic 19 2.2 Cấu trúc giao diện chơng trình 21 KÕt luËn 36 Tµi liƯu tham kh¶o 37 Mở ĐầU Phơng pháp Monte Carlo đời thời với hệ máy tính điện tử Mỹ từ năm 1943-1944 Tuy nhiên, tên gọi phơng pháp Monte Carlo hay gọi phơng pháp thử thống kê xuất từ điển Toán học vào năm 1949-1950 Đến năm 1961 chuyên khảo phơng pháp Monte Carlo nhà toán học N.P.Buslenko J.A.Srejder (ngời Nga) đời đợc nhiều nhà toán học quan tâm nớc ta, phơng pháp Monte Carlo đợc giảng dạy áp dụng vào thực tế từ năm 1963, mà công phải kể đến Giáo s Nguyễn Quý Hỷ, trờng Đại học KHTNĐHQG Hà Nội Chuyện kể Thành phố Monte (Monaco), thành phố tiếng với sòng bạc phục vụ nhiều hạng ngời khác Sự may rủi, đỏ đen liên tiếp đợc thể nghiệm phép thử tung đồng tiền chiếu bạc Nếu nói xác suất bắt nguồn từ chuyện ngời say rợu, phơng pháp Monte Carlo lại bắt nguồn từ sòng bạc thành phố có tên Monte MÃi đến năm 1977 phơng pháp đợc đa ứng dụng thời máy tính điện tử lần nớc ta Trớc tiên việc mô trận động đất giải toán thiết kế tối u thí nghiệm cỡ lớn (1977-1978) để bổ sung hệ trạm quan sát lÃnh thổ Việt Nam Năm 1985-1987 phơng pháp đợc dùng để giải toán điều khiển tối u nhà máy thủy điện Hoà Bình xác định trữ lợng thủy điện sông lới điện thống Bắc-Nam Phơng pháp Monte Carlo đà đợc nhiều nhà Toán học ứng dụng quan tâm đến để giải toán quy hoch tối u Để hiểu rõ phơng pháp Monte Carlo cách thức giải toán quy hoạch, lựa chọn đề tài Phơng pháp Monte Carlo thuật toán giải toán quy hoạch Việc sử dụng phần mềm Visual Basic để giải toán quy hoạch phơng pháp Monte Carlo đợc đề cập khóa luận Nội dung khoá luận đợc trình bày thành hai chơng Chơng : Phơng pháp Monte Carlo thuật toán Chơng : Thiết lập chơng trình ngôn ngữ lập trình Visual Basic Khóa luận đợc thực v hon thnh trờng Đại học Vinh, d−íi sù h−íng dÉn khoa häc cđa Th.S Ngun Thị Thanh Hiền Tác giả xin by tỏ lòng biết ơn sâu sắc đến cô, ngời đà dnh cho tác giả nhiều thời gian, quan tâm nhiệt tình hớng dẫn giúp đỡ tác giả hon thnh khóa luận Nhân dịp ny, tác giả xin trân trọng gửi lời cảm ơn chân thnh tới PGS.TS Trần Xuân Sinh, Th.S Lơng Xuân Phú, thầy cô giáo tổ Xác suất Thống kê v Toán ứng dụng, khoa Toán đà nhiệt tình tạo điều kiện giúp đỡ, góp ý cho tác giả trình học tập v nghiên cứu để hon thnh khóa luận Tác giả xin chân thnh cảm ơn tập thể lớp 48B Toán tin ứng dụng, gia đình v bạn bè đà động viên, giúp đỡ v tạo điều kiện tốt cho tác giả trình học tập v nghiên cứu Vinh, tháng năm 2011 Tác giả CHƯƠNG Phơng pháp monte carlo thuật toán 1.1 Phơng pháp Monte Carlo 1.1.1 Giới thiệu chung phơng pháp Monte Carlo Ví dụ 1.( Bài toán Buffon- nhà toán học Pháp, TK 18) Trên mặt phẳng bàn, ta kẻ đờng thẳng song song, cách nhau, cự ly chúng ( đơn vị độ dài) TÝnh x¸c st P(  ) cđa biÕn cè  để kim AB cắt đờng thẳng đà kẻ mặt bàn Giải Bằng cách tung hú họa nh đà nêu với số lần tung N đủ lớn, ta xác định số lần kim cắt đờng thẳng m, dựa vào luật số lớn ta có đợc P    m N (*) §Ĩ tÝnh toán hoàn chỉnh hơn, ta ký hiệu: - khoảng cách từ trung điểm O kim AB (đà rơi mặt bàn, sau tung hú họa) đến đờng A thẳng gần đờng đà kẻ - góc A nhỏ góc tạo kim AB với l O hớng trực giao đờng thẳng song song Trên B hình 1, ta thấy =OA, góc  A ' OA,    OA ' �OA '   V× OA '  OA.cos  h cos nên ta có Hình    cos   P ()  P  � h Ta biÕt r»ng � ;0 kim đợc tung hú họa từ vị trí cao nên , đại lợng ngẫu nhiên độc lập, 0, nhận giá trị đoạn cách đồng khả năng, tức 0, có phân phối đoạn với hàm mật độ , x a, b  � ba f ( x)  � � 0, x � a , b  � thĨ lµ � , x �� 0,  � � � 2�  p ( x)  � � 0, x �� 0,  � � 2� 0, Tơng tự, đại lợng có phân phối đoạn với hàm mật độ có dạng 2, y G 0, y �G , �  ( x)  � Do tính độc lập nên hàm mật độ có dạng f ( x, y )  p( x). ( y )  �  , x �G 0, x �G , � � ®ã   G   x, y  : �x � ,0 �y �1 2 Trên mặt phẳng với hệ toạ độ vuông góc xOy, ta gọi S hình giới hạn trục hoành cung đờng cong 0,  cosx, x �� � � Khi ®ã S    x, y  : �x � , �y � h  cosx �G 2 y h Tõ ®ã ta suy �h2 cosx � � � 2h P()  P    ,  �S   � dy �� �dx   �0 � � �  So sánh với (*), ta tính đợc số theo công thức 2hN m Chẳng hạn với N=500 đợc 3,159 Ví dụ Để giải toán quy hoạch tuyến tính { CX : X � M }, víi M = { X�ℝn: AX = B, X �0 } ta cã thĨ sư dơng tht toán sau đây: Bớc Chọn ngẫu nhiên điểm X M Gọi X phơng án kỷ lục Bớc k.(k=0,1, ) Đà biết phơng án kỷ lục X k Chän ngÉu nhiªn X k 1 �M + NÕu CX k 1 �CX k , lo¹i bá X k 1 + NÕu CX k 1  CX k , g¸n X k := X k , trở lại bớc k Quá trình lặp lại với k đủ lớn, ta đợc phơng ¸n xÊp xØ cđa ph¬ng ¸n tèi u 1.1.2 C¸c nội dung Phơng pháp Monte Carlo + Nội dung thứ nhất: Một loại đối tợng quan trọng phơng pháp Monte Carlo việc giải số toán tất định, thực việc giải cách gắn yếu tố ngẫu nhiên toán, nghĩa ta đà xây dựng mô hình xác suất tơng ứng với toán đà cho, toán không liên quan đến tính xác suất Để sử dụng phơng pháp Monte Carlo vào toán tất định nói trớc hết ta lập toán xác suất tơng ứng mà lời giải y toán tất định xác định đợc từ lời giải x toán xác suất quan hệ hàm y = f(x) Đây nội dung thứ phơng pháp Monte Carlo Ví dụ Để xác định lời giải y = toán tính số , ta lập mô hình xác suất tơng ứng tung hú họa kim có độ dài AB mặt bàn kẻ có sẵn đờng thẳng song song cách Lời giải x toán xác suất P( ) để kim cắt đờng thẳng song song x =P( ) Khi ®ã 2h 2h y = p() = = f(x) x + Nội dung thứ hai: Sau công việc lập toán xác suất tơng ứng cho toán tất định, ta cần giải gần tập xác suất tơng ứng mô hình thông qua việc tiến hành phép thử ngẫu nhiên Đây trình thể xác suất tơng ứng từ kết phép thử ta thiết lập đại lợng ngẫu nhiên X m với lời giải x m mô hình xác suất Nếu lời giải y n toán tất định đợc xác định từ x quan hệ hàm y=f(x) với f hàm liên tục ta xấp xỉ véctơ ngẫu nhiên Y=f(x) �ℝn, nghÜa lµ X �x �ℝm ; Y=f(X) � f(x) = y n Trong Y X đợc gọi ớc lợng hay ớc lợng Monte-Carlo (ULMC) lời giải y x lần lợt toán tất định xác suất tơng ứng Khi thể mô hình xác suất tơng ứng với toán tất định, cần giải phơng pháp Monte Carlo ta phải chuyển trình thể số mô hình xác suất nói Đây nội dung thứ phơng pháp Monte Carlo + Nội dung thứ ba: ứng dụng phơng pháp Monte Carlo vào việc giải số toán xác suất với tợng ngẫu nhiên không quan sát đợc thuộc loại toán toán quan trọng lý thuyết thông tin, phục vụ đám đông, vật lý hạt nhân Các toán nói có chung đặc điểm tợng ngẫu nhiên xuất khả quan sát đợc, nghĩa ta tiến hành thí nghiệm để quan sát chúng thực tế Chẳng hạn, toán mà trình diễn chậm có tính chất học chậm chạp việc tung kim, tung sỏi, diễn biến trình động đất tơng lai xa vùng lÃnh thổ, diễn biến trình sinh học cân sinh thái Các toán có trình diễn nhánh: Các trình khuyếch tán, trình phân nhánh phản ứng dây chuyền vật lý hạt nhân, trình xạ, khuyếch tán dịch chun quang häc khÝ qun ®ã tèc ®é diễn biến có tốc độ ánh sáng phức tạp mà có không đủ phơng tiện để quan sát 30 End If If (C1X < 0) Then sStr = sStr + " - " If (C1X -1) Then sStr = sStr + Trim(Str(Abs(C1X))) sStr = sStr + "x" ElseIf (C1X > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C1X 1) Then sStr = sStr + Trim(Str(C1X)) sStr = sStr + "x" End If If (C3Y < 0) Then sStr = sStr + " - " If (C3Y -1) Then sStr = sStr + Trim(Str(Abs(C3Y))) sStr = sStr + "y^3" ElseIf (C3Y > 0) Then If (Trim(sStr) "") Then sStr = sStr + " + " If (C3Y 1) Then sStr = sStr + Trim(Str(C3Y)) sStr = sStr + "y^3" End If If (C2Y < 0) Then sStr = sStr + " - " If (C2Y -1) Then sStr = sStr + Trim(Str(Abs(C2Y))) sStr = sStr + "y^2" ElseIf (C2Y > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C2Y 1) Then sStr = sStr + Trim(Str(C2Y)) sStr = sStr + "y^2" End If If (C1Y < 0) Then 31 sStr = sStr + " - " If (C1Y -1) Then sStr = sStr + Trim(Str(Abs(C1Y))) sStr = sStr + "y" ElseIf (C1Y > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C1Y 1) Then sStr = sStr + Trim(Str(C1Y)) sStr = sStr + "y" End If If (C0 < 0) Then sStr = sStr + " - " If (C0 -1) Then sStr = sStr + Trim(Str(Abs(C0))) ElseIf (C0 > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (C0 1) Then sStr = sStr + Trim(Str(C0)) End If If Trim(sStr) = "" Then sStr = "0" RefreshHMT = sStr End Function Đoạn code sau thể Hàm nhập Điều kiện Function RefreshDK(a, b, c As Double) As String // NhËp ®iỊu kiÖn a,b,c Dim sStr As String sStr = "" If (a < 0) Then sStr = sStr + " - " If (a -1) Then sStr = sStr + Trim(Str(Abs(a))) sStr = sStr + "x" ElseIf (a > 0) Then If (a 1) Then sStr = sStr + Trim(Str(a)) 32 sStr = sStr + "x" End If If (b < 0) Then sStr = sStr + " - " If (b -1) Then sStr = sStr + Trim(Str(Abs(b))) sStr = sStr + "y" ElseIf (b > 0) Then If (Trim(sStr) "") Then sStr = sStr + "+" If (b 1) Then sStr = sStr + Trim(Str(b)) sStr = sStr + "y" End If If (Trim(sStr) = "") Then sStr = "0" sStr = sStr + "

Ngày đăng: 06/09/2021, 23:40

Tài liệu cùng người dùng

Tài liệu liên quan