Tải bản đầy đủ (.pdf) (167 trang)

Xây dựng một framework hướng đối tượng cho giải thuật memetic và ứng dụng vào việc giải bài toán phủ tập

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 (697.23 KB, 167 trang )

Đại Học Quốc Gia Tp. Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
--------------------

PHAN ANH TUẤN

XÂY DỰNG MỘT FRAMEWORK H ƯỚNG ĐỐI
TƯỢNG CHO GIẢI THUẬT MEMETIC V À ỨNG DỤNG
VÀO VIỆC GIẢI BÀI TỐN PHỦ TẬP

Chun ngành

: Khoa Học Máy Tính

LUẬN VĂN THẠC SĨ

TP.HỒ CHÍ MINH, THÁNG 09 NĂM 2007


CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH

Cán bộ hướng dẫn khoa học:

Tiến sĩ DƯƠNG TUẤN ANH

Cán bộ chấm nhận xét 1:

Tiến sĩ NGUYỄN VĂN HIỆ P


Cán bộ chấm nhận xét 2:

Tiến sĩ NGUYỄN ĐÌNH THÚC

Luận văn thạc sĩ được bảo vệ tại
HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ngày 08 tháng 09 năm 2007


LỜI CẢM ƠN

Tôi xin được gửi lời cảm ơn chân thành đến:

-

Tiến sĩ Dương Tuấn Anh đã tận tình chỉ bảo, hướng dẫn tôi nghiên cứu và
thực hiện luận văn này. Nếu khơng có sự theo dõi và động viên của thầy,
tơi sẽ khơng thể hồn thành luận văn đúng thời gian quy định.

-

Các thầy cô của Khoa Công Nghệ Thơng Tin tr ường Đại học Bách Khoa
TP.Hồ Chí Minh đã tận tâm giảng dạy mở ra cho chúng tôi những con
đường đến với những tri thức mới.

-

Gia đình, bạn bè thân thiết những người luôn bên tôi, động viên khuyến
khích tơi vào những thời điểm quan trọng của cuộc đời.


i


TÓM TẮT
Một trong những cách tiếp cận đ ược ưa thích để giải bài tốn tối ưu tổ hợp thuộc
lớp bài toán NP-đầy đủ là dùng giải thuật memetic, sự kết hợp giữa giải thuật di
truyền và tìm kiếm cục bộ. Luận văn này tìm hiểu những vấn đề cơ bản của giải
thuật memetic, sau đó sẽ xây dựng một framework h ướng đối tượng cho giải thuật
memetic trên nền tảng ngơn ngữ Java. Bởi v ì việc phát triển một ứng dụng cụ thể,
có áp dụng giải thuật memetic, l à một công việc tốn nhiều thời gian v à cơng sức,
vì thế một framework như vậy rất có ích trong việc hổ trợ thiết kế v à hiện thực
nhanh một ứng dụng cụ thể giải bằng giải thuật memetic. B ên cạnh đó, luận văn sử
dụng framework vào việc phát triển một giải thuật memetic giải quyết b ài toán phủ
tập, được xem là một trong những bài tốn NP-đầy đủ, để chứng minh tính hữu ích
và hiệu quả của việc sử dụng framework. Quá tr ình thử nghiệm cho thấy: 1)
framework này khá tiện dụng cho việc phát triển v à hiện thực một giải thuật
memetic để giải quyết một bài toán thực tế. 2) Giải thuật memet ic hữu hiệu về thời
gian thực thi hơn nhiều so với giải thuật di truyền thuần tuý.

ii


ABSTRACT
Memetic algorithm is the one of existing, successful methods for solving NP complete combinatorial optimization problems. Memetic algorithm is t he
combination of genetic algorithm and local search. In this thesis, the fundamentals
of memetic algorithms will be studied, then an object oriented framework for
memetic algorithm is developed in Java. It’s very useful to use such a framework
to design and implement a certain memetic algorithm rapidly, because building an
application using memetic algorithm is complicated and time -comsuming. Our

framework has been tested through an application : solving set covering problems
(SCP), which has been proven t o be NP-complete. Computational results show
that: 1) this framework is particularly useful for designing and implementing a
memetic algorithm for some application. 2) The run -time efficiency of the
memetic algorithm for SCP is better than that of a pure g enetic algorithm for the
same problem.

iii


MỤC LỤC

CHƯƠNG 1 GIỚI THIỆU ............................................................................................. 1

1.1

Giới thiệu đề tài......................................................................................... 1

1.2

Nhiệm vụ của luận văn.............................................................................. 1

1.3

Những kết quả đạt được của luận văn ....................................................... 2

1.4

Cấu trúc của luận văn ................................................................................ 3


