Phát biểu một cách hình thức, với mọi nút trong đó là nút tiếp theo của : A* còn có tính chất hiệu quả một cách tối ưu optimally efficient với mọi hàm heuristic , có nghĩa là không có t
Trang 1NHẬN XÉT CỦA GIẢNG VIÊN
Trang 2
MỤC LỤC
LỜI CÁM ƠN - 1
LỜI NÓI ĐẦU - 2
CHƯƠNG 1 : BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT - 3
I Giới thiệu bài toán - 3
II Xây dựng giải pháp cho vấn đề - 3
CHƯƠNG 2 : GIẢI THUẬT DI TRUYỀN - 11
I Tổng quan về thuật giải di truyền - 11
II Các thao tác cơ bản: - 12
1 Mã hóa: - 12
2 Phát sinh quần thể ban đầu: - 13
3 Hàm đánh giá và hàm thích nghi: - 13
4 Các toán tử di truyền: - 14
5 Các tham số của thuật giải: - 15
III Các toán tử và kỹ thuật di truyền nâng cao - 16
1 Thể lưỡng bội (Diploidy), thể trội (Dominicance) và thể khuyết (Abeyance): - 16
2 Thể đa bội (Multiploid): - 18
3 Một số toán tử vi mô tái thiết lập thứ tự: - 19
4 Vùng thích nghi (Niche) và sự hình thành loài (Speciation): - 23
5 Tối ưu hóa đa mục tiêu: - 30
6 Tối ưu tổ hợp: - 31
CHƯƠNG 3: BÀI TOÁN PHÁT THƯ TP.HCM - 32
I Giới thiệu Bưu Điện Thành Phố: - 32
II Bài toán lấy thư hằng ngày: - 34
KẾT LUẬN - 44
TÀI LIỆU THAM KHẢO - 45
Trang 3LỜI CÁM ƠN
Đầu tiên, em xin chân thành cám ơn thầy PGS.TS Đỗ Văn Nhơn đã truyền đạt hết sức nhiệt tình cho chúng em những kiến thức quý báu trong môn Thuật toán và phương pháp giải quyết vấn đề để em hoàn thành đề tài này
Em cũng xin gửi lời cám ơn chân thành đến các thầy cô trong trường Đại học Công Nghệ Thông Tin đã tận tình giúp đỡ em trong thời gian học vừa qua
Xin cảm ơn tất bạn bè đã và đang động viên, giúp đỡ tôi trong quá trình học tập và hoàn thành đề tài này
TPHCM, ngày 09 tháng 10 năm 2014
Lớp CH08 Học viên thực hiện
Huỳnh Thanh Việt
Trang 4LỜI NÓI ĐẦU
Cuộc sống của chúng ta luôn có rất nhiều vấn đề được đặt ra đòi hỏi ta cần phải giải quyết Máy tính giúp chúng ta giải quyết các vấn đề một cách chính xác và thông minh
Sau khi hoàn thành môn học Thuật toán và phương pháp giải quyết vấn đề do thầy
Đỗ Văn Nhơn phụ trách em đã nắm bắt được một số kiến thức quan trọng về thuật toán và phương pháp để giải quyết những bài toán trong thực tế
Trong bài báo cáo này em xin được nêu một vài điểm tìm hiểm bài toán tìm đường đi ngắn nhất và thuật giải di truyền Từ thuật giải di truyền em đã xây dựng một chương trình demo giải bài toán phát thư khu vực TPHCM
Trang 5CHƯƠNG 1 : BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
I Giới thiệu bài toán
Bài toán đường đi ngắn nhất trong mạng giao thông là bài toán tìm một đường đi giữa hai điểm sao cho tổng các trọng số của các cạnh tạo nên đường đi đó là nhỏ nhất Hay nói một cách toán học là: Cho đơn đồ thị liên thông, có trọng số G=(V,E) Tìm khoảng cách d(a,b) từ một đỉnh a cho trước đến một đỉnh b bất kỳ của G và tìm đường đi ngắn nhất từ a đến b
II Xây dựng giải pháp cho vấn đề
Bước 1: Mô hình hóa vấn đề
o Chọn lọc vấn đề và chuẩn hóa DIK + Xác định cơ sở DIK cho vấn đề
Con đường được hiểu là đường đi từ giao lộ này đến giao lộ kế nó
Độ dài, 1 chiều/ 2 chiều
o Mô tả giả thiết của vấn đề
Điểm đầu/ xuất phát: giao lộ (bắt đầu)
Điểm cuối: Đích đến là 1 giao lộ nào đó
o Mô tả mục tiêu hay kết luận của vấn đề : Đường đi ngắn nhất từ điểm đầu đến điểm cuối
o Mô tả các điều kiện hay ràng buộc liên quan: Không có
Trang 6 Xây dựng mô hình:
o Mô hình cho DIK
Được mô hình hóa bằng đồ thị có hướng, có trọng số dương Trong đó:
Các đỉnh: là các giao lộ
Cung: là đường 1 chiều đi từ đỉnh này đến đỉnh kia
Trọng số: Độ dài con đường (độ dài cạnh)
Trang 7 Chọn lựa phương pháp giải quyết vấn đề dựa trên những phương pháp đã biết: Dùng thuật giải Dijkstra
Ý tưởng giải thuật:
o Ta xác định đường đi ngắn nhất từ đỉnh nguồn s tới các đỉnh còn lại,qua
các bước, mỗi bước ta xác định đường đi ngắn nhất từ nguồn tới một đỉnh
o Ta lưu các đỉnh đã xác định đường đi ngắn nhất từ nguồn tới chúng vào
tập S Ban đầu tập S chỉ chứa một đỉnh nguồn s
o Chúng ta sẽ gọi đường đi từ nguồn s tới đỉnh v là đường đi đặc biệt, nếu
đường đi đó chỉ đi qua các đỉnh trong S, tức là các đường đi (s = v0,
v1,…,vk-1,vk = v), trong đó v0, v1, …vk-1 ∈ S
o Một mảng D được sử dụng để lưu độ dài của đường đi đặc biệt, D[v] là độ
dài đường đi đặc biệt từ nguồn tới v
o Ban đầu vì S chỉ chứa một đỉnh nguồn s, nên ta lấy D[s] = 0, và D[v] =
c(s,v) với mọi v ≠ s
o Tại mỗi bước ta sẽ chọn một đỉnh u không thuộc S mà D[u] nhỏ nhất và
thêm u vào S, ta xem D[u] là độ dài đường đi ngắn nhất từ nguồn tới u
(sau này ta sẽ chứng minh D[u] đúng là độ dài đường đi ngắn nhất từ
nguồn tới u) Sau khi thêm u vào S, ta xác định lại các D[v] với v ở ngoài
S nếu độ dài đường đi đặc biệt qua đỉnh u (vừa được chọn) để tới v nhỏ
hơn D[v] thì ta lấy D[v] là độ dài đường đi đó
o Bước trên đây được lặp lại cho tới khi S gồm tất cả các đỉnh của đồ thị, và
lúc đó mảng D[u] sẽ lưu độ dài đường đi ngắn nhất từ nguồn tới u, với mọi
Trang 8while (V – S ≠ Ǿ ) {
(2) chọn đỉnh u ∈ V - S mà D[u] nhỏ nhất; S = S U {u}; // bổ sung
u vào S for ( mỗi v không ∈ V - S) // xác định lại D[v] (3) if (D[u] + c(u,v)
< D[v]) D[v] = D[u] + c(u,v);
} }
Bước 3: Chứng minh tính đúng đắn :
Chúng ta sẽ chứng minh rằng, khi kết thúc thuật toán, tức là khi S = V, thì D[u] sẽ là
độ dài đướng đi ngắn nhất từ đỉnh nguồn tới u với mọi u ∈ S = V
Điều này được chứng minh bằng quy nạp theo cỡ của tập S Khi S chỉ chứa đỉnh nguồn s thì D[s] = 0, đương nhiên giả thiết quy nạp đúng
Giả sử rằng tại một thời điểm nào đó ta đã có D[a] là độ dài đường đi ngắn nhất từ nguồn tới a, với mọi đỉnh a ∈ S, và u là đỉnh được chọn bởi lệnh (2) trong thuật toán để
bổ sung vào S Ta cần chứng minh rằng khi đó D[u] là độ dài đường đi ngắn nhất từ nguồn
tới u Mỗi khi bổ xung thêm vào tập S một đỉnh mới (lệnh(2)), thì các đỉnh v còn lại không nằm trong S được xác định lại D[v] bởi lệnh (3)
Từ đó bằng quy nạp, dễ dàng chứng minh được nhận xét sau: Nếu a là đỉnh bất kỳ trong S và b là đỉnh bất kỳ ngoài S thì D[b] <= D[a] + c(a,b)
Giả sử ta có một đường đi bất kỳ từ nguồn s tới u, độ dài của nó được ký hiệu là d(s,u) Giả sử trên đường đi đó a là đỉnh sau cùng ở trong S và b là đỉnh đầu tiên ở ngoài S như trong hình vẽ sau:
Trang 9Theo cách chọn đỉnh u (lệnh(2)), D[u] là nhỏ nhất trong số các đỉnh ở ngoài S Vì vậy, D[u] <= D[b] Theo nhận xét đã đưa ra ở trên, D[b] <= D[a] + c(a,b) Mặt khác, theo giả thiết quy nạp, D[a] là độ dài đường đi ngắn nhất từ nguồn tới a Do đó, nếu ký hiệu d(s,a) là độ dài đoạn đường từ s tới a, còn d(b,u) là độ dài đoạn đường từ b tới u, ta có: D[u] <= D[b]
không nằm trong S, D[v] có thể bị giảm đi bởi lệnh (3) Vì vậy để cho lệnh (2) được
thực hiện hiệu quả, ta có thể sử dụng hàng ưu tiên P
để cài đặt tập đỉnh V - S với khoá của đỉnh v ∈ V - S là D[v]
Chúng ta có thuật toán sau:
D[v] = D[u] + c(u,v); (6) DecreaseKey(P,v,D[v]);
} }
}
Trang 10Bước 4: Phân tích thuật toán / thuật giải
Lệnh lặp (1) cần thời gian O(|V|), trong đó |V| ký hiệu số đỉnh của đồ thị Ta có thể khởi tạo ra hàng ưu tiên P (lệnh(2)) với thời gian là O(|V|)
Số lần lặp trong lệnh lặp (3) là |V|
Trong mỗi lần lặp, phép toán DeleteMin đòi hỏi thời gian O(log|V|); do đó, tổng thời gian thực hiện các lệnh (4) là O(|V|log|V|)
Tổng số lần lặp trong các lệnh lặp (5) trong tất cả các lần lặp của lệnh lặp (3) tối đa là
số cung của đồ thị |E|
Trong mỗi lần lặp đó, nhiều nhất là một phép toán DecreaseKey (lệnh(6)) được thực hiện
Phép toán DecreaseKey chỉ cần thời gian O(log(|V|) khi ta cài đặt hàng ưu tiên P bởi cây thứ tự bộ phận Vì vậy, thời gian thực hiện các lệnh lặp (5) trong các lần lặp của lệnh lặp (3) là O(|E|log|V|)
Tổng kết lại, thời gian chạy của thuật toán Dijkstra, nếu ta sử dụng hàng ưu tiên được cài đặt bởi cây thứ tự bộ phận, là O(|V|log|V| + |E|log|V|)
Do đó thuật toán có độ phức tạp O(n2)
Bước 5: Nghiên cứu cải thiện, nâng cao hiệu quả thuật giải
Cải tiến: áp dụng thuật giải A*
Mô tả:
A* lưu giữ một tập các lời giải chưa hoàn chỉnh, nghĩa là các đường đi qua đồ thị, bắt
đầu từ nút xuất phát Tập lời giải này được lưu trong một hàng đợi ưu tiên (priority queue)
Thứ tự ưu tiên gán cho một đường đi được quyết định bởi hàm Trong đó, là chi phí của đường đi cho đến thời điểm hiện tại, nghĩa là tổng trọng số của các cạnh đã đi qua là hàm đánh giá heuristic về chi phí nhỏ nhất để đến đích từ Ví
dụ, nếu "chi phí" được tính là khoảng cách đã đi qua, khoảng cách đường chim bay giữa hai điểm trên một bản đồ là một đánh giá heuristic cho khoảng cách còn phải đi tiếp Hàm
có giá trị càng thấp thì độ ưu tiên của càng cao (do đó có thể sử dụng một cấu trúc heap tối thiểu để cài đặt hàng đợi ưu tiên này)
Trang 11if x = đích return p
hàm "Tập hợp đóng" (đóng) lưu giữ tất cả các nút cuối cùng của p (các nút mà các đường
đi mới đã được mở rộng tại đó) để tránh việc lặp lại các chu trình (việc này cho ra thuật toán tìm kiếm theo đồ thị) Đôi khi hàng đợi được gọi một cách tương ứng là "tập mở" Tập đóng
có thể được bỏ qua (ta thu được thuật toán tìm kiếm theo cây) nếu ta đảm bảo được rằng tồn tại một lời giải hoặc nếu hàm các_đường_đi_tiếp_theo được chỉnh để loại bỏ các chu trình
Tính đầy đủ:
A* là thuật toán đầy đủ (complete) theo nghĩa rằng nó sẽ luôn luôn tìm thấy một lời
giải nếu bài toán có lời giải
Nếu hàm heuristic có tính chất thu nạp được (admissible), nghĩa là nó không bao
giờ đánh giá cao hơn chi phí nhỏ nhất thực sự của việc đi tới đích, thì bản thân A* có tính
chất thu nạp được (hay tối ưu) nếu sử dụng một tập đóng Nếu không sử dụng tập đóng thì hàm phải có tính chất đơn điệu (hay nhất quán) thì A* mới có tính chất tối ưu Nghĩa là nó
Trang 12không bao giờ đánh giá chi phí đi từ một nút tới một nút kề nó cao hơn chi phí thực Phát biểu một cách hình thức, với mọi nút trong đó là nút tiếp theo của :
A* còn có tính chất hiệu quả một cách tối ưu (optimally efficient) với mọi hàm
heuristic , có nghĩa là không có thuật toán nào cũng sử dụng hàm heuristic đó mà chỉ phải
mở rộng ít nút hơn A*, trừ khi có một số lời giải chưa đầy đủ mà tại đó dự đoán chính xác chi phí của đường đi tối ưu
Độ phức tạp:
Độ phức tập thời gian của A* phụ thuộc vào đánh giá heuristic Trong trường hợp xấu nhất, số nút được mở rộng theo hàm mũ của độ dài lời giải, nhưng nó sẽ là hàm đa thức
khi hàm heuristic h thỏa mãn điều kiện sau:
Trong đó là heuristic tối ưu, nghĩa là hàm cho kết quả là chi phí chính xác để đi từ
tới đích Nói cách khác, sai số của h không nên tăng nhanh hơn logarit của "heuristic hoàn hảo" - hàm trả về khoảng cách thực từ x tới đích
Trang 13CHƯƠNG 2 : GIẢI THUẬT DI TRUYỀN
I Tổng quan về thuật giải di truyền
Thuật giải di truyền là một kỹ thuật của khoa học máy tính được dùng để tìm kiếm lời giải cho các bài toán tối ưu tổ hợp hay các bài toán chưa có thuật toán để tìm chính xác lời giải Thuật giải di truyền sử dụng ngôn ngữ máy tính để mô phỏng lại quá trình tiến hóa
tự nhiên của một tập các đối tượng trừu tượng (gọi là quần thể) Mỗi đối tượng trừu tượng (gọi là các nhiễm sắc thể) đại diện cho một giải pháp khả dĩ (gọi là cá thể) của bài toán tối
ưu hóa Ngoài ra, mỗi giải pháp thường liên quan đến nhiều yếu tố, gọi là các biến Vì thế, các nhiễm sắc thể tương ứng cũng gồm nhiều phần tử, mỗi phần tử được gọi là một gen
Tập các giải pháp này sẽ tiến triển theo hướng chọn lọc những giải pháp tốt hơn Việc xác định giải pháp nào tốt hơn được thực hiện bởi một hàm gọi là hàm mục tiêu hoặc hàm thích nghi Các giải pháp tốt được kết hợp với nhau với hi vọng sẽ tạo ra các giải pháp tốt hơn
Quá trình tiến hóa bắt đầu từ một tập các cá thể ngẫu nhiên, và do đó, hầu hết chúng không phải là các lời giải tốt Qua từng thế hệ, độ thích nghi của từng cá thể được xác định Các cá thể được chọn lọc theo cách có định hướng (chọn cá thể tốt theo độ thích nghi) từ tập hiện thời Sau đó, các cá thể này được biến đổi bằng cách lai ghép hay đột biến để tạo ra các
cá thể mới Việc này được thực hiện lặp đi lặp lại qua các thế hệ tiếp theo và cuối cùng, giải thuật cho ra lời giải tối ưu hoặc gần tối ưu
Một thuật giải di truyền có thể chia ra làm 5 bước, được mô tả qua thủ tục sau:
procedure GeneticAlgorithms
begin
T = 0; // Thế hệ thứ T Khởi tạo quần thể P(T);
Đánh giá độ thích nghi cho các cá thể trong P(T);
while (not Điều_Kiện_Kết_Thúc) dobegin
Trang 14T = T + 1;
Chọn lọc P(T) từ P(T-1);
Kết hợp các cá thể (bằng lai ghép & đột biến) trong P(T);
Đánh giá độ thích nghi cho các cá thể trong P(T);
end end
Các toán tử và kỹ thuật được áp dụng trong thủ tục trên sẽ được mô tả chi tiết hơn trong các phần tiếp theo
II Các thao tác cơ bản:
Để giải một bài toán tối ưu bằng cách áp dụng thuật giải di truyền, ta thường phải giải quyết 5 vấn đề:
Biểu diễn di truyền hay chọn cách mã hóa các lời giải của bài toán
Phát sinh quần thể ban đầu P(0)
Chọn hàm đánh giá để xác định mức độ thích nghi của lời giải
Áp dụng các toán tử di truyền (lai ghép, đột biến) để tạo ra các cá thể mới
Xác định các tham số đầu vào của thuật giải Chẳng hạn như kích thước quần thể, xác suất lai ghép, xác suất đột biến,…
1 Mã hóa:
Mã hóa là việc xác định cách thức biểu diễn di truyền đối với lời giải của bài toán Việc mã hóa phụ thuộc nhiều vào từng bài toán cụ thể Một số cách biểu diễn thông dụng:
Biểu diễn nhị phân: mỗi nhiễm sắc thể là một dãy số nhị phân Mỗi gen có thể được
mã hóa nhờ một số lượng bit nào đó
Biểu diễn theo số tự nhiên: mỗi nhiễm sắc thể là một dãy các số tự nhiên Phương pháp này được dùng nhiều trong các bài toán tối ưu tổ hợp hay hoán vị
Biểu diễn số dấu chấm động: Mỗi gen trong nhiễm sắc thể được mã hóa bởi một số ở dạng dấu chấm động Cách biểu diễn này giải quyết được một số nhược điểm của biểu diễn nhị phân và biểu diễn được miền giá trị lớn
Trang 15 Một số cách khác: Biểu diễn số ở hệ Octal (hay Hexa), biểu diễn bởi chuỗi ký tự, hay kết hợp các dạng trên
Cách biểu diễn Nhị phân Số tự nhiên Số thực Cách khác
2314506 (Octal) ABCDE (Hexa / chuỗi)
Một số cách biểu diễn nhiễm sắc thể
2 Phát sinh quần thể ban đầu:
Thông thường, việc khởi tạo các cá thể trong quần thể ở thế hệ đầu tiên là phát sinh ngẫu nhiên và/hoặc có thêm một số ràng buộc (chẳng hạn sinh ra một hoán vị) Do đó, hầu hết chúng có độ thích nghi thấp hay không phải là lời giải tối ưu Trong một số trường hợp, việc phát sinh ngẫu nhiên có thể làm quá trình tiến hóa chậm (chẳng hạn như với bài toán người du lịch)
Một cách khởi tạo khác cũng hay được áp dụng, đó là sử dụng phương pháp tham lam (greedy) Tùy vào đặc trưng của từng bài toán cụ thể, ta có thể phát sinh ra các cá thể sao cho có khả năng gần với lời giải nhất có thể Ví dụ, với bài toán người du lịch, tại gen thứ k, ta chọn đỉnh gần nhất với đỉnh trong gen thứ k-1 và chưa được chọn
3 Hàm đánh giá và hàm thích nghi:
Trong hầu hết các bài toán áp dụng thuật giải di truyền, ta quy về việc tối ưu cực đại
(hoặc cực tiểu) một hàm một hoặc nhiều biến Khi đó, độ tốt của cá thể là giá trị hàm tương
ứng của cá thể đó Như vậy, nếu chọn một cá thể là nghiệm của bài toán thì cá thể càng tốt
khi giá trị hàm càng gần với giá trị tối ưu (cực đại hoặc cực tiểu) càng tốt Hàm để đánh giá
độ tốt của cá thể hay lời giải gọi là hàm mục tiêu
Tuy nhiên, để chọn lọc các cá thể di truyền cho thế hệ tiếp theo, ta cần phải biến đổi
hàm mục tiêu sang hàm thích nghi Điều này cũng tương tự như trong tự nhiên, các cá thể
thích nghi tốt với môi trường sống sẽ được bảo tồn cho thế hệ kế tiếp
Độ thích nghi của cá thể được định nghĩa là khả năng cá thể đó được chọn lọc vào
thế hệ sau hoặc được chọn cho việc lai ghép, tạo ra cá thể mới
Trang 16Hàm mục tiêu là cơ sở để đánh giá độ thích nghi của các cá thể Việc ánh xạ từ hàm mục tiêu sang hàm thích nghi tùy thuộc vào mục đích của bài toán thực tế
4 Các toán tử di truyền:
Chọn lọc là quá trình chọn một cách ngẫu nhiên các cặp cá thể trong quần thể để
thực hiện việc lai tạo ra cá thể con cho thế hệ sau Mục đích của chọn lọc là chú trọng vào các cá thể có độ thích nghi cao với hi vọng rằng, các con của chúng sẽ có độ thích nghi cao hơn nữa Một số cơ chế chọn lọc thường được áp dụng:
Chọn lọc theo vòng Roulette (Roulette wheel selection)
Chọn lọc cạnh tranh (Tournament selection)
Chọn lọc thứ tự (Rank selection)
Elitism selection
Lai ghép là quá trình lấy hai giải pháp bố - mẹ và sinh ra con của chúng Sau quá
trình chọn lọc (sinh sản), quần thể được làm giàu bởi các cá thể tốt hơn Lai ghép tạo ra bản sao của các cá thể tốt chứ không tạo ra các cá thể mới vì lai ghép chỉ sao chép giá trị gen
giữa cặp cá thể bố - mẹ để tạo ra cá thể con Toán tử lai ghép được áp dụng vào tổ hợp sinh
sản với hi vọng tạo ra được thế hệ con tốt hơn
a Lai ghép đa điểm b Lai ghép đồng nhất c Lai ghép thứ tự
Một số kiểu lai ghép
Các kỹ thuật lai ghép thường được áp dụng:
Trang 17 Lai ghép một điểm (Single-point Crossover)
Lai ghép đa điểm (Multi-point Crossover)
Lai ghép đồng nhất (Uniform Crossover)
Lai ghép chu trình (CX – Cycle Crossover)
Lai ghép thứ tự (OX – Ordered Crossover)
Lai ghép so khớp từng phần (PMX – Partially Matched Crossover)
Đột biến là thay đổi một cách ngẫu nhiên giá trị của một hoặc vài gen trong nhiễm
sắc thể Nếu lai ghép được xem là khám phá các giải pháp hiện thời để tìm ra các giải pháp
tốt hơn thì đột biến được cho là để giúp thăm dò toàn bộ không gian tìm kiếm Đột biến được xem như một toán tử nền tảng để duy trì tính đa dạng di truyền trong quần thể Đột
biến giúp thoát khỏi cái bẫy của cực tiểu cục bộ và duy trì tính đa dạng trong quần thể
Có nhiều dạng đột biến khác nhau tùy thuộc vào cách mã hóa hay biểu diễn của nhiễm sắc thể Sau đây là một số kỹ thuật đột biến thường dùng:
Đột biến đảo bit (Flipping): Thay thế giá trị của gen bằng một giá trị khác
Đột biến đổi chổ (Interchanging): Hoán vị giá trị của hai gen
Đột biến đảo ngược (Reversing): Đảo ngược một đoạn gen trong nhiễm sắc thể
Parent 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0
Child 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0
Một số dạng đột biến
5 Các tham số của thuật giải:
Kích thước quần thể (PopSize) là số lượng cá thể trong mỗi thế hệ tiến hóa Giá trị
của nó phụ thuộc vào sự phức tạp của từng bài toán cụ thể Kích thước quần thể lớn có thể giúp khám phá nhanh toàn bộ không gian tìm kiếm Tuy nhiên, nó yêu cầu chi phí cho việc tính toán, bộ nhớ và cả thời gian thực thi Trong thực tế, giá trị này thường được chọn là 100
Xác suất lai ghép (pc) là tham số mô tả mức độ thường xuyên mà phép lai ghép được thực hiện Nếu pc = 100% thì mọi cá thể con đều được tạo ra từ việc lai ghép Điều này
Trang 18đôi khi là không tốt vì chúng ta muốn lưu giữ một phần của quần thể trước nhằm duy trì tính đa dạng của quần thể Nếu pc = 0% thì thế hệ sau chỉ là bản sao y nguyên của thế hệ trước, có nghĩa là không có sự tiến hóa Số lượng cá thể tham gia vào quá trình lai ghép là: pc * PopSize
Xác suất đột biến (pm) là tham số quyết định mức độ thường xuyên mà các phần tử của nhiễm sắc thể bị đột biến Đột biến ngăn thuật giải di truyền rơi vào cực trị cục bộ Giá trị này càng lớn thì càng nhiều cá thể bị biến đổi làm mất tính ổn định của quần thể Số lượng gen bị đột biến trong toàn bộ quần thể sẽ là: pm * PopSize * kích thước nhiễm sắc thể
III Các toán tử và kỹ thuật di truyền nâng cao
Phần trên hệ thống lại một cách khái quát các khái niệm và một số kỹ thuật di truyền
cơ bản: sinh sản, lai ghép và đột biến Chúng hoạt động tốt trong nhiều bài toán thực tế Tuy nhiên, để cải thiện sức mạnh của thuật giải di truyền, chúng ta cần có các kỹ thuật và toán tử phức tạp hơn để biểu diễn được hầu hết các kiểu hình tự nhiên
Trong phần này, chúng tôi trình bày một số kỹ thuật biểu diễn mức thấp như thể trội, thể lưỡng bội và các toán tử đảo, sao chép, xóa bỏ, chia tách Các toán tử cấp cao như sự thích nghi môi trường sống (niche), sự hình thành loài (speciation) và các kỹ thuật tối ưu nhiều mục tiêu cũng được khảo sát chi tiết Đây cũng chính là phần chính của báo cáo
1 Thể lưỡng bội (Diploidy), thể trội (Dominicance) và thể khuyết (Abeyance):
Trong các phần trên, chúng ta chỉ xem xét các kiểu hình đơn giản nhất tồn tại trong
tự nhiên, đó là nhiễm sắc thể đơn bội Một nhiễm sắc thể đơn bội chỉ chứa một tập các gen
nghĩa là một alen chiếm giữ một vị trí Tự nhiên chứa đựng nhiều tổ chức đơn bội, nhưng
hầu hết chúng có dạng sống không phức tạp
Khi tự nhiên muốn kiến tạo(xây dựng) một dạng sống phức tạp hơn hay dạng sống
động vật, một cấu trúc nhiễm sắc thể phức tạp hơn là cần thiết, đó là nhiễm sắc thể lưỡng
bội hoặc nhiễm sắc thể kép Ở dạng lưỡng bội, một kiểu gen chứa một hoặc nhiều cặp nhiễm
sắc thể, mỗi cặp chứa thông tin cho cùng một chức năng
Xét cấu trúc nhiễm sắc thể lưỡng bội sau, với các kí tự khác nhau đại diện cho các alen khác nhau (giá trị chức năng gen khác nhau):
Trang 19Một cách tiếp cận để loại bỏ xung đột dư thừa này là thông qua một cơ chế gọi là gen
trội Tại một vị trí, một alen (gọi là gen trội) sẽ được ưu tiên hơn một alen thay thế khác (gọi là gen lặn) Có thể nói rằng, một alen là trội nếu nó được biểu hiện khi đi cặp với một
vài alen khác Biểu hiện nghĩa là nó xuất hiện trong các kiểu hình
Trong ví dụ trên, nếu giả sử tất cả các kí tự hoa là trội và tất cả các kí tự thường là lặn thì kiểu hình được biểu thị của nhiễm sắc thể ví dụ trên sẽ là:
P q r S t
→ P Q R S t (gen được biểu hiện lên kiểu hình)
p Q R S t Gen trội luôn luôn được biểu hiện và gen lặn chỉ biểu hiện khi nó đi cặp với cùng một gen lặn Gen trội được biểu thị trong các phần tử dị hợp (Pp P) hoặc đồng hợp (SS S)
và gen lặn được biểu thị chỉ khi là đồng hợp lặn (tt t)
Do đó trội là một toán tử di truyền được sử dụng để tính toán kiểu hình các giá trị alen
có thể tại một vị trí gen
Nhiễm sắc thể lưỡng bội cung cấp sự thuận lợi cho các cá thể khi môi trường thay đổi qua một khoảng thời gian Việc có 2 gene cho phép hai giải pháp khác nhau được nhớ (ghi lại) và chuyển qua cho con cháu Một trong những gen này là trội (nghĩa là nó sẽ biểu hiện lên kiểu hình), trong khi những gen khác là lặn
Nếu điều kiện môi trường thay đổi, sự trội có thể hoán chuyển, do đó một gen khác sẽ là trội Sự hoán chuyển này có thể xảy ra nhanh hơn mức có thể nếu cơ chế tiến hóa phải thay đổi gen Cơ chế này là lý tưởng nếu môi trường chuyển giữa hai trạng thái (chẳng hạn kỷ
Trang 20băng hà và không phải kỷ băng hà) Thuận lợi chính của lưỡng bội là nó cho phép sự đa dạng rộng lớn hơn của các alen được giữ lại trong quần thể so với đơn bội Hiện tại thì có hại nhưng tiềm năng là các alen hữu dụng có thể vẫn được duy trì, nhưng ở trạng thái lặn Trong thuật giải di truyền, lưỡng bội có thể hữu ích trong các ứng dụng trực tuyến, các
hệ thống có thể chuyển giữa các trạng thái khác nhau Lưỡng bội chiếm một vị trí quan trọng trong thuật giải di truyền Ngoài việc mang hai lần thông tin di truyền, nhiễm sắc thể phải mang thông tin trội
2 Thể đa bội (Multiploid):
Một thuật giải di truyền đa bội kết hợp một vài ứng viên (candidates) cho mỗi gen trong một kiểu gen duy nhất, và sử dụng một vài cơ chế dạng trội để quyết định gen nào sẽ
được kích hoạt trong kiểu hình
Trong tự nhiên, chúng ta tìm thấy nhiều tổ hợp có kiểu gen đa bội, các tổ hợp này chứa nhiều bộ nhiễm sắc thể với một số cơ chế để xác định gen nào được biểu hiện, nghĩa là trội tại một vị trí gen nào đó Cơ chế này chủ yếu là nâng cao tính đa dạng của quần thể, các gen hiện tại chưa được sử dụng vẫn còn là loại gen đa bội, chưa được biểu hiện, nhưng được bảo vệ khỏi sự tuyệt chủng cho đến khi chúng trở nên hữu ích trong các thế hệ sau
Một kiểu gen đa bội, thể hiện trong hình dưới, một nhiễm sắc thể có p=3 thành phần, mỗi thành phần có chiều dài L và tương tự như một nhiễm sắc thể đơn bội Để xác định gen
nào được biểu hiện lên kiểu hình, ta dùng một mặt nạ, chỉ ra gen của thành phần nào trong p
thành phần là trội tại một vị trí cụ thể trong nhiễm sắc thể Thông tin này được giải mã thành kiểu hình như sau:
Đa bội loại 1 (multiploid type 1)
Trang 21Đa bội loại 2 (multiploid type 2)
Một giá trị alen a tại điểm i trong mặt nạ biểu thị rằng gen thứ i trong thành phần ứng với chỉ số a trở thành gen thứ i trong kiểu hình Chiều dài của mặt nạ có thể ngắn hơn chiều dài của nhiễm sắc thể, như hình Đa bội loại 2 ở trên
Trong hình trên, nếu chiều dài của mặt nạ là m và nhiễm sắc thể có chiều dài L, một gen tại vị trí “i” trong mặt nạ với giá trị là “a” chỉ ra rằng tập L/m gen liên tục thứ i trong thành phần thứ a của nhiễm sắc thể là trội
3 Một số toán tử vi mô tái thiết lập thứ tự:
3.1 Toán tử đảo (inversion):
Đảo là toán tử một ngôi, một trong các toán tử di truyền thực hiện việc tái sắp xếp thứ tự Toán tử đảo ngược là cơ chế tự nhiên chủ yếu để tái mã hóa một vấn đề Trong toán
tử đảo ngược, hai điểm đánh dấu và chiều dài của nhiễm sắc thể được cho trước, đoạn nhiễm sắc thể giữa hai điểm đánh dấu bị cắt và đảo ngược Để rõ ràng hơn, ta xét hai nhiễm sắc thể có chiều dài 8, hai điểm đánh dấu được chọn ngẫu nhiên (là 2 và 6) như sau:
Sử dụng toán tử đảo, ta có kết quả:
Toán tử đảo có thể sử dụng như một toán tử đột biến Nó có một số biến thể sau:
Đảo tuyến tính
Đảo tuyến tính + cuối
Đảo liên tục
Trang 22 Đảo khối
Đảo tuyến tính là phép đảo nhƣ đã thấy ở ví dụ trên Đảo tuyến tính+ cuối là đảo tuyến tính với xác suất đƣợc chỉ ra là 0.75 Khi đảo tuyến tính không đƣợc thực hiện, đảo cuối có thể đƣợc thực hiện với xác suất 0.125 tại đầu trái hoặc đầu phải của chuỗi Đảo tuyến tính + cuối khác đảo tuyến tính ở việc phá vỡ các alen gần trung tâm của chuỗi và các alen nằm ở cuối chuỗi một cách không cân đối Trong chế độ đảo liên tục, phép đảo đƣợc áp dụng với một xác suất đảo cụ thể Pi, đối với mỗi cá thể mới khi nó đƣợc tạo Trong chế độ đảo khối một nửa quần thể mới đƣợc tạo đƣợc trải qua việc đảo đồng nhất
3.2 Chia tách và dịch chuyển:
Xét quá trình hình thành giao tử khi có nhiều hơn một cặp nhiễm sắc thể trong kiểu gen Khi nó hình thành một giao tử, ta chọn ngẫu nhiên một trong mỗi nhiễm sắc thể đơn bội Quá trình chọn lọc ngẫu nhiên này đƣợc gọi là sự chia tách – phá vỡ mọi liên kết tồn tại giữa các gen trên các nhiễm sắc thể khác nhau Nó cho thấy rằng, sự chia tách khai thác cách tổ chức phù hợp của các nhiễm sắc thể và quan trọng là chú ý vào cách mà nhiễm sắc thể đƣợc tổ chức theo một cách thích hợp Toán tử dịch chuyển đƣợc sử dụng cho mục đích này Toán tử dịch chuyển có thể đƣợc xem nhƣ một toán tử lai ghép liên nhiễm sắc thể Toán tử này đƣợc thực thi bằng cách nối các alen với tên các gen của chúng, để có thể xác định ý nghĩa của chúng khi chúng đƣợc xáo trộn từ nhiễm sắc thể này sang nhiễm sắc thể khác bởi toán tử dịch chuyển
3.3 Nhân bản và xóa:
Có một cặp toán tử mức thấp khác thực hiện việc tìm kiếm theo thuật giải di truyền
Sự sao chép trong nội bộ nhiễm sắc thể thực hiện bằng cách nhân bản một gen nào đó và đặt
nó cùng với tổ tiên của nó lên nhiễm sắc thể Việc xóa bằng cách loại bỏ một gen trùng khỏi nhiễm sắc thể Tỷ lệ đột biến có thể đƣợc điều khiển một cách hiệu quả bởi các toán tử này Khi tỷ lệ đột biến không đổi và nhân bản trong nhiễm sắc thể tạo ra k bản sao của một gen nào đó thì xác suất đột biến hiệu quả cho gen này đƣợc nhân với k Mặt khác, khi việc xóa xảy ra, tỷ lệ đột biến hiệu quả cũng giảm
3.4 Xác định giới tính (Sexual Determination):
Ban đầu, trong sơ đồ kết cặp, ta đƣợc phép kết cặp bất kỳ hai cá thể nào và kết quả di
Trang 23genotype) Xác định giới tính được xử lý khác nhau trong các loài khác nhau Tuy nhiên, chỉ cần xét ví dụ trên con người là đủ để hiểu về sự xác định giới tính Giới tính được xác định trong một người bởi một trong 23 cặp nhiễm sắc thể của người Nữ có hai nhiễm sắc thể đều
là X và nam có hai nhiễm sắc thể khác nhau là X và Y Trong quá trình hình thành giao tử (gametogenesis process), nam giới hình thành tinh trùng (mang nhiễm sắc thể X hoặc Y) và
nữ giới sở hữu trứng (mang nhiễm sắc thể X)
Lúc thụ tinh, nhiễm sắc thể X sinh bởi người nữ được kết hợp với nhiễm sắc thể X hoặc
Y sinh ra bởi người nam Vì thế, phương pháp xác định giới tính trên người rất đơn giản Chiến lược tương tự cũng được áp dụng để xác định giới tính trong tìm kiếm theo thuật giải
di truyền Sự thiết lập giới tính khác nhau chia một loài thành 2 hay nhiều nhóm một cách
có hiệu quả Điều này cho phép chuyên biệt hóa nam và nữ, do đó, kèm theo một loạt các hành vi cần thiết cho sự sống một cách rộng rãi hơn với một quần thể cạnh tranh duy nhất Các nghiên cứu theo sự xác định giới tính và sự khác nhau về tìm kiếm thuật giải di truyền nhân tạo vẫn còn đang tiếp diễn
Khi tổ hợp các toán tử lai và toán tử đảo, ta thiết lập được một số phép lai có thể tái thiết lập trật tự các gen Ba phép lai theo dạng này được sử dụng nhiều trong các bài toán thực tế là: lai so khớp từng phần (PMX), lai thứ tự (OX) và lai chu trình (CX)
3.5 Phép lai so khớp từng phần (Partially Matched Crossover – PMX):
Trong lai so khớp từng phần, hai chuỗi được sắp hàng, và hai điểm lai được chọn ngẫu nhiên giống nhau dọc theo chiều dài của chuỗi Hai điểm lai cho một chọn lọc khớp được dùng để tác động thông qua toán tử trao đổi vị trí – vị trí
Xét 2 nhiễm sắc thể:
Hai điểm lai được chọn ngẫu nhiên, quá trình lai PMX thực hiện thay đổi vị trí Giữa các điểm lai, các gen được hoán đổi, nghĩa là gen 3 và 2, gen 6 và 7, gen 5 và 9 thay đổi vị trí Đây là ánh xạ từ mẹ B qua bố A Bây giờ ánh xạ từ bố A qua mẹ B, gen 7 và 6, gen 9 và 5, gen 2 và 3 thay đổi vị trí cho nhau Do đó sau khi thực hiện PMX, con cháu sinh ra là: