0
Tải bản đầy đủ (.pdf) (92 trang)

Lưu đồthuật toán di truyền đơn giản

Một phần của tài liệu NGHIÊN CỨU CÁC BÀI TOÁN LỊCH BIỂU VÀ ỨNG DỤNG (Trang 32 -32 )

CHƯƠNG 2 THUẬT TOÁN DI TRUYỀN

2.3. Lưu đồthuật toán di truyền đơn giản

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

1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 Cha Mẹ Con 1 Con 2 1 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 Cha Con

Hình 2.9: Sơ đồ mô tả thuật toán di truyền cơ bản 2.4. Các tham số của thuật toán di truyền 2.4. Các tham số của thuật toán di truyền

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ệ). Qua các nghiên cứu cũng như các thử nghiệm đã cho thấy kích thước quần thể

Bắt đầu

Nhận các tham số của bài toán

Khởi tạo quần thể ban đầu Tính giá trị hàm thích nghi Điều kiện dừng Chọn lọc Lai ghép Đột biến Kết thúc Lựa chọn giải pháp tốt nhất

không nên quá bé cũng như không quá lớn. Nếu có quá ít cá thể thì ít có khả năng thực hiện lai giống và chỉ một phần nhỏ không gian tìm kiếm được dùng. Như vậy sẽ dễ xảy ra trường hợp bỏ qua các lời giải tốt. Nhưng quá nhiều cá thể cũng không tốt vì thuật toán di truyền sẽ chạy chậm đi, ảnh hưởng đến hiệu quả của thuật toá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ể lên quá một giới hạn cho phép.

2.4.2. Xác suất lai ghép

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

2.4.3. Xác suất đột biến

Xác suất đột biến cho biết các gien của cá thể thay đổi thường xuyên như thế nào. Xác suất đột biến là , khi đó khả năng để mỗi gien của một cá thể bất kỳ bị đột biến là . Toán tử đột biến có tác dụng ngăn ngừa thuật toán di truyền rơi vào tình trạng cực trị đị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 thuật toán di truyền thành thuật toán tìm kiếm ngẫu nhiên.

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

Khởi tạo quần thể ban đầu là bước đầu tiên trong thuật toán di truyền. Thông thường để khởi tạo quần thể trong bài toán tối ưu, ta tạo ra một cách ngẫu nhiên các lời

giải có thể (thường là các lời giải thỏa mãn ràng buộc của bài toán nhưng chưa biết là đại lượng cần tối ưu đã là tối ưu hay chưa). Tùy vào từng bài toán cụ thể mà ta có các

phương pháp khởi tạo khác nhau. Chất lượng của quần thể ban đầu càng cao thì lời giải mà thuật toán di truyền đưa ra càng tốt. Do đó, trong nhiều thuật toán di truyền thường sử dụng các thuật toán đã có để giải bài toán mà cho kết quả khá tốt để khởi tạo quần thể ban đầu.

2.5.1. Hàm tính độ thích nghi

Theo các nghiên cứu và các thử nghiệm của nhiều nhà nghiên cứu về thuật toán di truyền thì hàm tính độ thích nghi là một trong hai yếu tố quan trọng nhất quyết định sự thành công hay thất bại của thuật toán di truyền.

Hàm thích nghi được xây dựng sao cho giá trị thích nghi phải phản ánh được giá trị thực của cá thể trong việc đáp ứng yêu cầu của bài toán.

2.5.2. Toán tử chọn lọc

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

chọn lọc các cá thể tốt, ví dụ như chọn lọc theo bánh xe số (roulette wheel selection), chọn lọc xếp hạng (rank selection), chọn lọc cạnh tranh (tournament selection). Trước

- Cách biểu diễn các cá thể thứ là ;

- Hàm tính độ thích nghi của cá thể là ( ); - Kích thước quần thể là _ ;

- Số cá thể cần chọn là .

2.5.2.1.Chọn lọctheo nguyên lý bánh xe Roulette

Trước khi chọnlọc thì tính các giá trị sau: - Tính tổng độ thích nghi của cả quần thể:

= ( );

_

- Tính xác suất chọn cho mỗi cá thể : = ( )

- Tính vị trí xác suất lũy tích qi của mỗi cá thể: =

Phương pháp chọn lọc theo bánh xe Rouletteđược thực hiện bằng cách quay bánh xe Roulette _ lần. Mỗi lần chọn một cá thể từ quần thể hiện hiện vào quần thể mới bằng cách sau:

- Phát sinh ngẫu nhiên một số trong đoạn[0, 1].

- Nếu < thì chọn cá thể ; ngược lại thì chọn cá thể thứ với giá trị của (2 £ £ _ ) sao cho £ £ .

