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

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

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 (540.59 KB, 47 trang )

1

Bộ GIáO DụC Và ĐàO TạO
Trờng Đại học Vinh
********************

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
Ngành toán tin ứng dụng

Vinh, 2011


2

Bộ GIáO DụC Và ĐàO TạO
Trờng Đại học Vinh
********************

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. Ngun thÞ thanh hiỊn

Vinh, 2011



1

Mục lục
Trang
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


1

Mở ĐầU
Phơng pháp Monte Carlo ra đời cùng thời với thế hệ máy
tính điện tử đầu tiên ở Mỹ từ những năm 1943-1944. Tuy
nhiên, tên gọi phơng pháp Monte Carlo hay còn gọi là phơng
pháp thử thống kê xuất hiện trong từ điển Toán họ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ời Nga) ra đời và đợ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 và
áp dụng vào thực tế từ những năm 1963, mà công đầu tiê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ới nhữ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ất
bắ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ác má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ụng quan tâm đến để giải các bài toán quy hoch
tối u. Để hiểu rõ hơn về phơng pháp Monte Carlo và cách thức


2

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 Monte Carlo 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 hon thnh 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 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, sự 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ả cũng 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ú,
và các thầy cô giáo trong tổ Xác suấ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 đỡ, góp ý
cho tác giả trong quá 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 nhất tác giả trong quá trình học tập v
nghiên cứu.
Vinh, tháng 5 năm 2011
Tác giả


3

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

P

m
.
N

(*)


Để 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


4

AB (đà rơi trên mặt bàn, sau khi tung hú họa) đến đờng
A
thẳng gần nhất trong các đờng đà kẻ.
- là góc

A
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
hình 1, ta thấy =OA, góc  A ' OA,    OA ' �OA ' .

 

V× OA '  OA.cos   h 2 cos nên ta có
Hình 1.

2 cos   .

P ()  P  � h


Ta biÕt r»ng 0 � �1 2 ;0 � � 2 và chiếc kim đợc tung hú họa
từ một vị trí cao nên , là các đại lợng ngẫu nhiên độc lập,

0,
nhận giá trị trên đoạn
2 một cách đồng khả năng, tức là
0,
có phân phối đều trên đoạn
2 với hàm mËt ®é

�1
, x � a, b 

ba
f ( x)  �

0, x � a , b  .

cơ thĨ lµ
2

, x ��
0,  �

� 2�

p ( x)  �

0, x

0,
.
2


0, 1
Tơng tự, đại lợng có phân phối đều trên đoạn
2 với

hàm mật độ có dạng

2, y G

0, y G ,


( x)  �


5

Do tính độc lập của và nên hàm mật độ của có dạng
4


f ( x, y ) p( x). ( y )  �  , x �G
0, x �G ,




trong ®ã





G   x, y  : 0 x ,0 y 1 .
2
2

Trên mặt phẳng với hệ toạ độ vuông góc xOy, ta gọi S là
hình

giới

hạn

bởi

trục

hoành



cung

đờng

cong


0,
.
2 cosx, x
2 Khi ®ã
S    x, y  : 0 �x � , 0 �y � h  cosx �G.
2
2

y h

Tõ ®ã ta suy ra

�h2 cosx

4

� 2h
P()  P    ,  �S   �
dy
�� �dx  .
0 0





2

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 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 X 0 M . Gọi X 0 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 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 1 , trë l¹i bíc k.


6

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ằng cá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ình xá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ính xá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(  ).
Khi ®ã

2h

2h

y = p() = = f(x).
x

+ 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ông qua 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


7


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áp Monte 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 đợc thuộ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 đ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 quan sát đợc, nghĩa là ta không thể tiến
hành các thí nghiệm để quan sát chúng trong thự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ọc chậm chạp trong việc tung kim, tung hòn sỏi,
diễn biến của quá trình động đất trong 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 sinh học trong
sự cân bằng sinh thái
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ức xạ, khuyếch tán và dịch
chuyển trong quang häc khÝ qun trong ®ã tèc ®é diƠn biÕn
cã khi là tốc độ ánh sáng rất phức tạp mà chúng ta có khi
không đủ phơng tiện để quan sát.



8

Các bài toán cần thực hiện thí nghiệm quá đắt: Nh việc
bổ sung khá lớn nhữ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ác hiệ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ệm ngẫ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 trờ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ây dự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ác bà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 Monte Carlo có thể áp dụng đợc ở mọi nơi, miễn là ở
đó bài toán cho phép mô tả bằng toà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ần thự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ên cứ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ª.



9

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ác phơ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 = 2 .
Từ định lý giới hạn trung tâm ta có hệ thức

1
P
N

N


j 1

j


m p

3
N



0,997 .


