Đồ án Giải thuật di truyền (Genetic Algorithm) và ứng dụng xếp lịch thời khóa biểu

Đồ án nghiên cứu môn học giải thuật di truyền genetic algorithm và ứng dụng, áp dụng công nghệ tiên tiến, tối ưu giải pháp kỹ thuật cho bài toán .

Trường đại học

Trường Đại Học Sài Gòn

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ án môn học

2023

41
14
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giải mã đồ án Giải thuật Di truyền Nền tảng và ứng dụng

Một đồ án môn học về giải thuật di truyền (Genetic Algorithm - GA) là một hành trình khám phá một trong những nhánh hấp dẫn nhất của trí tuệ nhân tạo. Đây không chỉ là việc lập trình một thuật toán, mà còn là việc mô phỏng lại chính quá trình tiến hóa của tự nhiên. Genetic Algorithm thuộc lớp các thuật toán tiến hóa (evolutionary algorithm), lấy cảm hứng từ thuyết tiến hóa của Darwin. Ý tưởng cốt lõi là tạo ra một quần thể các cá thể, mỗi cá thể đại diện cho một giải pháp tiềm năng cho bài toán. Qua các thế hệ, các cá thể tốt nhất sẽ được lựa chọn, lai ghépđột biến để tạo ra thế hệ sau ưu việt hơn. Mục tiêu cuối cùng là tìm ra giải pháp tối ưu nhất cho một vấn đề phức tạp, đặc biệt là các bài toán tối ưu hóa mà phương pháp truyền thống khó giải quyết. Việc thực hiện một báo cáo đồ án giải thuật di truyền đòi hỏi sự hiểu biết sâu sắc về các khái niệm như nhiễm sắc thể, gen, và các toán tử di truyền. Đây là một đề tài mang tính ứng dụng cao, mở ra nhiều cơ hội nghiên cứu và phát triển trong khoa học máy tính.

1.1. Khái niệm cốt lõi về thuật toán tiến hóa Evolutionary Algorithm

Thuật toán tiến hóa là một nhánh của trí tuệ nhân tạo, sử dụng các cơ chế lấy cảm hứng từ quá trình tiến hóa sinh học như tái tạo, đột biến, tái tổ hợp và chọn lọc. Giải thuật di truyền là một đại diện tiêu biểu nhất của nhóm thuật toán này. Nền tảng của nó được John Holland xây dựng từ những năm 1970. Nguyên lý hoạt động dựa trên việc duy trì một quần thể các cá thể (lời giải), áp dụng toán tử lựa chọn để giữ lại những cá thể tốt nhất, sau đó dùng toán tử lai ghéptoán tử đột biến để tạo ra thế hệ mới. Quá trình này lặp lại cho đến khi tìm thấy một lời giải thỏa mãn điều kiện dừng. Mục đích chính là để giải quyết các bài toán tìm kiếm và tối ưu hóa phức tạp, nơi không gian tìm kiếm là rất lớn và không có một phương pháp giải quyết trực tiếp nào hiệu quả.

1.2. Tại sao Genetic Algorithm là lựa chọn tối ưu cho đồ án

Trong môi trường học thuật, Genetic Algorithm là chủ đề lý tưởng cho các đồ án vì nó vừa có nền tảng lý thuyết vững chắc, vừa có tính ứng dụng thực tiễn cao. Nó giúp sinh viên tiếp cận các kỹ thuật tối ưu hóa hiện đại. Không giống như các thuật toán tìm kiếm cục bộ dễ bị mắc kẹt ở điểm tối ưu địa phương, GA có khả năng khám phá toàn bộ không gian lời giải nhờ vào cơ chế đột biến, giúp tìm ra lời giải tối ưu toàn cục. Các bài toán kinh điển như bài toán người du lịch, xếp lịch thời khóa biểu, hay tối ưu hóa tham số trong học máy đều là những ứng dụng tuyệt vời. Hơn nữa, việc lập trình giải thuật di truyền giúp củng cố kỹ năng code và tư duy giải quyết vấn đề. Tài liệu tham khảo và source code Genetic Algorithm cũng rất phong phú, tạo điều kiện thuận lợi cho việc nghiên cứu và triển khai.

II. Thách thức tối ưu hóa khi triển khai giải thuật di truyền