CHƯƠNG 2 TỔNG THUẬT VỀ CÁC CƠNG TR ÌNH ĐÃ CÓ TRÊN THẾ GIỚI
LIÊN QUAN ĐẾN ĐỀ TÀI.............................................................................................. 4
CHƯƠNG 3 CƠ SỞ LÝ THUYẾT ................................................................................ 7

3.1

Tìm kiếm cục bộ (Local Search) ............................................................... 7

3.2

Giải thuật di truyền (Genetic Algorithm) ................................................ 14

3.3

Giải thuật memetic (Memetic Algorithm) ............................................... 18

CHƯƠNG 4 FRAMEWORK HƯỚNG ĐỐI TƯỢNG CHO GIẢI THUẬT
MEMETIC ....................................................................................................................... 32

4.1

Giới thiệu................................................................................................. 32

4.2

Kiến trúc của Framework ........................................................................ 33

4.2.A

Sơ lược về những mẫu thiết kế được sử dụng trong framework ..... 33


4.2.B

Kiến trúc framework ........................................................................ 34

4.3

Một số hiện thực chính của các th ành phần của framework ................... 42

CHƯƠNG 5 MỘT ỨNG DỤNG - BÀI TOÁN PHỦ TẬP......................................... 72

5.1

Giới thiệu................................................................................................. 72

5.2

Phương pháp giải quyết bài toán phủ tập ................................................ 75

5.3
Những thành phần cơ bản và giải thuật memetic cho bài toán phủ tập
(SCP).. ................................................................................................................ 75
5.3.A

Sự biễu diễn và hàm thích nghi ....................................................... 75

5.3.B

Kỷ thuật lựa chọn cha mẹ (Parent selection techniques) ................. 77


5.3.C

Phép toán lai ghép (Crossover operator) ......................................... 79

5.3.D

Chiến lược thay thế quần thể ........................................................... 79

5.3.E

Heuristic và tìm kiếm cục bộ ........................................................... 80

5.3.F

Giải thuật Memetic (MA) cho b ài toán “Phủ tập” (SCP) ................ 81
iv


5.4

Phần hiện thực bài toán SCP ................................................................... 84

5.5

GUI của phần mềm dùng để giải bài toán SCP....................................... 98

5.6

Thử nghiệm và một số kết quả đạt được ............................................... 102


CHƯƠNG 6 KẾT LUẬN............................................................................................ 109
THƯ MỤC THAM KHẢO .......................................................................................... 112
PHỤ LỤC A : HIỆN THỰC CỤ THỂ CỦA NHỮNG PH ƯƠNG THỨC PHỤ
ĐƯỢC SỬ DỤNG TRONG LUẬN VĂN........................................................ ..............A1
PHỤ LỤC B : GIỚI THIỆU NHỮNG MẪU THIẾT KẾ CHÍNH Đ ƯỢC SỬ DỤNG
TRONG LUẬN VĂN......................................................................................................B1
PHỤ LỤC C : KẾT QUẢ CỦA NHỮNG B ÀI TOÁN MẪU ĐƯỢC THỬ NGHIỆM
...........................................................................................................................................C1
PHỤ LỤC D: BẢNG THUẬT NGỮ ANH - VIỆT.......................................................D1

v


DANH MỤC HÌNH

Hình

Trang

Hình 3.1 Lược đồ tổng qt của giải thuật memetic...............................................15

Hình 3.2 Dạng mở rộng thứ nhất của giải thuật memetic.......................................16

Hình 3.3 Dạng mở rộng thứ hai của giải thuật memetic…….................................17

Hình 3.4 Ví dụ minh họa con cháu khơng khả thi của hai cha mẹ khả thi.............18

Hình 4.1 Kiến trúc của framework.…................................................................. ...27

Hình 4.2 Một thành phần trong framework sử dụng mẫu template method...........28


Hình 4.3 Một thành phần trong framework sử dụng mẫu abstract factory.............29

Hình 4.4 Những thành phần trong framework sử dụng mẫu strategy.............. ......31

Hình 4.5 Các thành phần khác của framework.......................................................32

Hình 4.6 Thành phần khác của framework.............................................................32

vi


Hình 5.1 Bản đồ thành phố A.................................................................................54

Hình 5.2 Biểu diễn nhị phân cho một nhiễm sắc thể..............................................56

Hình 5.3 Biểu diễn khơng nhị phân cho một nhiễm sắc thể...................... .............56

Hình 5.4 Heuristic làm cho các l ời giải trở nên khả thi..........................................59

Hình 5.5 Giải thuật tìm kiếm cục bộ.......................................................................59

Hình 5.6 Giải thuật memetic cho bài tốn phủ tập (SCP).......................................60

