Tính toán ∑ cho 1 tuần tự công nghệ

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 27)

tuần tự công nghệ là { , , , }. Bởi vậy = { , , , }Giá trị của là:

( ) = 9. Từ đó, ( ) < ( ), = và giá trị mới ( ) = 9.

Từ đó, tuần tự công nghệ tốt nhất được tạo nên bởi trao đổi các công việc 2 và 3 trong tuần tự công nghệ ; = {(2,3)}. Do chiều dài của danh sách Tabu là 2, chúng ta sẽ cập nhật lại danh sách. Xóa (2,4) ra khỏi danh sáchvà thêm (2,3) vào trong danh sách. Ta có danh sách Tabu mới = {(3,4), (2,3)}.

Đặt = = { , , , ). ( ) = 9 và đi đến vòng lặp kết tiếp. Vòng lặp 4.

Bây giờ, ta sinh các tuần tự công nghệ của ;

Hình 1.5: Tuần tự công nghệ bằng cách trao đổi cặp công việc liền kề

Tính tổng của ∑ cho tuần tự công nghệ { , , , } được thực hiện trong Bảng 1.13 ( ) 5 3 2 6 9 4 13 7 5 8 10 16 0 4 0 9 4 3 2 1 0 12 0 9 ∑ 21

Bảng 1.13: Tính toán ∑ cho 1 tuần tự công nghệ = { , , , } = { , , , } { , , , } { , , , } { , , , } = 9 = 21 = (1,4) = (3,4) ={(3,4),(2,3)} = (2,3) Tuần tự công nghệ tốt nhất hiện thời

Chỉ có khả năng trao đổi là (1, 4) với ( ) = 21

Từ đó, ( ) > ( ), ( ) giữ giá trị 9. Với = (4,1) trong tuần tự công nghệ . Cập nhật danh sách Tabu. Xóa (3, 4) ra khỏi danh sách và thêm (4, 1) vào trong danh sách. Và danh sách Tabu mới = {(2, 3), (4, 1)}.

Đặt = = { , , , }, ( ) = 9 và đi đến vòng lặp tiếp theo. Vòng lặp 5.

Bây giờ, chúng ta sinh các tuần tự công nghệ của như Hình 1.6

Hình 1.6:Tuần tự công nghệ bằng cách trao đổi cặp công việc liền kề

Tính tổng của ∑ cho tuần tự công nghệ { , , , } được thực hiện trong Bảng 1.14 ( ) 5 2 3 6 9 13 4 7 5 7 10 16 0 0 6 9 4 2 3 1 0 0 18 9 ∑ 27

Bảng 1.14: Tính toán ∑ cho 1 tuần tự công nghệ Chỉ có khả năng trao đổi là (1, 3) với ( ) = 27 Chỉ có khả năng trao đổi là (1, 3) với ( ) = 27

= { , , , } { , , , } { , , , } { , , , } = 21 = (1,4) = (1,3) ={(2,3),(4, 1)} = (2,3) Tuần tự công nghệ tốt nhất hiện thời = 21

Từ đó, ( ) > ( ), ( ) giữ giá trị 9. Với = (1,3) trong tuần tự công nghệ . Cập nhật danh sách Tabu. Xóa (2, 3) ra khỏi danh sách và thêm (1, 3) vào trong danh sách. Và danh sách Tabu mới = {(4, 1), (1, 3)}.

Đặt = = { , , , }, ( ) = 9.

Kết thúc vòng lặp thứ 5. ( ) = 9 và tuần tự công nghệ tốt nhất { , , , }. Từ nhược điểm của thuật toán mô phỏng luyện kim. Nếu thuật toán muốn tránh khỏi tình trạng công việc lặp lại trong một cực tiểu địa phương thì các lời giải này phải

được lưu trữ trong một danh sách (danh sách Tabu) và chỉ chấp nhận những lời giải

không có mặt trong danh sách này. Tuy nhiên việc kiểm tra xem một lời giải ứng viên có nằm trong danh sách Tabu hay không lại tốn nhiều thời gian và không gian bộ nhớ.

1.2.4.4. Thuật toán di truyền (GA-Genetic Algorithms)

Thuật toán di truyền được phát triển bởi Holland vào năm 1975. Từ khi thuật toán di truyền ra đời, nó đã rất thành công trong việc giải quyết một số các bài toán tối ưu. Một số lĩnh vực đã được áp dụng như để định tuyến, lập lịch công việc, điều khiển thích nghi, mô hình nhận thức, các bài toán về giao thông vận tải, người du lịch, các bài toán về điều khiển tối ưu, tối ưu truy vấn cơ sở dữ liệu…

Thuật toán di truyền là kỹ thuật tìm kiếm ngẫu nhiên toàn bộ thuật toán tìm

kiếm mô phỏng các hiện tượng tự nhiên (tiến hóa sinh học). Ý tưởng chính của thuật