Việc triển khai giải thuật di truyền không chỉ đơn thuần là viết code theo lý thuyết. Thách thức lớn nhất nằm ở việc cân bằng giữa hai yếu tố: khám phá (exploration) và khai thác (exploitation). Khám phá là khả năng thuật toán tìm kiếm trên một không gian lời giải rộng lớn, trong khi khai thác là khả năng tập trung vào những vùng có lời giải tốt. Nếu thuật toán hội tụ quá nhanh, nó có thể bỏ lỡ mất lời giải tối ưu toàn cục. Ngược lại, nếu khám phá quá rộng, quá trình tìm kiếm sẽ rất chậm. Một vấn đề cốt lõi khác là thiết kế hàm thích nghi (fitness function). Hàm này phải phản ánh chính xác chất lượng của một lời giải. Một hàm thích nghi thiết kế tồi sẽ dẫn dắt quá trình tiến hóa đi sai hướng. Ngoài ra, việc lựa chọn các tham số như kích thước quần thể, xác suất lai ghép, xác suất đột biến cũng ảnh hưởng trực tiếp đến hiệu quả của thuật toán GA. Những thách thức này đòi hỏi sự phân tích kỹ lưỡng và thực nghiệm để tìm ra cấu hình phù hợp nhất cho từng bài toán cụ thể.

2.1. Vấn đề hội tụ sớm và cách xác định hàm thích nghi hiệu quả

Hội tụ sớm là hiện tượng khi quần thể mất đi sự đa dạng di truyền và tất cả các cá thể trở nên quá giống nhau, khiến thuật toán bị kẹt tại một điểm tối ưu cục bộ. Nguyên nhân có thể do toán tử lựa chọn quá mạnh mẽ hoặc xác suất đột biến quá thấp. Để giải quyết, có thể tăng xác suất đột biến hoặc sử dụng các phương pháp chọn lọc khác như chọn lọc cạnh tranh (Tournament Selection). Thách thức quan trọng không kém là xây dựng hàm thích nghi. Theo tài liệu nghiên cứu, việc "gán cho chúng một giá trị thích nghi nào đó" là bước quyết định. Hàm này phải lượng hóa được tất cả các ràng buộc của bài toán. Ví dụ, trong bài toán xếp lịch, hàm thích nghi không chỉ tính điểm cho các ràng buộc cứng (không trùng phòng, không trùng giáo viên) mà còn cả các ràng buộc mềm (ưu tiên của giảng viên).

2.2. Lựa chọn các tham số phù hợp cho thuật toán GA

Các tham số của giải thuật di truyền quyết định hành vi và hiệu suất của nó. Kích thước quần thể cần đủ lớn để duy trì sự đa dạng nhưng không quá lớn gây lãng phí tài nguyên tính toán. Xác suất lai ghép, thường ở mức cao (ví dụ 80%), quyết định tần suất tạo ra cá thể mới từ "cha mẹ". Xác suất đột biến thường rất thấp (ví dụ 3%), có vai trò quan trọng trong việc ngăn chặn sự hội tụ sớm và giới thiệu các đặc tính mới vào quần thể. Không có một bộ tham số nào là tốt nhất cho mọi bài toán. Việc lựa chọn chúng thường dựa trên kinh nghiệm và thực nghiệm. Quá trình này bao gồm việc chạy mô phỏng giải thuật di truyền với nhiều bộ tham số khác nhau và đánh giá kết quả để tìm ra cấu hình tối ưu.

III. Phương pháp xây dựng quần thể và cá thể trong Genetic Algorithm

Nền tảng của một đồ án trí tuệ nhân tạo sử dụng GA là cách biểu diễn bài toán. Bước đầu tiên và quan trọng nhất là mã hóa một lời giải tiềm năng thành một "cá thể". Mỗi cá thể được cấu thành từ một chuỗi nhiễm sắc thể (chromosome), và mỗi nhiễm sắc thể lại chứa các gen. Ví dụ, trong bài toán xếp lịch, một cá thể có thể là một thời khóa biểu hoàn chỉnh. Nhiễm sắc thể có thể đại diện cho lịch học của một lớp, và mỗi gen là một cặp (môn học, thời gian, phòng học). Sau khi có cấu trúc cá thể, quá trình bắt đầu bằng việc khởi tạo một quần thể ban đầu một cách ngẫu nhiên. Quần thể này là tập hợp của nhiều cá thể, tạo ra sự đa dạng di truyền ban đầu. Chất lượng của mỗi cá thể sau đó được đánh giá bằng hàm thích nghi. Hàm này sẽ trả về một điểm số, cho biết mức độ "tốt" của lời giải mà cá thể đó đại diện. Điểm số này là cơ sở cho các bước tiến hóa tiếp theo, quyết định cá thể nào có nhiều khả năng sống sót và sinh sản hơn.