Hình 5.7 Giải thuật tạo quần thể ban đầu cho b ài toán phủ tập..............................60

Hình 5.8 Giao diện chính của phần mềm............................................. ...................72

Hình 5.9 Cung cấp bài tốn SCP cho phần mềm....................................................72


Hình 5.10 Thiết lập thông số cho chiến l ược lựa chọn cha mẹ...............................73

Hình 5.11 Thiết lập các thơng số cho chiến lược thay thế quần thể.......................74

vii


Hình 5.12 Thiết lập thơng số cho lịch biểu đột biến động......................................74

Hình 5.13 Biểu đồ biểu diễn sự tương quan giữa giá trị chi phí trung b ình và số thế
hệ con cháu cho hai bài tốn scp41 và scp45...…..................................................78

Hình 5.14 Biểu đồ biểu diễn sự tương quan giữa giá trị chi phí trung b ình và số thế
hệ con cháu cho hai bài toán scp61 và scp65...................................... ...................78

viii


DANH MỤC BẢNG

Bảng

Trang

Bảng 5.1 Thông tin chi tiết của các b ài toán được dùng để thử nghiệm.................75

Bảng 5.2 Các thông số cung cấp cho việc thử nghiệm...................................... .....76

Bảng 5.3 Kết quả tính tốn cụ thể...........................................................................77


ix


CHƯƠNG 1 GIỚI THIỆU

1.1 Giới thiệu đề tài
Bài toán tối ưu là một trong những chủ đề chính của khoa học máy tính. Trong
ngữ cảnh của đề tài này, tối ưu hố là một q trình xử lý cố gắng tìm ra lời giải
tốt nhất có thể đối với bài toán tối ưu cho trước trong một khoảng giới hạn về mặt
thời gian.Những bài toán tối ưu tổ hợp (combinatorial optimization problems) có
một số hữu hạn những lời giải tiềm năng. V ì vậy rõ ràng một cách trực giác giải
quyết những vấn đề như vậy là liệt kê ra tất cả những lời giải đó, rồi sau đó so
sánh từng lời giải một với nhau để t ìm ra lời giải tốt nhất. Nhưng thật không may ,
trên thực tế thì phương pháp này khơng khả thi vì số lời giải tiềm năng là q
nhiều, ví dụ có những vấn đề có h ơn 10 9259 lời giải tiềm năng (theo Memetic
Algorithms for Combinatorial Optimization Problems c ủa Bernhard Freisleben v à
Wolfgang Merzenich [18])
Bài toán tối ưu tổ hợp được xem là những bài tốn khó [18] khơng nh ững trong
thực tế mà còn trong vấn đề khoa học. Đối với những b ài tốn khó thì khơng bảo
đảm tìm ra được lời giải tối ưu trong một lượng thời gian hợp lý, khơng có một
phương pháp tốn học tổng quát nào có thể giải những vấn đề này. Thơng thường
thì số lời giải tiềm năng cho những bài tốn tối ưu tổ hợp là hàm lũy thừa theo
kích thước của bài tốn vì vậy những phương pháp liệt kê đơn giản là không khả
thi. Một trong những cách giải quyết vấn đề trên là dùng giải thuật di truyền
(Genetic Algorithm) viết tắt là GA. Giải thuật di truyền cũng đ ã chứng minh sự
hiệu quả của nó trong việc giải quyết những bài toán tối ưu tổ hợp. Nhưng một
trong những nhược điểm lớn nhất của giải thuật di truyền l à thời gian chạy rất lâu,
vì nó khơng khai thác những tri thức sẵn có của vấn đề v ào trong giải thuật.

1.2 Nhiệm vụ của luận văn này bao gồm ba phần:

1 - Phần đầu tiên là sẽ nghiên cứu một giải thuật hiệu quả h ơn nhằm tăng tốc giải
thuật di truyền . Đó chính là giải thuật memetic (memetic algorithm), là gi ải thuật
lai ghép giữa giải thuật di truyền và tìm kiếm cục bộ (local search). Giải thuật
memetic kết hợp tìm kiếm tồn cục (global search) và tìm kiếm cục bộ bằng cách
sử dụng giải thuật di truyền thực hiện việc khám phá đa dạng (exploration) và tìm
kiếm cục bộ để thực hiện việc khai thác tập trung (exploitation).

1


