ĐẠ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.
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ã
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
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
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
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:
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