3.1. Kỹ thuật mã hóa lời giải thành nhiễm sắc thể và gen

Mã hóa là quá trình biến một lời giải của bài toán thành một cấu trúc dữ liệu mà Genetic Algorithm có thể xử lý, thường là một chuỗi nhị phân, chuỗi số nguyên hoặc hoán vị. Lựa chọn cách mã hóa phụ thuộc vào bản chất của bài toán. Trong tài liệu gốc về xếp lịch, một cá thể (lịch học của một lớp) được biểu diễn bằng một chuỗi các nhiễm sắc thể, mỗi nhiễm sắc thể đại diện cho một môn học. Giá trị của nhiễm sắc thể (gen) là "vị trí tiết học bắt đầu của môn học". Cách biểu diễn này trực quan và dễ dàng cho việc áp dụng các toán tử di truyền. Một mã hóa tốt sẽ đảm bảo rằng tất cả các lời giải khả thi đều có thể được biểu diễn và các toán tử lai ghép, đột biến có thể tạo ra các lời giải hợp lệ.

3.2. Quy trình khởi tạo quần thể và đánh giá bằng fitness function

Quần thể ban đầu thường được tạo ra một cách ngẫu nhiên để bao phủ một không gian lời giải rộng. Tuy nhiên, trong nhiều trường hợp, có thể sử dụng các thuật toán heuristic để tạo ra một số cá thể ban đầu có chất lượng tốt, giúp đẩy nhanh quá trình hội tụ. Sau khi khởi tạo, mỗi cá thể trong quần thể phải được đánh giá bằng fitness function. Đây là bước "đo lường độ thích nghi". Theo tài liệu, hàm này tính tổng điểm phạt dựa trên việc vi phạm các ràng buộc. Ví dụ, một cá thể sẽ bị phạt điểm nếu có sự chồng chéo giờ dạy của giáo viên hoặc trùng phòng học. Cá thể có điểm phạt càng thấp (hoặc điểm thích nghi càng cao) thì càng được coi là tốt và có cơ hội lớn hơn để được chọn cho thế hệ tiếp theo.

IV. Cách vận hành toán tử cốt lõi trong giải thuật di truyền GA

Các toán tử di truyền là trái tim của thuật toán GA, mô phỏng các quá trình sinh học để tạo ra các thế hệ mới. Toán tử lựa chọn (selection operator) đóng vai trò như chọn lọc tự nhiên, quyết định những cá thể nào được phép sinh sản. Các cá thể có độ thích nghi cao hơn sẽ có xác suất được chọn cao hơn. Các phương pháp phổ biến bao gồm chọn lọc bánh xe Roulette (Roulette Wheel Selection) và chọn lọc cạnh tranh (Tournament Selection). Tiếp theo, toán tử lai ghép (crossover operator) kết hợp vật chất di truyền của hai cá thể "cha mẹ" để tạo ra một hoặc hai cá thể "con". Điều này cho phép kết hợp các đặc tính tốt từ những lời giải khác nhau. Cuối cùng, toán tử đột biến (mutation operator) thay đổi ngẫu nhiên một phần nhỏ trong nhiễm sắc thể của cá thể con. Mục đích của đột biến là duy trì sự đa dạng di truyền trong quần thể và giúp thuật toán thoát khỏi các điểm tối ưu cục bộ. Sự phối hợp nhịp nhàng của ba toán tử này giúp quần thể tiến hóa dần về phía lời giải tối ưu.

4.1. Toán tử lựa chọn Selection Chọn lọc cá thể ưu tú