trong đó j ,(j=1,2, , 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ác của nghiệm
tăng lên.
Nh vậy, thực chất của phơng pháp Monte Carlo là chơng
trình để tiến hành phé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.


10

Nhợc điểm quan trọng của phơng pháp Monte Carlo là để
nhận đợc các đặc trng 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ép thử. 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

4D
2

, 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áp Monte Carlo phải hạn chế về số biến (Chẳng hạn: phơng pháp Monte Carlo giải bà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 n 30)).
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ối lợ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ựu má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án thuéc c¸c lÜnh
vùc kinh tÕ - x· héi kh¸c nhau có thể xem nh đó là cuộc cách
mạ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ết xá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 ibn Musa al-Khowarizmi. Kh¸i niƯm
tht to¸n có một lịch sử phát triển lâu dài, một số mèc quan
träng:


11


Đầu tiên, thuật toán đợc hiểu là các quy tắc thực hiện
các phép tính số học đợc viết trong hệ cơ đếm thập phân.
Euclid đề xuất thuật toán ®Ĩ t×m íc sè chung lín nhÊt
cđa hai sè GCD(x,y).
 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 phép toán có thể xác định 1
đa thức có nghiệm hay không?. Vấn đề này đợc biết dới tên
gọi Bài toán thứ 10 của Hibert.
Chóng ta cã vÝ dơ vỊ tht 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ính toá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ột mô 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ác quy 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 sau mộ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
Có dạng
(1)

min f(x)
(2)



12

víi ®iỊu kiƯn

 x  D,

 a j  x j b j , j 1,2,..., n.

(3)
trong ®ã x = (x1, x2, …, xn)  D, D  ℝn vµ hàm mục tiêu f(x).
Ký hiệu G = x = (xj)  ℝn : aj � xj � bj, 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))
(*)


13

trong đó (k)