Để minh họa, ta xét một quần thể với 5 cá thể _ = 5, với các giá trị thích nghi được cho trong Bảng 2.1. Tổng độ thích nghi của cả quần thể = 28 + 18 + 14 + 9 + 26 = 95. Xác suất lựa chọn một cá thể và các xác suất tích lũy cũng được trình bày trong Bảng 2.1.

Cá thể 1 2 3 4 5

Độ thích nghi, 28 18 14 9 26

Xác suất, 0.295 0.189 0.147 0.095 0.274

Xác suất tích lũy, 0.295 0.484 0.631 0.726 1.000 Bảng 2.1: Độ thích nghi và xác suất và xác suất tích lũy của các cá thể

Bây giờ nếu chúng ta sinh một số ngẫu nhiên = 0.585 thì cá thể thứ 3 sẽ được chọn vì = 0.484 < 0.585 < = 0.631.

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

2.5.2.2.Chọn lọcxếp hạng

- Sắp xếp các cá thể trong quần thể theođộ thích nghi từ thấp đến cao.

- Đặt lại độ thích nghi cho quần thể đã sắp xếp theo kiểu: cá thể thứ nhất có độ

thích nghi là 1, cá thể thứ hai có độ thích nghi là 2, ..., cá thể thứ pop_size có độ thích

nghi là _ .

Theo phương pháp này việc một cá thể được chọn nhiều lần như trong lựa chọn theo kiểu bánh xe Roulette đã giảm đi. Nhưng nó có thể dẫn đến sự hội tụ chậm và cá thể có độ thích nghi cao cũng không khác mấy so với các cá thể khác.

2.5.2.3. Chọn lọc cạnh tranh

a) Chọn lọc cạnh tranh 2 (2 - tournament selection)

Hai nhiễm sắc thể khác nhau được chọn ngẫu nhiên và được so sánh với nhau. Nếu cá thể không tốt hơn cá thể nghĩa là: ( ) ≤ ( ) thì cá thể chết đi và bị loại ra khỏi quần thể. Quá trình này lặp đến hết cá thể còn lại.

b) Chọn lọc cạnh tranh 3 (3 - tournament selection)

Giống như trên 3 cá thể được chọn ngẫu nhiên và được so sánh. Nếu chúng ta có ( ) ≤ ( ) và ( ) ≤ ( ) thì cá thể chết đi và bị loại ra khỏi quần thể. Quá trình này lặp đến hết cá thể còn lại.

Các toán tử di truyền của thuật toán di truyền là toán tử lai ghép và đột biến. Đây là hai toán tử có tác động lớn đến chất lượng của thuật toán. Các toán tử này được xây dựng phụ thuộc vào cách mã hoá các cá thể. Ở đây chỉ đưa ra toán tử lai ghép và đột biến trên một số cách mã hoá cá thể để chỉ ra được ý tưởng xây dựng toán tử lai ghép và đột biến trong thuật toán di truyền. Còn tuỳ thuộc vào các bài toán cụ thể và cách mã hoá cá thể mà ta xây dựng hai loại toán tử này.

2.5.3. Các toán tử lai ghép

2.5.3.1. Lai ghép ánh xạ từng phần (PMX-Partially Mapped Crossover)

Lai ghép ánh xạ từng phần có thể xem như một phép biển đổi của lai ghép hai điểm. Vì vậy, nó luôn sinh ra các cá thể con hợp lệ. Hai cha mẹ và hai điểm lai ghép được lựa chọn và sinh ra một cách ngẫu nhiên. PMX bao gồm các bước chính sau:

Bước 1.Chọn hai điểm cắt nhau cùng với một chuỗi một cách ngẫu nhiên. Chuỗi con được định nghĩa bởi hai điểm cắt được gọi là ánh xạ thành phần;

Bước 2. Hoán vị hai chuỗi con giữa các cá thể cha mẹ để tạo ra cá thể con; Bước 3. Xác định quan hệ ánh xạ giữa các phần ánh xạ;

Bước 4. Hợp thức cá thể con với các quan hệ ánh xạ. Ví dụ lai ghép ánh xạ từng phần

Bước 1. Chọn hai điểm cắt tại vị trí sau gien số 3 và sau gien số 6.Chuỗi con bắt đầu từ gien số 4 đến hết gien số 6 được gọi là ánh xạ thành phần.

4 5 6 7 1 2 3 10

8

Cha 9

Mẹ

Bước 2. Hoán vị giữa cá thể cha và mẹ ta được hai cá thể con proto-child (PC1)

và proto-child (PC2). Trong hai cá thể con có các gien chưa biết x (ẩn số cần tìm).

Bước 3. Hoán vị này, cũng định nghĩa một chuỗi ánh xạ 2 → 5, 3 → 6 và 7 → 10.