Toán tử lựa chọn là cơ chế quyết định cá thể nào sẽ truyền lại gen cho thế hệ sau. Nguyên tắc chung là ưu tiên các cá thể có giá trị hàm thích nghi cao hơn. Phương pháp chọn lọc Roulette mô phỏng một bánh xe quay, trong đó diện tích mỗi ô tương ứng với độ thích nghi của một cá thể. Cá thể có độ thích nghi cao chiếm diện tích lớn hơn và do đó có xác suất được chọn cao hơn. Một phương pháp hiệu quả khác là chọn lọc cạnh tranh, trong đó một vài cá thể được chọn ngẫu nhiên từ quần thể và cá thể tốt nhất trong nhóm đó sẽ được chọn để sinh sản. Việc lựa chọn phương pháp phù hợp ảnh hưởng đến áp lực chọn lọc và tốc độ hội tụ của thuật toán.

4.2. Toán tử lai ghép Crossover Tạo ra thế hệ kế thừa

Toán tử lai ghép chịu trách nhiệm chính cho việc khám phá không gian lời giải. Nó lấy hai cá thể cha mẹ và tạo ra con cái bằng cách trao đổi các đoạn gen. Các kỹ thuật phổ biến bao gồm lai ghép một điểm (chọn một điểm cắt ngẫu nhiên và trao đổi phần sau của nhiễm sắc thể), lai ghép hai điểm, và lai ghép đồng nhất. Trong đồ án tham khảo, phương pháp lai ghép được sử dụng là "lai ghép đoạn", trong đó một đoạn nhiễm sắc thể được lấy từ cha và phần còn lại lấy từ mẹ. Toán tử lai ghép giúp kết hợp các khối xây dựng tốt (good building blocks) từ các cá thể khác nhau, có khả năng tạo ra một lời giải còn tốt hơn cả cha mẹ.

4.3. Toán tử đột biến Mutation Duy trì đa dạng di truyền

Toán tử đột biến hoạt động ở mức độ gen riêng lẻ. Nó thay đổi ngẫu nhiên giá trị của một hoặc nhiều gen với một xác suất rất nhỏ. Mục đích chính là để ngăn quần thể trở nên đồng nhất quá sớm. Nếu không có đột biến, một khi một gen cụ thể biến mất khỏi quần thể, nó không bao giờ có thể xuất hiện trở lại. Đột biến đảm bảo rằng thuật toán vẫn có khả năng khám phá các vùng mới của không gian tìm kiếm. Trong báo cáo, phép đột biến được thực hiện bằng cách "hoán vị hai nhiễm sắc thể một cách ngẫu nhiên trong cá thể". Mặc dù xác suất xảy ra thấp, toán tử đột biến là một phần không thể thiếu để đảm bảo sự mạnh mẽ của giải thuật di truyền.

V. Triển khai Giải thuật di truyền vào bài toán xếp thời khóa biểu

Ứng dụng thực tiễn là cách tốt nhất để hiểu rõ sức mạnh của Genetic Algorithm. Bài toán xếp lịch thời khóa biểu là một ví dụ điển hình về bài toán tối ưu hóa tổ hợp với vô số ràng buộc phức tạp. Trong đồ án tham khảo, bài toán được chia thành hai giai đoạn. Giai đoạn 1 tập trung xếp lịch cho từng lớp học, giải quyết các ràng buộc ở mức độ vi mô. Giai đoạn 2 tổng hợp kết quả từ giai đoạn 1 để xếp lịch cho toàn bộ cơ sở, xử lý các ràng buộc vĩ mô như xung đột phòng học. Cách tiếp cận này sử dụng chiến lược "chia để trị", giúp đơn giản hóa một vấn đề lớn. Việc mô phỏng giải thuật di truyền cho bài toán này bao gồm việc mã hóa một thời khóa biểu thành một cá thể, định nghĩa một hàm thích nghi phức tạp để đánh giá các ràng buộc (trùng giờ giáo viên, sức chứa phòng, yêu cầu thiết bị), và áp dụng các toán tử di truyền để tiến hóa quần thể lịch học qua nhiều thế hệ cho đến khi tìm được một lịch học khả thi và tối ưu.

5.1. Mô hình hóa bài toán xếp lịch Từ ràng buộc đến cá thể