2 - Phần thứ hai là sẽ xây dựng một framework h ướng đối tượng cho giải thuật
memetic. Mục đích của việc này là nhằm hổ trợ, giúp đỡ những ng ười phát triển
(developer) trong việc sử dụng giải thuật memetic để giải quyết bài toán tối ưu tổ
hợp trong một miền ứng dụng cụ thể n ào đó.
3 - Phần cuối cùng của luận văn này sẽ giới thiệu một ứng dụng (case study), đó
chính là bài tốn “phủ tập” (Set Covering Problem). Bài toán phủ tập (SCP) là một
trong những bài tốn điển hình của bài tốn tối ưu tổ hợp. SCP đã được chứng
minh là bài toán NP-đầy đủ (NP-complete) [16]. Nó có rất nhiều ứng dụng trong
thực tế như: sắp xếp lịch cho các tổ lái, các chuyến bay trong l ĩnh vực hàng không,
sắp xếp các vị trí cho các ph ương tiện được phục vụ trong những tr ường hợp khẩn
cấp... Nhiệm vụ của phần n ày sẽ sử dụng Framework hướng đối tượng đã được
xây dựng cho giải thuật memetic ở tr ên để giải bài toán SCP.

1.3 Những kết quả đạt được của luận văn
Luận văn này đã thực hiện được những công việc sau:


Nghiên cứu giải thuật memetic là giải thuật lai ghép giữa giải thuật di truyền
và giải thuật tìm kiếm cục bộ




Tìm hiểu những cơng trình nghiên cứu liên quan đến giải thuật memetic



Tìm hiểu những cơng trình nghiên cứu liên quan đến bài tốn phủ tập.



Tìm hiểu một số mẫu thiết kế giúp ích trong việc xây dựng framework h ướng
đối tượng.



Xây dựng được framework hướng đối tượng cho giải thuật memetic



Sử dụng framework hướng đối tượng cho giải thuật memetic để xây dựng giải
pháp giải quyết bài toán phủ tập



Đã chạy thử nghiệm giải thuật memetic cho bài toán phủ tập với một số bộ dữ
liệu mẫu và kết quả đạt được khá tốt.
2


1.4 Cấu trúc của luận văn

Luận văn được tổ chức thành 6 chương:
Chương 1: Giới thiệu về luận văn, lý do chọn luận văn cũng nh ư những kết quả
đạt được của luận văn
Chương 2: Tổng thuật về các công tr ình liên quan đến những vấn đề của luận văn.
Chương 3: Trình bày cơ sở lý thuyết dùng để giải quyết vần đề
Chương 4: Đưa ra kiến trúc của framework hướng đối tượng cho giải thuật
memetic. Và hiện thực framework đó
Chương 5: Sử dụng framework được xây dựng ở chương IV xây dựng một phần
mềm giải quyết bài toán phủ tập.
Chương 6: Tổng kết và đề xuất những hướng phát triển của luận văn t rong tương
lai.

Sau chương 6 là những tài liệu tham khảo và các phụ lục. Bao gồm các nội dụng :
Phụ lục A : Hiện thực cụ thể của những ph ương thức phụ được sử dụng trong luận
văn
Phụ lục B : Giới thiệu những mẫu thiết kế chính đ ược sử dụng trong luận văn
Phụ lục C : Kết quả của những bài toán mẫu được thử nghiệm.
Phụ lục D : Các thuật ngữ Anh - Việt được sử dụng trong luận văn.

3


CHƯƠNG 2 TỔNG THUẬT VỀ CÁC CƠNG TR ÌNH
ĐÃ CĨ TRÊN THẾ GIỚI LIÊN QUAN ĐẾN ĐỀ
TÀI

Tìm kiếm cục bộ và giải thuật di truyền là một trong những giải thuật hiệu quả
được dùng phổ biến trong việc giải quyết các bài toán tối ưu tổ hợp, được xem
như là bài toán thuộc lớp NP-đầy đủ [16,18]. Nhưng trong m ột số bài tốn phức
tạp thì tìm kiếm cục bộ cũng như giải thuật di truyền lại gặp phải một số vấn đề.