Bước 4. Chúng ta điền thêm các gien từ các cá thể cha mẹ ban đầu, mà không bị mâu thuẫn

“x” trong gien số 8 trong cá thể con thứ nhất có giá trị là 2 nhưng bị mâu thuẫn nên được thay thế bằng giá trị 5, tương tự với các ẩn x chưa biết ta được các cá thể con

Hình 2.10: Minh họa các bước của lai ghép từng phần (PMX)

2.5.3.2. Lai ghép có thứ tự (OX - Order Crossorver)

Lai ghép có thứ tự có thể được xem như là một biến thể của lai ghép ánh xạ từng phần. OX bao gồm các bước sau:

Bước 1. Chọn ngẫu nhiên một chuỗi con từ một cá thể cha mẹ;

Bước 2. Tạo ra một proto-childbằng cách sao chép chuỗi con vào những vị trí tương ứng như trong cá thể cha mẹ;

Bước 3. Xóa tất cả các ký hiệu từ cá thể cha mẹ thứ hai, lúc này đã có trong chuỗi con. Chuỗi còn lại chứa các ký hiệu mà proto-child cần;

Bước 4. Đặt những ký hiệu vào những vị trí không cố định của proto-child từ trái sang phải theo trật tự của chuỗi để tạo ra cá thể con.

Đầu tiên, phân đoạn giữa để cắt các điểm được sao chép vào cá thể con

x 5 6 7 x x x x x PC1 x 4 5 6 7 1 2 3 10 8 Cha 9 4 2 3 10 1 5 6 7 8 Con 9 4 2 3 10 1 x x x 8 Con 9 x 2 3 10 x x x x x PC1 x PC2 x x x 5 6 7 x x x x Con 8 x 1 5 6 7 9 x 4 x Con 8 10 1 5 6 7 9 2 4 3 Mẹ 8 7 1 2 3 10 9 5 4 6 PC2 x x x 2 3 10 x x x x

Chuỗi bắt đầu của điểm cắt thứ hai của cha mẹ thứ hai là: 9 → 5 → 4 → 6 → 8 → 7 → 1 → 2 → 3 → 10

Chuỗi sau khi loại bỏ các giá trị 5, 6 và 7, cũng ở trong cá thể con đầu tiên là: 9 → 4 → 8 → 1 → 2 → 3 → 10

Cuối cùng, chuỗi này được đặt trong PC1 để tạo ra cá thể con bắt đầu từ điểm cát thứ hai. Tương tự, ta có cá thể con thứ hai.

Hình 2.11: Minh họa các bước của lai ghép có thứ tự (OX)

2.5.3.3. Lai ghép dựa theo vị trí (POS - Position Based Crossover)

Lai ghép dựa theo vị trí được đưa ra bởi Syswerda thực chất là một loại lai ghép đồng nhất cho một miêu tả hoán vị cùng với một thủ tục sửa chữa. Nó cũng được xem như một kiểu biến đổi của OX với các vị trí được chọn một cách không liên tục.

POS bao gồm các bước sau:

Bước 1. Chọn ngẫu nhiên một tập hợp các vị trí từ một cá thể cha mẹ;

Bước 2. Tạo ra một proto-child bằng cách sao chép các ký hiệu trên các vị trí này vào trong các vị trí tương ứng của proto-child;

Bước 3. Xóa các ký hiệu, lúc này đã được chọn từ cá thể cha mẹ thứ hai. Chuỗi kết quả chỉ chứa các ký hiệu proto-child cần;

Bước 4. Đặt các ký hiệu vào những vị trí không cố định của proto-child từ trái qua phải tương ứng với trật tự của chuỗi để tạo ra một cá thể con.

Thủ tục này được minh họa trong Hình 2.11.

Các vị trí được chọn trong cá thể cha mẹ thứ nhất 2, 5, 6 và 9. Sao chép giá trị các gien tại vị trí này cho proto-child.

Hình 2.12: Minh họa các bước của lai ghép có thứ tự (POS)

Mẹ 5 4 6 3 1 9 2 7 8 x 2 x x 5 6 x x 9 PC1 3 4 5 6 7 8 9 2 Cha 1 10 5 6 7 9 4 8 1 3 Con 2 Con x x x 2 3 10 x x x x 4 2 3 1 5 6 7 8 9 Con

2.5.3.4. Lai ghép dựa trên thứ tự (Order Base Crossover)

Lai ghép dựa trên thứ tự cũng được đưa ra bởi Syswerda. Nó là một thay đổi nhỏ của lai ghép dựa trên vị trí (POS), trong đó, thứ tự của các ký hiệu được chọn trong cá thể cha thứ nhất được áp đặt bởi các ký hiệu tương ứng trên cá thể cha mẹ thứ hai.

