4/27/2017 Lịch sử • • • • Giải thuật di truyền GA đề xuất bởi John Holland năm 1970 Phổ biến những năm 1980 Dựa trên ý tưởng về luật tiến hóa Darwin Dùng để giải quyết nhiều bài toán không dễ giải quyết bằng các kỹ thuật khác 1 2 Tiến hóa trong thế giới thực • Mỗi tế bào sống bao gồm các nhiễm sắc thể (chromosomes) – là các xâu DNA • Mỗi NST bao gồm 1 tập các gene – các khối DNA • Mỗi gene quyết định một số đặc điểm của cá thể (như màu mắt) • Một tập các gene được gọi là kiểu di truyền (genotype) • Một tập các đặc điểm (như màu mắt) được gọi là kiểu hình ( phenotype) • Việc tái tạo (reproduction) là việc kết hợp các gene từ bố mẹ cộng với một số lượng nhỏ các đột biến (mutation) trong bản sao • Độ phù hợp (fitness) của 1 cá thể là số con nó có thể sinh ra trước khi nó chết • Tiến hóa dựa trên “sự sống sót của các cá thể phù hợp nhất” 3 Đặt vấn đề • • • • • Giả sử có 1 vấn đề Ta chưa biết cách giải Có thể làm gì? Sử dụng máy tính để tìm lời giải? Làm thế nào? 4 1 4/27/2017 Giải pháp tệ nhất Có thể làm như vậy không? • Đôi khi – có: Thuật toán “thử và sai” – Nếu chỉ có vài đáp án – Và có đủ thời gian Repeat • Với đa phần các vấn đề - không: Sinh một giải pháp ngẫu nhiên Thử giải pháp đó và kiểm tra sự phù hợp của nó – Có quá nhiều đáp án – Không có thời gian thử Until giải pháp đủ tốt 5 6 Làm cách nào để mã hóa 1 giải pháp Ý tưởng ít tệ hơn (GA) • Phụ thuộc vào vấn đề • GA mã hóa giải pháp như 1 chuỗi cố định các bit (ví dụ 101110, 111111, 000101) • Mỗi bit biểu diễn một số đặc điểm của giải pháp đề xuất • Để có thể sử dụng GA, cần “thử” các chuỗi và cho điểm mức độ “tốt” của giải pháp Sinh 1 tập các giải pháp ngẫu nhiên Repeat Thử mỗi giải pháp trong tập (xếp hạng chúng) Loại bỏ 1 số giải pháp kém trong tập Nhân các giải pháp tốt lên Tạo ra một số thay đổi trong các cá thể này Until giải pháp tốt nhất đủ tốt 7 8 2 4/27/2017 Khoan chỗ nào Ví dụ, khoan dầu Giải pháp 1 = 300 • Giả sử cần khoan dầu ở đâu đó dọc theo 1km đường sa mạc • Vấn đề: chọn chỗ tốt nhất trên đường có thể cho nhiều dầu nhất • Mỗi giải pháp là 1 vị trí trên đường, tức là 1 số trong khoảng [0..1000] Giải pháp2 = 900 Đường 0 500 1000 9 10 Khoan dầu Khoan dầu • Tập các giải pháp có thể [0..1000] được gọi là không gian tìm kiếm hoặc không gian trạng thái • Chuyển sang xâu nhị phân 64 32 16 8 4 2 1 900 1 1 1 0 0 0 0 1 0 0 300 0 1 0 0 1 0 1 1 0 0 1023 1 1 1 1 1 1 1 1 1 1 Giải pháp2 = 900 (1110000100) Đường 0 OIL 512 256 128 Giải pháp1 = 300 (0100101100) 11 1000 30 5 Vị trí 12 3 4/27/2017 Bề mặt Không gian tìm kiếm • Không gian tìm kiếm ứng với các hàm như f(x), f(x,y), có thể một chiều hoặc nhiều chiều. • Không gian tìm kiếm có thể được mô hình hóa như 1 bề mặt trong đó độ phù hợp là độ sâu • Mỗi kiểu di truyền (genotype) là 1 điểm trong không gian • GA cố gắng tìm các điểm tốt hơn (độ phù hợp cao hơn) trong không gian 13 S¬ ®å tæng thÓ cña GA • Khởi động quần thể đầu tiên P gồm N cá thể một cách ngẫu nhiên • REPEAT – Giải mã các cá thể thành tham số – Tính giá trị hàm mục tiêu cho từng cá thể trong P – Chuyển đổi giá trị hàm mục tiêu (Target) thành giá trị độ phù hợp (Fitness) – Tiến hành toán tử chọn lọc tạo ra quần thể bố mẹ tạm thời P1 – Tiến hành toán tử lai ghép từ P1 tạo ra quần thể các con P2 – Tiến hành toán tử đột biến trên P2 tạo ra quần thể P3 – Tiến hành toán tử tái tạo để tạo ra quần thể cho thế hệ tiếp theo từ hai quần thể P2 và P3 15 • UNTIL (Điều kiện dừng thoả) • GA có thể vấp phải tối ưu hóa cục bộ (local maxima) nếu KGTK có nhiều điểm như vậy 14 Sinh thêm cá thể - Phép lai ghép (Crossover) • Kết hợp gene của 2 cá thể bố mẹ có độ phù hợp cao để tạo nên cá thể con • Việc kết hợp 2 cá thể bố mẹ phụ thuộc vào xác suất lai ghép • Sinh 2 cá thể mới (offspring) • Mỗi cá thể mới có thể bị thay đổi một cách ngẫu nhiên (đột biến - mutation) 16 4 4/27/2017 Lai ghép 1010000000 Parent1 Offspring1 1011011111 1001011111 Parent2 Offspring2 1010000000 Lai ghép 1 điểm – ngẫu nhiên mutate Đột biến Offspring1 1011011111 Offspring1 1011001111 Offspring2 1010000000 Offspring2 1000000000 Original offspring Lai ghép được áp dụng với tỉ lệ cao (khoảng 0.8 đến 0.95) Mutated offspring mutation rate được áp dụng với tỉ lệ thấp (thường giữa 0.1 và 0.001) 17 Các biến thể của GA 18 Các tham số • Các chiến lược lựa chọn (không phải roulette) • Kích thước quần thể (N), tỉ lệ đột biến (m), tỉ lệ lai ghép (c) • Các giá trị này cần phù hợp với kết quả mong muốn • Các giá trị thường dùng N = 50, m = 0.05, c = 0.9 – Vòng loại (Tournament) – Elitism, v.v… • Các chiến lược trao đổi chéo – Multi-point crossover – 3 way crossover, v.v… • Các cách mã hóa khác – Các giá trị nguyên – Tập có thứ tự các ký tự • Các kiểu biến dị khác nhau 19 20 5 4/27/2017 Các bước tiến hành Bước 1: Đặc điểm của giải thuật GA • • • • • Chọn biểu diễn gen: – Nhị phân: tập ký tự {0,1} – Biểu diễn với tập ký tự lớn hơn ví dụ {a,b,..., z} – Biểu diễn số thực GA tìm kiếm trên một quần thể các cá thể GA làm việc với mã của các thông số GA chỉ sử dụng thông tin của hàm mục tiêu GA sử dụng các luật chuyển đổi mang tính ngẫu nhiên • Xây dựng các toán tử thao tác trên biểu diễn gen đã chọn • Xây dựng sơ đồ mã hoá và giải mã cho các cá thể • Xây dựng hàm chuyển đổi từ giá trị hàm mục tiêu sang giá trị độ phù hợp • Chọn các tham số của GA: – – – – Số cá thể trong quần thể N Xác suất lai ghép pm Xác suất đột biến pc Số thế hệ cần tiến hoá G Bước 2: 21 11100 11001 11011 10100 Ví dụ • Bài toán: tìm giá trị cực đại của hàm: trên{0,1,…,31} • GA: • Tiến hành quá trình tiến hoá theo sơ đồ của giải thuật x2 22 Toán tử lựa chọn – Biểu diễn dưới dạng chuỗi nhị phân. VD 01101 13 – Kích thước quần thể : 4 – toán tử lai ghép 1 điểm cắt, đột biến tại 1 điểm – Lựa chọn kiểu Roulette wheel – Khởi tạo ngẫu nhiên 23 24 6 4/27/2017 Lai ghép Đột biến 28 784 20 400 2538 634.5 25 26 • Bước 2: Ví dụ về tối ưu hoá hàm • Bài toán: tìm giá trị cực đại của hàm: f x12 x2 với x1 nguyên trong khoảng [0,15] và x2 nguyên trong khoảng [0,31] B­íc 1: • Chọn mã hoá nhị phân {0,1} với 4 gen cho x1, và 5 gen cho x2 011010001 tương ứng với x1 = 0110 =6; x2 = 10001=17 • Sử dụng sơ đồ chọn lọc tỷ lệ, toán tử lai ghép 1 điểm cắt, toán tử đột biến biến đổi 0 thành 1 và ngược lại, toán tử tái tạo không tinh hoa quần thể con P3 trở thành quần thể cho thế hệ tiếp theo. • Fitness = Target - min Target trong quần thể + 1 • Chọn tham số N = 4, Pc = 0.75, Pm = 0.25, G = 100 27 • Khởi động quần thể đầu tiên ngẫu nhiên C¸ thÓ x1 x2 gi¸ trÞ gi¸ trÞ ®é X¸c suÊt hµm môc phï hîp chän lùa tiªu 101001001 001110110 Sè b¶n 111010100 Gi¸ trÞ copy trung trong P2 b×nh 101101111 0 1 010011101 4 29 -13 1 0.0047 2 100001110 8 14 50 64 0.3033 1 3 101010011 10 19 81 95 0.4502 2 4 011101100 7 12 37 51 0.2417 1 38.75 • Tiến hành lai ghép và đột biến tạo ra quần thể của thế hệ tiếp theo C¸ thÓ sè Bè mÑ VÞ trÝ lai ghÐp con con sau ®ét biÕn x1 x2 Gi¸ trÞ Gi¸ trÞ hµm môc trung tiªu b×nh 2 3 100001110 101010011 3 100010011 101001110 100010011 101001110 8 10 19 13 45 87 3 4 101010011 011101100 7 101010000 011101111 111010000 011101111 14 7 16 15 180 34 86.5 28 7 4/27/2017 Lai ghép đồng nhất Lai ghép n điểm • Chọn n điểm lai ghép ngẫu nhiên • Cắt dọc theo các điểm này • Gắn các đoạn giữa các cá thể • • • • Gán ‘đầu’ vào 1 cha, ‘đuôi’ vào 1 cha khác Tung đồng xu cho mỗi gene của con đầu tiên Làm 1 bản sao đảo của gene cho con thứ 2 Sự kế thừa độc lập vị trí 29 30 Lai ghép hay đột biến Lai ghép hay đột biến Khám phá: Phát hiện các vùng hứa hẹn trong không gian tìm – – – – Phụ thuộc vào bài toán, nhưng Tốt nhất nên có cả 2 Nếu chỉ đột biến, có thể tiến hóa Nếu chỉ lai ghép , không tiến hóa kiếm, tức là lấy được thông tin từ bài toán Khai thác: Tối ưu hóa trong vùng hứa hẹn, tức là sử dụng thông tin Thường kết hợp cả 2 phương pháp này. • Lai ghép là việc khám phá, nó sẽ là 1 bước nhảy đến 1 miền nào đó trong 2 cá thể bố mẹ • Đột biến là việc khai thác, nó tạo ra 1 sự thay đổi nhỏ, vì vậy nó ở gần miền của cha nó 31 32 8 4/27/2017 Lai ghép hay đột biến Các cách biểu diễn khác • Chỉ có lai ghép có thể kết hợp các thông tin từ thế hệ cha Có thể mã hóa các biến số trực tiếp dưới dạng: • Chỉ có đột biến tạo ra các thông tin mới (gene) • Số nguyên • lai ghép không thay đổi tần suất của gene trong quần thể • Các biến dấu phẩy động • Để đạt được kết quả tối ưu, cần 1 chút may mắn trong phép đột biến 33 34 Lai ghép theo công thức đơn Biểu diễn dạng số nguyên • Một số bài toán sử dụng số nguyên để biểu diễn như xử lý ảnh • Một số bài toán khác sử dụng các giá trị từ 1 tập cố định, vd {blue, green, yellow, pink} • Có thể sử dụng phép toán lai ghép 1 điểm hoặc N điểm 35 • • • Bố mẹ: x1,…,xn và y1,…,yn Lấy ngẫu nhiên 1 NST k Con thứ 1 là • • Con thứ 2 ngược lại VD: = 0.5 x1 , ..., xk , yk (1 ) xk , ..., xn 36 9 4/27/2017 Lai ghép theo công thức đơn • • Lai ghép toàn bộ theo công thức Bố mẹ: x1,…,xn và y1,…,yn Lấy ngẫu nhiên 1 NST k. Sau điểm này, các giá trị là x , ..., x , y (1 ) x , ..., y (1 ) x 1 k k 1 k 1 n n • • Con thứ 2 ngược lại VD: = 0.5 • • • Hay dùng Bố mẹ: x1,…,xn và y1,…,yn Con 1: • • Con thứ 2 ngược lại VD: = 0.5 a x (1 a ) y 37 38 Biểu diễn phép hoán vị: VD bài toán TSP Biểu diễn phép hoán vị • • • Bài toán sắp thứ tự VD: thuật toán sắp xếp: các thành phàn quan trọng được xếp trước VD bài toán người du lịch - Travelling Salesman Problem (TSP) : • • Mã hóa: • 39 Bài toán: • Có n thành phố • Tìm hành trình với độ dài ngắn nhất • Các thành phố 1,2, … , n • 1 đường đi hoàn chỉnh là 1 phép hoán vị (vd n =4 [1,2,3,4], [3,4,2,1] ) Không gian tìm kiếm lớn : 30 thành phố 30! 1032 hành trình 40 10 4/27/2017 Phép đột biến cho hoán vị Đột biến kiểu chèn • Các phép đột biến thông thường đem lại giải pháp vi phạm điều kiện bài toán • Cần thay đổi ít nhất 2 biến • Tham số cho đột biến phản ánh xác suất 1 số thao tác được áp dụng cho toàn xâu, thay vì cho 1 vị trí • Lấy ngẫu nhiên 2 NST • Chuyển NST thứ 2 theo sau cái thứ 1, dịch phần còn lại sang phải • Phép đột biến này giữ lại hầu hết trật tự các NST và thông tin về sự liền kề của chúng 41 42 Đột biến kiểu đảo Đột biến kiểu trộn • Lấy ngẫu nhiên 2 NST và đổi chỗ của chúng • Giữ lại được hầu hết thông tin về sự liền kề của chúng, phá vỡ trật tự nhiều hơn • Lấy ngẫu nhiên 2 NST và đổi chỗ các NST nằm giữa chúng • Giữ lại được hầu hết thông tin về sự liền kề của chúng, nhưng phá vỡ trật tự các NST 43 44 11 4/27/2017 Đột biến kiểu ngẫu nhiên Phép lai ghép cho chuỗi hoán vị • Phép lai ghép thông thường dẫn đến kết quả vi phạm ràng buộc của hoán vị • Lấy ngẫu nhiên 1 tập con các NST • Sắp xếp lại 1 cách ngẫu nhiên các NST đó 12345 12321 54321 54345 (các tập con không nhất thiết phải liên tục) • Các giải pháp đề xuất tập trung vào trật tự khi kết hợp và thông tin về tính liền kề từ các cặp bố mẹ 45 46 1 4| 5 9 3| 2 7 8 6 Ví dụ về lai ghép 2 5|17điểm 8 9| 1 6 3 4 Lai ghép 1 điểm • Ý tưởng: giữ nguyên trật tự của các phần tử • Thủ tục: 1. Chọn ngẫu nhiên 1 phần từ cha thứ 1 2. Chép nó sang con thứ 1 3. Chép các số còn lại sang con thứ 1 theo quy tắc sau: • Bắt đầu từ điểm cắt của phần sao chép • Sử dụng trật tự của cha thứ 2 • Đến đuôi thì quay vòng lại từ đầu 4. Làm tương tự với con thứ 2 • Lấy ngẫu nhiên 1 tập con từ cha thứ 1 • Chép phần còn lại từ cha thứ 2 theo trật tự 1,9,3,8,2 47 48 12 4/27/2017 9 6| 1 2 5| 7 8 4 3 Ví dụ2 5| 7 8 9| 1 6 3 4 Lai ghép đối sánh một phần Lai ghép P1 và P2: 1. Chọn ngẫu nhiên 1 phần trong P1 và chép nó sang con thứ 1. 2. Bắt đầu từ điểm cắt đầu tiên, tìm các phần tử trong phần tương ứng của P2 chưa được chép 3. Với mỗi phần tử i trong các phần tử đó, tìm phần tử j trong con đã chiếm vị trí của nó 4. Đặt i vào vị trí của j trong P2, vì ta biết rằng sẽ không đặt j vào đó (do j đã có trong xâu con rồi) 5. Nếu vị trí chiếm bởi j trong P2 đã bị chiếm trong xâu con bởi k, đặt i vào vị trí của k trong P2 6. Sau khi đã xử lý hết các phần tử trong mảnh đã lai ghép, phần còn lại được điền theo P2 Con thứ 2 được sinh ra tương tự. • Step 1 • Step 2 • Step 3 49 50 145932786 2 5trình 7891634 Lai ghép chu Lai ghép chu trình Ý tưởng: Mỗi gen đến từ 1 cha kết hợp với vị trí của nó. • Bước 1: xác định các chu trình Thủ tục: 1. Tạo 1 chu trình các gen từ P1 theo cách sau: (a) Bắt đầu với gen thứ 1 của P1 (b) Tìm gen ở cùng vị trí trong P2 (c) Tìm vị trí chứa cùng gen đó trong P1 (d) Thêm gen đó vào chu trình (e) Lặp lại bước b đến d đến khi gặp lại gen đầu tiên của P1. • Bước 2: chép chu trình khác vào con 2. Đặt các gen của chu trình trong con thứ 1 vào các vị trí nó có trong cha thứ 1 3. Thực hiện chu trình tiếp theo từ cha thứ 2 51 52 13 4/27/2017 1 4 5 9 3 2 7 8Kết 6 hợp cạnh 257891634 Kết hợp cạnh • Xây dựng bảng liệt kê các cạnh xuất hiện trong 2 cha, nếu 1 cạnh xuất hiện ở cả 2, đánh dấu bằng dấu + • vd. [1 2 3 4 5 6 7 8 9] và [9 3 7 8 2 6 5 1 4] Sau khi xây dựng bảng, thực hiện các bước sau: 1. Lấy ngẫu nhiên 1 phần tử, đưa vào offspring 2. Đặt current element = entry 3. Loại tất cả các phần tử nối với phần tử hiện tại khỏi bảng 4. Kiểm tra danh sách của phần tử hiện tại: – Nếu có cạnh chung, lấy phần tử đó làm phần tử tiếp theo – Nếu không, lấy phần tử trong danh sách mà bản thân nó có danh sách cạnh nối ít nhất – Các trường hợp còn lại: lấy ngẫu nhiên 5. Khi gặp danh sách rỗng: – Mở rộng đầu kia của offspring – Nếu không chọn ngẫu nhiên 1 phần tử mới 53 145932786 Kết hợp cạnh 257891634 55 54 Các mô hình quần thể • SGA sử dụng mô hình: – Mỗi cá thể chỉ tồn tại trong 1 thế hệ – Tất cả các cha được thay thế bởi các con • Mô hình trạng thái ổn định SSGA : – 1 con được sinh qua 1 thế hệ – 1 thành viên của quần thể được thay thế • Khoảng cách thế hệ – tỉ lệ dân số được thay thế – 1.0 với SGA, 1/pop_size với SSGA 56 14 4/27/2017 Cạnh tranh về độ phù hợp • Lựa chọn có thể xảy ra tại 2 chỗ: – Lựa chọn từ thế hệ hiện tại để tham gia vào lai ghép – Lựa chọn từ các bố mẹ + con cho thế hệ tiếp theo • Phân biệt các phép lựa chọn – Các thao tác: xác định xác suất lựa chọn – Thuật toán: xác định cách xác suất được sử dụng 57 15