Tìm kiếm cục bộ là chiến lược tìm kiếm dựa trên cá thể nên nó có tốc độ nhanh
hơn giải thuật di truyền nhưng nếu sử dụng không khéo th ì nó lại thiếu tính ổn
định và kết quả phụ thuộc vào những lời giải khởi động ban đầu cũng nh ư các
thông số dùng để tinh chỉnh trong quá tr ình tìm kiếm. Giải thuật di truyền là chiến
lược tìm kiếm dựa trên quần thể nên nó có tính ổn định hơn giải thuật tìm kiếm cục
bộ và kết quả lại ít phụ thuộc v ào lời giải ban đầu, nhưng nó gặp phải vấn đề về
thời gian chạy. Một trong những lý do làm cho giải thuật di truyền chạy tốn nhiều
thời gian là nó khơng khai thác nhiều về tri thức của một vấn đề cụ thể đang đ ược
xem xét. Mỗi giải thuật đều có những ưu và khuyết điểm riêng. Chính vì thế, nhu
cầu lai ghép hai giải thuật lại với nhau hứa hẹn một giải thuật mới sẽ cải thiện
được chất lượng cũng như thời gian chạy.
Moscato & Norman (1992) [22] l ần đầu tiên đã đưa ra khái niệm “giải thuật
memetic”. Trong bài báo này các tác gi ả đã mô tả một giải thuật di truyền (GA)
mà có sự tham gia của tìm kiếm cục bộ. Trong đó tìm kiếm cục bộ đóng góp một
vai trị quan trọng trong việc cải thiện tính hiệu quả của giải thuật. Tìm kiếm cục
bộ có khả năng khai thác các đặc điểm của vấn đề để tăng tốc độ quá tr ình tìm
kiếm miền lân cận. Moscato & N orman đã ứng dụng việc tích hợp tìm kiếm cục bộ
vào trong giải thuật di truyền để giải bài toán “Người bán hàng rong” (Traveling
Salesman Problem) viết tắt là TSP, kết quả chứng minh rằng nó đ ã được cải thiện
đáng kể về mặt chất lượng cũng như về thời gian chạy.
Những cơng trình nghiên cứu dựa trên ý tưởng của Moscato & Norman sau n ày
chủ yếu chia làm hai khuynh hướng:
-

Khuynh hướng đầu tiên là tiếp tục nghiêng cứu một giải thuật memetic ở mức
độ tổng quát. Điển hình là: Nicholas J.Radcliffe và Patrick D. Surry (1994)
[25] đã hình thức hố giải thuật memetic thành những hàm toán học, tạo ra
một dạng giải thuật memetic độc lập với biểu diễn. Fengjie Wu (2001) [32] đ ã

4



xây dựng một framework cho giải thuật memetic nhằm hổ trợ cho những
người phát triển.
-

Khuynh hướng thứ hai thì khơng đi vào thiết kế giải thuật memetic tổng quát
mà lại đi sâu vào việc thiết kế một giải thuật cụ thể cho một vấn đề nào đó.
Bài tốn TSP thường là bài tốn được lựa chọn nghiên cứu vì TSP là một
trong những bài toán kinh điển của lớp bài toán tối ưu tổ hợp và thuộc lớp bài
toán NP-đầy đủ. Điển hình là Peter Merz và Bern Freisleben (1997) [21] và
Natalio Krasnogor and Jim Smith (2000) [19,20] gi ới thiệu một giải thuật
memetic được thiết kế dành riêng cho bài tốn TSP. Trong cơng trìn h nghiên
cứu của mình Peter Merz và Bern Freisleben (1997) [21] đã đưa ra định nghĩa
khoảng cách giữa hai cá thể, v à phép tốn lai ghép bảo tồn khoảng cách
(distance preserving crossover operator). Có ngh ĩa là con cháu sẽ có khoảng
cách bằng nhau tới cả hai cha mẹ, và khoảng cách này cũng bằng với khoảng
cách giữa cha mẹ của chúng. Nếu I a, Ib là hai cha mẹ và Ic là con cháu được
tạo từ phép tốn lai ghép bảo tồn khoảng cách thì: D(I c,Ia) = D(I c,Ib) =
D(Ia,Ib). Phép tốn lai ghép bảo tồn khoảng cách này là một phép toán đặc
biệt chỉ thiết kế riêng cho bài toán TSP, chứ không đảm bảo là khả thi cho
những vấn đề khác. Natalio Krasnogor and Jim Smith (2000) [21,22] lại giới
thiệu một giải thuật memetic cũng dành cho bài toán TSP, trong đó ph ần tìm
kiếm cục bộ lại được áp dụng lên cha mẹ trước khi thực hiện các phép toán
biến dị di truyền, và giải thuật thiết kế cho phần tìm kiếm cục bộ lại tương tự
như giải thuật mô phỏng luyện kim (Simulated Annealing Algorithm) ngo ại
trừ là cùng một nhiệt độ được sử dụng cho cả quần thể. Giải thuật tìm kiếm
cục bộ này có hành vi tự thích nghi (self-adaptive), hoặc là khám phá đa dạng
hoặc là khai thác tập trung tuỳ theo thông số nhiệt độ.


Khuynh hướng hiện nay thường nghiêng về khuynh hướng thứ hai. Tức là đưa ra
một giải thuật memetic cho một bài tốn cụ thể nào đó. Hiện nay giải thuật
memetic rất hiệu quả trong việc giải quyết những b ài tốn, thường là những bài
tốn khó, trong thực tế.
Ví dụ như:
-

Ứng dụng vào việc giải bài toán “Phủ tập” (Set Covering Problem) viết rút
gọn là SCP đã được trình bài trong luận văn này.

