The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by , 2016-04-06 10:22:40

Do an Final_16

Do an Final_16

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN HỌC PHẦN 2

PHÁT TRIỂN GIẢI THUẬT METAHEURISTIC CHO CÁC BÀI TOÁN
TỐI ƯU, ÁP DỤNG VÀO GIẢI BÀI TOÁN NGƯỜI ĐI DU LỊCH

Giáo viên hướng dẫn: Sinh viên thực hiện:
TS. Trương Khắc Tùng Lê Ngọc Khánh – 12015851
Lý Huỳnh Duy Bảo – 12016801
Lớp: DHTH8C
Khóa : 2012-2016


TP. Hồ Chí Minh, tháng 11 năm 2015

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN HỌC PHẦN 2

PHÁT TRIỂN GIẢI THUẬT METAHEURISTIC CHO CÁC BÀI TOÁN
TỐI ƯU, ÁP DỤNG VÀO GIẢI BÀI TOÁN NGƯỜI ĐI DU LỊCH

Giáo viên hướng dẫn: Sinh viên thực hiện:
TS. Trương Khắc Tùng Lê Ngọc Khánh – 12015851
Lý Huỳnh Duy Bảo - 12016801
Lớp: DHTH8C
Khóa : 2012-2016


TP. Hồ Chí Minh, tháng 11 năm 2015

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....

HCM, ngày tháng năm 2015
Chữ ký của giáo viên hướng dẫn

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....
…………………………………………………………………………………….....

HCM, ngày tháng năm 2015
Chữ ký của giáo viên phản biện

LỜI CAM ĐOAN

Chúng em xin cam đoan đề tài này do chúng em thực hiện và được sự hướng
dẫn khoa học của Thầy TS. Trương Khắc Tùng. Các nội dung nghiên cứu, các kết
quả đạt được là trung thực và đề tài không trùng với bất kỳ đề tài nghiên cứu khoa
học nào. Những thông tin tham khảo trong đề tài đều được trích dẫn cụ thể nguồn sử
dụng.

Thành phố HCM, ngày tháng 11 năm 2015
Sinh Viên thực hiện
(Ký và ghi rõ họ tên)

Lê Ngọc Khánh Lý Huỳnh Duy Bảo

LỜI CẢM ƠN

Được sự phân công của Khoa và sự tận tình của giáo viên hướng dẫn TS.
Trương Khắc Tùng chúng em đã thực hiện đề tài học phần 2 “Phát triển giải thuật
metaheuristic cho các bài toán tối ưu, áp dụng vào giải bài toán người đi du lịch”

Để hoàn thành đồ án học phần 2 này chúng em xin chân thành cảm ơn các
Thầy, Cô giáo đã tận tình hướng dẫn, giảng dạy trong suốt quá trình học tập nghiên
cứu và rèn luyện ở trường. Đặc biệt Thầy giáo hướng dẫn TS. Trương Khắc Tùng đã
tận tình chu đáo hướng dẫn thực hiện đồ án học phần này.

Mặc dù có nhiều cố gắng để thực hiện đề tài một cách hoàn chỉnh nhất. Song
do buổi đầu mới làm quen với nghiên cứu khoa học cũng như hạn chế và kiến thức
và kinh nghiệm nên không tránh nhưng thiếu sót nhất định mà chúng em chưa thấy
được. Chúng em mong được sự góp ý của các Thầy, Cô để đồ án học phần được hoàn
chỉnh hơn để chúng em phát triển tiếp.

Thành phố HCM, ngày tháng 11 năm 2015
Sinh Viên thực hiện

Lê Ngọc Khánh
Lý Huỳnh Duy Bảo

LỜI GIỚI THIỆU

Thế giới luôn thay đổi nhanh chóng kèm theo đó là sự phát triển một cách
nhanh chóng của công nghệ đặc biệt là lĩnh vực tính toán song song, vì sự giới hạn
của những hệ thống tính toán cũ chưa thể đáp ứng đủ những yêu cầu mới của thời
điểm hiện tại.

Chúng em chọn đề tài này là vì muốn xây dựng được môi trường tính toán
song song để giải quyết, tính toán nhanh hơn các bài toán tuần tự khác. Đề tài này
giới thiệu một phương pháp tiếp cận môi trường tính toán song song bằng cách dùng
giải thuật di truyền và sử dụng multithread áp dụng cơ chế RMI trong Java để giải
quyết bài toán người đi du lịch.

Trong báo cáo đồ án học phần này phần nội dung em chia làm 5 phần:

 Phần 1. Giới thiệu bài toán
 Phần 2. Giải thuật di truyền
 Phần 3. Song song hóa GA cho bài toán TSP bằng Java RMI
 Phần 4. Kết luận
 Phần 5. Hướng phát triển

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

MỤC LỤC

1. Giới Thiệu Bài Toán ........................................................................................ 5
1.1. Giới thiệu....................................................................................................5
1.2. Lịch sử bài toán...........................................................................................5
1.3. Mô tả bài toán .............................................................................................6
1.4. Phân loại bài toán........................................................................................6
1.4.1 Đối xứng...............................................................................................6
1.4.2 Bất đối xứng .........................................................................................6

2. Giải Thuật Di Truyền ....................................................................................... 7
2.1. Lịch sử phát triển GA (Genetic Algorithm).................................................7
2.2. Các khái niệm cơ bản..................................................................................7
2.2.1 Cá thể, Nhiễm sắc thể ...........................................................................7
2.2.2 Quần thể ...............................................................................................7
2.2.3 Chọn lựa ...............................................................................................8
2.2.4 Lai ghép................................................................................................8
2.2.5 Đột biến ................................................................................................8
2.3. Mô hình giải thuật di truyền........................................................................9
2.4. Các tham số GA........................................................................................10
2.4.1 Kích thước quần thể............................................................................10
2.4.2 Xác suất lai ghép (pc) .........................................................................10
2.4.3 Xác suất đột biến (pm) ........................................................................11
2.5. Mã hóa nhiễm sắc thể................................................................................11
2.5.1 Mã hoá nhị phân .................................................................................11
2.5.2 Mã hoá hoán vị ...................................................................................12
2.5.3 Mã hoá theo giá trị ..............................................................................12
2.6. Khởi tạo quần thể ban đầu.........................................................................13

1

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.7. Tính độ thích nghi.....................................................................................13
2.8. Cơ chế chọn ..............................................................................................13

2.8.1 Chọn theo tỷ lệ....................................................................................14
2.8.2 Lựa chọn xếp hạng..............................................................................14
2.8.3 Lựa chọn theo cơ chế ngẫu nhiên........................................................15
2.8.4 Lựa chọn tranh đấu .............................................................................15
2.9. Toán tử di truyền.......................................................................................15
2.9.1 Mã hoá nhị phân .................................................................................16
2.9.2 Mã hoá hoán vị ...................................................................................18
2.9.3 Mã hoá theo giá trị ..............................................................................18
3. Song Song Hóa GA Cho Bài Toán TSP Bằng Java RMI................................ 19
3.1. Sử dụng luồng cho Java RMI ....................................................................19
3.3.1 RMI ....................................................................................................19
3.3.2 Đa luồng .............................................................................................27
3.3.3 Môi trường..........................................................................................29
3.2. Parallel Genetic Algorithm (PGA) ............................................................30
3.2.1 Mô hình PGA......................................................................................30
3.2.2 Các thuật toán sử dụng........................................................................31
3.2.3 Các tham số đầu vào ...........................................................................34
3.3. Kết quả đạt được.......................................................................................35
3.3.1. Các kết quả các bài toán......................................................................35
3.3.2. Biểu đồ thể hiện ..................................................................................37
3.3.3. Nhận xét .............................................................................................38
4. Kết Luận ........................................................................................................ 39
5. Hướng Phát Triển Cho PGA .......................................................................... 39
Tài Liệu Tham Khảo ............................................................................................ 40