Để áp dụng GA, bước đầu tiên là mô hình hóa. Một lịch học được chọn làm một cá thể. Trong giai đoạn 1, nhiễm sắc thể là một môn học và gen là thời điểm bắt đầu tiết học. Trong giai đoạn 2, cá thể là lịch học của toàn cơ sở, nhiễm sắc thể là lịch học của một lớp cụ thể. Các ràng buộc được chia thành hai loại: ràng buộc cứng (bắt buộc phải thỏa mãn, ví dụ: một giáo viên không thể dạy hai lớp cùng lúc) và ràng buộc mềm (nên thỏa mãn, ví dụ: ưu tiên về thời gian của giảng viên). Các ràng buộc này được tích hợp vào hàm thích nghi. Mỗi lần vi phạm một ràng buộc, cá thể sẽ bị trừ điểm tương ứng. Mục tiêu là tìm ra cá thể có điểm số cao nhất (hoặc điểm phạt thấp nhất).

5.2. Kết quả thực nghiệm và đánh giá hiệu quả của thuật toán

Trong phần chương trình thực nghiệm của đồ án, kết quả cho thấy thuật toán GA có khả năng tìm ra một lịch học khả thi. Chương trình sẽ dừng khi giá trị của hàm thích nghi đạt đến một ngưỡng lý tưởng (ví dụ: 1.0, tương đương với không vi phạm ràng buộc cứng nào). Tuy nhiên, tài liệu cũng chỉ ra hạn chế: "do giải thuật di truyền mang tính chất ngẫu nhiên nên đôi khi kết quả đạt được không phải là 100%". Điều này nhấn mạnh rằng GA là một thuật toán heuristic, nó tìm kiếm một lời giải đủ tốt trong một khoảng thời gian hợp lý, chứ không đảm bảo tìm thấy lời giải tối ưu tuyệt đối. Hiệu quả của nó phụ thuộc rất nhiều vào việc thiết kế mô hình và tinh chỉnh tham số.

VI. Hướng phát triển đồ án và source code Genetic Algorithm Python

Một báo cáo đồ án giải thuật di truyền thành công không chỉ dừng lại ở việc giải quyết bài toán. Phần kết luận và hướng phát triển là cực kỳ quan trọng, thể hiện tầm nhìn và khả năng tư duy sâu của người thực hiện. Dựa trên tài liệu gốc, một số hạn chế đã được chỉ ra, như tính ngẫu nhiên của thuật toán và khó khăn khi xử lý số lượng biến lớn. Hướng phát triển có thể bao gồm việc kết hợp GA với các thuật toán tìm kiếm cục bộ khác (tạo thành giải thuật Memetic) để cải thiện khả năng khai thác. Một hướng khác là hoàn thiện giao diện người dùng, cho phép tùy chỉnh các ràng buộc và tham số một cách linh hoạt. Đối với những ai muốn bắt đầu lập trình giải thuật di truyền, Python là một lựa chọn tuyệt vời nhờ cú pháp đơn giản và hệ sinh thái thư viện phong phú. Việc tìm hiểu và phát triển code GA Python sẽ là một bước tiến vững chắc trong lĩnh vực tối ưu hóa và trí tuệ nhân tạo.

6.1. Hạn chế và tiềm năng cải tiến giải thuật trong tương lai

Như đã nêu trong báo cáo, hạn chế chính của GA là không đảm bảo tính tối ưu tuyệt đối và có thể cần nhiều thế hệ để hội tụ. Hướng phát triển trong tương lai có thể tập trung vào việc "hoàn thiện một số các chức năng hiệu chỉnh để người dùng có thể linh động hơn". Điều này bao gồm việc xây dựng một hệ thống cho phép người dùng định nghĩa các ràng buộc mềm với các mức độ ưu tiên khác nhau. Ngoài ra, có thể nghiên cứu các biến thể của GA như giải thuật di truyền song song để tăng tốc độ xử lý trên các hệ thống đa lõi, hoặc áp dụng các kỹ thuật học máy để tự động tinh chỉnh các tham số của thuật toán GA trong quá trình chạy, giúp nó thích ứng tốt hơn với từng bài toán cụ thể.

6.2. Tài nguyên và hướng dẫn lập trình giải thuật di truyền với Python