x(k), nếu f((k)) > f(x(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 A (coi đợc phân đều trên
M) là
P( A) =

mesA
.

mesM

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
mesx  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ó
(k)
P klim
 f(x ) = f(x*) = 1.

Chøng minh. Víi mäi > 0 đủ bé, ta gọi Ak() 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
Ak() :=  f(x(k)) < f(x*) +  , víi mäi k  1.
Theo (*), ta cã
f(x(k+1)) = min f((1)), f((2)), ..., f((k))
NÕu gäi biÕn cố đối lập của Ak() là A k() thì
A k() =  f(x(k))  f(x*) +

 , víi mäi k  1.

Tõ (**) suy ra
A k() =

k


i 1


 f(x(i))  f(x*) +  .

(**)


14








P   A k()  P  A k() 
N 1 k N

k N



 P( A ( )) ,
k

k N

ta suy ra







P   A k() 
N 1 k N



k N

k

P (   f(x(i))  f(x*) +  ).
i 1

Do (k) là dÃy độc lập, cùng phân phối nªn
k

P(   f(x(i))  f(x*) +  ) =
i 1

=

k


i 1

P f(x(i))  f(x*) +   =


= [P f()  f(x*) +  ]k = (1-p )k,
(k)
trong ®ã  = klim
vµ p := P f() < f(x*) +  .


Tõ ®ã suy ra




P   A k() 
N 1 k N





k N

(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

mesA() > 0, víi mäi  > 0.

Do vËy th×
p = P f() < f(x*) +   = P  A() =

mesA( )
> 0.
mesM

Từ (***) ta có đợc




0 P   A k() 
N 1 k N

Cho N  , ta thu đợc





k N

(1 p ) N
(1 - p) =
, víi mäi N > 1.
p
k



15




P   A k() = 0.
N 1 k N

Hay lµ








P   Ak()= 1 - P   A k() = 1.
N 1 k N

N 1 k N

Điều đó có nghĩa là với xác suất bằng 1 và với > 0 đủ bé,
tồn tại N = N(), để xÈy ra biÕn cè





k N (  )


Ak(), sao cho víi mäi k 

N(), ta cã
f(x(k+1)) - f(x*) = f(x(k+1)) - f(x*) < .
VËy
(k)
P klim
  f(x ) = f(x*) = 1.

Đó 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ạ độ
Để 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 [aj, bj] theo công thức
x'j = aj + (bj - aj)

(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ách chọn số ngẫu nhiên sử dụng hàm Random, với


16


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, , 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ác suấ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.

Chơng 2
Thiết lập chơng trình bằng ngôn ngữ lập trình
Visual Basic

2.1. Giới thiệu Visual Basic
2.1.1. Visual Basic là gì


17

Visual Basic (viết tắt VB) là một ng«n ngữ lập trình hng s
kin (event-driven) v môi trng phát trin tích hp (IDE) kt bó
c phát trin u tiên bi Alan Cooper di tên d án Ruby

(Project Ruby) v sau ó được Microsoft mua và cả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à để
lập trình viên phát trin các giao din ngi dựng ha (GUI)
theo mô hình phát trin ng dng 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) lp các iu khin v đối tợng ActiveX.
Dựng Visual Basic l cách nhanh v tt nht lp trình cho
Microsoft Windows v× Visual Basic sẽ cung cấp cho bạn một bộ
c«ng cụ hồn chỉnh để đơn giản hãa việc trin 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) và VBScript. VBA l ngôn ng nm phía sau
các chng trình Word, Excel, MSAccess, MSProject, .v.v.. cßn
gọi là Macros. Dïng VBA trong MS Office, ta cã thể làm tăng chức
năng bằng cách t ng hóa các chng trình. Còn VBScript c
dùng cho Internet và trong chÝnh hệ điều hành Windows.
Visual Basic l gì?
Phn "Visual" cp n phng 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ạn cã thể
sắp đặt vị trÝ v quyt nh các c tính ca chúng trên mt
khung màn h×nh, gọi là form. Nếu bạn đã từng sử dụng chươ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ạo một GUI cho Visual Basic.


18

Phần "Basic" đề cập đến ng«n ngữ BASIC (Beginners AllPurpose Symbolic Instruction Code) mt ngôn ng lp trình n

gin, d học, được chế ra cho c¸c khoa học gia. Visual Basic chứa
đến hàng trăm c©u lệnh (commands), hàm (functions) và từ
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ể vit chng
trình bng cách hc ch mt vi commands, functions và
keywords. Khả năng của ng«n ngữ này cho phÐp những ngi
chuyên nghip hon thnh bt k iu gì 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)
Để cài đặt VB6, m¸y tÝnh của bạn cần phải cã một ổ đĩa CDROM (CD drive) . Bạn cần Ýt nhất 32 MB RAM, 2 GB hard disk và
CPU Pentium II. Khi bỏ VB6 CD vào CD drive, nã sẽ tự khởi động
để display menu cho bạn chọn những thứ g× cần Setup, hăy click
Install Visual Basic 6.0 để cài VB6. Ngoại trừ c¸c file hệ điều hành
(Operating System) trong thư mục (folder) \Os, c¸c file trong a
compact u không b nén. Vì th, bn 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ần trong
folder \Tools vốn cã thể được cài đặt trực tiÕp tõ CD-ROM.
Ngoài ra, bạn cã thể chạy Setup khi nào cần thiết. VÝ dụ, bạn
cã thể chạy Setup để cài đặt lại Visual Basic trong folder khác,
hoc ci t thêm bt các phn ca VB6.
Nu vì lý do h thng không install đợc đĩa, bạn có thể
vào địa chỉ của trang Web này:
/>
2.1.3. Khởi ®éng Visual Basic
Sau khi đ· cài đặt Visual Basic trªn máy, ta có thể khởi động
chơng trình Visual Basic theo c¸ch sau:


19


Start\Programs\MiscoSoft Visual Studio 6.0\MicroSoft
Visual Basic 6.0

2.1.4. Tho¸t khái Visual Basic
Để tho¸t khỏi Visual Basic ta làm theo c¸ch sau:
Vào menu File\Exit. Khi tho¸t khỏi Visual Basic nếu ta chưa
ghi lại chng trình v các thnh phn liên quan n chng
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.


20

Bớ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.


21

Bớc 4. Hộp thông báo Version Conflict / Yes.
Bớc 5. Hộp thông báo MonCar Setup was completed
successfully / ấn OK.


Bớc 6. Sau khi cài đặt xong vào Start / All programs /
MonCar / chọn biểu
tợng MonCar.
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
2.1.6.1. T khóa (keywords)
L các t dnh riêng cho Visual Basic, mi từ cã một chức
năng nhất định. Khi sử dụng phải dùng úng vi cú pháp.
Mt s t khoỏ:
DIM
FOR

END

SUB

WHILE

FUNCTION

PRIVATE

PUBLIC

CONST

END vvv......

2.1.6.2. Tên, quy tắc đặt tên (Indentifier)


IF

THEN


22

* Tªn là một d·y ký tự được tạo thành t các ch cái, ch s v
du gch ni.
* Tên thng dùng t tên cho các i lng trong chng
trình nh tên bin, hng, tên kiu d liu mi vv....
* Ký t u tiên ca tên không c l ch s.
* Tên không c trùng vi t khóa.
+ Tên chuẩn: là tªn do Visual Basic định nghĩa trước dïng ch
tên các hm, hng, bin, th tc, hm, s kin trong Visual Basic.
+ Tên do ngi lp trình t: t tùy ý nhng phi tuân th
theo nguyên tc ca Visual Basic như tªn biến, tªn kiểu dữ liệu
mới, tªn thủ tc, tên hm...
2.1.6.3. Một số câu lệnh thờng gặp
a. Câu lnh gán
Cú pháp:
Tên_bin = biu thc
hoc
Tên_i_tng.Thuc_tính = biu thc
Hot ng: Khi gp lnh ny chng trình s tính giá tr ca biu
thc bên phi
ca lnh v gán giá tr ó cho biến hoặc thuộc tÝnh ở vế tr¸i.
VÝ dụ: s = s*b.
b. C©u lệnh END

Khi Visual Basic gặp cÊu lệnh End chng trình s dng li.
Nu ta ang trong môi trng phát trin ng dng thì s quay tr
v môi trng phát trin. Trong môi trng c lp khi gp câu
lnh End tt c ca s chng trình m ra sẽ bị đãng lại và
chương tr×nh bị xãa khỏi bộ nhớ. Ta cã thể đặt c©u lệnh End ở
nhiều nơi trong chng trình tuy nhiên phong cách lp trình tt
l hạn chế tối đa c©u lệnh này.


×