2

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DANH SÁCH VIẾT TẮT

- GA: Genetic Algorithm
- TSP: Travelling Salesman Problem
- RMI: Remote Method Interface
- JVM: Java Virtual Machines
- URL: Uniform Resource Locator
- NP: No Problem
- TPX: Two Point Crossover
- PMX: Partially Mapped Crossover.
- DPX: Distance Preserving Crossover

3

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

DANH SÁCH CÁC HÌNH

Hình 1: Các đỉnh của đường đi ............................................................................. 6
Hình 2: Mô hình giải thuật GA ............................................................................. 9
Hình 3: Remote Object, Remote Method.............................................................. 21
Hình 4: Name Server............................................................................................. 21
Hình 5: Stub & Skeleton. ...................................................................................... 22
Hình 6: Remote Object đăng ký với Naming Registry......................................... 25
Hình 7: Naming Service........................................................................................ 26
Hình 8: Truyền Remote Object ............................................................................. 27
Hình 9: PGA Flow Chart....................................................................................... 31
Hình 10: PMX Crossover...................................................................................... 32
Hình11: Mã giả DPX............................................................................................. 33
Hình 12: DPX Crossover ...................................................................................... 33
Hình 13: TPX Crossover....................................................................................... 34
Hình 14: Bảng so sánh kết quả.............................................................................. 36
Hình 15: Biểu đồ tần suất kết quả dữ liệu 47 đỉnh................................................ 37
Hình 16: Biểu đồ tần suất kết quả dữ liệu 170 đỉnh.............................................. 37
Hình 17: Biểu đồ Min Max Mean Std của dữ liệu 47 đỉnh ................................. 38
Hình 18: Biểu đồ Min Max Mean Std của dữ liệu 170 đỉnh................................. 38

4

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. Giới Thiệu Bài Toán
1.1. Giới thiệu

Bài toán người đi du lịch viết tắt là TSP (Travelling Salesman Problem)
là một trong những bài toán nổi tiếng của khoa học máy tính. Nội dung bài
toán là: Cho một danh sách các thành phố và khoảng cách giữa chúng và nhiệm
vụ là phải tìm ra đường đi ngắn nhất có thể mà chỉ qua các thành phố một lần
duy nhất.

Bài toán được nêu ra đầu tiên năm 1930 và một trong những bài toán
được nghiên cứu nhiều nhất trong tối ưu hóa. Nó được sử dụng như một sự
đánh giá cho nhiều phương pháp tối ưu khác. Bài toán thuộc lớp NP khó, với
nhiều giải thuật heuristic và các phương thức tìm kiếm cụ thể đã được biết đến,
vì thế trong vài trường hợp của bài toán với khoảng chục nghìn thành phố đã
được giải quyết.

1.2. Lịch sử bài toán

Nguồn gốc của bài toán vẫn chưa biết rõ. Năm 1832 một cuốn sổ tay
có đề cập đến bài toán này với chu trình trong nước Đức và Thụy Sĩ, nhưng
không chứa bất kỳ nội dung toán học nào.

Bài toán người bán hàng được định nghĩa trong thế kỉ 19 bởi nhà toán
học Ireland William Rowan Hamilton và nhà toán học Anh Thomas
Kirkman. Trò chơi Icosa của Hamilton là một trò chơi giải trí dựa trên việc
tìm kiếm chu trình Hamilton. Trường hợp tổng quát của TSP có thể được
nghiên cứu lần đầu tiên bởi các nhà toán học ở Vienna và Harvard trong những
năm 1930, đặc biệt là Karl Menger, người đã định nghĩa bài toán, xem xét
thuật toán hiển nhiên nhất cho bài toán, và phát hiện ra thuật toán láng giềng
gần nhất là không tối ưu.[2]

5

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.3. Mô tả bài toán

Hình 1: Các đỉnh của đường đi
TSP là một bài toán có thể biểu diễn mô hình như một đồ thị, các đỉnh tương
đương với các thành phố và các cạnh là khoảng cách giữa 2 thành phố với chiều dài
là khoảng cách các cạnh. Một đường đi trong bài toán là một chu trình Hamiton trên
đồ thị và một lời giải tối ưu của bài toán là chu trình Hamiton ngắn nhất, thường thì
đồ thị là đồ thị đầy đủ vì mỗi cặp cạnh đều được nối bởi các cạnh. Các bài toán mà
không phải 2 thành phố nào cũng được nối với nhau có thể được chuyển đổi thành
đồ thị đầy đủ bằng cách thêm những cạnh có độ dài lớn hơn giữa cách thành phố này,
những cạnh sẽ không xuất hiện trong chu trình tối ưu.

1.4. Phân loại bài toán
1.4.1 Đối xứng

Trong bài toán đối xứng thì khoảng cách giữa hai thành phố là như nhau
theo 2 hướng đi qua và quay lại, vì vậy đồ thị biểu diển là đồ thị vô hướng. Sự
cân xứng làm giảm một nữa số lời giải có thể.

1.4.2 Bất đối xứng
Trong bài toán bất đồi xứng thì khoảng cách từ thành phố này đến thành
phố khác thì khoảng cách không nhất thiết phải bằng nhau, có thể dài hơn hoặc

6

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ngắn hơn, thậm chí có thể không có đường kết nối theo chiều ngược lại.Vì vậy đồ
thị của bài toán là đồ thị có hướng.

2. Giải Thuật Di Truyền
2.1. Lịch sử phát triển GA (Genetic Algorithm)

Giải thuật di truyền cũng như các giải thuật tiến hóa khác, đều được hình
thành trên một quan niệm được coi là phù hợp với thực tế khách quan. Đó là quá
trình tiến hóa tự nhiên là quá trình tiến hóa hoàn hảo, hợp lý nhất và tự nó mang
tính tối ưu. Quá trình tiến hóa thể hiện tính tối ưu là ở chổ thế hệ sau bao giờ cũng
tốt hơn thế hệ trước.

Ngày nay giải thuật di truyền càng trở nên quan trọng đặc biết là trong lĩnh
vực tối ưu hóa và nhiều ứng dụng trong thực tiễn.

2.2. Các khái niệm cơ bản

Giải thuật di truyền dựa vào quá trình tiến hoá trong tự nhiên nên các khái
niệm và thuật ngữ của nó đều có liên quan đến các thuật ngữ của di truyền học.

2.2.1 Cá thể, Nhiễm sắc thể

Trong giải thuật di truyền, một cá thể biểu diễn một giải pháp của bài
toán. Không giống với trong tự nhiên, một cá thể có nhiều nhiễm sắc thể
(NST), ở đây ta quan niệm một cá thể có một nhiễm sắc thể. Do đó khái niệm
cá thể và nhiễm sắc thể trong giải thuật di truyền coi như là tương đương.

Một NST được tạo thành từ nhiều gen, mỗi gen có các giá trị khác nhau
để quy định một tính trạng nào đó. Trong giải thuật di truyền một gen được
coi như một phần tử trong chuỗi NST.

