Tải bản đầy đủ (.docx) (19 trang)

Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề ỨNG DỤNG GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN TRAVELLING SALEMAN PROBLEM

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 (463.66 KB, 19 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO THUẬT TOÁN
VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
ỨNG DỤNG GIẢI THUẬT DI TRUYỀN
CHO BÀI TOÁN TRAVELLING SALEMAN PROBLEM
GVHD : PGS. TS. Đỗ Văn Nhơn
HVTH : Nguyễn Văn Tiến
MSHV : CH1301109
TP Hồ Chí Minh, tháng 10 năm 2014
LỜI CẢM ƠN
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Em xin chân thành gửi lời cảm ơn chân thành đến PGS. TS. Đỗ Văn Nhơn, người
thầy hướng dẫn khoa học nghiêm túc và nhiệt tâm. Thầy là người đã truyền đạt cho em
những kiến thức quý báu trong môn học “Thuật toán và phương pháp giải quyết vấn đề”.
Nhờ có những kiến thức của thầy mà em có thể có đủ kiến thức cùng những công cụ cần
thiết để thực hiện được bài tiểu luận của môn học này.
Trong bài báo cáo này, em đã tìm hiểu về thuật giải di truyền, và ứng dụng nó vào
bài toán “Travelling Saleman Problem” một bài toán kinh điển của NP-Hard.
Xin cảm ơn tất bạn bè đã và đang động viên, giúp đỡ em trong quá trình học tập và
hoàn thành tiểu luận của môn học này.
TP. Hồ Chí Minh, tháng 10 năm 2014
Nguyễn Văn Tiến
MỤC LỤC
Nguyễn Văn Tiến – CH1301109 Trang 2
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
CHƯƠNG 1: MỞ ĐẦU
Với khả năng hiện nay, máy tính đã giúp giải được rất nhiều bài toán khó mà trước
kia thường không giải được. Mặc dù vậy, vẫn còn một số lớn các bài toán rất thú vị
nhưng chưa có thuật giải hợp lý để giải chúng. Trong số đó, các bài toán tối ưu là những
bài toán thường xuyên gặp phải trong các ứng dụng thực tiễn.


Trong thực tiễn, có nhiều bài toán tối ưu quan trọng đòi hỏi những thuật giải chất
lượng cao. Ví dụ, ta có thể áp dụng phương pháp mô phỏng luyện thép để giải bài toán
tìm đường đi ngắn nhất cho xe cứu hỏa hay bài toán người du lịch,…. Cũng có nhiều bài
toán tối ưu tổ hợp (trong đó có nhiều bài đã được chứng minh là thuộc loại NP – Hard) có
thể được giải gần đúng trên máy tính hiện đại bằng kỹ thuật Monte-Carlo.
Nói chung, bài toán tối ưu có thể được xem như bài toán tìm kiếm giải pháp (tốt
nhất) trong không gian (vô cùng lớn) các giải pháp. Khi không gian tìm kiếm nhỏ, các
phương pháp cổ điển cũng đủ thích hợp; nhưng khi không gian lớn cần phải dùng đế
những kỹ thuật Trí tuệ nhân tạo đặc biệt. Thuật giải di truyền (Genetic Algorithm) là một
trong những kỹ thuật đó. Thuật giải di truyền là một loại thuật giải mô phỏng các hiện
tượng tự nhiên: kế thừa và đấu tranh sinh tồn để cải tiến lời giải và khảo sát không gian
lời giải.
Nguyễn Văn Tiến – CH1301109 Trang 3
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
Các thuật giải di truyền (GAs: Genetic Algorithms) cũng như các thuật toán tiến
hoá khác hình thành dựa trên quan niệm cho rằng quá trình tiến hoá tự nhiên là quá
trình hợp lý, hoàn hảo. Tự nó đã mang tính tối ưu. Quan điểm trên như một tiên đề,
không chứng minh, nhưng phù hợp với thực tế khách quan.
Mục tiêu nghiên cứu của GAs có thể được khái quát như sau:
- Trừu tượng hoá và mô phỏng quá trình thích nghi trong hệ thống tự nhiên.
- Thiết kế phần mềm, chương trình mô phỏng, nhằm duy trì các cơ chế quan
trọng của hệ thống tự nhiên.
Giải thuật di truyền sử dụng một số thuật ngữ của ngành di truyền học như: nhiễm
sắc thể, quần thể (Population), Gen Nhiễm sắc thể được tạo thành từ các Gen (được
biểu diễn của một chuỗi tuyến tính). Mỗi Gen mang một số đặc trưng và có vị trí nhất
định trong nhiễm sắc thể. Mỗi nhiễm sắc thể sẽ biểu diễn một lời giải của bài toán.
2.1. Các toán tử di truyền
a. Toán tử sinh sản
Toán tử sinh sản gồm hai quá trình: quá trình sinh sản (phép tái sinh), quá trình chọn

lọc (phép chọn).
 Phép tái sinh
Phép tái sinh là quá trình các nhiễm sắc thể được sao chép trên cơ sở độ thích
nghi. Độ thích nghi là một hàm được gán giá trị thực, tương ứng với mỗi nhiễm sắc thể
trong quần thể. Quá trình này, được mô tả như sau:
Xác định độ thích nghi của từng nhiễm sắc thể trong quần thể ở thế hệ thứ t, lập
bảng cộng dồn các giá trị thích nghi (theo thứ tự gán cho từng nhiễm sắc thể). Giả sử,
quần thể có n cá thể. Gọi độ thích nghi của nhiễm sắc thể i tương ứng là fi tổng cộng dồn
thứ i là fti được xác định bởi:
Nguyễn Văn Tiến – CH1301109 Trang 4
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Gọi Fn là tổng độ thích nghi của toàn quần thể. Chọn một số ngẫu nhiên f trong
khoảng từ 0 tới Fn. Chọn cá thể thứ k đầu tiên thoả mãn f ≥ ftk đưa vào quần thể mới.
 Phép chọn
Phép chọn là quá trình loại bỏ các nhiễm sắc thể kém thích nghi trong quần thể.
Quá trình này được mô tả như sau:
- Sắp xếp quần thể theo thứ tự mức độ thích nghi giảm dần.
- Loại bỏ các nhiễm sắc thể ở cuối dãy. Giữ lại n cá thể tốt nhất.
b. Toán tử ghép chéo
Ghép chéo là quá trình tạo nhiễm sắc thể mới trên cơ sở các nhiễm sắc thể cha-mẹ
bằng cách ghép một đoạn trên nhiễm sắc thể cha-mẹ với nhau. Toán tử ghép chéo được
gán với một xác suất p c . Quá trình được mô tả như sau:
Chọn ngẫu nhiên một cặp nhiễm sắc thể (cha-mẹ) trong quần thể. Giả sử, nhiễm sắc
thể cha-mẹ có cùng độ dài m.
Tạo một số ngẫu nhiên trong khoảng từ 1 tới m-1 (gọi là điểm ghép chéo). Điểm ghép
chéo chia nhiễm sắc thể cha-mẹ thành hai chuỗi con có độ dài m1, m2. Hai chuỗi con
mới được tạo thành là: m11+ m22 và m21+m12.
Đưa hai nhiễm sắc thể mới vào quần thể.
c. Toán tử đột biến
Đột biến là hiện tượng nhiễm sắc thể con mang một số đặc tính không có trong mã

di truyền của cha-mẹ.
- Chọn ngẫu nhiên một nhiễm sắc thể trong quần thể;
- Tạo một số ngẫu nhiên k trong khoảng từ 1 tới m,1 ≤ k ≤ m ;
- Thay đổi bit thứ k. Đưa nhiễm sắc thể này vào quần thể để tham gia quá trình
tiến hoá ở thế hệ tiếp theo.
2.2 Các bước cơ bản của giải thuật di truyền
Một giải thuật di truyền đơn giản bao gồm các bước sau:
Bước 1: Khởi tạo một quần thể ban đầu gồm các chuỗi nhiễm sắc thể.
Nguyễn Văn Tiến – CH1301109 Trang 5
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Bước 2: Xác định giá trị mục tiêu cho từng nhiễm sắc thể tương ứng.
Bước 3: Tạo các nhiễm sắc thể mới dựa trên các toán tử di truyền.
Bước 4: Loại bớt các nhiễm sắc thể có độ thích nghi thấp.
Bước 5: Xác định hàm mục tiêu cho các nhiễm sắc thể mới và đưa vào quần thể.
Bước 6: Kiểm tra thỏa mãn điều kiện dừng. Nếu điều kiện đúng, lấy ra nhiễm sắc thể tốt
nhất, giải thuật dừng lại; ngược lại, quay về bước 3.
2.3 Cơ sở toán học của giải thuật di truyền
Cơ sở lý thuyết của giải thuật di truyền dựa trên biểu diễn chuỗi nhị phân và lý
thuyết sơ đồ. Một sơ đồ là một chuỗi, có chiều dài bằng chuỗi nhiễm sắc thể. Các thành
phần của nó có thể nhận một trong các giá trị trong tập ký tự biểu diễn Gen hoặc một ký
tự đại diện ”*”. Sơ đồ biểu diễn không gian con trong không gian tìm kiếm. Không gian
con này là tập tất cả các chuỗi trong không gian tìm kiếm mà với mọi vị trí trong chuỗi,
giá trị của Gen trùng với giá trị của sơ đồ; kí tự đại diện “*” có thể trùng khớp với bất kỳ
ký tự biểu diễn nào.
Sơ đồ (* 1 0 1 0) sẽ khớp với 2 chuỗi: (1 1 0 1 0) và (0 1 0 1 0) Như vậy, sơ đồ (1 1 0
1 0) và (0 1 0 1 0) chỉ khớp với chuỗi chính nó, còn sơ đồ (*****) khớp với tất cả các sơ
đồ có độ dài là 5.
Với sơ đồ cụ thể có tương ứng 2r chuỗi, r: là số ký tự đại diện “*” có trong sơ đồ;
ngược lại, một chuỗi có chiều dài m sẽ khớp với 2m sơ đồ.
Một chuỗi có chiều dài m, sẽ có tối đa 3m sơ đồ. Trong một quần thể dân số kích

thước n, có thể có tương ứng từ 2m đến nx2m sơ đồ khác nhau.
2.4 Thuộc tính của sơ đồ
Các sơ đồ khác nhau có đặc trưng khác nhau. Các đặc trưng này thể hiện qua hai
thuộc tính quan trọng: bậc và chiều dài xác định.
Bậc của sơ đồ S (ký hiệu o(S)) là tổng số vị trí 0, 1 có trong sơ đồ. Đây là các vị trí cố
định (không phải vị trí của các ký tự đại diện) trong sơ đồ. Bậc có thể xác định bằng cách
lấy chiều dài của chuỗi trừ đi số ký tự đại diện.
Nguyễn Văn Tiến – CH1301109 Trang 6
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Trong sơ đồ S = (* * 1 0 * 1 *) có bậc o(S) = 7 - 4 = 3;
Chiều dài xác định của sơ đồ S (ký hiệu là δ(S)) là khoảng cách giữa 2 vị trí cố
định ở đầu và cuối. Chiều dài của sơ đồ xác định độ nén thông tin chứa trong sơ đồ đó.
Trong ví dụtrên δ(S)= 6-3 =3. Như vậy, nếu sơ đồ chỉ có một vị trí cố định thì chiều dài
xác định của sơ đồ sẽ bằng 0.
Chiều dài của sơ đồ giúp ta tính xác suất tồn tại của sơ đồ do ảnh hưởng của ghép
chéo. Đặc điểm hội tụ của giải thuật di truyền.
Khi áp dụng giải thuật GAs cho các vấn đề thực tế thường rất khó khăn. Lý do:
- Cách biểu diễn nhiễm sắc thể có thể tạo ra không tìm kiếm khác với không gian
thực của bài toán;
- Số bước lặp, khi cài đặt thường không xác định trước;
- Kích thước quần thể thường có giới hạn.
Trong một số trường hợp, GAs không thể tìm được lời giải tối ưu. Lý do, GAs hội tụ
sớm về lời giải tối ưu cục bộ. Hội tụ sớm là vấn đề của giải thuật di truyền cũng như các
giải thuật tối ưu khác. Nếu hội tụ xảy ra quá nhanh thì các thông tin đáng tin cậy đang
phát triển trong quần thể thường bị bỏ qua. Nguyên nhân của sự hội tụ sớm liên quan tới
hai vấn đề:
- Quy mô và loại sai số do cơ chế tạo mẫu;
- Bản chất của hàm mục tiêu.
a. Cơ chế tạo mẫu
Có hai vấn đề quan trọng trong tiến trình tiến hoá của giải thuật di truyền là: tính đa

dạng của quần thể và áp lực chọn lọc. Hai yếu tố này liên quan mật thiết với nhau: khi
tăng áp lực chọn lọc thì tính đa dạng của quần thể sẽ giảm và ngược lại. Nói cách
khác, áp lực hội tụ mạnh sẽ dẫn tới sự hội tụ sớm của giải thuật. Nhưng nếu áp lực chọn
lọc yếu có thể làm cho tìm kiếm thành vô hiệu. Như vậy, cần thoả hiệp hai vấn đề. Hiện
nay, các phương pháp đưa ra đều có khuynh hướng dể đạt tới mục đích này.
Năm 1975 DeJong đã xem xét một số biến thể của chọn lọc đơn giản bằng cách đưa
ra mô hình phát triển ưu tú, mô hình giá trị mong đợi và mô hình nhân tố tập trung.
Nguyễn Văn Tiến – CH1301109 Trang 7
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Năm 1981 Brindle xem xét một số biến thể khác như: tạo mẫu tất định, tạo mẫu hỗn
loạn, tạo mẫu hỗn loạn phần dư không thay thế, đấu tranh hỗn loạn, tạo mẫu hỗn loạn
phần dư có thay thế.
Năm 1987 Baker nghiên cứu phương pháp tạo mẫu không gian hỗn loạn. Phương
pháp này dùng cách “quay” bánh xe định tỷ lệ trước để thực hiện chọn lọc. Bánh xe này
được thiết kế theo chuẩn, quay với số khoảng chia đều theo kích thước quần thể.
Tỷ lệ thích nghi của các nhiễm sắc thể trên bánh xe
Roulette
Người ta thực hiện việc sinh sản bằng cách quay bánh xe Roulette với số lần bằng
số nhiễm sắc thể trên bánh xe Roulette. Đối với bài toán này số lần quay bánh xe
Roulette là 4. Nhiễm sắc thể 1 có giá trị thích nghi là 169, tương ứng 14,4 % tổng độ
thích nghi. Như vậy, nhiễm sắc thể 1 chiếm 14.4% trên bánh xe Roulette. Mỗi lần quay
nhiễm sắc thể 1 sẽ chiếm khe với giá trị 0,144.
Khi yêu cầu sinh ra 1 thế hệ mới, một vòng quay của bánh xe Roulette được đánh
trọng số phù hợp sẽ chọn ra một cá thể để sinh sản. Bằng cách này, những nhiễm sắc
thể có độ thích nghi cao sẽ có cơ hội được chọn lớn. Như vậy, sẽ có 1 số lượng con cháu
lớn trong các thế hệ kế tiếp.
b. Hàm mục tiêu
Cứ sau mỗi thế hệ được hình thành, chúng ta cần tính lại độ thích nghi cho từng cá
thể để chuẩn bị cho một thế hệ mới. Do số lượng các cá thể tăng lên, độ thích nghi giữa
Nguyễn Văn Tiến – CH1301109 Trang 8

PGS.TS Đỗ Văn Nhơn TT&PPGQVD
các cá thể không có sự chêch lệch đáng kể. Do đó, các cá thể có độ thích nghi cao chưa
hẳn chiếm ưu thế trong thế hệ tiếp theo. Vì vậy, cần ấn định tỷ lệ đối với hàm thích nghi
nhằm tăng khả năng cho các nhiễm sắc thể đạt độ thích nghi cao. Có 3 cơ chế định tỷ lệ
như sau.
 Định tỷ lệ tuyến nh
Độ thích nghi được xác định theo công thức:
Cần chọn các tham số a, b sao cho độ thích nghi trung bình được ánh xạ vào chính
nó. Tăng độ thích nghi tốt nhất bằng cách nhân nó với độ thích nghi trung bình. Cơ chế
này có thể tạo ra các giá trị âm cần xử lý riêng. Ngoài ra, các tham số a, b thường gắn với
đời sống quần thể và không phụ thuộc vào bài toán.
 Phép cắt Sigma
Phương pháp này được thiết kế vừa để cải tiến phương pháp định tỷ lệ tuyến tính
vừa để xử lý các giá trị âm, vừa kết hợp thông tin mà bài toán phụ thuộc. Ở đây, độ thích
nghi mới được tính theo công thức:
trong đó c là một số nguyên nhỏ (thường lấy giá trị từ 1 tới 5);σ là độ lệch chuẩn của
quần thể. Với giá trị âm thì f' được thiết lập bằng 0.
 Định tỷ lệ cho luật dạng luỹ thừa
Trong phương pháp này, độ thích nghi lúc khởi tạo có năng lực đặc biệt:
với k gần bằng 1. Tham số k định tỷ lệ hàm f . Tuy nhiên, một số nhà nghiên cứu
cho rằng nên chọn k độc lập với bài toán. Bằng thực nghiệm cho thấy nên chọn k =1.005.
2.5 Điều kiện dừng của giải thuật
Chúng ta sẽ khảo sát điều kiện đơn giản nhất để dừng khi số thế hệ vượt quá một
ngưỡng cho trước. Trong một số phiên bản về chương trình tiến hoá không phải mọi cá
Nguyễn Văn Tiến – CH1301109 Trang 9
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
thể đều tiến hoá lại. Vài cá thể trong đó có khả năng vượt từ thế hệ này sang thế hệ khác
mà không thay đổi gì cả. Trong những trường hợp như vậy, chúng ta đếm số lần lượng
hàm. Nếu số lần lượng hàm vượt quá một hằng xác định trước thì dừng việc tìm kiếm.
Chúng ta nhận thấy, các điều kiện dừng ở trên giả thiết rằng người sử dụng đã biết

đặc trưng của hàm, có ảnh hưởng như thế nào tới chiều dài tìm kiếm. Trong một số
trường hợp khó có thể xác định số lượng thế hệ (hay lượng giá hàm) phải là bao nhiêu.
Giải thuật có thể kết thúc khi cơ hội cho một cải thiện quan trọng chưa bắt đầu.
Có hai loại điều kiện dừng cơ bản. Các điều kiện này dùng các đặc trưng tìm kiếm để
quyết định ngừng quá trình tìm kiếm.
- Dựa trên cấu trúc nhiễm sắc thể: do sự hội tụ của quần thể bằng cách kiểm soát
số alen được hội tụ, ở đây alen được coi như hội tụ nếu một số phần trăm quần
thể đã định trước có cùng (hoặc tương đương đối với các biểu diễn không nhị
phân) giá trị trong alen này. Nếu số alen hội tụ vượt quá số phần trăm nào đó
của tổng số alen, việc tìm kiếm sẽ kết thúc.
- Dựa trên ý nghĩa đặc biệt của một nhiễm sắc thể: đo tiến bộ của giải thuật
trong một số thế hệ cho trước. Nếu tiến bộ này nhỏ hơn một hằng số ε xác định,
kết thúc tìm kiếm.
Nguyễn Văn Tiến – CH1301109 Trang 10
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
CHƯƠNG 3 : BÀI TOÁN TRAVELLING SALEMAN PROBLEM (TSP)
3.1 Giới thiệu bài toán:
Bài toán người bán hàng (tiếng Anh: travelling salesman problem - TSP) là một bài
toán NP-khó thuộc thể loại tối ưu rời rạc hay tổ hợp được nghiên cứu trong vận trù học
hoặc lý thuyết khoa học máy tính. Bài toán được phát biểu như sau. Cho trước một danh
sách các thành phố và khoảng cách giữa chúng, tìm chu trình ngắn nhất thăm mỗi thành
phố đúng một lần.
Bài toán được nêu ra lần đầu tiên năm 1930 và là một trong những bài toán được
nghiên cứu sâu nhất trong tối ưu hóa. Nó thường được dùng làm thước đo cho nhiều
phương pháp tối ưu hóa. Mặc dù bài toán rất khó giải trong trường hợp tổng quát, có
nhiều phương pháp giải chính xác cũng như heuristic đã được tìm ra để giải quyết một số
trường hợp có tới hàng chục nghìn thành phố.
Ngay trong hình thức phát biểu đơn giản nhất, bài toán TSP đã có nhiều ứng dụng
trong lập kế hoạch, hậu cần, cũng như thiết kế vi mạch.
Trong lý thuyết độ phức tạp tính toán, phiên bản quyết định của TSP (cho trước độ dài

L, xác định xem có tồn tại hay không một chu trình đi qua mỗi đỉnh đúng một lần và có
độ dài nhỏ hơn L) thuộc lớp NP-đầy đủ. Do đó, có nhiều khả năng là thời gian xấu nhất
của bất kì thuật toán nào cho TSP đều tăng theo cấp số nhân với số thành phố.
TSP có một vài ứng dụng thậm chí trong dạng thức nguyên thuỷ của nó như lập kế
hoạch, logistic, và sản xuất các microchip. Thay đổi đi chút ít nó xuất hiện như một bài
toán con trong rất nhiều lĩnh vực như việc phân tích gen trong sinh học. Trong những ứng
dụng này, khái niệm thành phố có thể thay đổi thành khách hàng, các điểm hàn trên bảng
mạch, các mảnh DNA trong gen, và khái niệm khoảng cách có thể biểu diễn bởi thời gian
du lịch hay giá thành, hay giống như sự so sánh giữa các mảnh DNA với nhau. Trong
nhiều ứng dụng, các hạn chế truyền thống như giới hạn tài nguyên hay giới hạn thời gian
thậm chí còn làm cho bài toán trở nên khó hơn.
Nguyễn Văn Tiến – CH1301109 Trang 11
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Trong lý thuyết của độ phức tạp tính toán, phiên bản quyết định của bài toán TSP
thuộc lớp NP-đầy đủ. Vì vậy không có giải thuật hiệu quả nào cho việc giải bài toán TSP.
Hay nói cách khác, giống như thời gian chạy xấu nhất cho bất ký giải thuật nào cho bài
toán TSP tăng theo hàm mũ với số lượng thành phố, vì vậy thậm chí nhiều trường hợp
với vài trăm thành phố cũng đã mất vài năm CPU để giải một cách chính xác
3.2 Phát biểu bài toán
“Có một người giao hàng cần đi giao hàng tại n thành phố. Anh ta xuất phát từ một
thành phố nào đó, đi qua các thành phố khác để giao hàng và trở về thành phố ban đầu.
Mỗi thành phố chỉ đến một lần, và khoảng cách từ một thành phố đến các thành phố khác
đã được biết trước. Hãy tìm một chu trình (một đường đi khép kín thỏa mãn điều kiện
trên) sao cho tổng độ dài các cạnh là nhỏ nhất.”
Hay ta có thể phát biểu bài toán dưới dạng đồ thị như sau:
“Bài toán người bán hàng có thể được mô hình hoá như một đồ thị vô hướng có
trọng số, trong đó mỗi thành phố là một đỉnh của đồ thị còn đường đi giữa các thành phố
là mỗi cách. Khoảng cách giữa hai thành phố là độ dài cạnh. Đây là vấn đề cực tiểu hoá
với điểm đầu và điểm cuối là cùng một đỉnh sau khi thăm hết các đỉnh còn lại đúng một
lần. Mô hình này thường là một đồ thị đầy đủ (giữa mỗi cặp đỉnh đều có cạnh). Nếu

không có đường giữa hai thành phố thì có thể thêm một cạnh với độ dài đủ lớn vào đồ thị
mà không ảnh hưởng đến kết quả tối ưu sau cùng.”
Nguyễn Văn Tiến – CH1301109 Trang 12
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
CHƯƠNG 4: GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN TSP
4.1. Xây dựng mô hình và mã hóa bài toán:
a. Xây dựng mô hình bài toán:
Bài toán TSP sẽ được mô hình hóa bằng một đồ thị có hướng, có trọng số dương.
Trong đó:
- Các đỉnh: là các thành phố cần đi qua. Mỗi đỉnh sẽ có tọa độ (xi,yi).
- Cung: là đường đi từ thành phố này tới thành phố kia hay nói cách khác là
đường đi từ đỉnh này qua đỉnh kia.
- Trọng số: Độ dài con đường (độ dài cạnh)
Như vậy bài toán có thể được mô tả như sau:
G = (V,E)
Trong đó:
V = {v1, v2, …, vn}
E = {e1, e2,…., en}; e là liên kết vi và vj.
b. Mã hóa đồ thị
Đồ thị được mã hóa bằng danh sách mảng các điểm và tọa độ ứng với các đỉnh.
Khoảng cách giữa 2 đỉnh M(xi,yi) và N(xj,yj) của đồ thị được tính theo công thức:
c. Mã hóa chu trình (cá thể - gen):
Chu trình được mã hóa bẳng mảng có thứ tự các số hiệu của đỉnh. Với đồ thị
đỉnh thì mảng có kích thước bằng n phần tử. Ví dụ chu trình của đồ thị 10 đỉnh:
Nguyễn Văn Tiến – CH1301109 Trang 13
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Ngoài ra mỗi chu trình cần phải có them thông số về chi phí của toàn bộ chu
trình đó. Chi phí này được tính bằng tổng độ dài tất cả các cạnh tọa nên chu trình
đó (dựa theo công thức tính chiều dài của các đỉnh).
Mỗi chu trình là 1 lời giải, trong giải thuật di truyền coi đó như một cá thể. Việc

tiến hóa về sau ta sẽ dựa trên tập chu trình khởi tạo ban đầu và tìm ra kết quả tốt
nhất sau một số thế hệ.
4.2. Khởi tạo quần thể
Quần thể ban đầu được khởi tọa bằng cách sinh ngẫu nhiêu các chu trình, số lượng
chu trình khởi tạo là một nửa số kích thước cá thể tối đa. Việc sinh ngẫu nhiên sử dụng
hàm đột biến. Số kích thước cá thể tối đa có thể tùy biến theo số đỉnh của đồ thị cần giải.
4.3. Lai ghép
Phương pháp lai ghép được thực hiện dựa trên 2 cá thể đầu vào:
Thực hiện lai ghép 1 điểm cắt với vị trí cắt là ngẫu nhiên:
- Cắt từ điểm p đến hết chu trình của C2 đưa vào chu trình mới, ví dụ ở đây chúng
ta sẽ lấy p = 5.
- Xét từ đầu đến cuối chu trình của C1, nạp dần các điểm chưa có trong con lai
theo thứ tự duyệt ta được một chu trình mới.
- Tính lại chi phí cho chu trình mới sinh.
Cách lai ghép này sẽ đảm bảo con lai mới là một chu trình thỏa mãn.
Thuật toán lai ghép:
Input: 2 cá thể cha mẹ
Nguyễn Văn Tiến – CH1301109 Trang 14
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Output: Cá thể con được lai ghép từ cha mẹ.
Bước 1: Khởi tạo cá thể con được kế thừa từ 1 phần của cá thể cha (hoặc mẹ).
Bước 2: Lặp qua từng gen của cá thể mẹ (hoặc cha):
Bước 2.1: Nếu gen đã tồn tại trong cá thể con thì thực hiện lại bước 2.
Bước 2.2: Nếu gen chưa tồn tại thì thực hiện đưa gen đó vào cá thể con.
4.4. Đột biến
Phương thức đột biến được thực hiện dựa trên 1 cá thể đầu vào:
Thực hiện đột biến bằng tráo đổi các điểm trên gen cho nhau. Số lần tráo đồi được
sinh ngẫu nhiên từ với tỉ lệ thấp ( từ 5% đến 10% chiều dài của chu trình), vị trí điểm tráo
cũng được sinh ngẫu nhiên trong quá trình chạy.
Thuật toán đột biến:

Input: Cá thể cha mẹ, tỉ lệ đột biến.
Output: Cá thể đột biến.
Bước 1: Tính số gen n sẽ đột biến dựa vào tỉ lệ đột biến.
Bước 2: Khởi tạo i = 0; Với i < n
Bước 2.1. Hoán đổi vị trí gen j và k trong cá thể cha mẹ.
Bước 2.2: i=i+1;
Bước 3: Trả về cá thể mới đột biến.
4.5. Chọn lọc tự nhiên.
Mặc dù qua mỗi thế hệ sẽ sinh ra nhiều cá thể mới, nhưng kích thước quần thể vẫn
cố định. Do vậy, việc chọn lọc tự nhiên sẽ được thực hiện nhằm đảm bảo tính cân
bằng của quẩn thể và cũng nhằm tránh các lỗi phát sinh về bộ nhớ khi kích thước quần
thể quá lớn.
Nguyễn Văn Tiến – CH1301109 Trang 15
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
[Số cá thể ở 1 thế hệ] = [Kích thước mặc định] + [Số cá thể mới sinh ra]
Cách thức chọn lọc cá thể được đánh giá dựa trên chi phí của mỗi chu trình. Cá thể
được chọn làm lời giải cuối cùng là cá thể có chi phí nhỏ nhất trong quần thể sau một
số thế hệ tiến hóa.
Ban đầu toàn bộ quần thể sẽ được sắp xếp tăng dần về chi phí và chỉ giữ lại những
cá thể thích nghi nhất (có chi phí nhỏ nhất). Tuy nhiên cách làm này có hạn chế với
những bộ dữ liệu lớn. Khi số thế hệ đạt đến một mức nhất đinh, việc tìm ra chu trình
nhỏ hơn ngày càng khó khăn nên tập cá thể trong quần thể gần như không biến đổi,
điều này làm giảm sự đa dạng nguồn gen cho tiến hóa ở các thế hệ sau.
Thuật giải chọn lọc tự nhiên:
Input: Quần thể chưa chọn lọc.
Output: Quần thể đã chọn lọc.
Bước 1: Sắp xếp quần thể theo tăng dần (giảm dần) về chi phí.
Bước 2: Loại bỏ các cá thể có chi phí cao và giữ lại các cá thể có chi phí thấp sao
cho kích thước quần thể không đổi.
4.6. Tiến hóa.

Với quần thể khởi tạo ban đầu, chúng được tiến hóa một cách ngẫu nhiên và thích
nghi với điều kiện chọn lọc, các cá thể kém thích nghi sẽ bị loại thải và các cá thể tốt sẽ
được giữa lại làm lời giải.
Việc tiến hóa diễn ra qua một số thế hệ, ở mỗi thế hệ ta thực hiện lai ghép và đột biến
ngẫu nhiên trên toàn quẩn thể.
- Lai ghép: ngẫu nhiên trong 50% số cá thể đứng đầu tiên của quần thể (Lựa chọn
cha mẹ ngẫu nhiên).
- Đột biến với tỉ lệ từ 5% - 10%.
Nguyễn Văn Tiến – CH1301109 Trang 16
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
CHƯƠNG 5: CÀI ĐẶT THỰC NGHIỆM
5.1. Cài đặt thử nghiệm
Ngôn ngữ cài đặt: Java
Môi trường: JDK 1.7
Giao diện chương trình:
Chương trình được cài đặt dùng để mô phỏng việc xây dựng đường đi từ một
đỉnh tới các đỉnh còn lại sao cho tổng chi phí đường đi là nhỏ nhất có thể.
Giao diện chương trình tương đối đơn giản, bao gồm một panel cho người dùng
xây dựng nên một tập hợp các điểm trên mặt phẳng hai chiều hay để biểu diễn tọa độ
của các điểm trên thành phố. Người dùng có thể lựa chọn các thông số như: Số lần lặp,
hay số cá thể của quần thể để việc thực hiện giải thuật di truyền và thực hiện click vào
button Tiến hóa.
Nguyễn Văn Tiến – CH1301109 Trang 17
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
Kết quả đạt được: Chương trình đã cài đặt thành công thuật giải di truyền để
giải quyết được bài toán TSP.
5.2. Đánh giá giải thuật và các đề xuất cải tiến trong tương lai.
Giải thuật đề xuất giải quyết bài toán TSP chỉ đơn thuần là sử dụng giải thuật di
truyền. Tuy có giải được bài toán nhưng vẫn còn một số mặt hạn chế như độ phức tạp còn
tương đối lớn O(n

2
), tìm kiếm chưa thật sự hiệu quả
Đề xuất cải tiến trong tương lai: ngoài việc chỉ sử dụng đơn thuần giải thuật di truyền
để giải bài toán, chúng ta nên kết hợp một số phương pháp của heuristic hay
metaheuristic để giải quyết bài toán nhanh hơn, giúp cải thiện lời giải và giảm chi phí tìm
kiếm hơn.
Nguyễn Văn Tiến – CH1301109 Trang 18
PGS.TS Đỗ Văn Nhơn TT&PPGQVD
TÀI LIỆU THAM KHẢO
[1] Đỗ Văn Nhơn, Bài giảng Algorithm_ProblemSolving(10-2013)
[2] Đỗ Văn Nhơn (2013). Slide bài giảng Phương pháp Toán trong tin học.
[3] Tim Capes (2011) Problem Solving in Computer Science.
[4] />[5] />Nguyễn Văn Tiến – CH1301109 Trang 19

×