toán di truyền các cá thể mạnh có xu hướng thích ứng và tồn tại, trong khi đó các cá thể yếu có xu hướng bị chết đi. Mỗi cá thể có một cấu trúc gien đặc trưng cho tính chất của cá thể đó. Trong quá trình sinh sản, các cá thể con có thể thừa hưởng các phẩm chất của cá thể cha mẹ, cấu trúc gien của nó mang một phần cấu trúc gien của cha mẹ. Ngoài ra, trong quá trình tiến hóa, có thể xảy ra hiện tượng đột biến, cấu trúc gien của cá thể con có thể chứa các gien mà cả cha mẹ đều không có. Trong thuật toán di truyền, mỗi cá thể được mã hóa bởi một cấu trúc dữ liệu, mô tả cấu trúc gien của cá thể đó ta gọi đó là nhiễm sắc thể. Mỗi nhiễm sắc thể được tạo thành từ các đơn vị được gọi là gien. Thuật toán di truyền làm việc trên các quần thể gồm nhiều cá thể. Một quần thể ứng với một giai đoạn phát triển gọi là một thế hệ. Từ một thế hệ được tạo ra, thuật toán di truyền bắt chước sự chọn lọc tự nhiên và di truyền để biến đổi các thế hệ. Ba bước chính của thuật toán di truyền là chọn lọc, lai ghép và đột biến để tạo nên các hoạt động di truyền. Chi tiết của thuật toán di truyền được trình bày trong Chương 2.

CHƯƠNG 2. THUẬT TOÁN DI TRUYỀN 2.1. Lịch sử ra đời

Thuật toán di truyền (Genetic Algorithm - GA) hình thành dựa trên quan niệm

cho rằng, quá trình tiến hóa tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất, và tự nó đã mang tính tối ưu. Quá trình tiến hóa thể hiện tính tối ưu ở chỗ, thế hệ sau bao giờ

cũng tốt hơn (phát triển hơn, hoàn thiện hơn) thế hệ trước. Tiến hóa tự nhiên được duy

trì nhờ hai quá trình cơ bản sinh sản và chọn lọc tự nhiên. Xuyên suốt quá trình tiến hóa tự nhiên, các thế hệ mới luôn được sinh ra để bổ sung thay thế thế hệ cũ. Cá thể nào phát triển hơn, thích ứng hơn với môi trường sẽ tồn tại. Cá thể nào không thích ứng được với môi trường sẽ bị đào thải. GA được đề xuất và nghiên cứu lần đầu tiên bởi John Holland tại trường đại học Michigan vào năm 1975 với công trình được công (adsbygoogle = window.adsbygoogle || []).push({});

bố mang tên “Adaptation in Natural and Artificial Systen”. Thuật toán di truyền được

coi là một trong những mô hình tính toán phổ biến và thành công nhất trong lĩnh vực tính toán thông minh. Cùng với các kỹ thuật tính toán thông minh khácnhư tính toán

mờ(fuzzy computing), mạng Nơ-ron (neural networks), trí tuệ bầy đàn (swarm intelligence), thuật toán di truyền ngày càng phát triển,được áp dụng rộng rãi trong các

lĩnh vực khác nhau như toán học, sinh học, khoa học máy tính.Thuật toán di truyền đã bước đầu đượcáp dụng thành công trong các bài toán thiết kế với các hàm mục tiêu quá phức tạp khôngtuyến tính, hay các bài toán lập kế hoạch, lập lịch với không gian tìm kiếm NP-khó.

2.2. Một số khái niệm cơ bản

Thuật toán di truyền dựa vào quá trình tiến hoá trong tự nhiên nên các khái niệm và thuật ngữ của nó đều có liên quan đến các thuật ngữ của di truyền học.

2.2.1. Cá thể, nhiễm sắc thể

Trong thuật toán di truyền, một cá thể biểu diễn một giải pháp của bài toán. Không giống với trong tự nhiên, một cá thể có nhiều nhiễm sắc thể, ở đây ta quan niệm một cá thể có một nhiễm sắc thể. Do đó khái niệm cá thể và nhiễm sắc thể trong

thuật toán di truyền coi như là tương đương (và được gọi là cá thể).

Một cá thểđược tạo thành từ nhiều gien, mỗi gien có thể có các giá trị khác nhau để quy định một tính trạng nào đó. Trong thuật toán di truyền, một gien được coi như một phần tử trong cá thể.

2.2.2. Quần thể

Quần thể là một tập hợp các cá thể có cùng một số đặc điểm nào đấy. Trong thuật toán di truyền ta quan niệm quần thể là một tập các lời giải của một bài toán.

2.2.3. Chọn lọc