2.2.2 Quần thể

7

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Quần thể là một tập hợp các cá thể có cùng một số đặc điểm nào đấy.
Trong giải thuật di truyền ta quan niệm quần thể là một tập các lời giải của
một bài toán.

2.2.3 Chọn lựa

Trong tự nhiên quá trình chọn lọc và đấu tranh sinh tồn làm thay đổi các
cá thể trong quần thể. Những cá thể tốt được thích nghi và những cá thể xấu
sẽ bị loại dần đi trong quá trình đấu tanh sinh tồn. Dựa vào nguyên lý chọn lọc
và đấu tranh sinh tồn trong tự nhiên, chọn lựa các cá thể GA chính là các chọn
lọc các cá thể có độ thích nghi tốt hơn để cho thế hệ sau. Có nhiều cách để lựa
chọn nhưng cuối cùng đều nhằm đáp ứng mục tiêu là các cá thể tốt sẽ có khả
năng được chọn cao hơn.

2.2.4 Lai ghép

Lai ghép là sự kết hợp các tính trạng của bố, mẹ để sinh ra các thế hệ
con . Trong giải thuật di truyền lai ghép được coi là quá trình chính trong việc
tổ hợp lại các tính chất trong hai lời giải cha mẹ để sinh ra một lời giải mới có
các đặc tính của cha mẹ.

2.2.5 Đột biến

Đột biến là một sự biến đổi tại một (hay một số) gen của nhiễm sắc thể
ban đầu để tạo ra một nhiễm sắc thể mới. Đột biến có xác suất xảy ra thấp hơn
lai ghép. Đột biến có thể tạo ra một cá thể mới tốt hơn hoặc xấu hơn cá thể ban
đầu. Tuy nhiên trong giải thuật di truyền thì ta luôn muốn tạo ra những phép
đột biến cho phép cải thiện lời giải qua từng thế hệ.

Đột biến là một sự biến đổi tại một hay một số nhiễm sắc thể ban đầu
để tạo ra một nhiễm sắc thể mới. Đột biến có xác suất xảy ra thấp hơn lai ghép.

8

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Đột biến có thể tạo ra một cá thể mới tốt hơn hoặc xấu hơn cá thể ban đầu.
trong giải thuật di truyền thì ta dùng phương pháp đột biến để tạo cải thiện lời
giải qua từng thế hệ

2.3. Mô hình giải thuật di truyền

Với các khái niệm được giới thiệu ở trên, giải thuật di truyền được mô tả như sau:

Bắt đầu

Khởi tạo quần thể

Thực hiện tính toán
quần thể

Điều kiện Có Kết thúc
dừng

Không

Phép chọn

Phép lai ghép

Đột biến

Hình 2: Mô hình giải thuật GA

9

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. [Bắt đầu] Nhận các tham số cho thuật toán.

2. [Khởi tạo quần thể] Sinh ngẫu nhiên một quần thể gồm n cá thể (là n lời giải
cho bài toán)

3. [Thực hiện tính toán] Ước lượng độ thích nghi eval(x) của mỗi cá thể.

4. [Điều kiện dừng] Kiểm tra điều kiện kết thúc giải thuật.

5. [Phép chọn] Chọn hai cá thể bố mẹ từ quần thể cũ theo độ thích nghi của
chúng (cá thể có độ thích nghi càng cao thì càng có nhiều khả năng được chọn)

6. [Lai ghép] Với một xác suất lai ghép được chọn, lai ghép hai cá thể bố mẹ
để tạo ra một cá thể mới.

