DƯƠNG TRUNG NGUYỆN NGHIÊN CỨU GIẢI THUẬT DI TRUYỀN VỚI BIẾN LIÊN TỤC CHO BÀI TOÁN TÌM CỰC TRỊ CỦA HÀM SỐ LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGHỆ AN - 2018... LỜI CAM ĐOAN Tôi xin ca
Trang 1DƯƠNG TRUNG NGUYỆN
NGHIÊN CỨU GIẢI THUẬT DI TRUYỀN VỚI BIẾN LIÊN TỤC CHO BÀI TOÁN
TÌM CỰC TRỊ CỦA HÀM SỐ
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGHỆ AN - 2018
Trang 2DƯƠNG TRUNG NGUYỆN
NGHIÊN CỨU GIẢI THUẬT DI TRUYỀN VỚI BIẾN LIÊN TỤC CHO BÀI TOÁN
TÌM CỰC TRỊ CỦA HÀM SỐ
Chuyên ngành: Công nghệ thông tin
Mã số: 60.48.02.01
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học:
TS HOÀNG HỮU VIỆT
NGHỆ AN - 2018
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan:
Những kết quả nghiên cứu được trình bày trong luận văn: “Nghiên cứu giải thuật di truyền với biến liên tục cho bài toán tìm cực trị của hàm số”
là hoàn toàn trung thực, không vi phạm luật sở hữu trí tuệ và pháp luật Việt Nam Nội dung tham khảo từ sách, tài liệu khác đều được trích dẫn đầy đủ Nếu sai, tôi hoàn toàn chịu trách nhiệm trước pháp luật
TÁC GIẢ LUẬN VĂN
Dương Trung Nguyện
Trang 4LỜI CẢM ƠN
Lời đầu tiên tôi xin bày tỏ lòng cảm ơn và biết ơn chân thành nhất của mình tới tất cả những người đã hỗ trợ, giúp đỡ tôi trong quá trình thực hiện luận văn tốt nghiệp
Tôi xin cảm ơn Khoa Công nghệ Thông tin, phòng Sau Đại học cũng như các thầy cô giáo trong khoa đã giúp đỡ, tạo mọi điều kiện thuận lợi nhất,
hỗ trợ, giảng dạy giúp đỡ tôi trong quá trình học tập và làm luận văn tốt nghiệp
Đặc biệt tôi muốn gửi lời cảm ơn chân thành đến TS.Hoàng Hữu Việt, là người
hướng dẫn, nhận xét, giúp đỡ để tôi có thể hoàn thành được luận văn này Tôi xin được gửi lời cảm ơn đến gia đình, bạn b , đ ng nghiệp đã luôn bên cạnh, động viên tôi trong quá trình hoàn thiện luận văn
Nhân đây, tôi xin kính chúc các Thầy, Cô giáo sức khỏe và tiếp tục đạt nhiều thành công trong nghiên cứu khoa học và trong sự nghiệp giảng dạy, chúc Khoa Công nghệ Thông tin ngày một phát triển
Mặc dù đã có nhiều cố gắng nhưng quá trình thực hiện luận văn không thể tránh khỏi thiếu sót, vì vậy tôi rất mong nhận được những ý kiến đóng góp
bổ sung của thầy cô giáo và các bạn để luận văn của tôi được hoàn thiện hơn
Tôi xin chân thành cảm ơn!
Trang 5MỤC LỤC
Trang
LỜI CAM ĐOAN i
LỜI CẢM ƠN ii
DANH MỤC CÁC BẢNG, HÌNH VẼ v
MỞ ĐẦU 1
1 Sự cần thiết của vấn đề nghiên cứu 1
2 Mục tiêu nghiên cứu 1
3 Đối tượng và phạm vi nghiên cứu 2
4 Nội dung nghiên cứu 3
5 Kết cấu của luận văn 3
CHƯƠNG 1 TỔNG QUAN 5
1.1 Bài toán tìm cực trị của hàm số 5
1.2 Cơ sở toán học 6
1.2.1 Các định nghĩa 6
1.2.2 Điều kiện cần và đủ của của điểm cực trị 7
1.3 Tìm kiếm vét cạn cho bài toán tìm cực trị của hàm số 9
1.4 Tìm kiếm cục bộ 12
1.4.1 Thuật toán leo đ i 12
1.4.2 Thuật toán mô phỏng luyện kim (simulated annealing search) 17
1.5 Giải thuật di truyền 19
CHƯƠNG 2 GIẢI THUẬT DI TRUYỀN VỚI BIẾN NHỊ PHÂN 21
2.1 Giới thiệu 21
2.2 Giải thuật di truyền nhị phân 22
2.3 Ví dụ về giải thuật di truyền với biến nhị phân 24
Trang 6CHƯƠNG 3 GIẢI THUẬT DI TRUYỀN VỚI BIẾN LIÊN TỤC CHO
BÀI TOÁN TÌM CỰC TRỊ HÀM SỐ 30
3.1 Giải thuật di truyền với biến liên tục 30
3.2 Cài đặt giải thuật di truyền cho bài toán tìm cực trị của hàm số 35
3.3 Đánh giá hiệu quả của giải thuật bằng thực nghiệm 42
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 44
1 Kết luận 44
2 Kiến nghị và hướng phát triển 45
TÀI LIỆU THAM KHẢO 46
Trang 7DANH MỤC CÁC HÌNH VẼ, BẢNG
Trang
Hình:
Hình 1.1 Đ thị của hàm số ( , )f x y xsin(4 )x 1.1 sin(2 )y y 10
Hình 1.2 Đ thị của hàm số và vết đi của thuật toán leo đ i 14
Hình 1.3 Minh họa trường hợp thuật toán dừng ở nghiệm tối ưu địa phương 15
Hình 1.4 Minh họa thuật toán leo đ i đa điểm tìm giá trị lớn nhất hàm số 16
Hình 1.5 Minh họa thuật toán mô phỏng luyện kim 18
Hình 2.1 Sơ đ khối của thuật toán di truyền nhị phân 23
Hình 2.2 Đ thị của hàm số f(x) = -x2/10 + 3x 25
Hình 3.1 Đ thị của hàm số f(x, y) = x.sin(4x) + 1.1y.sin(2y) 31
Hình 3.2 Thống kê giá (cost) trung bình và giá tôt nhất của các thế hệ 34
Hình 3.3 Đ thị của các hàm số 36
Bảng: Bảng 2.1 Khởi tạo quần thể ban đầu 26
Bảng 2.2 Kết quả của thể hệ 2 28
Bảng 3.1 Ví dụ về quẩn thể khởi tạo 32
Bảng 3.4 Kết quả thử nghiệm các thuật toán 40
Trang 8MỞ ĐẦU
1 Sự cần thiết của vấn đề nghiên cứu
Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho các bài toán là vấn đề được các nhà khoa học máy tính đặc biệt quan tâm Mục đích chính của các thuật toán tìm kiếm lời giải là tìm ra lời giải tối ưu cho bài toán trong thời gian nhỏ nhất
Thuật giải di truyền đã được phát minh ra để bắt chước quá trình phát triển tự nhiên trong điều kiện quy định sẵn của môi trường Các đặc điểm của quá trình này đã thu hút sự chú ý của John Holand (ở đại học Michigan) ngay
từ những năm 1970 Holand tin rằng sự gắn kết thích hợp trong thuật giải máy tính có thể tạo ra một kỹ thuật giúp giải quyết các vấn đề khó khăn giống như trong tự nhiên đã diễn ra thông qua quá trình tiến hóa
Hiện nay có rất nhiều phương pháp giải quyết bài toán tối ưu hàm số, nhưng các phương pháp chỉ dừng lại ở những lớp bài toán với những thông tin rõ ràng Do đó,việc tìm ra một phương pháp mới để giải quyết bài toán tối
ưu hàm nhiều biến tổng quát là cần thiết
Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải pháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization) bằng cách mô phỏng theo sự tiến hóa của con người hay của sinh vật Nên tôi chọn bài toán “Nghiên cứu giải thuật di truyền với biến liên tục cho bài toán tìm cực trị của hàm số” làm đề tài luận văn thạc sĩ
2 Mục tiêu nghiên cứu
2.1 Mục tiêu tổng quát
Nghiên cứu, áp dụng và đánh giá giải thuật di truyền với biến liên tục cho bài toán tìm cực trị của hàm số
Trang 92.2 Mục tiêu cụ thể
Đề tài tập trung vào các mục tiêu cụ thể sau:
- Nghiên cứu tổng quan về bài toán tìm kiếm cực trị của hàm số
- Nghiên cứu giải thuật di truyền với biến nhị phân
- Nghiên cứu áp dụng giải thuật di truyền với biến liên tục cho bài toán tìm cực trị của hàm số
- Nghiên cứu ngôn ngữ Matlab, cài đặt và đánh giá hiệu quả của thuật toán di truyền cho bài toán tìm cự trị của hàm số
3 Đối tƣợng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
(a) Nghiên cứu lý thuyết
- Nghiên cứu các tài liệu về bài toán cực trị và các phương pháp giải bài toán tìm cực trị của hàm số
- Nghiên cứu các tài liệu về giải thuật di truyền với biến nhị phân và giải thuật di truyền với biến liên tục cho bài toán tìm cực trị của hàm số
- Nghiên cứu các tài liệu về ngôn ngữ lập trình Matlab
(b) Nghiên cứu thực nghiệm
- Cài đặt và đánh giá hiệu quả của thuật toán di truyền với biến liên tục cho bài toán tìm cực trị của hàm số
3.2 Phạm vi nghiên cứu
Hiện nay có rất nhiều phương pháp giải quyết bài toán tối ưu hàm số, nhưng các phương pháp chỉ dừng lại ở những lớp bài toán với những thông tin rõ ràng Do đó, việc tìm ra một phương pháp mới để giải quyết bài toán tối
ưu hàm nhiều biến tổng quát là cần thiết
Trang 10Trong luận văn này tôi chỉ hạn chế nghiên cứu hướng tiếp cận giải thuật
di truyền với biến liên tục cho bài toán tìm cực trị của hàm số để giải bài toán tìm cực trị của hàm số
4 Nội dung nghiên cứu
- Xây dựng đề cương luận văn
- Nghiên cứu tổng quan về bài toán bài toán tìm cực trị của hàm số và các hướng tiếp cận giải quyết bài toán này
- Nghiên cứu giải thuật di truyền với biến nhị phân
- Nghiên cứu áp dụng giải thuật di truyền với biến liên tục cho bài toán tìm cực trị của hàm số
- Nghiên cứu ngôn ngữ lập trình Matlab để cài đặt và đánh giá giải thuật
- Lập trình và đánh giá hiệu quả của thuật toán di truyền với biến liên tục cho bài toán tìm cực trị của hám số so với thuật toán tìm kiếm khác
- Viết báo cáo luận văn
5 Kết cấu của luận văn
Sau phần mở đầu, luận văn được cấu trúc g m 3 chương sau:
Chương 1: Tổng quan
Chương này trình bày tổng quan về bài toán tìm cực trị của hàm số, các phương pháp cơ bản tìm cực trị của hàm số g m cơ sở toán học, các thuật toán vét cạn và thuật toán tìm kiếm cục bộ giải bài toán tìm cực trị của hàm số
Chương 2: Giải thuật di truyền với biến nhị phân
Chương này trình bày giải thuật di truyền nhị phân bao g m các các khái niệm, thuật toán, các toán tử chọn lọc, lai ghép, đột biến và áp dụng giải thuật cho bài toán tìm giá trị lớn nhất của hàm số với biến được mã hóa theo nhị phân
Trang 11Chương 3: Giải thuật di truyền với biến liên tục cho bài toán tìm cực trị của hàm số
Chương này trình bày giải thuật di truyền với biến liên tục cho bài toán tìm giá trị bé nhất của các hàm số Ngoài ra, chương này cũng trình bày hai thuật toán g m thuật toán vét cạn và thuật toán leo đ i đa điểm cho bài toán tìm giá trị bé nhất của hàm số Chương này cũng đưa ra các kết quả thực nghiệm và các đánh giá dựa trên các thực nghiệm cho các thuật toán vét cạn, thuật toán leo đ i đa điểm, giải thuật di truyền nhị phân, giải thuật di truyền với biến liên tục cho bài toán tìm giá trị bé nhất của hàm số
Cuối cùng là kết luận và hướng phát triển của đề tài nhằm tóm tắt lại những kết quả thu được của bản thân trong quá trình thực hiện luận văn cũng như đưa ra một số hướng nghiên cứu tiếp theo của đề tài
Trang 12CHƯƠNG 1 TỔNG QUAN
1.1 Bài toán tìm cực trị của hàm số
Hiện nay có rất nhiều phương pháp giải quyết bài toán tối ưu hàm số, nhưng các phương pháp chỉ dừng lại ở những lớp bài toán với những thông tin rõ ràng Do đó, việc nghiên cứu một phương pháp mới để giải quyết bài toán tối ưu hàm nhiều biến tổng quát là cần thiết
Nhưng để giải quyết bài toán cần có công cụ cần thiết phải thiết kế bài toán tìm cực trị (giá trị bé nhất (minumum) hay giá trị lớn nhất (maximum)) của một hàm số nhiều biến mà mỗi biến có thể nhận các giá trị số nằm trên một miền con hoặc toàn miền số thực (từ -∞ đến +∞) thì thực sự rất khó Trong kỹ thuật, khi giải quyết bất kỳ một nhiệm vụ nào chúng ta đều mong muốn có phương án tốt nhất theo một hoặc vài tiêu chí nào đó Có thể liệt kê rất nhiều những ví dụ cụ thể như tiết kiệm thời gian nhất, chi phí nhỏ nhất, năng suất lớn nhất, quãng đường ngắn nhất, thiết kế kết cấu với trọng lượng vật liệu nhỏ nhất…Để giải được những bài toán này, toán học đã cho ra đời một ngành “Quy hoạch toán học” hay “Tối ưu hóa” Bài toán tối ưu nói chung được viết dưới dạng như sau:
Trang 13Hàm f(x) trong biểu thức (1.1) được gọi là hàm mục tiêu tiêu chuẩn tối
ưu, biểu diễn mối quan hệ giữa tiêu chuẩn chất lượng của quá trình khảo sát
- Ta nói hàm số f(x,y) = f(M) đạt giá trị cực đại tại điểm M 0 (x 0 ,y 0) thuộc
D nếu f(M) ≤ f(M 0 ) với mọi điểm M(x,y) thuộc D mà khoảng cách từ M đến
M 0 nhỏ hơn một giá trị r (r > 0, nhỏ tùy ý)
- Ta nói hàm số f(x,y) = f(M) đạt giá trị cực tiểu tại điểm M 0 (x0,y 0) thuộc
D nếu f(M) ≥ f(M 0 ) với mọi điểm M(x,y) thuộc D mà khoảng cách từ M đến
M 0 nhỏ hơn r (r > 0, nhỏ tùy ý)
- Cực đại và cực tiểu được gọi chung là cực trị Nếu hàm số đạt cực trị
tại M 0 (x 0 ,y 0 ) thì điểm M 0 (x 0 ,y 0) được gọi là điểm cực trị
Câu hỏi đặt ra: Với hàm số bên ngoài điểm cực trị M 0 (x 0 ,y 0) còn điểm cực trị nào khác? tìm chúng như thế nào? Rõ ràng không thể chỉ dùng định nghĩa Vì vậy cần có công cụ tốt hơn: Điều kiện cần sẽ giúp ta tập trung vào các điểm hoài nghi, còn gọi là các điểm dừng
Trang 141.2.2 Điều kiện cần và đủ của của điểm cực trị
Điều kiện cần:
Hàm số f(x,y) xác định, liên tục và có các đạo hàm riêng trên miền D = {a
≤ x ≤ b, c ≤ y ≤ d} Khi đó, nếu điểm M 0 (x 0 ,y 0) là điểm cực trị của hàm số thì tại
điểm M 0 (x 0 ,y 0) tất cả các đạo hàm riêng cấp 1 của hàm số triệt tiêu, tức là:
(1.2)
Điểm M 0 (x 0 ,y 0) thỏa mãn điều kiện (1.2) tức là nghiệm của hệ:
(1.3)
được gọi là điểm dừng của hàm f(x,y)
- Nhận xét 1: Hàm số chỉ có thể đạt cực trị tại các điểm dừng của nó, nên
để tìm các điểm cực trị ta chỉ cần tìm trong số các điểm dừng
- Nhận xét 2: Một điểm là điểm dừng của hàm số thì chưa chắc là điểm
cực trị Cho nên cần xét điều kiện đủ để một điểm dừng là điểm cực trị
Điều kiện đủ:
Giả sử hàm số f(x,y) có điểm dừng tại M 0 (x 0 ,y 0) và các đạo hàm riêng
cấp 2 của hàm số xác định, liên tục tại M 0 (x 0 ,y 0) Xét D = , với
Trang 15(1.4)
- Nếu D < 0 thì điểm M 0 (x 0 ,y 0) không phải là điểm cực trị của hàm số
f(x,y)
- Nếu D > 0 thì điểm M 0 (x 0 ,y 0 ) là điểm cực trị của hàm số f(x,y)
+ Nếu a 11 > 0 thì điểm M 0 (x 0 ,y 0) là điểm cực tiểu của hàm số
+ Nếu a 11 < 0 thì điểm M 0 (x 0 ,y 0) là điểm cực đại của hàm số
Xét ví dụ tìm giá trị lớn nhất của hàm số:
, với 0 ≤ x ≤10 và 0 ≤ y ≤ 10 (1.5) Lấy đạo hàm bậc 1 theo các biến x và y, ta có:
(1.6)
Điểm dừng là những điểm thõa mãn hệ phương trình (1.6) Để tìm cực tiểu và cực đại của hàm số, chúng ta cần tính đạo hàm bậc 2:
(1.7)
Trang 16và tính định thức của D = = a11a22 như sau:
Hiển nhiên để xác định D > 0 hay D < 0 cũng như a 11 > 0 hay a 11 < 0 của biểu thức (1.8) thực sự là điều không dễ Đặc biệt với các hàm đa biến phức tạp
1.3 Tìm kiếm vét cạn cho bài toán tìm cực trị của hàm số
Hướng tiếp cận tìm kiếm vét cạn (exhaustive search) hay tìm kiếm cưỡng bức (brute force) là phương pháp lấy mẫu hàm tìm kiếm để tìm ra giá trị cực đại hoặc cự tiểu tổng thể của hàm số Phương pháp này yêu cầu rất lớn
số lượng các mẫu để tìm ra giá trị cực đại/cực tiểu tổng thể Xét lại ví dụ tìm giá trị bé nhất của hàm số:
, với 0 ≤ x ≤10 và 0 ≤ y ≤ 10 (1.9) Hình 1.1 chỉ ra đ thị của hàm số với x và y được lấy mẫu ở khoảng
0.01 Như vậy yêu cầu 1001×1001 = 1002001 lần tính giá trị của hàm Thuật
Trang 17toán 1.1 chỉ ra thuật toán vét cạn để tìm giá trị bé nhất của hàm số Sử dụng
Thuật toán 1.1, giá trị bé nhất tìm được của hàm số là f_min = -18.5545, tại
x = 9.040 và y = 8.670
Hình 1.1 Đ thị của hàm số
( , ) sin(4 )x 1.1 sin(2 )y
Hiển nhiên, thuật toán vét cạn yêu cầu kiểm tra một số lượng rất lớn các
trạng thái trong không gian trạng thái Gọi N var là tổng số các biến của hàm
số, Q i là số giá trị khác nhau của biến thứ i, khi đó các giá trị cần tìm kiếm là:
(1.10)
Trang 18Thuật toán 1.1 Thuật toán vét cạn tìm giá trị bé nhất của hàm số
15 return f_min, x_min, y_min, t;
Ưu điểm của thuật toán vét cạn là nó không bị kẹt ở một cực trị địa phương Nhược điểm của thuật toán vét cạn chỉ tìm được nghiệm xấp xỉ tối
ưu tổng thể vì việc lấy mẫu các biến và hơn nữa, độ phức tạp tính toán của thuật toán vét cạn là hàm mũ như (1.10), do đó thuật toán vét cạn chỉ được dùng để tìm kiếm cực trị cho các hàm số có ít biến bị giới hạn trong một
Trang 19không gian tìm kiếm nhỏ
1.4 Tìm kiếm cục bộ
Tìm kiếm cục bộ là một phương pháp được ưa dùng để giải quyết các bài
toán tối ưu vì hai ưu điểm chính sau: (i) thuật toán sử dụng rất ít bộ nhớ và (ii)
thuật toán có thể tìm được nghiệm trong một không gian rộng lớn
Phần này trình bày 2 thuật toán cơ bản của tìm kiếm cục bộ là thuật toán leo đ i và thuật toán mô phỏng luyện kim
1.4.1 Thuật toán leo đồi
Thuật toán tìm kiếm cục bộ đơn giản nhất là thuật toán leo đ i climbing) Thuật toán leo đ i theo hướng tăng để tìm cực đại của một hàm 2
(hill-biến số f(x,y) được chỉ ra trong thuật toán 1.2 Ban đầu thuật toán khởi tạo một nghiệm ở một giá trị ngẫu nhiên (x 0 ,y 0) Ở mỗi vòng lặp, thuật toán tìm
giá trị lớn nhất của tập các giá trị lân cận neighbor(x,y) của điểm (x,y) Nếu giá trị lớn nhất trong lân cận của (x,y) bé hơn giá trị lớn nhất đã tìm được thì
thuật toán dừng, ngược lại, thuật toán di chuyển giá trị lớn nhất đã tìm được tới lân cận có giá trị lớn nhất Khi thuật toán kết thúc, nó trả về giá trị lớn nhất
Trang 21Hình 1.2 Đ thị của hàm số và vết đi của thuật toán leo đ i
Hình 1.2 chỉ ra một ví dụ sử dụng thuật toán leo đ i tìm giá trị lớn nhất
của một hàm hai biến f(x,y):
với -100 ≤ x ≤ 100 và -100 ≤ y ≤ 100, trong đó x và y là các số nguyên
Đường gạch trên đ thị chỉ ra vết đi của thuật toán leo đ i và thuật toán dừng
khi leo đến đỉnh đ i Ban đầu, thuật toán khởi tạo x = -100 và y = -100 Ở mỗi vòng lặp, thuật toán tìm giá trị lớn nhất của 4 điểm lân cận của điểm (x,y) g m {(x-1,y), (x+1,y), (x,y+1), (x, y-1)} Nếu giá trị lớn nhất trong lân cận của (x,y)
bé hơn giá trị lớn nhất đã tìm được thì thuật toán dừng, ngược lại, thuật toán
di chuyển giá trị lớn nhất đã tìm được tới lân cận có giá trị lớn nhất Khi thuật
toán kết thúc, giá trị lớn nhất của hàm số tìm được là f_max = -55 tại x = 0 và
y = 9 So thuật toán vét cạn, thuật toán leo đ i đã tìm được nghiệm chính xác
Trang 22Hình 1.3 Minh họa trường hợp thuật toán dừng
ở nghiệm tối ưu địa phương
Nhược điểm lớn nhất của thuật toán tìm kiếm cục bộ là thường thuật toán bị kẹt ở một vùng cục bộ, tức là thuật toán chỉ tìm được các nghiêm tối
ưu địa phương Ngoài ra, thuật toán sẽ phụ thuộc vào điểm khởi tạo ban đầu của thuật toán Hình 1.3 minh họa trường hợp thuật toán tìm kiếm giá trị lớn nhất của hàm một biến nhưng dừng ở một điểm tối ưu cục bộ địa phương
Để tránh trường hợp thuật toán chỉ tìm thấy nghiệm tối ưu địa phương, một số cải tiến khác đã được đề nghị như đưa thêm xác suất chọn giá trị ngẫu nhiên trong tập láng giềng thay vì lấy giá trị bé nhất hay thuật toán leo
Trang 23Hình 1.4 Minh họa thuật toán leo đ i đa điểm
tìm giá trị lớn nhất hàm số
Hình 1.4 chỉ ra một ví dụ sử dụng thuật toán leo đ i đa điểm tìm giá trị
lớn nhất của một hàm hai biến f(x,y):
(1.12)
với 0 ≤ x ≤ 100 và 100 ≤ y ≤ 200, trong đó x và y là các số nguyên Đường
gạch trên đ thị chỉ ra vết đi của thuật toán leo đ i và thuật toán dừng khi leo đến đỉnh đ i Khi thuật toán kết thúc, giá trị lớn nhất của hàm số tìm được là
f_max = 9.739 tại x = 74 và y = 142 sau 405 vòng lặp So thuật toán vét cạn,
thuật toán leo đ i đã tìm được nghiệm chính xác tuy nhiên cần rất ít vòng lặp
so với thuật toán vét cạn
Trang 241.4.2 Thuật toán mô phỏng luyện kim (simulated annealing search)
Thuật toán leo đ i di chuyển tới trạng thái tốt nhất trong trạng thái lân cận của trạng thái hiện thời, do đó thường bị kẹt ở một nghiệm cục bộ và do
đó thuật toán thường không tìm được cực trị tổng thể Thuật toán mô phỏng luyện kim (simulated annealing search) lấy ý tưởng từ quá trình tôi ủ trong luyện kim Trong luyện kim, tôi ủ (simulated annealing search), tôi ủ là quá trình để làm cứng kim loại hoặc thủy tinh bằng cách nung nóng chúng đến một nhiệt độ cao và sau đó làm lạnh dần dần chúng Về bản chất, thuật toán
mô phỏng luyện kim là sự kết hợp leo đ i với di chuyển ngẫu nhiên, đó là cho phép di chuyển đến các trạng thái với nghiệm t i hơn để có thể tránh được các điểm tối ưu cục bộ như minh họa ở hình 1.5
Thuật toán mô phỏng luyện kim để tìm giá trị lớn nhất của một hàm
2 biến f(x,y) được mô tả như thuật toán 1.3 Ban đầu thuật toán được khởi tạo nghiệm ở vị trí ngẫu nhiên (x 0 ,y 0 ) Ở mỗi vòng lặp, nhiệt độ T sẽ được
giảm dần và thay vì chọn trạng thái tốt nhất tiếp theo, thuật toán chọn một trạng thái ngẫu nhiên Nếu trạng thái được chọn tốt hơn trạng thái hiện thời thì nghiệm sẽ được chuyển đến trạng thái đã chọn Ngược lại, chuyển
đến trạng thái đã chọn với xác suất nhỏ là eE/T
Hiển nhiên, xác xuất chọn
trạng thái "t i" giảm khi E nhỏ hoặc nhiệt độ T cao Nếu nhiệt độ T giảm
đủ chậm thì thuật toán sẽ tìm được một tối ưu tổng thể với xác suất gần bằng 1
Trang 25Hình 1.5 Minh họa thuật toán mô phỏng luyện kim
Thuật toán 1.2 Thuật toán mô phỏng luyện kim
1 Vào: - Hàm số f(x,y),
2 - schedule: ánh xạ từ thời gian tới nhiệt độ
3 Ra: giá trị lớn nhất tìm được f_max, các giá trị x, y tương ứng với
f_max
4 x: = x 0 ; y: = y 0 ;
5 for t = 1 to ∞ do
6 T = schedule(t);
7 if T = 0 then return f(x,y);
8 select randomly x_next, y_next in neighbor(x,y)
9 E = f(x,y) - f(x_next,y_next);
Trang 261.5 Giải thuật di truyền
Giải thuật di truyền (Genetic Algorithm - GA) là một kỹ thuật tối ưu hóa và tìm kiếm dựa trên trên nguyên tắc di truyền và chọn lọc tự nhiên Giải thuật di truyền cho phép một quần thể (population) bao g m nhiều cá thể phát triển theo luật chọn lọc để cực đại một hàm thích nghi (fitness) (tức
là tối ưu hàm giá) Giải thuật di truyền được phát triển bởi John Holland năm 1975 và sau đó được học trò của ông, David Goldberg, tiếp tục phát triển và công bố trong luận án tiến sỹ (1989) Một số ưu điểm của giải thuật
di truyền bao g m:
- Tối ưu hóa hàm số với các biến liên tục và rời rạc
- Không yêu cầu tính đạo hàm các hàm số