Để bắt đầu lập trình giải thuật di truyền, Python cung cấp nhiều công cụ hữu ích. Sinh viên có thể bắt đầu bằng việc tự xây dựng thuật toán từ đầu để hiểu rõ từng thành phần. Sau đó, có thể khám phá các thư viện chuyên dụng như DEAP (Distributed Evolutionary Algorithms in Python), một framework mạnh mẽ cho tính toán tiến hóa. Nhiều source code Genetic Algorithm ví dụ có sẵn trên các nền tảng như GitHub, cung cấp các đoạn mã mẫu cho các bài toán kinh điển. Bắt đầu với một bài toán đơn giản như tối ưu hóa một hàm số, sau đó chuyển sang các vấn đề phức tạp hơn như bài toán ba lô (Knapsack problem) hoặc bài toán người du lịch (TSP) sẽ là một lộ trình học tập hiệu quả để làm chủ code GA Python.

11/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG I-GIẢI THUẬT DI TRUYỀN (GAs) 1.1 Tìm hiểu chung về Genetic algorithms Genetic algorithms (thuật giải di truyền) là một giải thuật mô phỏng theo quá trình chọn lọc tự nhiên, là kỹ thuật chung giúp giải quyết vấn đề bài toán bằng cách mô phỏng sự tiến hóa của con người hay của sinh vật nói chung (dựa trên thuyết tiến hóa muôn loài của Darwin) trong điều kiện qui định sẵn của môi trường. Lấy ý tưởng từ quá trình tiến hoá tự nhiên, xuất phát từ một lớp các lời giải tiềm năng ban đầu, GA tiến hành tìm kiếm trên không gian lời giải bằng cách xây dựng lớp lời giải mới tốt hơn (tối ưu hơn) lời giải cũ. Quá trình xây dựng lớp lời giải mới được tiến hành dựa trên việc chọn lọc, lai ghép, đột biến từ lớp lời giải ban đầu. Quần thể lời giải trải qua quá trình tiến hoá: ở mỗi thế hệ lại tái sinh các lời giải tương đối tốt, trong khi các lời giải “xấu” thì chết đi.

Vậy Genetic algorithms làm gì? Trong Genetic algorithms, một tập các biến của bài toán đưa ra được mã hóa sang một chuỗi (hay một cấu trúc mã hóa khác) tương tự như một nhiễm sắc thể trong tự nhiên. Mỗi chuỗi bao gồm một giải pháp có thể của bài toán. Giải thuật di truyền sử dụng các toán tử được sinh ra bởi sự chọc lọc tự nhiên một quần thể các chuỗi nhị phân (hoặc các cấu trúc khác), mã hóa khoảng tham số trên mỗi thế hệ, khảo sát các phạm vi khác nhau của không gian tham số, và định hướng tìm kiếm đối với khoảng mà là xác suất cao để tìm kiếm sự thực hiện tốt hơn. Thuật toán di truyền gồm có bốn quy luật cơ bản là lai ghép, đột biến, sinh sản và chọn lọc tự nhiên Quá trình lai ghép (phép lai) quá trình này diễn ra bằng cách ghép một hay nhiều đoạn gen từ hai nhiễm sắc thể cha-mẹ để hình thành nhiễm sắc thể mới mang đặc tính của cả cha lẫn mẹ.

Phép lai này có thể mô tả như sau: -Chọn ngẫu nhiên hai hay nhiều cá thể trong quần thể. Giả sử chuỗi nhiễm sắc thể của cha và mẹ đều có chiều dài là m. Tìm điểm lai bằng cách tạo ngẫu nhiên một con số từ 1 đến m-1. Như vậy, điểm lai này sẽ chia hai chuỗi nhiễm sắc thể cha-mẹ thành hai nhóm nhiễm sắc thể con là m1 và m2.

Hai chuỗi nhiễm sắc thể con lúc này sẽ là m11+m22 và m21+m12. Đưa hai chuỗi nhiễm sắc thể con vào quần thể để tiếp tục tham gia quá trình tiến hóa Quá trình đột biến (phép đột biến) quá trình tiến hóa được gọi là quá trình đột biến khi một hoặc một số tính trạng của con không được thừa hưởng từ hai chuỗi nhiễm sắc thể cha-mẹ. Phép đột biến xảy ra với xác suất thấp hơn rất nhiều lần so với xác suất xảy ra phép lai. Phép đột biến có thể mô tả như sau: - Chọn ngẫu nhiên một số k từ khoảng 1 ≥ k ≥ m - Thay đổi giá trị của gen thứ k - Đưa nhiễm sắc thể con vào quần thể để tham gia quá trình tiến hóa tiếp theo Quá trình sinh sản và chọn lọc (phép tái sinh và phép chọn) - Phép tái sinh: là quá trình các cá thể được sao chép dựa trên độ thích nghi của nó.