7. [Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới

8. [Kết thúc] Nếu điều kiện dừng được thỏa mãn thì thuật toán kết thúc và trả
về lời giải tốt nhất trong quần thể hiện tại.

2.4. Các tham số GA
2.4.1 Kích thước quần thể

Kích thước quần thể cho biết có bao nhiêu cá thể trong một quần thể
(trong một thế hệ).

Kích thướt quần thể cho biết có bao nhiêu cá thể trong một thế hệ. Kích
thướt quần thể cũng không nên quá bé, cũng không nên quá lớn. Nếu quá ít thì
chỉ một phần nhỏ không gian tìm kiếm được dùng, như vậy có khả năng sẽ bỏ
các lời giải tốt, còn đối với trường hợp quá nhiều cá thể cũng không tốt sẽ làm
hiệu suất của bài toán lâu hơn. Các nghiên cứu cũng đã chỉ ra không có lợi khi
tăng kích thước quần thể vượt quá một giới hạn cho phép.

2.4.2 Xác suất lai ghép (pc)

10

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Xác suất lai ghép kí hiệu pc thể hiện khả năng lai ghép thường xuyên
như thế nào. Xác suất lai ghép sẽ tạo ra thế hệ mới và con sinh ra một phần
giống bố và 1 phần giống mẹ. Xác suất lai ghép là pc, khi đó khả năng được
lai ghép là pc.Nếu không thực hiện lai ghép thì thế hệ sau sẽ hoàn toàn giống
với thế hệ trước.

2.4.3 Xác suất đột biến (pm)

Xác suất đột biến thể hiện các gen của NST thay đổi thường xuyên như
thế nào. Xác suất đột biến kí hiệu là pm, khi đó khả năng để mỗi gen của một
NST bất kỳ bị đột biến là pm. Toán tử đột biến có tác dụng ngăn ngừa giải
thuật di truyền rơi vào tình trạng cục bộ địa phương, tuy nhiên nếu thực hiện
đột biến với xác suất quá cao sẽ biến giải thuật di truyền thành giải thuật tìm
kiếm ngẫu nhiên.

2.5. Mã hóa nhiễm sắc thể

Trong giải thuật di truyền, mỗi nhiễm sắc thể biểu diễn một lời giải theo
một cách nào đó mà chứa đủ các thông tin cần thiết về lời giải. Các nhiễm sắc
thể tạo nên một quần thể, là không gian lời giải của bài toán mà ta khảo sát.

2.5.1 Mã hoá nhị phân

Mã hoá nhị phân là phương pháp mã hoá nhiễm sắc thể phổ biến nhất.
Trong mã hoá nhị phân, mỗi nhiễm sắc thể là một chuỗi nhị phân, mỗi bit trong
nó có thể biểu diễn một đặc tính của nghiệm.

Ví dụ: hai nhiễm sắc thể 1 và 2 có chiều dài là 16.

Nhiễm sắc thể 1: 1101100100110110

Nhiễm sắc thể 2: 1101111000011110

11

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Mã hoá nhị phân thường dùng trong các bài toán tối ưu các hàm một
biến hay nhiều biến và được áp dụng trong nhiều loại bài toán khác nữa.

Ví dụ: Trong bài toán bỏ đồ vào túi, để biểu diễn một cách xếp đồ vào
túi, ta sẽ dùng một chuỗi nhị phân có kích thước bằng số đồ vật, mỗi bit tương
ứng với các đồ vật sẽ có hai giá trị: giá trị 0 nếu đồ vật đó không được cho vào
túi và giá trị 1 nếu đồ vật được cho vào túi.

Mã hoá nhị nó có thể tạo ra không gian mã hoá lớn hơn so với không
gian giá trị của nhiễm sắc thể. Do đó, với nhiều bài toán thì biểu diễn nhị phân
là không hữu hiệu.

2.5.2 Mã hoá hoán vị

Mã hoá hoán vị có thể được sử dụng trong các bài toán liên quan đến
thứ tự như bài toán du lịch hay bài toán lặp lịch,phân công. Trong mã hoá hoán
vị, mỗi nhiễm sắc thể là một chuỗi các số biểu diễn một trình tự.

Ví dụ:

Nhiễm sắc thể 1: 1 5 4 3 2 6 7 9 8

Nhiễm sắc thể 2: 9 1 7 3 8 5 6 4 2

Mã hoá hoán vị phù hợp cho các bài toán liên quan đến thứ tự. Đối với
các bài toán này, việc thao tác trên các nhiễm sắc thể chính là hoán vị các số
trong chuỗi đó làm thay đổi trình tự của nó.

Ví dụ: Trong bài toán người du lịch, để biểu diễn một cách đi của người
du lịch thì dùng một nhiễm sắc thể mà trình tự các số trong chuỗi cho biết thứ
tự các thành phố mà người du lịch đi qua.

2.5.3 Mã hoá theo giá trị

12

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Mã hoá trực tiếp theo giá trị có thể được dùng trong các bài toán sử dụng
giá trị phức tạp như trong số thực. Trong đó, mỗi nhiễm sắc thể là một chuỗi
các giá trị. Các giá trị có thể là bất cứ cái gì liên quan đến bài toán, từ số
nguyên, số thực, kí tự cho đến các đối tượng phức tạp hơn.

Ví dụ:

Nhiễm sắc thể 1: 1.23 5.32 0.34 2.98 3.54

Nhiễm sắc thể 2: (back), (back), (right), (forward), (left)

Mã hoá theo giá trị thường dùng cho các bài toán đặc biệt. Trong cách
mã hoá này ta thường phải phát triển các toán tử đột biến và lai ghép cho phù
hợp với từng bài toán.

2.6. Khởi tạo quần thể ban đầu

Khởi tạo quần thể là bước đầu tiên của giải thuật di truyền, thông thường
để khởi tạo quần thể một cách tối ưu thì sẽ tạo ra một cách ngẫu nhiên các lời
giải có thể. Tùy từng bài toán mà có các phương pháp khởi tạo khác nhau.

2.7. Tính độ thích nghi

Hàm tính độ thích nghi là hàm rất quan trong trong giải thuật di truyền, nó
quyết định đến toàn bộ bài toán hay thành công hay thất bại của bài toán đó.
Hàm thích nghi phản ánh các giá trị thực của bài toán.

2.8. Cơ chế chọn

Giả sử quần thể ban đầu là P(t) thì cơ chế lựa chọn được áp dụng khi chọn
các cá thể từ quần thể P(t) để thực hiện việc lai ghép và đột biến, tạo ra quần
thể P(t+1). Có nhiều cách để lựa chọn các cá thể từ một quần thể.

 Cách biểu diễn các nhiễm sắc thể thứ i là vi.

13

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 Hàm tính độ thích nghi của nhiễm sắc thể vi là f(vi).
 Kích thước quần thể là pop_size.
 Số nhiễm sắc thể cần chọn là N.

2.8.1 Chọn theo tỷ lệ

Chọn theo tỷ lệ hay còn gọi là lựa chọn theo bánh xe Roulet [15], Trước
khi lựa chọn thì ta cần tính các giá trị sau:

 Tính tổng độ thích nghi của cả quần thể: F= ∑ _ ( )
 Tính xác suất chọn pi cho mỗi nhiễm sắc thể vi: pi=f(vi)/F
 Tính vị trí xác suất qi của mỗi nhiễm sắc thể: qi=∑ j

Cơ chế lựa chọn theo bánh xe Roulet được thực hiện bằng cách quay bánh
xe Roulet N lần. Mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào
quần thể mới bằng cách sau:

 Phát sinh ngẫu nhiên một số r trong khoảng [0, 1].
 Nếu r < q1 thì chọn nhiễm sắc thể v1; ngược lại thì chọn nhiễm sắc thể

thứ i ( 2≤ ≤ _ ) sao cho qi-1  r  qi

Với cơ chế lựa chọn như thế này thì có một số nhiễm sắc thể sẽ được chọn
nhiều lần. Điều này phù hợp với lý thuyết lược đồ: Các nhiễm sắc thể tốt nhất
thì có nhiều bản sao, nhiễm sắc thể trung bình thì không đổi, nhiễm sắc thể
kém thì chết đi. [6][16]

2.8.2 Lựa chọn xếp hạng

Cơ chế lựa chọn xếp hạng được mô tả như sau:

 Sắp xếp các nhiễm sắc thể với độ thích nghi từ thấp đến cao.

14

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 Đặt lại độ nghi cho quần thể với nhiễm sắc thể thứ nhất là 1, nhiễm sắc thể

thứ 2 là 2…. Cho đến pop_size.

Theo phương pháp này thì việc một nhiễm sắc thể được chọn nhiều lần sẽ giảm
đi so vớ chọn theo bánh xe Roulet. Nhưng nó có thể dẫn tới hội tụ chậm và có độ
thích nghi cao so với các nhiễm sắc thể khác.

2.8.3 Lựa chọn theo cơ chế ngẫu nhiên

Cơ chế lựa chọn được thực hiện như sau:

 Biểu diễn xác suất chọn các NST lên trên một đường thẳng.
 Đặt N điểm chọn lên đường thẳng. Các điểm chọn này cách nhau 1/N, điểm

đầu tiên đặt ngẫu nhiên trong khoảng [0,1/N]
 Với một điểm chọn, NST gần với nó nhất về bên phải sẽ được chọn.
 Phương pháp này có đặc điểm là các điểm chọn được phân bố đều trên trục

số, do đó sẽ gần với điểm xứng đáng được chọn.
2.8.4 Lựa chọn tranh đấu

Cơ chế lựa chọn:

 Lấy một số NST trong quần thể, NST nào có độ thích nghi cao nhất được
chọn.

 Lặp lại thao tác trên N lần.

2.9. Toán tử di truyền
Thuật toán GA bao gồm hai toán tử lai ghép và đột biến. Hai toán tử này có
tác động đến chất lượng của giải thuật. Các toán tử này đều được xây dựng phụ
thuộc vào các mã hóa các nhiễm sắc thể của bài toán. Còn tùy thuộc vào bài toán
cụ thể mà cách mã hóa nhiễm sắc thể mà ta dùng sẽ khác nhau.

15

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.9.1 Mã hoá nhị phân
 Toán tử lai ghép

Lai ghép đơn điểm cắt:

- Một điểm cắt được chọn tại một vị trí thứ k trên NST.
- Từ đầu NST đến vị trí k, NST con sao chép từ cha, phần còn lại

sao chép từ mẹ.

Ví dụ:

Cha: 11011 | 001

Mẹ: 10011 | 101

Con sinh ra do lai ghép đơn điểm cắt:

Con: 11011 | 101

Lai ghép hai điểm cắt:

- Hai điểm cắt được chọn.
- Từ đầu cho đến điểm cắt thứ nhất được sao chép từ cha, từ điểm cắt

thứ nhất đến điểm cắt thứ hai sao chép từ mẹ và phần còn lại sao
chép từ cha.

Ví dụ:

Cha: 11| 0110 | 01

Mẹ: 10| 0111 | 01

Con sinh ra do lai ghép hai điểm cắt:

Con: 11| 0111| 01

16

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Lai ghép đồng nhất:
- Có một mặt nạ sao chép là một chuỗi nhị phân có chiều dài bằng chiều dài

NST.
- Xây dựng NST mới: Duyệt qua mặt nạ, bit có giá trị một thì sao chép gen

tại vị trí đó từ NST cha sang con, bit có giá trị 0 thì sao chép từ mẹ.
- Mặt nạ được phát sinh ngẫu nhiên đối với từng cặp cha mẹ.
Ví dụ:

Cha: 11011001
Mẹ: 10011101
Mặt nạ: 10101000
Con: 10011101
Lai ghép số học:
- NST con được tạo thành bằng cách thực hiện một phép toán logic nào đó
như AND, OR …. Với cặp NST bố mẹ.
Ví dụ:

Cha: 11011001
Mẹ: 10011101
Con (AND): 10011001
 Toán tử đột biến
Phép đảo bit: Bit được chọn sẽ bị đảo.

17

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Ví dụ:

Trước đột biến: 11011001

Sau đột biến: 11010001

2.9.2 Mã hoá hoán vị
 Toán tử lai ghép

Toán tử lai ghép đơn điểm cắt:

 Một điểm cắt được chọn.
 Từ đầu đến điểm cắt được lấy từ cha, phần còn lại duyệt qua mẹ, đưa những

gen chưa có vào.

Ví dụ:

Cha: 128|74365

Mẹ: 537|68412

Con: 128|53764

 Toán tử đột biến

Thay đổi thứ tự: Hai số được chọn hoán đổi vị trí cho nhau.

Ví dụ:

Trước khi đột biến [0 1 2 3 4 5 6]

Sau khi đột biến [0 1 3 2 4 5 6]

2.9.3 Mã hoá theo giá trị
 Toán tử lai ghép

18

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Mã hoá theo giá trị có thể áp dụng tất cả các toán tử lai ghép có trong
mã hoá nhị phân.

 Toán tử đột biến

Với mã hoá theo giá trị thực thì có thể thực hiện đột biến bằng cách thay
đổi giá trị (cộng thêm hoặc trừ đi) một giá trị nhỏ vào một số cá thể được chọn.

Ví dụ:

Giá trị nhỏ: 0.02

Trước đột biến: 1.23 5.32 0.34 2.98 3.54

Sau đột biến: 1.23 5.30 0.34 3.00 3.54

3. Song Song Hóa GA Cho Bài Toán TSP Bằng Java RMI
3.1. Sử dụng luồng cho Java RMI
3.3.1 RMI

Khái niệm RMI

RMI là một cơ chế cho phép một Object đang chạy trên Java Virtual
Mechine (gọi tắt là JVM) này gọi một Method của một Object trên JVM
khác. Hãng Sun thực hiện cơ chế này bằng việc xây dựng một hệ thống
mới và lấy tên là Java Remote Method Invocation, hệ thống này cung cấp
một số phương pháp truyền thông giữa các chương trình được viết trong
Java. Các chương trình sử dụng hệ thống này được gọi là những chương
trình RMI.

Thực chất, RMI là một cơ chế gọi hàm từ xa đã được hiện thực và
tích hợp trong ngôn ngữ Java, vì vậy RMI cũng phải đối phó với những
vấn đề như của RPC (Remote Procedure Call) và giải quyết chúng tương

19

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

tự như cách RPC sử dụng. Tuy nhiên RMI có nhiều điểm tiện lợi hơn
RPC do RMI được thực hiện trên nền Java, mà Java lại là một ngôn ngữ
lập trình hướng đối tượng nên phương pháp lập trình trong RMI là

phương pháp hướng đối tượng, do đó phương pháp hay cách gọi hàm

điều được đối tượng hóa. Ngoài ra RMI còn cho phép một Client có thể

gửi đồng thời một Object đến cho nhiều Server xử lý cùng lúc, và Object

này cũng có thể được xem như một tham số cho lời gọi hàm từ xa, cần

chú ý rằng Object này cũng có dữ liệu bên trong và các hành vi như một

Object thực thụ.

Remote Interface, Remote Object, Remote Method

Giống như tất cả các chương trình khác trong Java chương trình
RMI cũng được xây dựng bởi các Interface và các Class. Interface định
nghĩa các Method, và các Class hiện thực các Method đó, ngoài ra trong
Class có thể hiện thực những Method khác nhưng chỉ những Method
được định nghĩa trong Remote Interface mới được Client gọi từ một
JVM khác, hay nói khác hơn là chỉ những Method được định nghĩa trong
Remote Interface mới được Client nhìn thấy còn các Method khác sẽ
trở nên vô hình.

Vì vậy, Remote Interface là một Interface khai báo các Method
cho phép gọi từ xa. Trong Java, Remote Interface có các đặc điểm:

 Thừa kế Interface có sẵn: Interface java.rmi.Remote
 Mỗi Method trong Remote Interface muốn trở thành một

Remote Method phải khai báo là throws
java.rmi.RemoteException và có thể có các Exception khác.

20

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 Trong RMI một Object được tạo ra cho phép những Object
trên các JVM khác gọi đến được gọi là một Remote Object.
Remote Object chứa một số các Method, những Method này
cho phép gọi từ xa và những Method này được một JVM thực
thi gọi là JVM Server. Các Method này sẽ gọi đến các
Remote Method. [5]

Client Server
JVM JVM

Local Object Remote Object
-Data -Data

-Method -RemoteMethod

Invoke Method

Hình 3: Remote Object, Remote Method

Name Server

Trong RPC, Name Server là một Process đóng vai trò trung gian
trong việc tìm kiếm tham khảo tới một Remote Object nào đó, cụ thể là
nó giúp Client tìm kiếm một Reference tới một Remote Object mà
Client đó cần. Trong hệ thống Java RMI thì Name Server có thể là một

21

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

máy bất kỳ trong hệ thống, Name Server phải có vùng bộ nhớ gọi là
Name Space để chứa tên và địa chỉ tương ứng cho các Remote Object
trong hệ thống.

Hình 4: Name Server

Stub và Skeleton

Trong RPC, thì một phần không thể thiếu để một Process trên
một máy từ xa có thể gọi thực thi các Remote Method của các Remote
Object trên một máy Server nào đó là các chương trình Client Stub và
Server Stub (Java RMI gọi là Stub và Skeleton

Hình 5: Stub & Skeleton.

Stub (RMI) so với Client Stub (RPC)
Stub khác với Client Stub ở chỗ Stub đóng vai trò là một người

nắm giữ một tham khảo tới một Remote Object, điều này giúp cho
Remote Object không bị cơ chế Garbage Collection xóa đi. Trong khi
đó Client Stub không đóng vai trò tương tự.

Stub còn đóng vai trò quan trọng trong việc Serialize một Object,
và việc truyền khai báo Class cho Skeleton khi có yêu cầu.

22

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Skeleton (RMI) so với Server Stub (RPC)

Server Stub không cần phải thực hiện việc Serialize một Object
và cũng như nó không cần phải yêu cầu hay quan tâm gì đến việc tìm
khai báo một Class nào đó. Trong khi Skeleton thì phải quan tâm đến
những điều đó.

Nguyên tắc hoạt động của Java RMI

Một chương trình RMI thường được chia làm 2 phần, đó là chương trình
trên Client và chương trình trên Server.

Nhiệm vụ của chương trình trên Server là tạo một số các Remote Object
và làm cho các Reference có thể được thực hiện từ xa, sau đó đợi Client gọi
đến để thực thi. Sau khi có lời yêu cầu từ Client Server sẽ thực thi Method
được yêu cầu và trả kết quả về cho Client.

Nhiệm vụ của chương trình Client là tìm kiếm và lấy những Reference
dẫn đến các Remote Object mà nó cần từ một máy Name Server nào đó, sau
đó gọi các Method của Remote Object đó. Nhiệm vụ của hệ thống Java RMI
là cung cấp các kỹ thuật để Server và Client có thể liên lạc với nhau, cụ thể
hơn là các kỹ thuật giúp cho Server và Client có thể truyền nhận thông tin qua
lại với nhau.

Có một điều mà ta cần chú ý đó là cách ta bố trí các bytecode của Stub
và Skeleton sao cho một JVM từ xa có thể truy cập tới được. Vì theo nguyên
tắc, thì một chương trình trên một JVM không thể tự nó truy cập vào một hệ
thống file của một JVM từ xa vì một lý do đơn giản là JVM ở hệ thống hiện
tại không thể biết cách tổ chức file trên JVM từ xa như thế nào. Vì vậy, khi

23

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

chương trình trên JVM muốn truy cập thông tin trên một hệ thống file trên một
JVM từ xa thì nó phải có quyền truy cập file đó, sau đó nó sẽ phải gửi tới một
chương trình trên JVM mà có chứa file cần truy cập một yêu cầu truy cập file,
sau đó nhờ chương trình đó truy cập và trả kết quả truy cập về cho nó.

Các công việc đã giải quyết được

Thông thường thì chương trình sử dụng RMI còn được gọi là Distribute
Object Application. Do đó, với cơ chế hoạt động như trên thì cơ chế RMI đã
giải quyết được những công việc phải thực hiện trong một Distribute Object
Application:

Định vị Remote Object

Vì đây là một chương trình chạy trên nhiều máy, do đó để hợp tác với
nhau thì các Object phải gửi nhận thông tin qua lại với nhau, vì vậy một
Distribute Object Application cần giải quyết được việc định vị các Remote
Object nhầm phục vụ cho việc truyền nhận thông tin như đã nói. Về mặt này
có hai kỹ thuật để thực hiện là : hỏi trực tiếp máy có chứa Remote Object tham
khảo tới Remote Object hỏi đến khi nào có được Reference cần thiết, cách thứ
hai là dùng cơ chế Naming. Bình thường thì RMI sử dụng cơ chế Naming.

Cơ chế Naming

Client có thể gọi những Method trên những Remote Object khi và chỉ
khi chúng lấy được Reference đến Object đó. RMI cung cấp một Name Server

24

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

đơn giản. Những Remote Object đăng ký với Naming sử dụng Class
java.rmi.NamingRegistry. Lớp này sử dụng cơ chế Naming dựa trên một URL.

Hình 6: Remote Object đăng ký với Naming Registry

Client sử dụng Class java.rmi.Naming tìm đến (lookup) và nhận được
một tham khảo đến những Object. Địa chỉ của Remote Object được xác định
với một URL chỉ đến máy từ xa và tên của Object trên máy đó. Khi một Object
đăng ký với Registry, nó sẽ có một tên gợi nhớ. Những Client sẽ tham khảo
đến các Object này bằng tên.

Hình 7: Naming Service
 Vấn đề truyền tham số trong lời gọi hàm

Trong Java RMI, tham số cho lời gọi hàm hay giá trị trả về từ lời gọi
hàm đều có thể là một Object nào đó, với điều kiện Object đó có thể Serialize
được. Ở đây ta xét đến việc truyền nhận cụ thể trong Java thực chất là truyền
cái gì. Khi một Object nào đó được gọi là truyền đi.

25

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 Truyền Remote Object

Khi một Remote Object được truyền đi thì thực chất là Stub được
truyền đi. Không có một Remote Object nào được truyền đi vì với mỗi
Object được gọi là Remote Object là nhờ nó đã đăng ký với Name Server
nên khi bị truyền đi việc đăng ký không còn ý nghĩa.

Hình 8: Truyền Remote Object

 Truyền nhận thông tin với Remote Object

Chi tiết về truyên nhận thông tin như thế nào thì RMI đã
làm, đối với người sử dụng thì việc truyền thông với Remote
Object giống như việc truyền thông với những Object bình
thường khác.

 Lấy ByteCodes của một Class mà Object đó được truyền

Bởi vì RMI cho phép truyền các Object, mà các Object này
“Serialize” được, vì vậy một Distribute Object Application cũng
phải giải quyết việc lấy ByteCodes về để thực thi tiếp công việc
nào đó. RMI đã cung cấp cho ta những kỹ thuật cần thiết để lấy
ByteCodes của một Object cũng như Java đã cung cấp cho ta
những kỹ thuật truyền nhận dữ liệu của các Object này vậy. [5]

26

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Một số đặc điểm nổi bật của Java RMI

RMI là cơ chế gọi hàm từ xa, vì vậy những vấn đề cơ bản trong cơ chế
này như truyền tham số trong lời gọi hàm như thế nào, vấn đề định vị Remote
Object ra sao là những vấn đề quan trọng.

Ở đây quan tâm đến một số đặc điểm nổi bật như sau:

 Dynamic Class Loading (Cho phép Load Class động). [5]
 Thread usage in RMI (Cho phép kết hợp Thread vào RMI).
 Garbage Collection of Remote Object (Tự động giải phóng các

Remote Object mà hệ thống không còn tham khảo tới).

Tóm tắt

Tóm tắt, cơ chế RMI trong Java là một cơ chế cho phép gọi hàm từ xa.
Cơ chế này giải quyết việc định vị Remote Object bằng cơ chế Name Server
như đã nêu trên. Về nguyên tắc hoạt động thì nhìn chung có 6 bước nhưng
Java đã đảm nhận cho ta một phần công việc đó nên người lập trình chỉ còn
đảm nhiệm 3 bước mà thôi.

Thêm vào đó là RMI có những đặc điểm chính yếu là: cho phép sử dụng
Thread trong RMI, RMI có hỗ trợ chế dọn rác và Load Class động. Với đặc
điểm cuối cùng này, RMI cho phép Client có thể gửi Object lên cho Server
thực thi hộ một số Method. Điều này lợi thế hơn hẳn so với các phương thức
gọi hàm từ xa trước đây.

3.3.2 Đa luồng

Khái niệm đa luồng

27

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Một chương trình đang chạy trong hệ thống còn được xem là một
Process. Trong hệ thống Process có thể thực thi được khi được hệ thống
cấp phát một vùng nhớ chứa các thông tin quản lý các thông tin của

Process, vùng nhớ chứa các mã lệnh chương trình, vùng nhớ chứa các

dữ liệu chương trình, một vùng Stack và quan trọng là một dòng xử lý

(Thread). Dòng xử lý là dòng điều khiển CPU để xử lý một công việc

nào đó, trong một dòng điều khiển cụ thể sẽ có một số câu lệnh thực thi

theo cách tuần tự nhầm thực hiện một việc cụ thể. Vì vậy, một Process

ít nhất phải có một Thread để có thể hoạt động được. Và có thể có nhiều
Thread thực hiện một công việc độc lập nào đó.

Một chương trình MultiThread là một chương trình ở cùng thời
điểm có nhiều Thread cùng chạy, có nghĩa là tồn tại nhiều tập lệnh tuần
tự (Instruction Sequence) được thực thi đồng thời. Mỗi Instruction
Sequence có một dòng điều khiển độc lập với những dòng khác.

Lợi điểm của Thread

- Thread mất ít thời gian để khởi tạo và loại bỏ so với Process.
- MultiThread tốn ít thời gian để chuyển đổi ngữ cảnh.
- Tiết kiệm tài nguyên.
- Vì vậy MultiThread có nhiều ưu điểm hơn so với MultiProcess. Đó

là lý do tất cả ngôn ngữ lập trình hiện đại điều hỗ trợ MultiThread,
Java cũng là một trong số đó.

Thread Synchronization

Một Thread đang chạy thì nó có thể truy cập bất cứ Object nào mà
nó có Reference trỏ đến. Vậy liệu sẽ xảy ra chuyện gì khi hai Thread cùng

28

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

truy cập đến một Object và gọi một Method có thể thay đổi trạng thái của
Object đó. Lúc này Synchronization giải quyết vấn đề này.

Java dùng Monitor để thao tác đồng bộ. Mọi đối với Method
Synchronization là một Monitor. Monitor chỉ cho phép tại một thời
điểm chỉ có một Thread thực hiện một Method Synchronization trên đối
tượng. Nếu có nhiều Method Synchronization thì chỉ có một Method
được phép hoạt động còn lại tất cả các Method khác phải chờ. Việc này
được thực hiện bằng cách Locking Object khi một Method
Synchronization đang ở trạng thái hoạt động. Khi Method đó đã hoàn
tất thì Locking Object sẽ được giải phóng khi đó Thread nào đang ở
trạng thái Ready với quyền ưu tiên cao nhất sẽ được tiếp tục sử dụng
Object.

Tóm lại MultiThread là một cơ chế hoạt động quan trọng trong
ngôn ngữ Java. MultiThreading có ý nghĩa rất lớn trong việc điều khiển
thực thi chương trình. Đặc biệt với ứng sử dụng RMI thì MultiThread
là cơ chế rất cần thiết.

3.3.3 Môi trường

Phần mềm

Như đã nêu trên Java Virtual Mechine là một môi trường ảo hóa,
nên nó cần có một chạy trên một môi trường hê điều hành thực và các
ứng dụng hỗ trợ soạn thảo code:

 OS: Windows 8.1 professional (Mircosoft)
 Tool: Eclipse IDE - Mars 4.5.1
 Platform: JDK 1.8.0_20, JRE 1.8.0_25 (Oracle)

Phần cứng

29

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Phần cứng phục vụ cho chương trình là cụm ba máy tính Dell cấu
hình bao CPU core i5, Ram 8GB.

3.2. Parallel Genetic Algorithm (PGA)
3.2.1 Mô hình PGA

30

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bắt đầu

Khởi tạo quần thể 1, 2
và 3

Thực hiện tính toán
quần thể

Điều kiện Có Kết thúc
dừng

Không

Phép chọn Phép chọn Phép chọn

Phép lai ghép 1 Phép lai ghép 2 Phép lai ghép 3

Đột biến Đột biến Đột biến

Di cư ? Không Không
Có Di cư ? Di cư ?


Di cư

Hình 9: PGA Flow Chart

3.2.2 Các thuật toán sử dụng

31

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Lai ghép

Input: Tour cha và mẹ.

Output: Tour con.

+ PMX
Thuật toán lai ghép PMX viết tắt của Partially Mapped

Crossover. Thuật toán này tạo ra một thế hệ con bằng cách chọn
ra những chuỗi thành phố nhỏ trong chuỗi Tour của cha hoặc mẹ
sau đó đảo giá trị và vị trí của các chuỗi con đó càng nhiều càng
tốt, bằng phương thức ánh xạ phần tử. [12]

6234175 6231475 6241375
5241376 5241376 5241376

First offspring : 6 2 4 1 3 7 5

6234175 6234175 6234175
5241376 5214376 5234176

Second offspring : 5 2 3 4 1 7 6

Hình 10: PMX Crossover

+ DPX

DPX (Distance Preserving Crossover) dựa trên sự kế thừa khoảng

cách được tạo ra từ các cá thể cha mẹ. Mục tiêu của việc này nhằm

để tạo ra các cá thể con có những ưu điểm như các cá thể cha mẹ.

Nhưng bù lại đặc tính của cá thể con có thể giống như cá thể cha

hoặc mẹ. [4][5][13].

32

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Procedure DPX-TSP (ia,ib)
Begin

ic:=ia;
xoa tat ca nhung phan tu ic khong co trong ib;
greedy_reconnect_TSP(ic);
End;

Hình11: Mã giả DPX

Hình 12: DPX Crossover [4]

+ TPX

Thuật toán TPX (Two Point Crossover) cần xác định được hai

điểm trên đoạn gen của cá thể cha và mẹ, sau đó phần gen nằm

bên trong hai điểm được chọn sẽ được lấy từ cha, phần còn lại

của chuỗi gen cá thể con sẽ được sao chép của cá thể mẹ sao cho

các đặc tính gen không trùng lắp với đoạn gen bên trong hai điểm

chọn để hoàn thành cá thể con. [13][14]

33

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Cha Con

Mẹ Con

Hình 13: TPX Crossover

Đột biến

Input: Tour bất kỳ trong quần thể.
Output: Tour có chứa giá trị đột biến.
Orderchanging: Tỉ lệ đột biến khoảng 1% đến 5%.

(1234567890) => (183456729)

Phép chọn

Input: Tập quần thể hiện tại.
Output: Tập các cá thể được lấy ngẫu nhiên trong quần thể.
Hiện tại phép chọn được sử dụng cho chương trình hiện tại là
phép chọn ngẫu nhiên, với phương thức duyệt qua toàn bộ quần thể
sau đó lấy ra một số lượng cá thể nhất định.
3.2.3 Các tham số đầu vào

Dữ liệu đầu vào chương trình: Tập các bài toán từ thư viện TSPLIB[12].

Xác suất lai ghép

Để mô phỏng môi trường tự nhiên tốt nhất, việc lai ghép cũng sẽ
có xác suất riêng của nó giống như việc chịu ảnh hưởng của các yếu tố
khách quan lẫn chủ quan của môi trường và cá thể nên lai ghép có thể
thất bại. Ở trong chương trình GA xác suất lai ghép thường được đặt ở
mức 80%.

34

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Kích thước quần thể

Với những dạng bài GA thông thường với kích thước quần thể
không thay đổi qua nhiểu thế hệ thì kích thước quần thể sẽ rơi vào
khoảng 50 đến 100 cá thể để tối ưu cho việc tính toán xử lý của máy
tính, vì quần thể quá lớn sẽ làm tăng bộ nhớ của chương trình lên rất
nhanh không thích hợp cho việc tìm kiếm kết quả tối ưu. Ngược lại kích
thước quần thể quá nhỏ lại làm cho việc tìm kiếm mất nhiều thời gian
hơn.
3.3. Kết quả đạt được
3.3.1. Các kết quả các bài toán

Để thực hiện hiệu quả của chúng tôi đã đề xuất MC-PGA và so sánh với
những người từ giải pháp cổ điển, bao gồm GA1 (sử dụng PTX[5]), GA2 (sử
dụng DPX[7][10]) và GA3 (sử dụng PMX[7]), chúng tôi tiến hành thí nghiệm
trên một nhóm của ba máy tính Dell i5 Core với 8GB RAM mỗi. Đầu vào bài
toán đều được lấy từ thư viện chuẩn TSPLIB [12].

35

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

MAX MIN MEAN STD

GA1 39 39 39 0

GA2 39 39 39 0
br17 GA3 39 39 39 0

MC- 39 39 39 0
PGA

GA1 2476 2177 2307.13 95.16

ftv47 GA2 2676 2277 2540.2 116.92
GA3 2728 2255 2477.27 132.47

MC- 2581 2134 2377.87 127.98
PGA

GA1 3469 2730 2967 247.95

ftv70 GA2 3494 2220 2648.8 492.28
GA3 3686 2769 3280.33 236.28

MC- 3298 2785 3002.87 134.43
PGA

GA1 6721 5563 6156.93 340.6

ftv170 GA2 6844 5955 6527.87 234.25
GA3 7228 6113 6789.27 327.62

MC- 5729 4590 5000.27 384.03
PGA

Hình 14: Bảng so sánh kết quả

36

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

3.3.2. Biểu đồ thể hiện

Với biểu đồ bên dưới trục tung là số lần tương tác, còn trục hoành là
số lần chạy. Tần số xuất hiện như biểu đồ bên dưới bao gồm bài 47 đỉnh và
170 đỉnh.

Hình 15: Biểu đồ tần suất kết quả dữ liệu 47 đỉnh

Hình 16: Biểu đồ tần suất kết quả dữ liệu 170 đỉnh

37

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hình 17: Biểu đồ Min Max Mean Std của dữ liệu 47 đỉnh

Hình 18: Biểu đồ Min Max Mean Std của dữ liệu 170 đỉnh

3.3.3. Nhận xét

Qua từng biểu đồ trên ta thầy kết quả PGA với bài toán nhỏ thì
kết quả lưng chừng không hơn kết quả GA nhiều, nhưng với bài toán
với số đỉnh lớn thì lại trội hơn với GA khác. Mức độ trung bình của
PGA với bài toán nhỏ thì cũng không hơn với GA, còn đối với bài
toán lớn thì PGA lại vượt xa nhiều.

38

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Kết quả trên cho thấy với số lần tương tác và với bài toán với số đỉnh
càng lớn thì PGA cho kết quả tốt hơn còn ngược với bài toán nhỏ thì
PGA chưa thể hiện rõ được khả năng của tính toán song song.

Trong các kết quả bài toán mà chương trình thực hiện, PGA tỏ ra là
một chương trình có nhiều ưu điểm nổi bật khi đưa ra các lời giải có giá
trị tốt hơn hẳn các lời giải được thực hiện bởi các chương trình GA
thông thường.
4. Kết Luận

Với những nghiên cứu hiện tại có được từ khi bắt đầu đồ án đến nay,
PGA đã cho thấy một số mặt tích cực khi được áp dụng hình thức song song
hóa vào các giải thuật tuần tự đang có hiện nay. Việc này góp nên động lực rất
lớn cho các bước nghiên cứu về sau, nhằm mục đích tạo ra được các giải pháp
tốt hơn cho việc tiếp cận các bài toán. Như vậy việc xử lý các bài toán sẽ ngày
một tốt hơn tối ưu hơn, giảm được thời gian xử lý hơn cũng như tận dụng tốt
hơn sức mạnh của máy tính hơn cho nhiều vấn đề hơn.

Tóm lại với việc áp dụng khả năng tính toán song song vào những giải
thuật hiện có sẽ mở ra nhiều hướng phát triển mới giải quyết được những hạn
chế mà trước đây không thể giải quyết.

5. Hướng Phát Triển Cho PGA

Với mô hình hiện tại PGA chỉ mới tận dụng được sức mạnh của một hệ
thống gồm ba máy tính, để tăng tính hiệu quả thì PGA trong tương lai sẽ cố
gắng trở thành một hệ thống có khả năng mở rộng không giới hạn về số lượng
máy tính, số lượng giải thuật cũng như số lượng bài toán mà PGA có thể giải
quyết.

39

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Tài Liệu Tham Khảo

[1] Nguyễn Đình Thúc, Lập trình tiến hóa, Nhà xuất bản giáo dục 2008.
[2] Bài toán người bán hàng travelling salesman problem - TSP [Online]

https://vi.wikipedia.org/wiki/B%C3%A0i_to%C3%A1n_ng%C6%B0
%E1%BB%9Di_b%C3%A1n_h%C3%A0ng. 19/7/2015.
[3] Hassani, Abtin, and Jonatan Treijs. "An overview of standard and
parallel genetic algorithms." IDT Workshop on Interesting Results in
Computer Science and Engineering, Mälardalen University. 2009.
[4] Reisleben, B., & Merz, P. A genetic local search algorithm for solving
symmetric and asymmetric traveling salesman problems. (pp. 616-621).
IEEE. InEvolutionary Computation, Proceedings of IEEE International
Conference on 1996.

[5] Core Java™2 Volume II - Advanced Features, Seventh Edition By Cay
S. Horstmann, Gary Cornell, Publisher : Prentice Hall PTR ISBN, Pub
Date: 2004.

[6] Er, Harun Rasit, and Nadia Erdogan. "Parallel Genetic Algorithm to
Solve Traveling Salesman Problem on MapReduce Framework using
Hadoop Cluster." arXiv preprint arXiv:1401.6267 (2014).

[7] Borovska, Plamenka. "Solving the travelling salesman problem in
parallel by genetic algorithm on multicomputer cluster." Int. Conf. on
Computer Systems and Technologies. 2006.

[8] Zakir H. Ahmed Department of Computer Science, Al-Imam
Muhammad Ibn Saud Islamic University, P.O. Box No. 5701, Riyadh-
11432 Kingdom of Saudi Arabia Ahmed, Z. H. Genetic algorithm for
the traveling salesman problem using sequential constructive crossover

40

GVHD: TS. Trương Khắc Tùng SVTH: Lê Ngọc Khánh & Lý Huỳnh Duy Bảo

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

operator. International Journal of Biometrics & Bioinformatics
(IJBB), 3(6), 96. 2010.
[9] Ms. Rahate Kanchan Sharadchandra. Student M.E. L.M.R.J. Lobo
Professor & Head, Department Information Technology, Walchand
Institute of Technology, Solapur Vol. 1 Issue 9, “Parallelization Of
Genetic Algorithm Using Hadoop” 2012.

[10] Roderick Murphy (B.E.) A Thesis submitted to The University of
Dublin for the degree of M.Sc. in High Performance Computing
Department of Mathematics University of Dublin Trinity College “A
Generic Parallel Genetic Algorithm”. 2003.

[11] Konstantin Boukreev, “Genetic Algorithms and the Traveling
Salesman Problem” 2003.

[12] TSPLIB in XML format http://comopt.ifi.uni-
heidelberg.de/software/TSPLIB95/.

[13] Al-Dulaimi, B. F., & Ali, H. A. Enhanced traveling salesman problem
solving by genetic algorithm technique (TSPGA). World Academy of
Science, Engineering and Technology, 38, 296-302. 2008.

[14] Tham khảo trang web phương pháp selection Roulette wheels
http://www.edc.ncl.ac.uk/highlight/rhjanuary2007g02.php [Online] 2015

[15] Horstmann, Cay S., and Gary Cornell. Core Java 2: Volume I,
Fundamentals. Pearson Education, 2002.

41


Click to View FlipBook Version