Trong tự nhiên, quá trình chọn lọc và đấu tranh sinh tồn đã làm thay đổi các cá thể trong quần thể. Những cá thể tốt, thích nghi được với điều kiện sống thì có khả năng đấu tranh lớn hơn, do đó có thể tồn tại và sinh sản. Các cá thể không thích nghi được với điều kiện sống thì dần mất đi. Dựa vào nguyên lý của quá trình chọn lọc và đấu tranh

sinh tồn trong tự nhiên, chọn lọc các cá thể trong thuật toán di truyền chính là cách chọn các cá thể có độ thích nghi tốt để đưa vào thế hệ tiếp theo hoặc để cho lai ghép, với mục đích là sinh ra các cá thể mới tốt hơn. Có nhiều cách để lựa chọn nhưng cuối cùng đều nhằm đáp ứng mục tiêu là các cá thể tốt sẽ có khả năng được chọn cao hơn.

2.2.4. Lai ghép

Lai ghép hay trao đổi chéo là quá trình hình thành cá thể mới dựa trên cơ sở cá thể cha mẹ bằng cách ghép một hay nhiều đoạn gien của cá thể cha mẹ.Cá thể mới có các đặc tính mong muốn là tốt hơn cá thể cha mẹ. Đây là quá trình xảy ra chủ yếu trong thuật toán di truyền.

a) Lai ghép một điểm

Chọn ngẫu nhiên một vị trí được gọi là điểm lai ghép. Sau đó ghép đoạn trước điểm lai ghép của cha với đoạn sau điểm lai ghép của mẹ và ngược lại. Ví dụ, cho cá thể cha mẹ trong Hình 2.1, phép lai ghép một điểm sau gien thứ 5 cho kết quả hai cá thể con trong Hình 2.2.

Hình 2.1: Cá thể cha mẹ cho phép lai ghép một điểm

Hình 2.2:Hai cá thể con sau khilai ghép một điểm b) Lai ghép hai điểm b) Lai ghép hai điểm

Chọn ngẫu nhiên hai vị trí trên chuỗi cá thể cha mẹ. Sau đó tráo đổi đoạn gien nằm giữa hai điểm đó của cá thể cha mẹ cho nhau. Ví dụ, cho cá thể cha mẹ như trong Hình 2.3, phép lai ghép hai điểm sau gien thứ 3 và sau gien thứ 7 cho kết quả hai cá thể con như trong Hình 2.4.

Hình 2.3: Cá thể cha mẹ cho phép lai ghép hai điểm

Hình 2.4: Hai cá thể con sau lai ghép hai điểm c) Lai ghép đồng nhất c) Lai ghép đồng nhất 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 Cha Mẹ Con 1 Con 2 Cha Mẹ Con 1 Con 2 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0

Phép lai ghép này gieo ngẫu nhiên một đồng xu, số lần gieo bằng số gien của cá

thể cha mẹ. Nếu kết quả gieo là 1 (mặt sấp) thì cá thể con thứ nhất sao chép gien từ cá

thể của mẹ, cá thể con thứ hai sao chép gien từ cá thể cha. Ngược lại,cá thể con thứ nhất sao chép gien từ cá thể cha, cá thể con thứ nhất sao chép gien từ cá thể mẹ. Ví dụ cho cá thể cha mẹ như trong Hình 2.5, phép trao đổi chéo đồng nhất với kết quả gieo ngẫu nhiên đồng xu là 10101010 kết quả là cá thể con trong Hình 2.6.

Hình 2.5: Cá thể cha mẹ cho phép lai ghép đồng nhất

Hình 2.6: Hai cá thể con sau lai ghép đồng nhất 2.2.5. Đột biến 2.2.5. Đột biến

Đột biến là một sự biến đổi tại một (hay một số) gien của cá thể ban đầu được (adsbygoogle = window.adsbygoogle || []).push({});

chọn một cách ngẫu nhiên bằng cách thay đổi các gien có giá trị 0 thành 1 để tạo ra một cá thể mới. Đột biến có xác suất xảy ra thấp hơn lai ghép. Đột biến có thể tạo ra một cá thể mới tốt hơn hoặc xấu hơn cá thể ban đầu. Tuy nhiên trong thuật toán di truyền thì ta luôn muốn tạo ra những phép đột biến cho phép cải thiện lời giải qua từng thế hệ. Ví dụ, cho cá thể ban đầu như trong Hình 2.7, giả sử các gien thứ 2, 5, 7, 8 được chọn để đột biến, chúng ta có cá thể con sau đột biến trong Hình 2.8.

Hình 2.7: Cá thể ban đầu trước đột biến

Hình 2.8: Cá thể con sau phép đột biến

Trong thuật toán di truyền phép đột biến có thể rất đa dạng. Tuy nhiên vẫn phải đảm bảo thực hiện sửa đổi một số gien trên cá thể cha để có một cá thể con.

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à _ ; (adsbygoogle = window.adsbygoogle || []).push({});

- 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 £ £ .

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 27)