-

Dùng giải thuật memetic để thiết kế VLSI (VLSI Design) [2]

5


-

Giải quyết bài toán tối thiểu hoá Makespan (Makespan Minimization
Problem) trong việc định thời máy song song (Parallel Machine
Scheduling) [5]

-

Thiết kế mạng phân bố cấp n ước (Water Distribution Network Design ) [6]

-

Dùng giải thuật Memetic để đối chiếu h ình dạng riêng phần (Partial Shape

Matching) [23]

-

Dùng giải thuật memetic để giải quyết bài toán định tuyến cho xe cộ
(Vehicle Routing Problems) [24]

-

Thiết kế mạng thông tin li ên lạc có xem xét đến mạng hiện tại
(Communication Network Design Taking into Consideration an Existing
Network) [27]

-

Tiên đoán cấu trúc của protein (Protein Structure Prediction ) [29]

-

...

Đề tài này cũng nghiên cứu giải thuật memetic. Sau đó sẽ đưa ra một framework
cho giải thuật memetic nhằm hổ trợ tốt hơn cho những người phát triển trong việc
ứng dụng giải thuật memetic để giải quyết một vấn đề cụ thể n ào đó. Và bài toán
phủ tập được chọn như là một ứng dụng. Lý do cho việc lựa chọn này là: bài tốn
này cũng là một trong những bài tốn điển hình, được chứng minh là bài toán NPđầy đủ[16]. Ứng dụng của b ài tốn này có rất nhiều trong thực tiễn: sắp xếp các vị
trí cho các phương tiện được phục vụ trong những tr ường hợp khẩn cấp[30,31],
cân bằng tải của dây chuyền sản xuất[28], v à một trường hợp đặc biệt của bài toán
này là bài toán “Phân chia t ập” (Set Partitioning Problem) đ ược ứng dụng trong
việc sắp xếp lịch cho các tổ lái, các chuyến bay trong lĩnh vực h àng không[26].


6


CHƯƠNG 3 CƠ SỞ LÝ THUYẾT

Trong chương này chúng ta xem xét ph ần lý thuyết liên quan đến giải thuật
memetic. Trước khi đi vào chi tiết giải thuật memetic chúng ta sẽ nhắc lại một số
điểm cơ bản của giải thuật tìm kiếm cục bộ và giải thuật di truyền. Cụ thể phần 1
chúng ta sẽ đề cập tới giải thuật tìm kiếm cục bộ, và sẽ giới thiệu ba giải thuật tìm
kiếm cục bộ cụ thể : giải thuật leo đồi (hill climbing), giải thuật tìm kiếm tabu
(tabu search), giải thuật mô phỏng luyện kim (simulated annealing). Phần 2 đề cập
đến giải thuật di truyền và những thành phần cơ bản của nó. Phần 3 là đi vào giải
thuật memetic.

3.1 Tìm kiếm cục bộ (Local Search)
Tìm kiếm cục bộ là một giải thuật với mục đích tổng quát (general -purpose
techniques) cho những bài tốn tối ưu và tìm kiếm. Tìm kiếm cục bộ là giải thuật
khơng vét cạn (non-exhaustive) theo ý nghĩa nó là nó khơng đảm bảo tìm ra lời
giải tối ưu, mà nó sẽ tìm kiếm cho tới khi chuẩn dừng đ ược thỏa mãn. Những ứng
dụng của tìm kiếm cục bộ đối với những bài toán tối ưu xuất hiện rất sớm vào
những năm 60, đặc biệt trong những lĩnh vực: vận tr ù học, khoa học máy tính and
trí tuệ nhân tạo.
Giải thuật tìm kiếm cục bộ bắt đầu từ một lời giải khởi đầu so  S, và lặp dần để
khám phá không gian tìm ki ếm bằng cách sử dụng những b ước di chuyển. Tại mỗi
lần lặp nó thực hiện một bước di chuyển (move) từ lời giải hiện tại s đến một lời
giải thuộc miền lân cận của s. Khi giải thuật thực hiện một bước di chuyển từ s đến
s’, chúng ta nói rằng một bước di chuyển m đã được chấp nhận, và chúng ta viết s’
tương đương với s  m.
Sự lựa chọn những bước di chuyển dựa trên giá trị của hàm chi phí (cost function)

Lời giải khởi đầu so có thể được xây dựng như một phần của giải thuật. Đối với
một vài phương pháp, so được xây dựng một cách tùy ý bằng một giải thuật nào đó
hoặc có thể được phát sinh ngẫu nhiên.
Đối với điều kiện dừng hoặc chuẩn dừng (stop criterion) thì hoặc là nó dựa trên
chất lượng của lời giải đạt được hoặc là đạt đến một số lần lặp nào đó.