Độ thích nghi là một hàm được gán các giá trị thực cho các cá thể trong quần thể của nó. Phép tái sinh có thể mô phỏng như sau: Tính độ thích nghi của từng cá thể trong quần thể, lập bảng cộng dồn các giá trị thích nghi đó (theo thứ tự gán cho từng cá thể) ta được tổng độ thích nghi. Giả sử quần thể có n cá thể. Gọi độ thích nghi của cá thể thứ i là Fi, tổng dồn thứ i là Ft.

Tổng độ thích nghi là Fm Tạo số ngẫu nhiên F có giá trị trong đoạn từ 0 đến Fm -Chọn cá thể k đầu tiên thỏa mãn F ≥ Ft đưa vào quần thể của thế hệ mới. Phép chọn: là quá trình loại bỏ các cá thể xấu và để lại những cá thể tốt. Phép chọn được mô tả như sau: - Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần - Loại bỏ các cá thể cuối dãy, chỉ để lại n cá thể tốt nhất. Cấu trúc giải thuật di truyền tổng quát Bắết Đầều Bắt đầu t =0; Kh ởi t ạo quầền thể Khởi tạo P(t) Tính độ thích nghi cho các cá thể thuộc P(t); Khi (điều kiện dừng chưa thỏa) lặp t = t + 1; Chọn lọc P(t) Mã hoá các biềến Lai P(t) Đột biến P(t) Hết lặp Kết thúc Đánh giá đ ộ thích nghi Ch ọ n l ọc Lai ghép Đ ột biềến Thoả Tho ảđiềều kiệ n dừ ng Không Kềết quả Kềết thúc Sau đây là những nguyên tắc cơ bản thực hiện giải thuật di truyền GAs: B1: Khởi tạo và mã hóa một quần thể ngẫu nhiên của NST.

Đó gọi là “quần thể hiện tại” B2: Đánh giá độ thích nghi của mỗi NST trong quần thể hiện tại. B3: Tạo ra thế hệ trung gian, thông qua chọn lựa suy diễn các NST trong quần thể hiện tại tuỳ theo độ thích nghi. Đó sẽ là cha mẹ của những thế hệ tiếp theo. B4: Áp dụng toán tử lai ghép và nghịch đảo đối với những cặp hoặc NST đơn trong thế hệ trung gian, qua đó sẽ sản sinh ra một thế hệ NST mới.

Đó là quần thể hiện tại. Lặp lại các bước 2-4 cho đến khi một giải pháp phù hợp được tìm thấy.2 Các toán tử của giải thuật di truyền + Toán tử chọn lọc o Chọn lọc dựa trên độ thích nghi. o Chọn lọc dựa trên sự xếp hạng o Chọn lọc dựa trên sự cạnh tranh o Chọn lọc hướng không gian + Toán tử di cư + Toán tử nghịch đảo + Toán tử đột biến + Toán tử lai ghép o Lai ghép một điểm (one-point crossover) o Lai ghép hai điểm (two-point crossover) o Lai ghép N điểm (N-point crossover) o Lai ghép đồng nhất (Uniform crossover) 1.3 Các tham số của giải thuật di truyền. Xác suất lai ghép: là tham số cho biết tần suất thực hiện toán tử lai ghép.

Nếu không có lai ghép, cá thể con sẽ chính là bản sao của cá thể “cha mẹ”. Nếu xác suất lai ghép bằng 100%, khi đó mọi cá thể con đều được tạo ra qua quá trình lai ghép. Xác suất đột biến: là tham số cho biết tần suất đột biến của nhiễm sắc thể. Nếu không có đột biến, thế hệ con được tạo ra ngay sau giai đoạn lai ghép mà không bị thay đổi.

Ngược lại, một hoặc một số phần của nhiễm sắc thể sẽ bị thay đổi. Nếu xác suất đột biến là 100%, toàn bộ nhiễm sắc thể sẽ bị thay đổi. Nếu tham số này bằng 0%, không có gì bị thay đổi hết Kích thước quần thể: là tham số cho biết có bao nhiêu cá thể (NST) trong 1 thế hệ của quần thể. Nếu có quá ít cá thể, khả năng thực hiện lai ghép rất nhỏ và khi đó chỉ có một vùng tìm kiếm nhỏ mới được khảo sát.

