đỡ, góp ý cho tác giả trong quá trình học tập v nghiên cứu để ho n th nh khóaμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường
Trang 1Trêng §¹i häc Vinh
********************
nguyÔn thÞ ngäc anh
ph¬ng ph¸p monte carlo vµ thuËt to¸n
gi¶i bµi to¸n quy ho¹ch
KhãA LUËN cö nh©n khoa häc
Vinh, 2011
Trang 2Bé GI¸O DôC Vµ §µO T¹O Trêng §¹i häc Vinh
********************
nguyÔn thÞ ngäc anh
ph¬ng ph¸p monte carlo vµ thuËt to¸n
gi¶i bµi to¸n quy ho¹ch
Ngêi híng dÉn khoa häc:
ThS NguyÔn thÞ thanh hiÒn
Vinh, 2011
Trang 3Mục lục Tran
g
Mở đầu: 1
Chơng 1 Phơng pháp Monte Carlo và thuật toán 3
1.1 Phơng pháp Monte Carlo 3
1.1.1 Giới thiệu chung phơng pháp Monte Carlo 3
1.1.2 Các nội dung phơng pháp Monte Carlo 5
1.2 Sơ lợc về Thuật toán 9
1.2.1 Bài toán Quy hoạch 9
1.2.2 Thuật 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 2 Thiết lập chơng trình bằng 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ô phỏng 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 và một số câu lệnh thờng gặp 18
2.1.6.1 Từ khóa 18
2.1.6.2 Tên và 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 trong Visual Basic 19
2.2 Cấu trúc và giao diện chơng trình 21
Kết luận 36
Tài liệu tham khảo 37
Trang 4Mở ĐầU
Phơng pháp Monte Carlo ra đời cùng thời với thế hệ máy tính điện tử đầutiên ở Mỹ từ những năm 1943-1944 Tuy nhiên, tên gọi “phơng pháp MonteCarlo” hay còn gọi là “phơng pháp thử thống kê” xuất hiện trong từ điển Toánhọc vào những năm 1949-1950 Đến năm 1961 cuốn chuyên khảo đầu tiên vềphơng pháp Monte Carlo của nhà toán học N.P.Buslenko và J.A.Srejder (ngờiNga) ra đời và đợc nhiều nhà toán học quan tâm ở nớc ta, phơng pháp MonteCarlo đợc giảng dạy và áp dụng vào thực tế từ những năm 1963, mà công đầutiên phải kể đến là Giáo s Nguyễn Quý Hỷ, trờng Đại học KHTN-ĐHQG HàNội
Chuyện kể rằng tại Thành phố Monte (Monaco), thành phố nổi tiếng vớinhững sòng bạc phục vụ nhiều hạng ngời khác nhau Sự may rủi, đỏ đen liên tiếp
đợc thể nghiệm bằng “phép thử” tung đồng tiền trên chiếu bạc Nếu nói xác suấtbắt nguồn từ chuyện ngời say rợu, thì phơng pháp Monte Carlo lại bắt nguồn từnhững sòng bạc của thành phố có tên Monte
Mãi đến năm 1977 phơng pháp này mới đợc đa ra ứng dụng cùng thời cácmáy tính điện tử lần đầu tiên ở nớc ta Trớc tiên là việc mô phỏng các trận động
đất và giải bà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 trên lãnh thổ Việt Nam Năm 1985-1987 phơng pháp đợc dùng đểgiải bài toán điều khiển tối u của nhà máy thủy điện Hoà Bình và xác định trữ l-ợng thủy điện của các con sông trong lới điện thống nhất Bắc-Nam
Phơng pháp Monte Carlo đã và đang đợc nhiều nhà Toán học ứng dụngquan tâm đến để giải các bài toán quy hoạch tối u Để hiểu rõ hơn về phơng pháp
Monte Carlo và cách thức giải bài toán quy hoạch, chúng tôi lựa chọn đề tài
“Ph-ơng pháp Monte Carlo và thuật toán giải bài toán quy hoạch” Việc sử dụng
phần mềm Visual Basic để giải bài toán quy hoạch bằng phơng pháp MonteCarlo sẽ đợc đề cập trong khóa luận này
Nội dung của khoá luận đợc trình bày thành hai chơng
Chơng 1 : Phơng pháp Monte Carlo và thuật toán
Chơng 2 : Thiết lập chơng trình bằng ngôn ngữ lập trình Visual Basic
Khóa luận đ ợc thực hiện v ho n th nh tại tr ờng Đại học Vinh, d ớiược thực hiện vμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dưới ược thực hiện vμ hoμn thμnh tại trường Đại học Vinh, dưới ược thực hiện vμ hoμn thμnh tại trường Đại học Vinh, dưới
sự h ớng dẫn khoa học của Th.S Nguyễn Thị Thanh Hiền Tác giả xin b y tỏược thực hiện vμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dướilòng biết ơn sâu sắc đến cô, ng ời đã d nh cho tác giả nhiều thời gian, sự quanược thực hiện vμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dướitâm nhiệt tình h ớng dẫn giúp đỡ tác giả ho n th nh khóa luận.ược thực hiện vμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dưới
Nhân dịp n y, tác giả cũng xin trân trọng gửi lời cảm ơn chân th nh tớiμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dướiPGS.TS Trần Xuân Sinh, Th.S Lơng Xuân Phú, và các thầy cô giáo trong tổ Xácsuất Thống kê v Toán ứng dụng, khoa Toán đã nhiệt tình và tạo điều kiện giúpμ hoμn thμnh tại trường Đại học Vinh, dưới
Trang 5đỡ, góp ý cho tác giả trong quá trình học tập v nghiên cứu để ho n th nh khóaμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dướiluận.
Tác giả xin chân th nh cảm ơn tập thể lớp 48B Toán tin – ứng dụng, giaμ hoμn thμnh tại trường Đại học Vinh, dưới
đình v bạn bè đã động viên, giúp đỡ v tạo điều kiện tốt cho nhất tác giả trongμ hoμn thμnh tại trường Đại học Vinh, dưới μ hoμn thμnh tại trường Đại học Vinh, dướiquá trình học tập v nghiên cứu.μ hoμn thμnh tại trường Đại học Vinh, dưới
Vinh, tháng 5 năm 2011 Tác giả
CHƯƠNG 1
Phơng pháp monte carlo và 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 của một chiếc bàn, ta kẻ các đờng thẳng song song, cách
đều nhau, cự ly giữa chúng là 1 ( đơn vị độ dài) Tính xác suất P() của biến cố
để chiếc kim AB cắt một trong các đờng thẳng đã kẻ trên 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 là m, dựa vào luật số lớn ta có đợc
N
m
P (*)
Để tính toán hoàn chỉnh hơn, ta ký hiệu:
- là khoảng cách từ trung điểm O của chiếc kim
AB (đã rơi trên mặt bàn, sau khi tung hú họa) đến đờng A’
Trang 6thẳng gần nhất trong các đờng đã kẻ A’’ α
- là góc nhỏ nhất trong các góc tạo bởi kim AB với l O hớng trực giao đối với các đờng thẳng song song Trên B
trí cao nên , là các đại lợng ngẫu nhiên độc lập, nhận giá trị trên đoạn
Trang 7Chẳng hạn với N=500 thì đợc 3,159.
Ví dụ 2 Để giải bài toán quy hoạch tuyến tính
min { CX : X M }, với M = { Xℝn : AX = B, X 0 }
ta có thể sử dụng thuật toán sau đây:
Bớc 1 Chọn ngẫu nhiên điểm X0M Gọi X0 là 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 k1M + Nếu CX k1 CX k, loại bỏ X k1
+ Nếu CX k1CX k, gán X k:=X k1, trở lại bớc k.
Quá trình trên 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 của Phơng pháp Monte Carlo
+ Nội dung thứ nhất: Một loại đối tợng khá quan trọng của phơng pháp
Monte Carlo là việc giải một số bài toán tất định, có thể thực hiện việc giải bằngcách gắn các yếu tố ngẫu nhiên của bài toán, nghĩa là ta đã xây dựng mô hìnhxác suất tơng ứng với các bài toán đã cho, các bài toán không liên quan đến tínhxác suất Để sử dụng phơng pháp Monte Carlo vào mỗi bài toán tất định nói trên
trớc hết ta lập bài toán xác suất tơng ứng mà lời giải y của bài toán tất định xác
định đợc từ lời giải x của bài toán xác suất bởi một quan hệ hàm y = f(x) nào đó.
Đây là nội dung thứ nhất của phơng pháp Monte Carlo
Ví dụ Để xác định lời giải y = của bài toán tính số , ta lập mô hình xác
suất tơng ứng là tung hú họa chiếc kim có độ dài AB trên mặt bàn kẻ có sẵn các
đờng thẳng song song cách đều Lời giải x của bài toán xác suất P() để chiếc
kim cắt một trong các đờng thẳng song song x =P().
Trang 8+ Nội dung thứ hai: Sau công việc lập bài toán xác suất tơng ứng cho bài
toán tất định, ta cần giải gần đúng bài tập xác suất tơng ứng trong mô hình thôngqua việc tiến hành các phép thử ngẫu nhiên Đây là quá trình thể hiện xác suất t-
ơng ứng từ kết quả các phép thử ta có thể thiết lập một đại lợng ngẫu nhiên X
ℝm với lời giải xℝm của mô hình xác suất Nếu lời giải yℝn của bài toán tất
định đợc xác định từ x bởi quan hệ hàm y=f(x) với f là hàm liên tục thì ta có thểxấp xỉ nó bởi 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 và X đợc gọi là ớc lợng hay ớc lợng Monte-Carlo (ULMC) đối
với lời giải y và x của lần lợt các bài toán tất định và xác suất tơng ứng Khi thểhiện một mô hình xác suất tơng ứng với mỗi bài toán tất định, cần giải bằng ph-
ơng pháp Monte Carlo ta phải chuyển nó về quá trình thể hiện một trong sốnhững mô hình xác suất cơ bản nói trên Đây là nội dung thứ 2 của phơng phápMonte Carlo
+ Nội dung thứ ba: ứng dụng của phơng pháp Monte Carlo vào việc giải
bằng số các bài toán xác suất với các hiện tợng ngẫu nhiên không quan sát đợcthuộc loại của bài toán này là các bài toán quan trọng của lý thuyết thông tin,phục vụ đám đông, vật lý hạt nhân… Các bài toán nói trên có chung một đặc Các bài toán nói trên có chung một đặc
điểm là các hiện tợng ngẫu nhiên xuất hiện trong đó là “không có khả năng quansát đợc”, nghĩa là ta không thể tiến hành các thí nghiệm để quan sát chúng trongthực tế
Chẳng hạn, các bài toán mà quá trình diễn ra quá chậm có tính chất cơ họcchậm chạp trong việc tung kim, tung hòn sỏi, diễn biến của quá trình động đấttrong một tơng lai khá xa của một vùng lãnh thổ, diễn biến các quá trình sinhhọc trong sự cân bằng sinh thái… Các bài toán nói trên có chung một đặc
Các bài toán có quá trình diễn ra quá nhánh: Các quá trình khuyếch tán,quá trình phân nhánh các phản ứng dây chuyền của vật lý hạt nhân, quá trình bứcxạ, khuyếch tán và dịch chuyển trong quang học khí quyển trong đó tốc độ diễnbiến có khi là “tốc độ ánh sáng” rất phức tạp mà chúng ta có khi không đủ phơngtiện để quan sát
Các bài toán cần thực hiện thí nghiệm quá đắt: Nh việc bổ sung khá lớnnhững mũi khoan thăm dò trữ lợng dầu khí tại một khu mỏ nào đó, dự báo lu l-ợng nớc về các hồ điều khiển các nhà máy thủy điện, dự báo kết quả của các trận
đấu, quân sự, thể thao Công việc dự báo tiên nghiệm ta không thể chờ đợi cáchiện tợng ngẫu nhiên xảy ra, nghĩa là không thể tổ chức thể hiện các thí nghiệmngẫu nhiên, để dựa vào đó phát biểu lời giải của bài toán dự báo Tơng tự với các
Trang 9trờng hợp nh vậy bằng cách gắn vào bài toán các yêu tố ngẫu nhiên, ta cần xâydựng mô hình ảo (mô phỏng) gần giống nh thật để nghiên cứu trên máy tính.
Đây có thể xem nội dung thứ ba của phơng pháp Monte Carlo
Một cách chung nhất, phơng pháp Monte Carlo là phơng pháp số giải cácbài toán bằng cách mô hình hóa các đại lợng ngẫu nhiên Về mặt nội dung, ph-
ơng pháp này liên quan tới t tởng xây dựng một quá trình ngẫu nhiên giả tạo cótất cả những đặc tính cần thiết của hệ thống cần nghiên cứu Phơng pháp MonteCarlo có thể áp dụng đợc ở mọi nơi, miễn là ở đó bài toán cho phép mô tả bằngtoàn thể hay một phần của lý thuyết xác suất, dù rằng bài toán đó có thể đã cónội dung tiền định chặt chẽ
Nh vậy, sử dụng phơng pháp Monte Carlo để giải bài toán nào đó, ta cầnthực hiện tuần tự nh sau:
Xây dựng các mô hình xác suất của các quá trình thực tiễn cần nghiêncứu
Mô hình hóa các đại lợng ngẫu nhiên với luật phân phối cho trớc
Giải bài toán theo lý thuyết ớc lợng thống kê
Giá trị thực tiễn của phơng pháp Monte Carlo là nó sử dụng những phép thửthay cho các kết quả tính toán dựa trên các đại lợng ngẫu nhiên Bởi vậy, có thểxác định đợc các đặc trng của quá trình cần nghiên cứu mà không cần dùng cácphơng trình mô tả sự thay đổi của quá trình đã cho
Một tên gọi khác của phơng pháp Monte Carlo là phơng pháp thử thống kê.
Bài toán cơ bản của phơng pháp Monte Carlo là xác định xác suất của sự kiện bất
kỳ và các giá trị trung bình của đại lợng ngẫu nhiên qua kết quả của các phép thửlặp đi lặp lại nhiều lần
Cơ sở của lợc đồ chung về phơng pháp Monte Carlo là định lý giới hạn
trung tâm Theo định lý đó thì có thể coi mọi đại lợng m cha biết nh là kỳ vọng
toán học của một đại lợng ngẫu nhiên nào đó, tức là E=m với phơng sai D
trong đó j ,(j=1,2, …, N , N) là các giá trị của đại lợng ngẫu nhiên nhận đợc ở
mỗi cột trong N phép thử Hệ thức đó xác định số cha biết m và đồng thời đánh
giá đợc sai số Từ hệ thức đó suy ra rằng khi tăng số phép thử thì độ chính xáccủa nghiệm tăng lên
Trang 10Nh vậy, thực chất của phơng pháp Monte Carlo là chơng trình để tiến hànhphép thử ngẫu nhiên và thực hiện một cách ngẫu nhiên Tuy nhiên trong thực tếthờng dùng một cơ chế tiêu chuẩn để sản sinh ra các đại lợng ngẫu nhiên cóphân phối miền trên một miền nào đó (chẳng hạn trên đoạn [0,1]) Có thể nhận
đợc số ngẫu nhiên ở phơng pháp Monte Carlo theo một trong những phơng pháp
đã biết
Nhợc điểm quan trọng của phơng pháp Monte Carlo là để nhận đợc các đặctrng của quá trình nghiên cứu với độ chính xác cho trớc thì cần quá nhiều phépthử Chẳng hạn, với độ chính xác >0 cho trớc, để nhận đợc giá trị trung bình x
của đại lợng ngẫu nhiên , thì cần phải tiến hành số phép thử là N 4D2
, trong
đó D là phơng sai Nh vậy với D = 0,01 và = 0,001 thì N = 400.000 phép
thử Mỗi phép thử, độ phức tạp tính toán của thuật toán phụ thuộc độ dài dữ liệu,tức là phụ thuộc số biến n của bài toán Vì vậy, trong nhiều bài toán phơng phápMonte Carlo phải hạn chế về số biến (Chẳng hạn: phơng pháp Monte Carlo giảibài toán quy hoạch thờng chỉ áp dụng với các bài toán có số ẩn không lớn lắm( số ẩn n30))
Ngày nay, với các thế hệ máy tính có tốc độ ngày càng cao thì vấn đề khốilợng tính toán có thể khắc phục đợc Do vậy, sự kết hợp của những thành tựumáy tính điện tử với phơng pháp Monte Carlo nhằm giải quyết các bài toánthuộc các lĩnh vực kinh tế - xã hội khác nhau có thể xem nh đó là “cuộc cáchmạng trong toán học tính toán”
Cơ sở toán học của phơng pháp Monte Carlo là luật số lớn thuộc lý thuyếtxác suất thống kê toán
1.2 Sơ lợc về Thuật toán
Thuật toán đã đợc biết đến từ rất lâu Bản thân thuật ngữ thuật toán(Algorithm) là viết tắt tên của nhà toán học thế kỷ IX : AbuJa’fa Mohammed ibnMusa al-Khowarizmi Khái niệm thuật toán có một lịch sử phát triển lâu dài, một
Hibert vào những năm 1900 đã đề xuất một vấn đề rất hóc búa cho cộng
đồng các nhà toán học : “ Hãy xây dựng một thủ tục mà theo đó 1 số hữu hạn
Trang 11phép toán có thể xác định 1 đa thức có nghiệm hay không?” Vấn đề này đợcbiết dới tên gọi “ Bài toán thứ 10 của Hibert”.
Chúng ta có ví dụ về thuật toán nhng cha có định nghĩa hình thức thểnào là thuật toán Để chứng minh là không tồn tại thuật toán giải bài toán tínhtoán, ta cần đĩnh nghĩa hình thức của thuật toán
Năm 1936, hai nhà toán học Turing và Church mỗi ngời đã đề xuất mộtmô hình tính toán riêng mà sau đó đợc chứng minh là tơng đơng
Bài toán về tính dừng (Halting problem) và bài toán nghiệm nguyên của
đa thức ( integer Root problem) đã đợc chứng minh là các bài toán không cóthuật toán giải
Vậy khái niệm thuật toán : Thuật toán là 1 hệ thống chặt chẽ và rõ ràng cácquy tắc nhằm xác định một dãy các thao tác trên những đối tợng, sao cho saumột số hữu hạn bớc thực hiện các thao tác ta đạt trớc mục tiêu định trớc
1.2.1 Bài toán quy hoạch
n j b x a D x
j j
trong đó x = (x1, x2, … Các bài toán nói trên có chung một đặc x, n) D, D ℝn và hàm mục tiêu f(x)
Ký hiệu G = x = (x j) ℝn : a j x j b j , M là tập phơng án.
1.2.2 Thuật toán Monte Carlo tổng quát
Bớc 0 Xuất phát từ phơng án x(0) M, ký hiệu 0 = f(x(0)), lúc này gọi x(0) làphơng án kỷ lục
Bớc k (k = 1, 2, )
k 1 Giả sử ta đang biết phơng án kỷ lục là x (k) và k = f(x (k) ) Với tập G, độ
đo mesG đợc xác định, chọn ngẫu nhiên điểm (k) có phân phối đều trên G.
k.2 Kiểm tra (k) M hay không?
+ Nếu (k) M thì loại bỏ (k) , trở lại bớc k.
+ Nếu (k) M thì số phơng án tăng lên 1 Gán x (k+1) := (k)
k 3 Tính giá trị hàm mục tiêu f(x (k+1)) và kiểm tra
+ Nếu f(x (k+1)) > k , thì x (k+1) “không tốt hơn” x (k) , trở lại bớc k.1.
+ Nếu f(x (k+1)) < k , thì x (k+1) “tốt hơn” x (k) Gán k := k + 1, trở lại bớc k.1.
Để chứng minh sự hội tụ của phơng pháp Monte-Carlo giải bài toán quy
hoạch nh đã nêu, ta ký hiệu x (k) là dãy các phơng án tìm đợc trong quá trình
thực hiện thuật toán Nh vậy, ở bớc thứ k ta có
x (k+1) := (k) , nếu f( (k) ) f(x (k)) (*)
(2)
Trang 12x (k) , nếu f( (k) ) > f(x (k)),trong đó (k) là vectơ ngẫu nhiên ở bớc lặp thứ k nhận đợc từ thuật toán Monte
Carlo
Ta cũng ký hiệu mesM là “diện tích” của M (theo nghĩa độ đo trong ℝ n)
Khi đó với tập khả tích A M, ta có công thức tính xác suất để mỗi M thuộc
1.2.2.1 Định nghĩa Ta nói bài toán quy hoạch đã cho có giá trị cực tiểu
không cô lập nếu nó có ít nhất một nghiệm x*, sao cho
mesx M : f(x) < f(x*) + > 0, với mọi > 0 đủ bé.
1.2.2.2 Định lý Bài toán quy hoạch đã nêu với giá trị cực tiểu không cô
lập và dãy x (k) đợc thiết lập từ thuật toán Monte-Carlo, khi đó ta có
P klimf(x (k) ) = f(x*) = 1.
Chứng minh Với mọi > 0 đủ bé, ta gọi A k() là biến cố ngẫu nhiên xẩy ra
đối với x (k) thoả mãn f(x (k) ) < f(x*) + , ký hiệu
A k()
N k
Trang 13(1 - p)k (***)
Đặt
A() := x M : f(x) < f(x*) + .
Từ giả thiết về tính không cô lập của giá trị cực tiểu f(x*), ta có
mesA() > 0, với mọi > 0.
Đó là điều phải chứng minh
Để có thể viết chơng trình cho thuật toán Monte-Carlo, ta thay việc lựa
chọn ngẫu nhiên điểm M là cách chọn ngẫu nhiên theo tọa độ bằng thuật
toán nh sau
1.2.3 Thuật toán Monte-Carlo theo toạ độ
Trang 14Để giải bài toán (1)-(3), ta sử dụng thuật toán Monte-Carlo nh sau:
Bớc 0 Xuất phát từ phơng án x, ký hiệu = f(x).
Bớc 1 Với mỗi j, ta tạo một số ngẫu nhiên phân bố đều trên đoạn [a j , b j]theo công thức
x' j = a j + (b j - a j) (a)
trong đó là một số ngẫu nhiên phân bố đều trên đoạn [0, 1].
Chú ý rằng sau mỗi bớc lặp số điểm ngẫu nhiên đợc tăng lên 1 Bằng cáchchọn số ngẫu nhiên sử dụng hàm Random, với câu lệnh randomize khởi tạo bộtạo số ngẫu nhiên khác nhau (không lặp lại) nhờ đồng hồ của máy tính
Nh vậy sau n lần chọn số ngẫu nhiên ta đợc bộ giá trị
x' = (x'1, … Các bài toán nói trên có chung một đặc x', n)
Bớc 2 Kiểm tra xem x' có thuộc M hay không
+ Nếu x' M thì trở lại bớc 1.
+ Ngợc lại, x' M thì số phơng án tìm đợc tăng lên 1 và sang bớc 3.
Bớc 3 Tính giá trị hàm mục tiêu f(x').
+ Nếu f(x') > thì x' “tồi” hơn x Trở lại bớc 1.
+ Nếu f(x') < thì x' “tốt” hơn x, gán x := x', := f(x'), rồi trở lại bớc 1.
Nh đã chứng minh ở 1.2.2.2, ta có thuật toán vừa nêu là hội tụ theo xácsuất, nghĩa là với số bớc lặp đủ lớn ta tìm đợc lời giải với xác suất bằng 1
Trang 15(event-mua v cà m ải tiến nhiều Phiên bản cũ của Visual Basic bắt nguồn phần lớn từBASIC v à m để lập trình viên phát triển các giao diện người dựng đồ họa (GUI)theo mô hình phát triển ứng dụng nhanh (Rapid Application Development,RAD) truy cập các cơ sở dữ liệu dựng DAO (Data Access Objects), RDO(Remote Data Objects), hay ADO (ActiveX Data Objects) lập các điều khiển và m
đối tợng ActiveX
Dựng Visual Basic l cách nhanh v tà m à m ốt nhất để lập trình cho MicrosoftWindows vì Visual Basic sẽ cung cấp cho bạn một bộ công cụ ho n chà m ỉnh đểđơn giản hóa việc triển khai lập trình ứng dụng cho MS Windows
Visual Basic còn có hai dạng khác l Visual Basic for Application (VBA)à m
v VBScript VBA l ngôn ngà m à m ữ nằm phía sau các chương trình Word, Excel,MSAccess, MSProject, v.v còn gọi l Macros Dùng VBA trong MS Office, taà m
có thể l m tà m ăng chức năng bằng cách tự động hóa các chương trình CònVBScript được dùng cho Internet v trong chính hà m ệ điều h nh Windows.à m
Visual Basic l gì?à m
Phần "Visual" đề cập đến phương pháp được sử dụng để tạo giao diện đồhọa người dùng (Graphical User Interface - GUI) Visual Basic có sẵn những bộphận hình ảnh, gọi l controls bà m ạn có thể sắp đặt vị trí v quyà m ết định các đặctính của chúng trên một khung m n hình, gà m ọi l form Nà m ếu bạn đó từng sử dụngchương trình vẽ chẳng hạn như Paint, bạn đó có sẵn các kỹ năng cần thiết để tạomột GUI cho Visual Basic
Phần "Basic" đề cập đến ngôn ngữ BASIC (Beginners All-PurposeSymbolic Instruction Code) một ngôn ngữ lập trình đơn giản, dễ học, được chế
ra cho các khoa học gia Visual Basic chứa đến h ng trà m ăm câu lệnh (commands),
h m (functions) v tà m à m ừ khóa (keywords) Rất nhiều commands, functions liên hệtrực tiếp đến MS Windows GUI Những người mới bắt đầu có thể viết chươngtrình bằng cách học chỉ một v i commands, functions v keywords Khà m à m ả năngcủa ngôn ngữ n y cho phép nhà m ững người chuyên nghiệp ho n th nh bà m à m ất kỳ điềugì nhờ sử dụng ngôn ngữ lập trình MS Windows nào khác
2.1.2 Cài đặt Visual Basic (VB6)
Trang 16Để c i à m đặt VB6, máy tính của bạn cần phải có một ổ đĩa CD-ROM (CDdrive) Bạn cần ít nhất 32 MB RAM, 2 GB hard disk v CPU Pentium II Khi bà m ỏVB6 CD v o CD drive, nó sà m ẽ tự khởi động để display menu cho bạn chọn nhữngthứ gì cần Setup, hăy click Install Visual Basic 6.0 để c i VB6 Ngoà m ại trừ cácfile hệ điều h nh (Operating System) trong thà m ư mục (folder) \Os, các file trongđĩa compact đều không bị nén Vì thế, bạn có thể sử dụng chúng trực tiếp từ đĩa.
Ví dụ, có nhiều công cụ v th nh phà m à m ần trong folder \Tools vốn có thể được c ià mđặt trực tiếp từ CD-ROM
Ngo i ra, bà m ạn có thể chạy Setup khi n o cà m ần thiết Ví dụ, bạn có thể chạySetup để c i à m đặt lại Visual Basic trong folder khác, hoặc để c i à m đặt thêm bớt cácphần của VB6
Nếu vì lý do hệ thống không install đợc đĩa, bạn có thể vào địa chỉ củatrang Web này:
http://img27.picoodle.com/img/img27/4/1/30/f_ViualBasic6m_c25179b.jpg
2.1.3 Khởi động Visual Basic
Sau khi đã c i à m đặt Visual Basic trên máy, ta có thể khởi động chơng trìnhVisual Basic theo cách sau:
Start\Programs\MiscoSoft Visual Studio 6.0\MicroSoft Visual Basic 6.0
Trang 172.1.4 Thoát khỏi Visual Basic
Để thoát khỏi Visual Basic ta l m theo cách sau:à m
V o menu File\Exit Khi thoát khà m ỏi Visual Basic nếu ta chưa ghi lạichương trình v các th nh phà m à m ần liên quan đến chương trình Visual Basic sẽnhắc nhở chúng ta ghi lại
2.1.5 Hóng dẫn cài đặt chơng trình mô phỏng thuật toán Monte Carlo theo tọa độ (đã đợc đóng gói)
Quy trình cài đặt, vào gói Package(2) thực hiện các bớc sau:
Bớc 1 Vào biểu tợng Setup, xuất hiện màn hình MonCar Setup / ấn OK.
Trang 18Bíc 2 XuÊt hiÖn giao diÖn, Ên vµo biÓu tîng gãc bªn tr¸i cña giao diÖn.
Bíc 3 TiÕp theo, xuÊt hiÖn b¶ng MonCar – Choose Program Group, chän
MonCar / Ên Continue