7


Sau đây là giải thuật tìm kiếm cục bộ ở dạng tổng quát [1]
procedure LocalSearch(MaxCost,MaxMoves)
begin
let s = {(v i,dij) | dij  Di for all v i  V} be the initial solution
while f(s) > MaxCost and TotalMoves < MaxMoves do
begin
M’  GenerateLocalMoves(s,TotalMoves)
if M’   then MakeLocalMoves(s’,M’ ,TotalMoves)
end
end
Trong đó :
-

V: tập biến của bài toán

-

Di : là miền trị của biến vi  V

-


M là tập các bước di chuyển cục bộ (local moves) từ lời giải s. M’  M.

-

MaxCost là thơng số của bài tốn trong trường hợp cực tiểu hàm mục tiêu.
Trong trường hợp tối đa hàm mục tiêu, thay đổi bất đẳng thức f(s) >
MaxCost thành f(s) < MinCost, MinCost là thông số của bài toán.

Thủ tục GeneraeLocalMoves trả về tập các bước di chuyển tốt nhất M’ (best
moves) trong miền lân cận của s (neighborhood) v à thủ tục MakeLocalMoves sẽ
thực hiện bước di chuyển từ s đến s’ tương ứng với tập các bước di chuyển tốt
nhất M’ .
Những giải thuật điển hình cho giải thuật tìm kiếm cục bộ: giải thuật leo đồi, tìm
kiếm tabu, mơ phỏng luyện kim.

8


Giải thuật leo đồi (Hill-Climbing)
Hill-Climbing (ở đây ta tạm dịch là “Leo Đồi”) là ý tưởng cơ bản nhất trong tất cả
các giải thuật tìm kiếm cục bộ. Leo đồi xuất phát từ chiến lược cải tiến dần qua
các lần lặp : tại mỗi bước lặp trong việc tìm kiếm thì một bước di chuyển mà cải thiện
giá trị của hàm mục tiêu (objective function) sẽ được lựa chọn.

Hàm GenerateLocalMoves và MakeLocalMoves được hiện thực trong giải thuật
“Leo đồi” như sau [1]:
procedure GenerateLocalMoves(s,TotalMoves)
begin
M’  , BestCost  f(s)
for each vi  V do if vi in constraint violation then

begin
dcurr  current domain value of v i
for each d  Di | d  dcurr do
begin
m  {vi, d}
if f(s  m) < BestCost then
begin
if f(s  m) < BestCost then
begin
BestCost  f(s  m); M’  
end
M’  M’  m
end
end
end
if M’ =  then TotalMoves  MaxMoves
return M’

9


end
procedure MakeLocalMoves(s,M’,TotalMoves)
begin
randomly select m from M’
s  s  m; TotalMoves  TotalMoves + 1
end
Một vấn đề chính trong giải thuật leo đồi là nó tiến tới lời giải xấp xỉ với lời giải
có chi phí nhỏ nhất. Nếu khơng còn bước di chuyển nào cải thiện được lời giải
hiện tại thì việc tìm kiếm sẽ bị kẹt (stuck), và thậm chí là nó sẽ khơng tìm ra được

lời giải tồn cục.

Tìm kiếm tabu (Tabu Search)
Tìm kiếm tabu là một kỹ thuật tối ưu được đề nghị đầu tiên bởi Glover trong
những năm đầu 80. Chiến l ược của tìm kiếm tabu là nó giữ một danh sách, gọi là
danh sách tabu (tabu list), bao gồm những lời giải đã duyệt trước đó để đảm bảo
việc tìm kiếm khơng xét lại cùng một lời giải hai lần (những lời giải nằm trong
danh sách tabu sẽ bị cấm hay gọi là tabu). Khi bị rơi vào vùng cực tiểu cục bộ thì,
việc tìm kiếm sẽ thốt khỏi vùng cực tiểu cục bộ bằng cách lựa chọn một lời giải
tốt khác.
Hàm GenerateLocalMoves và MakeLocalMoves được hiện thực trong giải thuật
“Tìm kiếm Tabu” như sau [1]:
procedure GenerateLocalMoves(s,TotalMoves)
begin
M’  , BestCost  ∞
for each vi  V do
begin
dcurr  current domain value of vi
for each d  Di | d  dcurr do

10


begin
m  {vi, d}
if m is out of tabu list and f(s  m) < BestCost then
begin
if f(s  m) < BestCost then
begin
BestCost  f(s  m); M’  