Ngược lại, việc kích thước quần thể quá lớn cũng không tốt, do nó sẽ làm chậm quá trình giải bài toán.4 Công thức của Giải thuật Di Truyền Tính độ thích nghi eval(vi) của mỗi nhiễm sắc thể vi(i=1… kích thước quần thể) với f(vi) là hàm mục tiêu Tìm tổng giá trị thích nghi của quần thể Tính xác xuất chọn Pi cho mỗi nhiễm sắc thể vi Tính xác suất tích luỹ pi cho mỗi nhiễm sắc thể Pi Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe rulet kích thước quần thể lần. Mỗi lần chọn ra một nhiễm sắc thể từ quần thể hiện hành vào quần thể mới theo cách sau: Phát sinh một số ngẫu nhiên r trong khoảng [0, 1] Nếu r < q1thì chọn nhiễm sắc thể v1, ngược lại chọn nhiễm sắc thể vi (2 ≤ i ≤ kích thước quần thể) sao cho qi-1 < r ≤ qi 1.5 Các thành phần của thuật giải di truyền 1.1 Khởi động quần thể ban đầu Tạo quần thể đầu tiên trong thuật giải, là nơi xuất phát quá trình tiến hóa, bao gồm tất cả các giá trị thô ban đầu. Tùy theo vấn đề của bài toán mà có cách khởi động khác nhau. Trước một bài toán áp dụng thuật giải di truyền, ta cần phải xác định rõ nhiễm sắc thể và cá thể cho vấn đề, và thông thường đó sẽ kết quả cuối cùng.

Việc phân tích sẽ dựa trên kết quả là cơ bản nhất.2 Đánh giá cá thể Chắc chắn rằng việc chọn cá thể sẽ thông qua kết quả, hay mục đích của vấn đề. Dựa trên mức độ thích nghi của cá thể, bao gồm những vướng mắc mà cá thể gặp phải. Thông thường, đặt mỗi vấn đề nhỏ tương ứng với một giá trị điểm thích nghi, kết quả đánh giá gồm tổng các số điểm đó. Cá thể tốt nhất sẽ có số điểm thấp nhất hoặc lớn nhất.

Theo thuyết tiến hóa của Darwin, nhiễm sắc thể tốt nhất sẽ tồn tại và tạo ra các cá thể con mới. Có nhiều phương pháp để chọn các nhiễm sắc thể tốt nhất. 1) Chọn lọc Roulette (Roulette Wheel Selection) 2) Chọn lọc xếp hạng (Rank Selection) 3) Chọn lọc cạnh tranh (Tournament Selection) 1.3 Toán tử lai ghép Lai ghép nhằm nâng cao kết quả cá thể, do đó, toán tử lai ghép sẽ tạo điều kiện cho tiến trình hội tụ nhanh hay chậm. Còn tùy thuộc vào cách tổ chức và phân bố các nhiễm sắc thể mà chúng ta có xác suất lai ghép nhanh hay chậm.

Sau đây là vài phương pháp lai ghép thông dụng trong kỹ thuật di truyền: 1. Lai ghép ánh xạ từng phần (PMX Partial Mapped Crossover) 2. Lai ghép có trật tự (OX Order Crossover) 3. Lai ghép dựa trên vị trí (Position Based Crossover) 4.

Lai ghép dựa trên thứ tự (Order Base Crossover) 5. Lai ghép có chu trình (CX Cycle Crossover) 6. Lai ghép thứ tự tuyến tính (LOX Linear Order Crossover) 1.4 Toán tử đột biến Cũng giống như lai ghép, toán tử đột biến làm tăng nhanh quá trình hội tụ, nhưng tăng một cách đột ngột, cũng có khi sẽ không gây tác dụng gì một khi không thành công. Không ai có thể đánh giá được phương pháp đột biến nào tốt hơn, do đó có một vài phương pháp đơn giản, cũng có vài trường hợp khá phức tạp.

Người ta thường chọn một trong những phương pháp sau : 1. Đột biến đảo ngược (Inversion Mutation) 2. Đột biến chèn (Insertion Mutation) 3. Đột biến thay thế (Displacement Mutation) 4.

Đột biến tương hỗ (Reciprocal Exchange Mutation) 5. Đột biến chuyển dịch (Shift Mutation) 1.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