Thủ tục này được minh họa trong Hình 2.13.

Các vị trí được chọn trong cá thể cha mẹ thứ nhất 2, 5, 6 và 9. Sao chép giá trị các gien tại vị trí này cho proto-child.

Các ký hiệu tại những vị trí này (theo thứ tự cho trước) trong cá thể cha mẹ thứ

hai là 4, 1, 9 và 8. Cá thể con là một bản sao của cá thể mẹ trên mọi vị trí ngoại trừ các

ký hiệu trên các vị trí 2, 5, 6 và 9 (tức là 4, 1, 9, và 8).

Hình 2.13: Minh họa các bước của lai ghép (POS)

2.5.3.2. Lai ghép có chu trình (CX - Cycle Crossover)

CX đước đưa ra bởi Oliver, Smith và Holland, nó giống lai ghép dựa trên vị trí, nó chọn một số ký hiệu từ cá thể cha hoặc mẹ và các ký hiệu còn lại được chọn từ cá thể cha hoặc mẹ khác. Điểm khác nhau là các ký hiệu lấy từ cá thể cha không được chọn một cách ngẫu nhiên và chỉ những ký hiệu được chọn mới xác định một chu trình tương ứng giữa các cá thể cha mẹ. CX bao gồm các bước sau:

Bước 1. Tìm một chu trình được xác định bởi những vị trí tương ứng của các ký hiệu giữa các cá thể cha mẹ;

Bước 2. Sao chép các ký hiệu trong chu trình vào cá thể con bởi những vị trí tương ứng trong một các thể cha mẹ;

Bước 3. Xác định các ký hiệu còn lại cho cá thể con bằng cách xóa những ký hiệu này, bây giờ đã là một chu trình từ một cá thể cha mẹ khác;

Bước 4. Điền cá thể con với các ký hiệu còn lại. Thủ tục này được minh họa trong Hình 2.14.

Bước 1. Tìm chu trình được định nghĩa bởi các ký hiệu giữa các cá thể cha mẹ.

Mẹ 5 4 6 3 1 9 2 7 8 x 4 x 3 1 x x 7 8 PC1 3 4 5 6 7 8 9 2 1 Cha 2 4 5 3 1 6 9 7 8 Con

Chu trình: 1 → 5 → 2 → 4 → 9 → 1

Bước 2. Sao chép các ký hiệu trong chu trình vào một cá thể con

Bước 3. Xác định các ký hiệu còn lại cho các cá thể con

Các ký hiệu còn lại 6, 3, 7, và 8

Bước 4. Điền đầu đủ các ký hiện còn lại trong cá thể con

Hình 2.14: Minh họa các bước của lai ghép (CX) 2.5.4. Toán tử đột biến

2.5.4.1. Đột biến đảo ngược (Inversion Mutation)

Chọn hai vị trí ngẫu nhiên trong một cá thể và sau đó, nghịch đảo chuỗi giữa hai vị trí này.

Hình 2.15: Minh họa đột biến ngược

2.5.4.2. Đột biến chèn (Insertion Mutation)

Chọn ngẫu nhiên một gien và sau đó chèn gien đó vào vị trí ngẫu nhiên.

Hình 2.16:Minh họa đột biến chèn

2.5.4.3. Đột biến thay thế (Displacement Mutation)

Chọn ngẫu nhiên một chuỗi con và chèn nó vào một vị trí ngẫu nhiên. Đột biến chèn có thể xem như là một trường hợp đặc biệt của đột biến thay thế, trong đó chuỗi con chỉ chứa một gien.

Con 1 2 5 3 4 6 7 8 9 3 4 5 6 7 8 9 2 1 Cha Con 1 2 6 5 4 3 7 8 1 3 4 5 6 7 8 9 2 1 Cha Mẹ 5 4 6 9 2 3 7 8 1 Mẹ 5 4 6 9 2 3 7 8 1 3 4 5 6 7 8 9 2 1 Cha 1 2 4 5 9 Proto-child 1 2 6 4 5 3 7 8 9 Proto-child

Hình 2.17. Minh họa đột biến thay thế

2.5.4.3. Đột biến hoán vị (Exchange Mutation)

Chọn ngẫu nhiên hai vị trí sau đó hoán vị gien giữa hai vị trí này

Hình 2.18: Minh họa đột biến hoán vị 2.6. Một thủ tục đơn giản cho thuật toán di truyền 2.6. Một thủ tục đơn giản cho thuật toán di truyền

Một quá trình tiến hóa được thực hiện trên một tập các lời giải hay còn gọi là

Một phần của tài liệu NGHIÊN CỨU CÁC BÀI TOÁN LỊCH BIỂU VÀ ỨNG DỤNG (Trang 32 -32 )

×