end
M’  M’  m
end
end
end
return M’
end
procedure MakeLocalMoves(s,M’,TotalMoves)
begin
randomly select m from M’
s  s  m; TotalMoves  TotalMoves + 1
update tabu list
end
Chiều dài của danh sách tabu là thông số của tìm kiếm tabu. Việc lựa chọn chiều
dài của danh sách tabu là rất quan trọng vì nếu quá ngắn thì nó sẽ lặp vịng
(cycle), nếu q dài thì sẽ làm cạn kiệt hết những bước di chuyển có thể (possible
moves).

11


Giải thuật mơ phỏng luyện kim (SIMULATED ANNEALING)
Có thể tham khảo thêm tại [1].
Giải thuật mô phỏng luyện kim l à gì?
Giải thuật mơ phỏng luyện kim (SA) là một kỹ thuật tối ưu hoá đã được đề nghị
bởi S.Kirkpatrick et al. năm 1983. Đó l à một biến thể của giải thuật tìm kiếm cục
bộ mà nó cho phép một bước di chuyển lên đồi (the uphill moves) đ ược chấp nhận
theo một cách có điều khiển.
Giải thuật mơ phỏng luyện kim mơ phỏng tiến trình làm lạnh bằng cách hạ nhiệt độ
của hệ thống từ từ cho tới khi nó đạt đến một trạng thái ổn định (steady, frozen

state)
Tiêu chuẩn chấp nhận
Xác xuất để chấp nhận trạng thái xấu đ ược cho bởi phương trình sau:
P = exp(-c/t) > r
Trong đó :
c = sự thay đổi của hàm chi phí
t = nhiệt độ hiện thời
r = một số ngẫu nhiên từ 0 đến 1.
Sau đây là giải thuật tổng quát của Simulated Annealing
Select an initial solution s o
Select an initial temperature t o > 0
Select a temperature reduction function ;
repeat

12


repeat
randomly select s  N(so)
 = f(s) – f(so)
if  < 0 then
so = s
else
generate random x  [0,1]
if x < exp(-/t) then
s0 = s
end if
end if
until iteration_count = nrep
t = (t)

until stopping condition = true.
Những bước di chuyển tiềm năng được lấy mẫu một cách ngẫu nhi ên và tất cả
những bước di chuyển nào cải thiện được lời giải hiện tại thì sẽ được chấp nhận.
Ngược lại sẽ được chấp nhận với một xác xuất exp(-/t), trong đó  là sự thay đổi
của hàm chi phí và t là thơng số điều khiển.
Chất lượng của lời giải nó phụ thuộc v ào cách mà thông số nhiệt độ được điều
khiển - gọi là lịch biểu làm nguội (the cooling schedule). Lịch biểu làm nguội
được định nghĩa bởi:
 Nhiệt độ bắt đầu to
 Điều kiện dừng
 Hàm thu giảm 
 Số lần lặp tại mỗi nhiệt độ, nrep
Những thông số này phụ thuộc vào từng vấn đề cụ thể cần giải quyết.

13


Kết luận
Ý tưởng của tìm kiếm cục bộ là tìm ra đường đi tắt để có thể đưa ra được câu trả
lời đối với một vấn đề nào đó bằng cách nhanh chóng đi đến lời giải có chi phí xấp
xỉ nhỏ nhất trong khơng gian t ìm kiếm. Nó tránh việc thực hiện t ìm kiếm mang
tính hệ thống (vét cạn).
Hiệu suất trung bình của tìm kiếm cục bộ phụ thuộc vào định nghĩa hàm chi phí
của vấn đề cần giải quyết. V ì vậy tìm kiếm cục bộ được đánh giá qua thực nghiệm,
dựa trên một vấn đề cụ thể hơn là sử dụng một cách phân tích lý thuyết. Tìm kiếm
cục bộ cịn được gọi là siêu heuristic (metaheuristics)

3.2 Giải thuật di truyền (Genetic Algorithm)
Giải thuật di truyền, viết tắt là GA, là giải thuật tìm kiếm dựa trên quần thể
(populaton-based search). Giải thuật di truyền được biết tới như là một trong

những phương pháp tốt để giải quyết những b ài tốn khó. Tuy nhiên, hiện nay vẫn
chưa có một chuẩn thực sự nào cho giải thuật di truyền . Trong chương này sẽ giới
thiệu bằng cách nào giải thuật di truyền được sử dụng để giải quyết những b ài
tốn thỗ mãn ràng buộc (constraint satisfaction problems).
Giải thuật di truyền là gì?
Một giải thuật tổng quát cho giải thuật di truyền [1] được mô tả như sau:
begin
INITIALIZE population with random candidate solutions;
EVALUATE each candidate;
repeat
SELECT parents;
RECOMBINE pairs of parents;
MUTATE the resulting childrens;

14


×